A shared workspace where every person brings their own local agent, and the room remembers.
Channels are domains of work — meetings, marketing, support. You work in a channel
alongside your own agent, running on your own machine. A colleague joins the same channel
with their agent and continues where you stopped, because what the room knows is held by
the room, not by anyone's agent.
Status: a running prototype.
bin/prototypebrings the whole thing up. Channels, live messages, a local agent in the room over ACP, a capability rail the agent reaches memory through, and rehydration across people and sessions. See Running it.
Alice — local agent ──┐
Bob — local agent ──┤ ACP
Dana — local agent ──┼──────► WorkRoom
│ channels · messages · artifacts
│ identity · permissions · capability rail
│ │
│ ▼ MCP
└──────────────► context database
memory + skills
Every change goes through agent-flow: a card, a plan agreed first, a test before the code, and gates reported on the pull request. Three of its rules are checked by CI. See CONTRIBUTING.md.
| Concept | The problem, the idea, and what this deliberately is not |
| Architecture | Components, seams, and how work flows through them |
| Memory | Channel scopes, tiers, promotion, and the feedback loop |
| Agents | Local agents, sessions, rehydration, artifacts |
| Capability rail | Two tools, dynamic discovery, execution modes |
| Data model | Tables, and the reasoning behind each |
| Roadmap | What gets built, in what order, and why |
| Running it | How to start it, and how to see the idea work |
| Spikes | Research: what an agent records, how output reaches the room, memory backends, files |
| Server | Ruby on Rails | 8.1.3.1 on Ruby 3.4.10 |
| Realtime | Action Cable | Solid Cable — no Redis |
| Jobs | Active Job | Solid Queue |
| Artifacts | Active Storage | S3-compatible |
| Identity | OmniAuth | OIDC / SAML |
| Database | PostgreSQL | |
| Desktop | Tauri 2 | |
| Local agent | any ACP-speaking agent | opencode by default |
| Context database | OpenViking | separate service |
server/ Rails — API, WebSocket, capability rail, admin
desktop/ Tauri — desktop client, manages the local agent over ACP
docs/ documentation
One repository, because for now nearly every change crosses the seam between the two. Splitting becomes worthwhile when the client grows its own team, not before.
Release tags are prefixed: server-v* and desktop-v*.
bin/prototype # database, schema, a seeded room, server
cd desktop && pnpm install && pnpm tauri devSee Running it for what to try once it is up.
Requires Ruby 3.4.10 and Node 24. The agent is yours: npm i -g opencode-ai && opencode auth login.
Built by Farol Labs.