tau

module
v0.0.0-...-20cd8ba Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 30, 2026 License: MIT

README

tau

tau is a native Go coding agent — a single-binary, process-isolated, tree-state port of the pi TypeScript coding agent.

It implements four subsystems:

  • Plugin layer (hashicorp/go-plugin over gRPC) — process-isolated tools.
  • State tree (bbolt) — conversation history as a navigable DAG.
  • Unified LLM client — Anthropic Messages + OpenAI Chat Completions providers.
  • TUI (charmbracelet/bubbletea) — split-pane interactive interface.

Build & run

cd tau
make build         # produces ./bin/tau (static binary, CGO disabled)
make run           # build + run
./bin/tau --help

Test

make test          # unit + integration tests
make e2e           # end-to-end tests (may need TAU_RUN_E2E=1)

Develop

make lint          # golangci-lint
make fmt           # gofmt + goimports
make proto         # regenerate gRPC code from internal/proto/plugin.proto
make tidy          # go mod tidy

Project layout

tau/
├── cmd/tau/        binary entrypoint
├── internal/       agent, llm, state, compaction, tools, plugins, tui, modes,
│                   cli, slash, config, prompts, util, proto
├── pkg/tau/        public SDK
├── examples/       reference plugin
└── test/           integration + e2e tests

See the project root CLAUDE.md for conventions and openspec/changes/initial/ for the design artifacts.

Directories

Path Synopsis
cmd
tau command
Package main is the tau binary entrypoint.
Package main is the tau binary entrypoint.
examples
plugin-git command
Command tau-plugin-git is a reference plugin for the tau agent.
Command tau-plugin-git is a reference plugin for the tau agent.
sdk-custom-provider command
sdk-custom-provider demonstrates registering a custom LLM provider with the tau SDK and running a session against it.
sdk-custom-provider demonstrates registering a custom LLM provider with the tau SDK and running a session against it.
sdk-embed command
sdk-embed is a minimal program that embeds the tau agent via the public SDK.
sdk-embed is a minimal program that embeds the tau agent via the public SDK.
internal
agent
command_session.go — the public interfaces and adapter types that decouple slash commands (built-in and external plugin) from the concrete *AgentSession, *AgentSessionRuntime, and resolvedOptions types.
command_session.go — the public interfaces and adapter types that decouple slash commands (built-in and external plugin) from the concrete *AgentSession, *AgentSessionRuntime, and resolvedOptions types.
cli
Package cli implements tau's command-line interface: argument parsing, subcommand dispatch, and first-run setup.
Package cli implements tau's command-line interface: argument parsing, subcommand dispatch, and first-run setup.
compaction
Package compaction implements the multi-stage compaction pipeline per the compaction spec.
Package compaction implements the multi-stage compaction pipeline per the compaction spec.
config
Package config implements tau's configuration, paths, auth, trust, and model-registry layers.
Package config implements tau's configuration, paths, auth, trust, and model-registry layers.
fauxprovider
Package fauxprovider is a built-in deterministic LLMClient used by the CLI's print/rpc integration tests and by `tau --model faux` invocations.
Package fauxprovider is a built-in deterministic LLMClient used by the CLI's print/rpc integration tests and by `tau --model faux` invocations.
llm
llm/tokencounter
Package tokencounter provides model-aware token counting for the llm layer.
Package tokencounter provides model-aware token counting for the llm layer.
modes
Package modes implements tau's three run modes: print, rpc, interactive.
Package modes implements tau's three run modes: print, rpc, interactive.
plugins
Package plugins implements tau's process-isolated plugin host.
Package plugins implements tau's process-isolated plugin host.
slash
checkout.go — /checkout <entryID> command.
checkout.go — /checkout <entryID> command.
state
Package state persists conversation history as a tree DAG of Entry records.
Package state persists conversation history as a tree DAG of Entry records.
tools
Package tools defines the Tool interface, Registry, and built-in tools.
Package tools defines the Tool interface, Registry, and built-in tools.
tui
Package tui — app.go — top-level bubbletea Model.
Package tui — app.go — top-level bubbletea Model.
tui/components
Package components — accordion.go — expandable/collapsible tool block.
Package components — accordion.go — expandable/collapsible tool block.
pkg
tau
Package tau is the public Go SDK for embedding the tau agentic coding agent in a Go program.
Package tau is the public Go SDK for embedding the tau agentic coding agent in a Go program.
test
e2e
Package e2e contains deterministic end-to-end tests for the agent loop.
Package e2e contains deterministic end-to-end tests for the agent loop.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL