The cockpit for multi-agent software development.
Spawn and direct autonomous coding agents, watch their work unfold in real time, and review and merge what they ship, from one quiet, well-instrumented deck.
Features · Install · How it works · Documentation
Control Center gives you command over a fleet of AI coding agents. Each agent runs on its own branch, in its own copy-on-write worktree, producing pull requests, logs, costs and messages in parallel, all behind a native desktop app with GitHub, Linear, and Slack integration.
Spawning ten agents is easy. Knowing which one needs you isn't. Git, your terminal and the GitHub UI were built for one person writing one branch. The hard part was never any single action. It's holding the whole fleet in view at once, seeing what's blocked or waiting on you and acting in one or two moves without losing the thread. That's what Control Center is for.
|
Messaging is the primary way to use agents. Open a channel or @-mention an agent in a channel and it dispatches into its own worktree, thinking, tool calls and output streaming back in real time.
|
Pair your phone with Remote and keep up from anywhere, read messages, reply, triage tickets, without your data ever reaching a third party in readable form.
|
|
A Slack thread becomes a Control Center channel. @-mention the bot and an agent wakes in its own worktree. The turn streams back into the thread as a live task card and the answer lands under it.
|
|
|
Thinking, running, blocked, failed, idle. Every agent's state reads at a glance. Presence reports real work, never decoration.
|
Priority pull requests surface first. Read the diff, comment, dispatch reviewer agents and land a ship / hold / block verdict, without leaving the deck.
|
|
Compose steps into a DAG, prompt an agent, run a script, fan out reviewers, join the results. Every node carries its own retry and continue-on-fail policy.
|
The single unit of work the whole fleet shares, vendor-agnostic, synced with Linear both ways and coupled to the pipeline that delivers it.
|
|
Every conversation runs over its own copy-on-write worktree, with credentials minted per launch and revoked on teardown and every mutating action checked.
Note The OS sandbox needs a host backend: macOS always has one, Linux needs |
Each run opens with more context and you keep more control, than the run before it.
|
|
Record a call and walk away with a clean writeup. Capture, transcription and speaker diarization all run on-device — the audio never leaves the machine.
Note The recording and its transcript stay on the machine running the server. The final summarization step is an ordinary agent run, so it sends the transcript to whichever model provider that agent uses. Point it at a local provider (Ollama, LM Studio) to keep the whole pipeline on-device. |
Connect Google Calendar, see your day and turn any event into a recorded, summarized meeting in one click.
|
|
A workspace is multi-user. Invite a teammate, each of you keeps your own device credentials and read state and you see each other's presence next to the agents'.
|
A ⌘K omnibox spans every action, entity and agent. A "needs me" inbox collects only what blocks something. Every mutation is idempotent and undoable.
|
| Integration | What it does |
|---|---|
| GitHub | Pull requests, reviews, inline comments, checks and user profiles |
| Linear | Bidirectional ticket sync: status, assignee and comments |
| Slack | Chat bridge: @-mention the bot, follow a live task card in-thread, file tickets with /cc. Discord and Teams incoming |
| Google Calendar | Per-workspace event sync, RSVP, "starting soon" alerts and record-and-link |
| MCP | 103 typed tools over JSON-RPC, callable by any MCP client, plus a client that bridges in external MCP servers |
| Agent runtimes | A built-in agent runtime (direct provider API, no external CLI), plus Claude Code, Codex and Pi auto-detected on the server host's PATH and any ACP-compatible runner |
| Remote | The phone companion: messages, replies and ticket triage from anywhere, over a direct path or an end-to-end-sealed relay |
Open app.usectrl.dev. It is the same application with the same features.
A browser tab can't host the server, so you supply one: run cc_server on your own
machine and connect to ws://localhost:9030 (no certificate needed — browsers trust
localhost), or point it at a server on another machine reachable over wss://, whether
that's real TLS, a reverse proxy, a VPN, or a tunnel. See
Run a headless server.
brew tap control-center/tap
brew install --cask control-centerOr download the latest .dmg (Apple Silicon) from
Releases.
Intel Macs build from source.
Download from Releases:
the Windows -x64-setup.exe installer or portable .zip, or the Linux
.AppImage or .tar.gz. Standalone cc_server archives ship for all three
platforms and cc-server / cc-webapp / cc-remote
images are published to GHCR.
Note
The Windows build is new and has not yet been through a hand-checked release.
On Windows there are no copy-on-write worktrees (plain git worktree is the
backend) and no code-server.
Free and open source · auto-updates · macOS 13+, Windows 10+, or a modern Linux desktop.
Important
Before your first run you'll need Git, an agent runtime (either the built-in
runtime with a model-provider API key, or an agent CLI like Claude Code, Codex, or Pi
that Control Center detects on your PATH) and a GitHub personal access token with
repo and PR permissions, or the gh CLI, which Control Center detects automatically.
Tokens are stored in your system keychain, never on disk.
Requires the Flutter SDK (desktop enabled).
scripts/natives/build_natives.sh # required — a missing native is a hard boot failure
fvm flutter pub get
fvm flutter pub run build_runner build --delete-conflicting-outputs
fvm flutter gen-l10n
fvm flutter run -d macos # or windows, linuxThe SDK is pinned with fvm, so prefix every Flutter/Dart
command with fvm. Native libraries are required and have no degraded mode:
build them first or cc_server refuses to boot and names the offender.
Windows and Linux need nothing further. On macOS, secure storage (GitHub/Linear/Google
sign-in) needs the app signed by an Apple team — a free Apple ID is enough and it is a
one-time setup: see Local development signing
in RELEASING.md. Everything else runs unsigned.
- Create a workspace, your top-level container for agents, repos, channels and memory. The first workspace seeds a CEO agent that can hire and coordinate others.
- Add repositories, each agent channel gets its own copy-on-write worktree branch, so agents work in parallel without ever touching your source checkout.
- Dispatch an agent, mention
@agentin a channel, or mention the bot from a bridged Slack thread. It gets an isolated worktree, a prompt assembled from its role, persona, skills and context, capability-gated credentials minted for that launch and every mutating action checked against your guardrails — then it streams its thinking and output back in real time. - Review and merge, when the agent finishes it opens a pull request. Review the diff and merge, all without leaving the app.
Every conversation runs in one of four modes (chat, plan, review, or
orchestrate), each gating the system prompt, whether the agent can write files and
which tools it can reach. Mode is per conversation, so one agent can be in different
modes in different channels.
Tip
The whole surface (agents, review, the code graph, memory and ticketing) is exposed over an MCP / JSON-RPC server. Point any MCP client at it and drive Control Center the same way the app drives itself.
| Resource | What's there |
|---|---|
| usectrl.dev/manual | The full manual: tutorials, guides, concepts and reference |
| Quick start | Zero to your first dispatched agent in five minutes |
| ARCH.md | Architecture, layering and the technology stack |
| GLOSSARY.md | The ubiquitous-language glossary for the domain |