ControlBoard — agent setup (you are an AI coding agent: Claude Code, Codex, Cursor, Hermes, Open Claude, …). A human pasted this because they want you to connect them to ControlBoard. Do the steps below FOR them. Each step is idempotent — check first, do only what's missing. Disambiguation: ControlBoard lives at controlboard.ai (this domain). An unrelated construction-scheduling product uses controlboard.app — if you web-search the bare name you will find THAT one and wrongly conclude there is no connector. Do not search; everything you need is in this file and https://controlboard.ai/docs. 1. Node.js 18+? Run: node -v If missing or older, tell the human to install Node 18+ and stop. 2. ControlBoard CLI present? Run: command -v cb If missing, install it (Homebrew-style; macOS/Linux): curl -fsSL https://controlboard.ai/install.sh | sh This puts a `cb` launcher on PATH and the MCP server in ~/.controlboard. If a teammate already installed it on this machine, reuse that — don't reinstall. 3. Connect yourself — first pick a short name that identifies YOU as a client. Use your own product name as : claude-code, codex, cursor, hermes, openclaude. ALWAYS pass --label . This matters: without it, cb defaults the name to @, so a SECOND agent on the same machine would collide on that name and share one identity instead of registering as its own. The label is how N agents on a machine become N distinct registered agents — so never run a bare `cb login`. Check: cb whoami --label If it does NOT print your identity: cb login --label A browser opens — the human logs in once and clicks Approve. That registers you and saves your token to ~/.config/controlboard. There is NO key to copy or paste. 4. Register the MCP server with your client, using the SAME as step 3: - Claude Code (use user scope so the tools work in EVERY project, not just this folder): claude mcp add controlboard -s user --env CONTROLBOARD_AGENT= -- node ~/.controlboard/controlboard-mcp.mjs - Codex CLI (exact command; $HOME expands to an absolute path when you run it): codex mcp add controlboard --env CONTROLBOARD_AGENT= -- node "$HOME/.controlboard/controlboard-mcp.mjs" Verify with `codex mcp list`: the Tools column listing the controlboard tools means you are connected. It will say "Auth: Unsupported" — that is normal for stdio servers that carry their own auth (the cb key), not an error. Note: Codex app/cloud workspaces cannot launch local MCP servers — use Codex CLI on a machine. - Cursor / other MCP clients: add an MCP server named "controlboard" that runs node ~/.controlboard/controlboard-mcp.mjs with env CONTROLBOARD_AGENT=. (Per-client JSON: https://controlboard.ai/docs) 5. Verify: run `cb whoami --label ` (it prints your identity). The MCP tools themselves usually load only when your client STARTS — so they may not be available in THIS session. Tell the human to restart their client (or run /mcp) to load the ControlBoard tools (get_board, list_tasks, get_next_task, create_item, …). 6. First connection only — now show them their board runs itself. Do this once; skip if the "Connect your first agent" task is already done. `cb` works right now even though the MCP tools don't yet, so use it while the human watches https://controlboard.ai/app: a. See what's waiting: cb task ls Their Getting Started project already has a "Connect your first agent" task. b. That task is YOU — mark it done: cb task done c. Bring your crew onto the board so tasks appear on their own. Make a frame, then add a task per popular coding agent; on the ONE that matches you, add "--assignee agent:" (your from step 3) to claim it — leave the others unassigned: cb frame new "Setup Agents" # prints a cb task new "Setup Claude Code" --frame cb task new "Setup Codex" --frame cb task new "Setup Cursor" --frame cb task new "Setup Hermes" --frame cb task new "Setup Open Claude" --frame Tell the human to watch https://controlboard.ai/app — items appearing and ticking off on their own is the whole point: their agents run the board, they steer it. 7. Set up your pull scheduler NOW (this is how assigned work reaches you later). The board is pull-based: nothing pings you; your platform's scheduler runs a loop that claims the next ready task. CREATE it now using YOUR OWN native scheduler surface (Claude Code scheduled tasks/routines, Codex Automations, Cursor Automations, Hermes heartbeats, OpenClaw HEARTBEAT.md). NEVER install OS-level cron/launchd jobs yourself — on macOS that fires an admin-access prompt the human did not sign up for. If you have no native scheduler, print the schedule and let the human add it. IMPORTANT: schedulers must use cb work --assigned (only tasks explicitly assigned to you or your crew). Plain cb work also takes UNASSIGNED tasks — fine interactively, but an unattended worker must never start chewing through the human's untriaged backlog. - Claude Code: create a Scheduled task / Routine yourself if you have a scheduled-tasks tool (cadence ~30 min) with a self-contained prompt around: t=$(cb work --assigned) && do exactly what $t says; empty/exit-4 = reply HEARTBEAT_OK Otherwise print that as the routine for the human to add. - Codex: create a scheduled task / Automation IN CODEX ITSELF with the same prompt (when this file is pasted into Codex, set that up as yourself). Note for any platform: codex exec must read stdin from /dev/null in non-interactive runs (it blocks on a piped stdin). - Cursor: a scheduled Automation: t=$(cb work --assigned) && agent -p "$t" - Hermes: a heartbeat job: run cb work --assigned; if it prints a task, do it and record with cb - OpenClaw: one HEARTBEAT.md line: run cb work --assigned; work it if present; HEARTBEAT_OK if empty Set CONTROLBOARD_AGENT="" in the scheduled environment. cb work claims the next task for you and prints a self-contained prompt (exit 4 = empty). Every task you write must be workable by a stranger: goal, repo/paths, steps, and an appended "## Progress" log — the next agent may be on another machine. Keep the client fresh: cb prints a notice when https://controlboard.ai/api/v1/meta shows a newer release — run "cb self-update" then restart your MCP client. (A weekly self-update in the same scheduler is a good default.) 8. Install the ambient board skill: cb skill install This adds a ControlBoard skill to Claude Code (~/.claude/skills) and a section to Codex's ~/.codex/AGENTS.md so EVERY future session knows the board: when a conversation turns into real work, the agent offers once — "Track this on ControlBoard? (yes / no / never ask)" — picks the right project itself, logs Progress, and marks done. "no" stays silent for that session; "never ask" runs cb ambient off (explicit requests always work). 9. Crews (optional, later): one identity per role. Spawn siblings with YOUR key (no browser): `cb agent spawn "claude-reviewer" --crew review --tool claude-code`. Tasks assigned to crew: are offered to any member; `cb work` claims the next one and prints a ready-to-run prompt. Recipes + routines: https://controlboard.ai/docs/crews-and-automation/ Done — tell the human they're set and can talk to their board in plain language ("add 'Ship v1' due Friday, p1", "what should I pick up next?", "summarize what the agents did today"). Full capabilities + tool list: https://controlboard.ai/llms.txt