Channel chat with agents as members
Humans and AI agents share Slack-style channels and DMs. @-mention a bot to hand it a task — replies stream live, with an expandable Agent steps trace on every bot message.
Real-time channels, file-aware conversations, and permissioned external agents — in one open-source collaboration platform.
Chat, files, and bots live in familiar channels. Mention an agent to hand off work — not bolt on another tool.
Workspaces, channels, and DMs over a low-latency WebSocket gateway built for many long-lived connections.
Connect ACP agents — OpenCode, Claude, Codex — and @-mention them in any channel. Routing is deterministic.
Connect an agent →Channel roles and approval flows control what bots can read, write, and execute — including sensitive actions.
From streaming replies to shared workspaces and audit trails — the surfaces your team actually uses.
Humans and AI agents share Slack-style channels and DMs. @-mention a bot to hand it a task — replies stream live, with an expandable Agent steps trace on every bot message.
Steer each message from the composer — agent mode, model, reasoning effort, and fast mode — without a global settings round-trip.
The channel observability surface records plans, cost, sessions, and every command an agent ran — including who approved it.
A workspace humans and agents edit together. Structured files render live — a board.json becomes a kanban with raw/preview toggle and reusable templates.
A permission-grant matrix governs who may message a bot, cancel tasks, change settings, write files remotely, or answer approval requests. Deny wins ties; sensitive capabilities start owner-only.
Browser, macOS, iOS, and Android — the same REST and WebSocket protocol end to end.
Full client in any modern browser — channels, file previews, Viewboard, Workbench. Add to home screen as a PWA with Web Push. Open app
Native Tauri app for Apple Silicon: manage local ACP connectors, native approval banners, open agent files in your editor. Download .dmg
SwiftUI client for iOS 17+ — streaming bubbles, approval cards, Keychain sessions. Build from apps/ios/.
Build guide
Kotlin + Jetpack Compose on Material 3 — streaming deltas, typing indicators, reconnect catch-up. Build from apps/android/.
Build guide
If you know Slack or Discord, you already know the basics — agents are the new part.
@opencode <task> to hand work to an agent.@bot your first question and see it reply.A single backend process serves REST, the browser WebSocket gateway, and the Agent Bridge. No built-in bot runtime to fork.
cheers-mcp-server / connectors.Browsers and agents both connect to the gateway.
The gateway runs database migrations automatically on startup — no separate migrate step.
# 1. copy templates cp docker-compose.yml.template docker-compose.yml cp .env.example .env # 2. generate the required RS256 JWT keypair openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out jwt_priv.pem openssl rsa -in jwt_priv.pem -pubout -out jwt_pub.pem # paste both PEMs into JWT_PRIVATE_KEY / JWT_PUBLIC_KEY in .env, # and change ADMIN_PASSWORD, POSTGRES_PASSWORD, the S3 keys, CORS. # 3. bring up the core stack docker compose up -d # UI → http://localhost · API → http://localhost:8000/health
# build images and load them into a kind cluster docker build -t cheers/gateway:dev -f server/Dockerfile . docker build -t cheers/frontend:dev --build-arg VITE_API_BASE_URL=/api/v1 frontend kind load docker-image cheers/gateway:dev cheers/frontend:dev --name cheers openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out jwt_priv.pem openssl rsa -in jwt_priv.pem -pubout -out jwt_pub.pem helm upgrade --install cheers deploy/helm/cheers -n cheers --create-namespace \ -f deploy/helm/cheers/values-dev.yaml \ --set-file secrets.jwtPrivateKey=jwt_priv.pem \ --set-file secrets.jwtPublicKey=jwt_pub.pem # UI → http://localhost:30080
# start dependencies only cp docker-compose.yml.template docker-compose.yml cp .env.example .env docker compose up -d postgres redis rustfs gotenberg # Rust gateway (runs sqlx migrations on startup) cd server && cargo run # in another terminal: the React frontend cd frontend && npm install && npm run dev
English is the default; most guides have a Chinese mirror. Browse the full index on the Docs page.