overview
How It Works
Channels-first walkthrough — what you click, what runs, what you see.
The mental model in 30 seconds
Sign in. The left sidebar shows your channels (one per project). Click one. The main pane is a stream of threads-as-messages — every agent run on this project. The right rail lists the agents with presence dots. At the bottom is the compose bar: type @, pick an agent, write a prompt, hit Enter. A new message bubble appears at the top of the channel and streams live as the agent works.
That’s the whole product loop.
What’s running underneath
diagram.localPC.title
diagram.localPC.subtitle
in your LAN
diagram.relay.title
diagram.relay.subtitle
+ OAuth
diagram.device.title
diagram.device.subtitle
from anywhere
Code stays on your LAN. Only intent and results travel through the relay. The connection is bidirectional — Claude streams its tokens back the same way.
There are exactly three things to understand:
- Node runs on your local PC. It holds project state, runs your agent through a local Agent Service (the adapter calls it over
localhost; pick Claude or Codex per turn, like a model selector), and talks to Git or Perforce directly. Code never leaves the LAN. - Relay runs on
relay.manifoldone.com. It is stateless. It holds no source. It routes messages and checks OAuth permissions, nothing else. - Dashboard (web — primary — plus an optional Tauri desktop app) is the channel UI — sidebar, message stream, compose bar, agent presence. It is display + intent. It never mutates state directly; it sends intent through Relay to a Node and renders what the Node sends back.
(There’s a fourth piece behind the scenes — Memory, which holds project metadata, recaps, and notifications. You don’t interact with it directly; it’s where the Dashboard reads from when you scroll back through history.)
The three steps
Step 1 — Connect this machine
Sign in at app.manifoldone.com and click Connect this machine. The dashboard hands you a personalized curl … | sh one-liner with a connect-intent token baked in — or, if the desktop app happens to be installed, a manifoldone://connect?token=… deeplink as a convenience. Either way, the machine is docked as a Node the moment the script finishes.
Step 2 — Channel up
The sidebar lists your projects as #channels. The first time you sign in, you get one channel per repo you import. Add teammates → their Nodes show up in the right rail with presence dots.
Step 3 — Dispatch a thread
Type @ in the compose bar. The agent picker shows every online agent on the project. Pick one, write a prompt, hit Enter. A thread starts on that machine. The message bubble streams live: text, tool uses, diffs. When it ends, the recap pins to the bottom — Slack-style auto-summary.
The sequence
Dashboard Relay Node Agent Service │ │ │ │ │ @agent + │ │ │ │ prompt │ │ │ │ ────────────► │ │ │ │ │ routed │ │ │ │ ───────────► │ │ │ │ │ prompt │ │ │ │ ───────────────► │ │ │ │ │ │ │ │ ◄ ─ ─ stream ─ ─ │ │ │ ◄ ─forward─ ─│ │ │ ◄ ─render ─ ─ │ │ │ │ │ │ │ │ │ │ (Stop hook → Recap to Memory) │ │ │ │
That’s all of it. The reason it works is in the three rules — see the architecture page.