Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
Threa는 대화에 의사결정 이유가 남아 다시 찾을 수 있는 업무용 채팅이며, 오픈소스·셀프호스팅 가능
Threa is workplace chat where the reasoning behind a decision stays with the conversation, so you can find it when the question comes up again. Open source and self-hostable.
비즈니스TypeScript · AstroGitHub @threahq온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A workspace chat application built for surfacing what's otherwise lost
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Threa is a workplace chat application (channels, threads, DMs, scratchpads) with
an automatic memory layer that extracts decisions and context from conversations
into searchable notes linked back to their source messages.
The memory layer is GAM (General Agentic Memory). As messages arrive, GAM
classifies them, extracts the ones that record a decision or its context, and
stores each as a memo: a short summary that links back to the messages it was
derived from. Memos are indexed for full-text and vector (semantic) search and
are retrieved automatically when a related topic comes up.README 전문 보기 ↗Threa is a workplace chat application (channels, threads, DMs, scratchpads) with an automatic memory layer that extracts decisions and context from conversations into searchable notes linked back to their source messages.
The memory layer is GAM (General Agentic Memory). As messages arrive, GAM classifies them, extracts the ones that record a decision or its context, and stores each as a memo: a short summary that links back to the messages it was derived from. Memos are indexed for full-text and vector (semantic) search and are retrieved automatically when a related topic comes up.
Ariadne is the built-in conversational agent, available in any stream. It answers from memos and their source messages, citing links and timestamps. Its behavior is configurable per stream via personas.
Threa also exposes a read API over the workspace with scoped keys (memos as JSON, messages as markdown), so an external agent can read the same data Ariadne does. The developer docs cover authentication, the API reference, and recipes.
Threa is a Bun monorepo. The request path for the main app:
Browser ──→ Frontend (Cloudflare Pages)
──→ Workspace Router (Cloudflare Worker) ──→ Control Plane
──→ Regional Backend
──→ WebSocket (direct to Regional Backend)
apps/frontend). React 19 + Vite SPA on Cloudflare Pages.
Real-time updates over Socket.io; offline drafts in IndexedDB.apps/workspace-router). Cloudflare Worker that routes
/api/*: auth, GET/POST /api/workspaces, and /api/regions go to the
control plane, and /api/workspaces/:id/* to the right regional backend
(resolved from Cloudflare KV). It answers GET /api/workspaces/:id/config
directly with { region, wsUrl }, which the frontend uses to open its
WebSocket.apps/control-plane). Global service for authentication
(WorkOS), workspace creation, and region assignment. Runs on Railway with its
own PostgreSQL database.apps/backend). Regional application server for all domain logic:
messaging, streams, agents, memos, search, and files. PostgreSQL 17 with
pgvector, AWS S3 for files, OpenRouter as the model gateway. Event sourcing
with an outbox pattern drives real-time delivery.apps/enclave). Runs Ariadne for end-to-end encrypted
scratchpads. Holds no database credentials and never logs payload contents.apps/backoffice, apps/backoffice-router). Internal
platform-admin SPA and its edge router, gated to platform admins.Shared code lives in packages/: domain types and API contracts (types), the
ProseMirror editor wrapper (prosemirror), backend infrastructure
(backend-common), the agent runtime (agent-runtime), and encryption
primitives (crypto).
The design is multi-region: each region gets its own backend, database, and storage, though a single region is active today.
Threa uses Bun.
bun install
bun run db:start # PostgreSQL + MinIO via Docker
bun run dev # control-plane, workspace-router, backend, frontend, backoffice
The app comes up at http://localhost:3000. For device testing, use
bun run dev:mobile on the local network or bun run dev:remote for a temporary
HTTPS Tailscale Serve URL. bun run dev:regions adds a second region, local-2,
for work that crosses regions.
bun run test # unit/integration (backend)
bun run test:e2e # end-to-end
bun run typecheck # types across the monorepo
bun run lint
Architecture and conventions are documented in docs/. Start with
docs/system-overview.md and
docs/core-concepts.md. Code constraints live in
AGENTS.md.
Threa is available under the MIT License.