Lightweight Meeting TUI App
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Lightweight, self-hosted audio/video conferencing from the terminal. Create or join a room, talk over Opus, share your screen or camera, and chat — peer to peer, no account, one 12 MB binary.
• Client — a single static binary for macOS and Windows, written in Go (packages/go)
• Server — a small Express + WebSocket signaling server (no database, no auth)
Both are redirects to the installer in the latest release, so the URL never changes.檢視完整 README ↗Lightweight, self-hosted audio/video conferencing from the terminal. Create or join a room, talk over Opus, share your screen or camera, and chat — peer to peer, no account, one 12 MB binary.
The project has two parts:
packages/go)# macOS (Apple Silicon)
curl -fsSL https://openmeet.manuelvega.dev/install | bash
# Windows 11 (PowerShell)
irm https://openmeet.manuelvega.dev/install.ps1 | iex
Both are redirects to the installer in the latest release, so the URL never changes.
The installers put a binary on your PATH and stop there: no Start Menu entry, no desktop shortcut, no terminal profile written for you. Which terminal this runs in is yours to pick, and a shortcut would pick one for you. Windows ships two optional scripts beside the binary for anyone who does want a Windows Terminal profile and a shortcut; the installer prints the two lines to run them.
Then openmeet. Nothing else is needed for a call; screen and camera sharing need ffmpeg (brew install ffmpeg / winget install Gyan.FFmpeg, which the Windows installer does). The app keeps itself current from GitHub Releases: a newer version downloads in the background and the home screen offers r to restart into it. The binaries are also on the releases page with their SHA-256 sums.
[name] in your colour for everyone| Platform | Status | Features |
|---|---|---|
| macOS 15 (Sequoia) or later, Apple Silicon | Supported | Audio, chat, files, camera, screen sharing |
| Windows 11 (x64) | Supported | Audio, chat, files, screen sharing. Camera not available yet |
| Linux | Paused | The code compiles; nothing is built or tested |
One version number for every platform, in packages/go/VERSION. Version 1.0 will mean feature parity between macOS and Windows.
Client A <──WebRTC P2P──> Client B
↑ ↑
│ WebSocket (signaling) │
└──────> Server <─────────┘
│
In-memory Maps
See docs/websocket-webrtc-architecture.md for the full signaling and WebRTC flow, and docs/performance.md for what the client costs and how those numbers were taken.
| Layer | Technology |
|---|---|
| Client | Go, pion/webrtc, libopus (static), miniaudio (CoreAudio / WASAPI), Apple Voice Processing I/O, Bubble Tea, ffmpeg/ffplay |
| Server | Express 5, ws (WebSocket), Node.js 22 |
| Monorepo | a pnpm workspace of two (server, website) + a Go module |
| Lint/format | Biome (TypeScript), gofmt / go vet |
| Containerization | Docker (multi-stage Alpine build, server only) |
openmeet/
├── packages/
│ ├── go/ # the client: one static binary (cmd/openmeet, internal/*)
│ ├── server/ # Express + WebSocket signaling + chat, and protocol.ts (the wire types)
│ └── website/ # openmeet.manuelvega.dev, static landing page (English and Spanish)
├── Dockerfile
├── docker-compose.yml
└── pnpm-workspace.yaml
brew install cmake pkg-config # libopus is built once, statically, under packages/go/.cross
packages/go/scripts/build.sh # → packages/go/openmeet
packages/go/openmeet --server ws://localhost:3001/ws
cd packages/go && go test ./... # includes the golden frames of every screen
brew install zig && packages/go/scripts/build-windows.sh # → packages/go/dist/windows-amd64/openmeet.exe
Everything else about the client — flags, releasing, how the updater works, what it costs and why — is in packages/go/README.md.
pnpm install
pnpm dev # server on :3001, in watch mode
pnpm build # type-check and compile the server
pnpm lint # Biome
docker compose up --build
# or
docker build -t openmeet .
docker run -p 3001:3001 openmeet
The production container runs the signaling server on port 3001. Point clients at it with openmeet --server ws://your-host:3001/ws.
pnpm install
pnpm build
NODE_ENV=production node packages/server/dist/index.js
| Variable | Default | Description |
|---|---|---|
PORT | 3001 | Server port |
SO_NET_SERVICE_TYPE voice on macOS) so routers that honour it put the call firstopenmeet-terminal on npm was the client until September 2026 and is retired: no further versions are published and its source has left this tree. Git keeps all of it at the terminal-v0.5.2 tag. The last published version still talks to the same server, without video towards Go peers — it has no H.264.
MIT