Install
System requirements
Section titled “System requirements”| Requirement | macOS | Windows | Linux |
|---|---|---|---|
| OS version | macOS 13+ (Ventura) | Windows 10+ | A modern distro with a graphical environment |
| Architecture | Apple Silicon (arm64) and Intel (x86_64) | x86_64 | x86_64 |
| Disk space | ~200 MB for the app + space for worktrees | ~200 MB | ~200 MB |
| Git | Required | Required | Required |
Download
Section titled “Download”macOS is the shipping platform today. Windows and Linux builds are in progress; you can build from source on all three platforms in the meantime.
-
macOS: Download the latest
.dmgfrom GitHub Releases, open it, and drag Control Center to Applications. The build is signed with a Developer ID and notarized by Apple, so it opens normally. You can also install it with Homebrew:Terminal window brew tap control-center/tapbrew install --cask control-center -
Windows and Linux: prebuilt downloads are not available yet. Watch GitHub Releases for the first Windows
.exeand Linux AppImage, or build from source today.
Agent CLI setup
Section titled “Agent CLI setup”Control Center dispatches agents through CLI backends. Install at least one:
- Claude Code (
claude):npm install -g @anthropic-ai/claude-code - Codex CLI (
codex):npm install -g @openai/codex - Pi (
pi): Install per the Pi documentation
Control Center auto-detects installed CLIs in your PATH. You can also register custom adapters in Settings → Adapters.
GitHub authentication
Section titled “GitHub authentication”Control Center needs a GitHub personal access token (PAT) with these scopes:
repo: full repository accessread:org: organization membership
Create one at GitHub Settings → Developer settings → Personal access tokens.
If you have the gh CLI installed and authenticated (gh auth login), Control Center detects and uses it automatically.
Choose how Control Center runs
Section titled “Choose how Control Center runs”Control Center is a thin client: it never opens the database itself — a headless cc_server process owns the data and serves it over RPC. On first launch you choose how the desktop reaches its server:
- Run locally (default): the desktop spawns and supervises a
cc_serveron this machine that owns the database, and talks to it over loopback. This is the self-contained, single-machine setup — nothing to configure beyond the choice. - Connect to a remote server: point the desktop at a
cc_serverrunning elsewhere (a small box, a cloud VM) with the server’s WebSocket URL, a device id, and the pairing key it minted for you. The data lives on that server; this desktop is purely a renderer.
You can change this later in Settings → Server connection (it applies on the next restart). The web client is always remote — a browser cannot run a server.
Run a headless server
Section titled “Run a headless server”To run your own cc_server for other clients to connect to, build the pure-Dart binary and pair a client before first start. See Run a headless server for the full walkthrough; the essentials:
cd apps/cc_serverdart build cli./build/cli/<os_arch>/bundle/bin/cc_server pair --data-dir ./data --port 9030./build/cli/<os_arch>/bundle/bin/cc_server --data-dir ./data --port 9030Web client
Section titled “Web client”The web build is the same app compiled for the browser. It always connects to a remote cc_server — open the deployed client, enter the server’s WebSocket URL, device id, and pairing key, and it renders the full desktop interface. You can also build it yourself with flutter build web.
Verify your setup
Section titled “Verify your setup”After launching Control Center:
- The first-run flow asks how you want to run (local or remote), then walks you through GitHub auth and workspace creation.
- Open Settings → Adapters to verify your agent CLIs were detected.
- Open Settings → Repositories to add your first repo.
- Run Agent doctor from any agent’s context menu to diagnose environment issues.
Building from source
Section titled “Building from source”git clone https://github.com/SamuelAlev/control-center.gitcd control-centerflutter pub getflutter pub run build_runner build --delete-conflicting-outputsflutter run -d macos # or -d windows, -d linuxRequires Flutter 3.x with desktop support enabled.