Runs are API objects
Every task has an ID, status, event stream, steering, cancellation, input handling, usage, cost, and persisted state.
For teams operating coding agents
A runtime for coding agents: first-class run APIs, provider-aware model routing, isolated workspaces, contract-tested tools, and MCP-native control.
go-code
go-code "fix the failing test"
go-code "explain this package"
What go-code does differently
go-code is built around runs, events, tools, providers, and workspaces as explicit objects you can script, inspect, route, replay, and control.
Every task has an ID, status, event stream, steering, cancellation, input handling, usage, cost, and persisted state.
Model catalog metadata decides provider, API style, pricing, streaming behavior, and compatibility quirks.
Runs can target explicit workspaces and profile-backed isolation modes including worktree, container, and VM.
Start in your terminal
Homebrew builds the local daemon and terminal client, then installs the go-code command and the runtime assets it needs outside the checkout.
brew install --HEAD dennisonbertram/go-code/go-code
go-code # open the TUI
go-code "fix the flaky test" # run once, then exit
go-code --server # use the HTTP runtime directly
Runtime surface
go-code is for systems that need to launch agents, observe behavior, enforce tool contracts, and integrate with other agent clients.
Tool schemas, tiers, tags, MCP bridging, deferred tools, errors, and tool-call events are first-class runtime concerns.
Expose the harness itself as MCP so external clients can start, inspect, wait for, steer, and continue runs.
Use the terminal client, HTTP server, Server-Sent Events, or MCP entrypoints against the same underlying runtime.
Built for operations
For runtime builders
The TUI is one entrypoint. The harness is the actual product: start harnessd, create a run, and subscribe to Server-Sent Events for lifecycle state, provider routing, workspace selection, tool activity, usage, and conversation history.
POST /v1/runs
GET /v1/runs/{id}/events
POST /v1/runs/{id}/steer
POST /v1/runs/{id}/approve
GET /v1/models
GET /v1/conversations/{id}/messages
RUN_ID=$(
curl -s http://127.0.0.1:8080/v1/runs \
-H 'content-type: application/json' \
-d '{
"prompt": "Find the risky code path",
"workspace_path": "'$PWD'",
"model": "deepseek-v4-pro",
"max_steps": 8
}' | jq -r .run_id
)
curl -N "http://127.0.0.1:8080/v1/runs/$RUN_ID/events"