Lattice
연구를 위한 작업공간
반복 팀이 시각적 작업공간에서 만나 화이트보드에 함께 쓰고 회의·파일·공유 컨텍스트를 한 공간에 보관
A visual meeting workspace where recurring teams meet, write together on lasting Whiteboards, and keep Meetings, Files, and shared context in one Space.
생산성TypeScript · CGitHub @orbmeet온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Meetings that keep what you worked out.
Orb Meet is a video meeting app with a shared whiteboard and notes that write themselves. It runs in the browser at orbmeet.com, and everything that runs it is in this repository, under the MIT license.
browser
│
┌───────────┴─────────────┐
▼ ▼
Cloudflare Worker self-hosted nodes (Docker)
apps/web ├─ LiveKit + Egress video, recordings
├─ D1 accounts, ├─ transcription speech to text (Deepgram)
│ meetings ├─ whiteboard board sync (tldraw), saved to R2
├─ R2 files, boards └─ Caddy TLS in front of all of them
├─ Durable Objects one per live meeting
└─ Workflows summaries, cleanup
│
└─ Cloudflare Container apps/code-runner runs board code, no network
The Worker owns accounts, meetings, and where each one runs. Media and whiteboards run on nodes you host yourself; the Worker places each meeting on the closest healthy node and moves it if that node goes down.
| Path | What it is |
|---|---|
apps/web | The app and its API: TanStack Start on Cloudflare Workers, with D1 (Drizzle), R2, Durable Objects and Workflows |
apps/whiteboard-server | The whiteboard sync server that runs on each node |
apps/transcription-agent | The LiveKit agent that transcribes each participant |
apps/code-runner | The sandbox for code on the board (a Durable Object and its container) |
apps/cli | @orbmeet/cli, the command line client |
packages/* | Code the apps share: the database schema and migrations (db), the whiteboard (whiteboard-core, whiteboard-client), UI components (ui), node placement (nodes), protocols and contracts |
infra/ops | pnpm ops: sets up, deploys and checks the self-hosted nodes |
You need Node 24.22.1 or newer, pnpm 12 (corepack enable picks the version
the repo names), and Docker, which runs LiveKit for local development.
pnpm install
# The Worker's local configuration. Any id works for the local database.
cp apps/web/.dev.vars.example apps/web/.dev.vars
cp apps/web/cloudflare.deploy.json.example apps/web/cloudflare.deploy.json
# then set "databaseId" in cloudflare.deploy.json, e.g. to the output of `uuidgen`
# Create the local database
cd apps/web
pnpm exec cf d1 migrations apply "$(node -p "require('./cloudflare.deploy.json').databaseId")" --local \
--dir ../../packages/db/drizzle/migrations \
--pattern '../../packages/db/drizzle/migrations/*/migration.sql'
cd ../..
# The app on http://localhost:3000, its whiteboard server, and LiveKit in Docker
pnpm dev
The whiteboard server creates its own .env from its example on first run.
Sign-in with Google, email, AI summaries and stored recordings each need their
keys in apps/web/.dev.vars; each one is described there.
For live captions and transcripts, also run the transcription agent. It needs a Deepgram API key:
cp apps/transcription-agent/.env.example apps/transcription-agent/.env # set DEEPGRAM_API_KEY
pnpm --filter @orbmeet/transcription-agent dev
pnpm check # lint, typecheck, knip, the migration check, every test, every build
pnpm test # every package's tests
pnpm e2e # browser tests (apps/web/e2e)
pnpm check is also what a deploy runs first.
The Worker. Fill in apps/web/cloudflare.deploy.json with your D1
database, domain and public values, set the Worker's secrets (listed in
apps/web/worker-secrets.example), then:
pnpm --filter @orbmeet/web deploy # checks, applies migrations, deploys
The nodes. Describe your servers in infra/ops/inventory.json, kept out of
git; infra/ops/src/test-fixtures.ts shows its shape. Secrets live encrypted in
infra/ops/secrets.age. Then:
pnpm ops deploy [node] # from a fresh VM to a running node; drains live meetings before restarting media
pnpm ops check # each node's readiness, and what clients see of it
pnpm ops # every command
npm i -g @orbmeet/cli
orbmeet configure # store an API token (or set ORBMEET_TOKEN)
orbmeet schedules # upcoming meetings
orbmeet summary --help # summaries, transcripts, recordings, whiteboard exports
Every command prints JSON on success and a JSON error on stderr on failure, so it can be scripted.