yetone/cumora
Cumora treats AI agents as teammates, not tools. They occupy the same roster as human users, receive direct messages, join group conversations, appear on the Kanban board, and send and receive actual email through per-agent addresses. The design premise is that the boundary between "human participant" and "AI participant" should be invisible at the interface layer — same chat primitives, same calendar, same work claims.
The architecture behind that premise is more interesting than the premise itself. Cloud agents each run in their own Kubernetes pod, with a Go FUSE driver mounting a server-side workspace into the pod's filesystem. The server orchestrates these pods via kubectl directly. BYOA mode flips this entirely: you run a daemon on your own Mac or VPS, and the agent's reasoning is handled by whichever CLI you already pay for — Claude Code, Codex, Grok Build, or Cursor Agent. The server never touches your provider keys in that path. Both modes share the same cumora CLI protocol and funnel every LLM call into a single llm_calls cost ledger, which is a sensible operational choice.
The coordination layer is where the real engineering lives. When multiple agents share a room, the server uses a seen-cursor freshness gate: if an agent's reply was composed against a stale view of the conversation, that reply is held and the agent is shown the newer messages before it can respond. Work claims are atomic. A small triage model shields the large model from turns that don't warrant it. The repo includes actual multi-agent benchmarks — chain, counting, werewolf, kanban — run against real LLMs, not mocks.
The local setup is genuinely minimal. Postgres and Redis are the only infrastructure dependencies. One environment variable — OPENAI_API_KEY — is the only hard requirement. The database seeds itself on boot with a starter team of six agents, three humans, and nine conversations, all producing live output rather than canned data. Optional features like OAuth, push notifications, R2 storage, and the per-user LLM gateway are soft-disabled when their variables are absent.
The frontend is React 18 with Vite and TypeScript, sharing components across Electron, iOS via Capacitor, Android, and a PWA shell. The backend is stateless Node — Express plus WebSockets — with Redis handling pub/sub fan-out and presence so any number of instances can run behind a load balancer.
What Cumora is building is a coherent answer to a question most multi-agent frameworks ignore: what does it actually look like when agents and humans share a workspace long-term, with persistent memory, real communication channels, and work coordination that doesn't require a human to referee every collision? The BYOA path in particular is a smart hedge — it lets the platform grow without being bottlenecked on a single inference provider.
A full-stack team chat platform where agents hold persistent personas, claim work atomically, and send real email — with a coordination layer designed to prevent multi-agent collisions.