tau is a coding-agent demo built on the
ai library.
The name is a loving homage to pi.
Single process, Textual TUI, streaming replies, pi-style tool surface:
read— read files; offset/limit pagination with continuation hintswrite— create / overwrite a fileedit— exact-match str_replace, multiple disjoint edits per callbash— run a shell command in cwd, output truncated to the last 50KB / 2000 lines (requires approval)grep— regex search (skips.git,node_modules, etc.)find— glob matchls— directory listing
Anthropic and OpenAI's built in web search and web fetch tools are also available when appropriate.
Approval-gated tools fire a ToolApproval hook; the composer turns
into a [y/n] prompt mid-turn. Unrelated text typed during a
pending approval falls through to the message queue — the hook stays
pending until you give it a y or n.
uv syncuv run tauType a message, hit enter. ctrl+c interrupts a running task (like
escape), otherwise clears the prompt; on an empty idle prompt it quits.
ctrl+d deletes the character under the cursor, or quits when the
prompt is empty. ctrl+j inserts newlines inside a message. Escape
interrupts current task.
uv run poe smokeDrives tau end-to-end under tmux: it asks tau to implement fizzbuzz in
a temp dir, then to switch the output to all-caps, validating each step
by running the generated file. Needs tmux and an API key; skips when
they're unavailable.
| Variable | Description | Default |
|---|---|---|
AI_GATEWAY_API_KEY |
Vercel AI Gateway API key | — |
TAU_MODEL |
Model id passed to ai.get_model(...) |
anthropic/claude-opus-4-8 |