RoboCode is a local-first coding-agent cockpit for developers who want one terminal surface to chat with a model, approve real workspace changes, supervise delegated agents, and keep enough evidence to resume work later.
Chinese version: README.zh-CN.md
Most coding agents are good at a single conversation. RoboCode is built around a slightly different job: coordinating programming work. It keeps the active conversation, tool effects, approvals, tests, tasks, memory, provider health, and external agent lanes visible in one operator cockpit.
- Cockpit TUI: transcript, approval state, workspace snapshot, active tasks, diagnostics, provider health, and recent evidence stay visible together.
- Real tool execution: file read/write/edit, search, shell, web, Git, LSP, test commands, task state, and memory all run through the shared runtime path.
- Permission-aware edits: mutating file, shell, Git, workflow, and delegated agent actions are mediated by permission modes before they affect the workspace.
- Multi-provider runtime: DeepSeek, OpenAI, Anthropic, OpenAI-compatible gateways, Ollama, and offline fallback are available through one provider interface, with provider registry diagnostics.
- Agent supervision lanes: Codex, Claude, custom shell/template lanes, tmux, embedded PTY, and experimental ACP surfaces are exposed as supervised operator lanes.
- Durable local context: transcripts, session index, task events, memory events, lane artifacts, and preview evidence are stored locally by default.
- Screenshot-gated TUI iteration: visual changes produce deterministic screenshots for review before release.
- Multi-platform install: Homebrew plus release archives for macOS, Linux, and Windows.
These are real macOS Terminal screenshots captured from RoboCode 0.1.30
release-preview states with deepseek / deepseek-v4-flash. They cover the
welcome composer, live-turn cockpit, resize/CJK redraw behavior,
provider/model setup, delegated-lane operation, and side-screen evidence.
Deterministic SVG previews remain under docs/previews/generated/ for
regression review.
Recommended on macOS and Linux:
brew install wikieden/tap/robocodeVerify the install:
robocode --helpDownload a release archive from RoboCode v0.1.30.
Available release targets:
aarch64-apple-darwinfor Apple Silicon macOSx86_64-apple-darwinfor Intel macOSx86_64-unknown-linux-gnufor Linux x64x86_64-pc-windows-msvcfor Windows x64
Install on macOS or Linux:
VERSION=0.1.30
TARGET=aarch64-apple-darwin
curl -L -O "https://github.com/wikieden/robocode/releases/download/v${VERSION}/robocode-v${VERSION}-${TARGET}.tar.gz"
tar -xzf "robocode-v${VERSION}-${TARGET}.tar.gz"
sudo install -m 755 "robocode-v${VERSION}-${TARGET}/robocode-cli" /usr/local/bin/robocode-cli
robocode-cli --helpInstall on Windows PowerShell:
$Version = "0.1.30"
$Target = "x86_64-pc-windows-msvc"
Invoke-WebRequest "https://github.com/wikieden/robocode/releases/download/v$Version/robocode-v$Version-$Target.tar.gz" -OutFile "robocode-v$Version-$Target.tar.gz"
tar -xzf "robocode-v$Version-$Target.tar.gz"
New-Item -ItemType Directory -Force "$env:USERPROFILE\bin"
Copy-Item "robocode-v$Version-$Target\robocode-cli.exe" "$env:USERPROFILE\bin\robocode-cli.exe"
$env:PATH += ";$env:USERPROFILE\bin"
robocode-cli.exe --helpRun RoboCode. Clean installs use DeepSeek as the default online provider and open the cockpit TUI by default:
robocode-cliOn a clean session the TUI starts on a focused welcome composer instead of
opening setup automatically. It stays on that welcome surface while you run
setup commands; the full cockpit appears after the first normal task prompt.
Use Ctrl-P for commands, or submit one of these entries when you want
provider/model setup:
/setup
/setup provider
/connect
/modelsSet a DeepSeek key for live turns:
export DEEPSEEK_API_KEY="sk-..."
robocode-cliIf the selected model fails or is unavailable, RoboCode shows a switch-model
prompt with concrete /model ..., /provider ..., and /provider doctor ...
actions.
Run an explicit offline smoke session when you do not want a live provider:
robocode-cli --provider fallback --model test-localUse the legacy line REPL only when you explicitly need it:
robocode-cli --no-tui --provider fallback --model test-localStart from source during development:
cargo run -p robocode-cli -- --provider fallback --model test-local- Ask RoboCode to change code, then approve or deny each mutating tool call.
- Run
/test <command>to execute a test through the same permission path and keep failure evidence visible in/statusand the TUI. - Use
/git diff,/diff, and/git statusto review what changed before committing. - Create a lightweight active brief with
/brief <goal>or/spec <goal>; use/brief steering initwhen project conventions should guide lanes. - Track durable work with
/task add,/tasks,/task resume-context, and/memory. - Open side screens with
/screen side-1and/screen side-2when you want a second terminal to watch agent lanes or ops evidence. - Start supervised external work with
/lane codex,/lane claude,/lane run,/lane tmux, or/agent run codex.
Entersubmits the composer;Ctrl-Jis the explicit send action.Ctrl-Kclears the composer,Ctrl-Rreloads the latest user prompt, andCtrl-Nstarts/task add ....?opens the in-TUI help surface when the composer is empty.EscorCtrl-Cexits;/quitand/exitalso close the TUI.- While a provider turn is active, the cockpit keeps repainting the working
state and elapsed time.
Ctrl-Crequests cancellation when the runtime can observe it, but an in-flight provider request may still finish. - Approval prompts default to
Approve; pressyto approve,nto deny,dto focus diff, or useTab/ arrow keys to move between actions. - Type
/to open command suggestions. Provider and model commands stay in the compact completion surface while you are typing; they do not open a large modal until the command is submitted. Common entries include/help,/settings,/setup,/connect,/provider,/models,/status,/config,/permissions,/test,/sessions,/resume,/task,/brief,/spec,/memory,/lane,/agent,/screen,/lsp,/git,/web,/extensions,/mcp, and/skills. Long suggestion lists keep the selected row visible and support mouse completion on visible rows.
RoboCode loads config from the platform config path and then from
.robocode/config.toml, with CLI flags taking precedence.
Inside the TUI, /connect, /provider, /setup provider, and
/settings provider open an opencode-style provider picker. Select a supplier
inside the panel, enter an API key there when required, and then use the
provider config panel to change the key, clear the current session key, run
doctor, or choose that provider's default model. Choosing that provider-scoped
model saves the provider/model, runs provider doctor, and writes readiness
evidence back into the transcript. /models, /model, /setup model, and
/settings model open a provider-grouped model picker that only includes
configured providers. For configured providers, the picker includes active,
favorite, default, and known models; selecting a row applies the provider/model
switch immediately. API keys are masked in the panel and
RoboCode saves the env var name, not the raw key. Direct commands such as
/settings provider <provider> ..., /models <provider> <model>, and
/model <model> remain available for scripts and advanced users.
Live provider smoke evidence can be collected without opening the TUI:
scripts/provider-live-smoke.sh --provider deepseek --model deepseek-v4-flash
scripts/provider-live-smoke.sh --provider dashscope-coding-plan --model qwen3.6-plus
scripts/deepseek-dev-scenario-smoke.sh --model deepseek-v4-flashscripts/deepseek-dev-scenario-smoke.sh is the billable development smoke:
it asks DeepSeek to create a tiny Python module, generate and run its test, and
then writes usage.json plus a Markdown summary with input/output/total tokens
and an estimated CNY cost.
provider = "deepseek"
model = "deepseek-v4-flash"
permission_mode = "acceptEdits"
request_timeout_secs = 120
max_retries = 2
[providers.deepseek]
api_base = "https://api.deepseek.com"
api_key_env = "DEEPSEEK_API_KEY"
default_model = "deepseek-v4-flash"
models = ["deepseek-v4-flash", "deepseek-v4-pro"]
favorite_models = ["deepseek-v4-pro"]Useful startup flags:
robocode-cli --config .robocode/config.toml
robocode-cli --resume latest
robocode-cli --permissions plan
robocode-cli --tui-theme aurora-cyan
robocode-cli --tui-screen side-1- MCP and skills are visible through
/mcp,/skills, and/extensions, but MCP-backed tools are not yet wired into the mutation permission path. - ACP appears as an experimental agent adapter surface.
- Codex app-server write-capable delegated turns are guarded because live trials showed workspace writes can occur before RoboCode receives an approval event.
README stays focused on product usage. Full usage and implementation detail live in the docs:
- User Guide
- Architecture
- Product Requirements
- Long-Term Roadmap
- Staged Roadmap
- Reference Analysis
- Provider Live Matrix
- TUI Cockpit Design
- TUI Interaction Audit
- Testing and Validation Plan
- 0.1.26 Status
- 0.1.26 Plan
- 0.1.25 Status
- 0.1.25 Plan
- 0.1.23 Status
- 0.1.21 Plan
- 0.1.21 Status
- 0.1.19 Plan
- 0.1.19 Status
- 0.1.18 Status
- 0.1.17 Plan
- 0.1.17 Status
- 0.1.16 Plan
- 0.1.15 Status
- 0.1.15 Plan
- 0.1.14 Status
- 0.1.14 Plan
- 0.1.13 Status
- 0.1.13 Plan
- 0.1.12 Status
- 0.1.12 Plan
- ContextBundle And Token Efficiency
- Development Standards
Build a local archive:
scripts/package-release.shRun the release smoke matrix:
scripts/release-smoke.shWhen DEEPSEEK_API_KEY is available, add --deepseek to include the live
DeepSeek development scenario and token/cost summary.
For an actual release, use the mandatory release gate instead of ad-hoc smoke commands:
scripts/release-gate.sh --version <version>Generate TUI visual evidence:
scripts/tui-regression.sh docs/previews/generatedAfter publishing, validate release assets and Homebrew:
scripts/release-gate.sh --version <version> --phase postpublishEvery GitHub Release must be paired with a same-version Homebrew tap update. Do not mark a release complete until the post-publish smoke validates both GitHub assets and Homebrew. The release status must also include the DeepSeek live smoke token/cost summary from the prepublish gate.
Please report bugs and feature requests through GitHub Issues.
Helpful issue details:
- RoboCode version or release asset name.
- Operating system and terminal app.
- Provider and model, for example
deepseek / deepseek-v4-flash. - The command you ran and the smallest reproduction steps.
- Relevant logs or screenshots, with API keys and private paths redacted.
RoboCode is released under the MIT License. See LICENSE.













