One agent. Or a fleet.

Start with cc-agent as a single binary on your laptop. Connect it to a web UI when you need to. Wrap Claude Code, Codex, or Gemini CLI when you have one. Use our hosted console — or self-host the whole thing.

# Run cc-agent locally (no control plane needed)
$ ./cc-agent -provider deepseek -model deepseek-chat -cwd .
# Ask it to do something
you> what's the kernel version on this box?
# It runs bash, then answers.
bash {command=uname -r} → 6.6.87.2-microsoft-WSL2
$ _

Why Agent Control?

Multi-Server

One dashboard to rule them all. Manage diverse environments from a single pane of glass.

Secure by Design

Outbound-only WebSocket connections. No inbound ports. Zero Trust architecture ready.

Real-time PTY

Full xterm.js integration. It feels like SSH, but smarter and web-native.

Audit Trails

Every command, every output. Full JSONL logging for compliance and replay.

Native Apps

Control your agents on the go with dedicated macOS and iOS applications.

Open Source

MIT Licensed. Hackable. Deploy it on your own infrastructure.

Four progressively richer ways to use it

Pick the level that matches what you're doing today. Graduate as you need more.

1

Run cc-agent locally — one binary, one LLM key

Download cc-agent, give it a DeepSeek / Anthropic / OpenAI / local Ollama key, and start chatting. It runs the LLM loop itself with eight built-in tools (bash, read, write, grep, glob, sysinfo, proclist, logtail). Destructive commands hit an approval gate.

CC_AGENT_API_KEY=$(cat ~/.cc-agent-key) \ CC_AGENT_BASE_URL=https://api.deepseek.com \ ./cc-agent -provider deepseek -model deepseek-chat \ -cwd ~/work -memory ~/cc-agent.db

No control plane, no UI, no remote — just a REPL.

2

Connect cc-agent to cc-control — drive it from the browser

Want to run it on a remote server, share with teammates, or use the iOS / macOS / Windows clients? Add -control-url and an Agent Token. The agent registers, you get a web UI on top of it.

./cc-agent \ -control-url wss://cc-remote.app/ws/agent \ -agent-token <your-agent-token> \ -server-id srv-01 -allow-root /path/to/repo

One process per node; the dashboard shows them all with a purple cc-agent badge.

3

Already use Claude Code / Codex / Gemini CLI? Run cc-proxy

cc-proxy is a PTY proxy that wraps an external CLI agent and exposes it as a regular session in the same UI. Pair cc-agent on some nodes and cc-proxy on others — the control plane treats them uniformly.

./cc-proxy \ -control-url wss://cc-remote.app/ws/agent \ -agent-token <your-agent-token> \ -server-id claude-node-01 \ -claude-path /usr/local/bin/claude

Naming note: cc-proxy was called cc-agent before v0.7.0; the self-developed agent took over the name. Different roles, same protocol.

4

Hosted control plane — or run your own

Two ways to get the cc-control side:

Hosted

Sign up at console.cc-remote.app, mint UI / Agent tokens, point your nodes at wss://cc-remote.app/ws/agent. Works in minutes; iOS / macOS / Windows clients too.

Self-host

cc-control is MIT-licensed. Run it on Linux behind TLS or a Cloudflare Tunnel. See the deployment guide.

Read the long form? English overview at Getting Started, then Use Cases. Chinese step-by-step at tutorial/.

Architecture

flowchart LR subgraph Clients Browser["Browser UI"] App["Native App"] end subgraph Control["Control Plane"] CC["cc-control"] end subgraph Agents A1["Agent 1"] A2["Agent 2"] end Clients -->|"REST/WS"| CC CC <-->|"Secure WS"| A1 CC <-->|"Secure WS"| A2 style Clients fill:#111725,stroke:#44697f,color:#d4d4d4 style Control fill:#111725,stroke:#44697f,color:#d4d4d4 style Agents fill:#111725,stroke:#44697f,color:#d4d4d4 style CC fill:#315f72,stroke:#274f62,color:#fff