A small, readable terminal coding agent — and a working example of how coding agents are built.
Documentation · Quickstart · Architecture · PyPI · Roadmap
Tau is a coding agent that lives in your terminal. You type requests like "explain this repo", "add tests", or "fix this stack trace"; Tau can read files, edit code, run commands, and keep a durable session history while streaming what it is doing.
Tau is also meant to be read. It is a teaching project for understanding the shape of a coding-agent system without starting from a giant production codebase.
tau_coding → tau_agent → tau_ai
tau_aitranslates model providers into Tau's provider-neutral stream.tau_agentowns the portable brain: messages, tools, events, loop, harness, and session primitives.tau_codingwraps the brain as a real coding app: CLI, TUI, file/shell tools, provider config, project instructions, skills, and on-disk sessions.
The important boundary is:
AgentHarness = reusable brain
CodingSession = coding-agent environment
TUI = one possible frontend
The core does not know about Textual, Rich, local config paths, slash commands, or rendering. Frontends consume events.
Tau is published on PyPI as tau-ai and installs a tau command.
uv tool install tau-ai
tau --versionDon't have uv?
curl -LsSf https://astral.sh/uv/install.sh | shFor local development:
git clone https://github.com/alejandro-ao/tau.git
cd tau
uv sync --dev
uv run tau --versionRun Tau from the project you want it to work on:
cd my-project
tauThen type a request and press Enter:
explain what this project does
One-shot print mode is useful for scripts and quick prompts:
tau -p "summarize the architecture"
tau --cwd /path/to/project -p "find the CLI entry point"Tau needs a model provider. Start Tau and connect one with /login:
tau/login
/login openai
/login openai-codex
/model
Tau ships with support for OpenAI, Anthropic, OpenAI Codex subscription auth, OpenRouter, Hugging Face, and custom OpenAI-compatible endpoints, including local models. See the providers guide.
- Interactive Textual TUI and non-interactive print mode.
- Built-in coding tools:
read,write,edit, andbash. - Durable JSONL sessions under
~/.tau/sessions/with resume and branching. - Slash commands for login, model selection, sessions, compaction, export, theme, and more.
- Project instructions from
AGENTS.md,.tau/, and.agents/resources. - User skills and prompt templates.
- Context accounting, manual compaction, and optional automatic compaction.
- Provider-neutral event rendering for Rich, plain text, JSON, transcripts, and custom frontends.
Tau follows a few rules:
- Small layers beat magic. Each package has one job and can be read alone.
- Events are the contract. Providers, renderers, the TUI, and custom frontends meet at a typed event stream.
- The core stays portable. The reusable harness does not depend on the CLI, Textual, Rich, or Tau's file layout.
- Tools are ordinary typed functions. A tool is a schema plus an async executor returning a structured result.
- Sessions are durable and inspectable. History is append-only JSONL; active context can be compacted without rewriting the record.
- Documentation follows implementation. The public docs explain the result;
dev-notes/preserves the phase-by-phase build journal.
from tau_agent import AgentHarness, AgentHarnessConfig
harness = AgentHarness(
AgentHarnessConfig(
provider=provider,
model="my-model",
system="You are a helpful coding agent.",
tools=tools,
)
)
async for event in harness.prompt("Explain this package"):
print(event)Because the harness emits events instead of rendering UI directly, the same core can drive the built-in TUI, print mode, or a frontend you build yourself.
See CONTRIBUTING.md for project philosophy, layer boundaries, testing expectations, and pull request guidelines.
uv sync --dev
uv run pytest
uv run ruff check .
uv run ruff format --check .
uv run mypyRun Tau from the checkout:
uv run tau
uv run tau -p "explain this repo"Run the Astro/Starlight documentation site:
cd website
bun install
bun run devOpen http://localhost:4321/. Build with bun run build.
User docs are published at https://twotimespi.dev/ and live in
website/src/content/docs/.
Useful entry points:
Tau is under active development. The implementation roadmap is tracked in GitHub issue #1.
Tau is released under the MIT License.