go-code is a local-first coding agent for working inside real repositories. It gives you an installable terminal command, a TUI for interactive development, a streamed HTTP runtime, provider and model routing, workspace-aware tool calls, and enough visibility to understand what the agent is doing while it works.
The project is implemented in Go. The public command is go-code; the internal module name is still go-agent-harness while the product surface settles.
go-code: launch the TUI from any repository.go-code "prompt": run one coding prompt and stream the result.go-code --server: start the localharnessddaemon and leave it running.- A streamed event API for runs, tool calls, model usage, approvals, subagents, conversations, and replay.
- Provider catalog support for OpenAI, Anthropic, Google, DeepSeek, Z.ai, OpenRouter-style routes, and local catalog pricing.
- Workspace-aware execution so the agent works in the project directory where you launched it.
Install the latest main build with Homebrew:
brew install --HEAD dennisonbertram/go-code/go-codeThen run it from any repository:
go-codeSource install is still available if you do not use Homebrew:
git clone https://github.com/dennisonbertram/go-code.git
cd go-code
./scripts/install.sh --add-to-pathOpen a new shell, or add the printed PATH line for your current shell.
Common modes:
go-code # interactive TUI in the current project
go-code "summarize this repo" # single-shot prompt
go-code --server # persistent local daemonSet the provider keys you plan to use before starting a run:
export OPENAI_API_KEY="..."
export ANTHROPIC_API_KEY="..."
export GOOGLE_API_KEY="..."
export DEEPSEEK_API_KEY="..."
export ZAI_API_KEY="..."You only need keys for the providers you use. You can also configure provider keys through the TUI and server APIs as the harness evolves.
For development or debugging, run the server and CLI directly:
go run ./cmd/harnessd
go run ./cmd/harnesscli -base-url http://127.0.0.1:8080 -prompt "Summarize the repository"Long-running local servers should be started in tmux:
tmux new-session -d -s go-code-server 'cd /path/to/go-code && go run ./cmd/harnessd'
tmux attach-session -t go-code-servercmd/harnesscli: command-line client and terminal UI.cmd/harnessd: local HTTP daemon and runtime bootstrap.internal/harness: run loop, tools, event emission, and conversation behavior.internal/server: HTTP API handlers.internal/provider: provider clients, model catalogs, pricing, and routing.internal/workspace: local, container, VM, and worktree workspace implementations.catalog/: model and pricing catalogs used at runtime.prompts/: bundled prompt assets installed withgo-code.apps/: experimental apps that integrate with the harness.benchmarks/: Terminal Bench and overnight benchmark harnesses.harness_agent/: Python adapter used by benchmark runners.skills/: bundled skill fixtures and validation coverage.demo/: small static demos and smoke-test pages.build/: container/build packaging assets.testdata/: shared test fixtures.playground/: separate-module experiments and training exercises.docs/: runbooks, design notes, logs, Pages source, and project context.scripts/: install, development, Symphony, and regression helpers.
The repo root is kept for product entrypoints and project metadata. Scratch snippets and exercises should live under playground/ or a dedicated test fixture.
The server exposes a streamed coding-agent API. The most commonly used endpoints are:
GET /healthz
GET /v1/models
GET /v1/providers
POST /v1/runs
GET /v1/runs/{id}/events
POST /v1/runs/{id}/continue
POST /v1/runs/{id}/steer
POST /v1/runs/{id}/compact
POST /v1/runs/{id}/cancel
GET /v1/conversations/
GET /v1/skills
GET /v1/subagents
POST /v1/subagents
Run requests support prompt, model, provider, workspace, sandbox, approval, tool, profile, reasoning, and budget fields. Canonical event names live in internal/harness/events.go.
Focused checks for the install and TUI path:
bash -n scripts/install.sh scripts/go-code.sh
HOME=$(mktemp -d) GOCACHE=/tmp/go-build go test ./cmd/harnesscli/... -count=1Broader regression:
GOCACHE=/tmp/go-build ./scripts/test-regression.shFollow docs/runbooks/testing.md for strict TDD expectations, behavior tests, regression tests, and merge gates.
- Public page source:
docs/site/ - Distribution runbook:
docs/runbooks/distribution.md - TUI visual testing:
docs/runbooks/tui-visual-testing.md - Symphony issue authoring:
docs/runbooks/symphony-issue-authoring.md - Worktree workflow:
docs/runbooks/worktree-flow.md - Full docs index:
docs/INDEX.md
The public project page is:
https://dennisonbertram.github.io/go-code/
