Sideboard Home Install Settings Find work Schedules Guides Download for Mac
Docs

Everything you need to run the fleet

Start with the CLI — it's the fastest way to see whether Sideboard fits how you already work. The desktop, MCP and Slack layer on top of the same local orchestrator.

Install

CLI

Ships the stdio MCP server too. Aliases: side → sideboard.

npm i -g @sideboard-ai/cli
sideboard detect

Desktop

Apple Silicon Mac builds from the public download host. Auto-updates on launch and every four hours — never mid-session. Token counts always show; turn on Settings → Advanced → Show cost (when available) for provider-reported USD (off by default; Codex has no USD). Claude and Global / orchestration chats also show remaining Claude Code plan usage (5-hour, weekly, per-model) next to the context ring.

Download for Mac

Agent CLIs

Sideboard shells out to each agent's own CLI. Install the ones you want on your PATH and authenticate; Cursor uses a user-installed @cursor/sdk plus a CURSOR_API_KEY (Settings → Agents → Cursor → Install).

npm i -g @anthropic-ai/claude-code
npm i -g @openai/codex
npm i -g opencode-ai@latest
npm i -g @cursor/sdk
export CURSOR_API_KEY="cursor_..."

Quick start

Board, send, inspect, attach when you want the native CLI, land when it's ready.

sideboard new --from branch:main --agent claude
sideboard new --from branch:main --cowboy   # project folder on default branch; Settings → Advanced first
sideboard ls
sideboard send <thread> "add a README note"
sideboard diff <thread>
sideboard attach <thread>        # native CLI, same session
sideboard land <thread>          # interactive y/N; no --yes in v1
sideboard schedule ls
sideboard adopt --from-conductor # import Conductor workspaces + history

Connect the MCP

The desktop auto-injects the MCP into its own turns. Register it yourself when you want fleet tools from an agent running outside Sideboard.

Claude Code

claude mcp add --scope user \
  sideboard -- sideboard mcp

Cursor

{ "mcpServers": { "sideboard": {
  "command": "sideboard",
  "args": ["mcp"] } } }

Codex

[mcp_servers.sideboard]
command = "sideboard"
args = ["mcp"]

OpenCode

{ "mcp": { "sideboard": {
  "type": "local",
  "command": ["sideboard","mcp"] } } }

Agents then get discovery (list_workspaces, list_threads), worktree chats (create_thread, send_to_thread, wait_for_turn, fork_worktree), schedules (create_schedule), structure panes, setup/run scripts, diffs, review and ask_git. create_thread cowboy=true (and CLI --cowboy) needs Settings → Advanced → Cowboy mode first — then the child works in the project folder on the default branch. send_to_thread steers (Settings → Follow-up, default interrupt now). wait_for_turn returns within ~45s with stillRunning and taskState while the child is still working — call it again; do not assume a hang. Ready-for-review land and purge stay human-only. Orchestrators may tell a worktree agent to merge (ask_git) only when the user explicitly asked.

Settings

Desktop Settings opens on Agents. Connections are owned by Sideboard, not per-agent MCP.

Agents

Default agent, model, and effort for new chats; Account context (roles, tickets, and review queues as freeform text); then harness setup for Claude, Codex, OpenCode, Cursor, and Brightsy.

Projects

Per-repo context that adds to Settings → Agents. Agents can update account or project context after you confirm.

Git

How this Mac and worktree agents authenticate GitHub — Auto, gh, SSH, or a personal access token.

Issues

Preferred tracker for Create-from and Home. Connect Linear (browser) or AbleTime (personal access token).

Remote

Slack remote-controls this Mac. Add a workspace, name this destination, wait for Relay connected.

Connectors

Optional Vercel, Supabase, PostHog, and Sentry tokens. Agents use official CLIs or the PostHog HTTP API — not vendor MCPs. Install a missing CLI from the same row.

The rest

Environment injects extra env. Schedules are local jobs. Advanced covers cowboy, caffeinate, show cost, and one usage/session-limit policy (keep going, confirm, switch agent, or wait for reset). History is archived chats.

Contextually aware

The orchestrator reads Settings → Agents (account) plus Settings → Projects (per-repo) so it can pick tickets and review PRs the way you would.

“Find me some work”

Lists options only. Tickets via list_issues (query + assignee from your context). Reviews via list_prs queue=review — open non-draft PRs labeled eng-review with no individual reviewer, preferring teams that match that context. Does not create worktrees.

“Find me work and start it”

Same list, then create_thread + send_to_thread for the ones you want started. Same split for reviews.

A team request such as engineering-team is a queue, not a claim — you are on that team. Set this once; every orchestration chat already has that context.

Scheduled orchestration

Local jobs that send a prompt to an existing Global chat, or start a new one. Sideboard.app must be running. A sleeping Mac skips until wake.

sideboard schedule ls
sideboard schedule add --prompt "Triage open PRs" --every 1h --thread <id>
sideboard schedule add --prompt "Morning standup" --cron "0 9 * * *" --tz America/Los_Angeles
sideboard schedule run <id>

Same jobs from Settings → Schedules or orchestration MCP (create_schedule, threadId=self to continue this coordinator). Overnight: Settings → Advanced → Caffeinate while schedules are enabled (off by default so a 9am cron does not pin the Mac awake), or set_caffeinate from a chat. Recurring jobs with no target chat open a new Global chat each run.

Guides

Settings

Agents (account context), Projects, Git, Issues, Remote, and Connectors — connections live here, not in per-agent MCP.

Find work

Account and project context so the orchestrator is aware when listing tickets and review PRs — or starting them. Agents can update that text after you confirm.

Schedules

Local jobs that wake an orchestration chat. Opt-in caffeinate so overnight runs can fire.

Slack

Settings → Remote. Connect a workspace, name this Mac, and address it by prefix from a DM or channel.

Agents

Install Claude Code, Codex, OpenCode, and Cursor. Sideboard shells out to each harness.

Remote integrations

Settings map, Slack relay, Linear, optional connectors, and what does and doesn't leave the machine.

Process skills

Recurring guides live in .claude/skills so Claude Code and attach see them without Sideboard. Sideboard also ships /long-running to every worktree agent.

Compare

Peer-by-peer notes against Conductor, Cursor, Emdash and Superset.

Security

Where credentials live, what the relay sees, and the v1 safety rails on landing.

Repo config

Commit these next to the code. Sideboard prefers .sideboard/settings.toml; an existing .conductor/settings.toml still works.

Worktrees

Checkouts live outside the repo at ~/sideboard/workspaces/<repo-slug>/<team>/. Override the root in settings. Opt-in cowboy (Settings → Advanced, then New chat → ⋯) works in the project folder on the default branch instead.

Setup

New worktrees run [scripts] setup when present, then Cursor .cursor/worktrees.json, then script/setup or bin/setup.

Review

Review attaches .claude/skills/review/SKILL.md when that skill already exists; otherwise it copies .sideboard/review.md into the worktree .context/review.md. Sideboard does not create a review skill.

Process skills

Put recurring guides in .claude/skills/<name>/SKILL.md, not .sideboard/skills, so Claude Code and attach load them without Sideboard. /long-running is a Sideboard product skill — every worktree agent gets detach-and-wait without copying that file.

[scripts]
setup = "pnpm install"

[scripts.run.dev]
command = "PORT=${SIDEBOARD_PORT:-3000} pnpm --filter web dev"
default = true