Tau<br>01 A coding agent as a curriculum
Ⅰ tau_ai Models become streams<br>Provider adapters turn model responses into provider-neutral events the rest of the agent consumes.
Ⅱ tau_agent The agent loop<br>The reusable harness: messages, tools, transcript state, cancellation, queued prompts, sessions.
Ⅲ tau_coding It becomes useful<br>The coding environment: files, shell, durable sessions, skills, slash commands, and a Textual TUI.
The lesson<br>Every moving part is visible.<br>Tau answers the questions tutorials skip: What is an agent loop? Where do tool calls come from? How does the transcript grow? How do sessions survive the process exiting?
model streamtokens, tool requests, thinking deltas<br>↓<br>event streamthe contract between layers<br>↓<br>agent loopdecide, call tools, update transcript<br>↓<br>sessioninspectable JSONL history<br>frontendprint, Rich, or TUI
The core idea<br>Separate the brain, the environment, and the face.<br>The whole lesson is the boundary. A reusable harness must not depend on the terminal, file paths, or Rich rendering. Those wrap the harness — they never live inside it.
tau — design split<br>AgentHarness = reusable agent brain<br>AgentSession = coding-agent environment<br>TUI = one possible frontend
dependency direction<br>tau_coding → tau_agent → tau_ai
02 What you can learn from Tau
Provider-neutral streaming interfaces<br>Agent loops that request and execute tools<br>Typed local tools for read, write, edit, and bash<br>Durable sessions under ~/.tau/sessions<br>Session resume, branching, JSONL export, and HTML export<br>Project instructions, skills, and prompt templates<br>Slash commands and model/provider selection<br>Context accounting, compaction, and thinking controls<br>How to keep Textual behind a UI adapter boundary
03 Educational principles
Small layers beat magic<br>One job per package. Study the provider layer, harness, and coding app on their own.
Events make agents teachable<br>The agent emits a stream you can render, test, and export — not control flow buried in callbacks.
Real enough to matter<br>Educational, not a toy. Run it as a real terminal agent while reading the code behind it.
Docs follow implementation<br>Built phase by phase, each with notes on what was added, why, and how it fits.
The inspiration<br>Inspired by Pi, written as a Python learning path.<br>Tau borrows Pi's architectural lesson — keep the harness, the environment, and the UI apart. Not a line-by-line port; an educational Python take on the same core ideas.
tau — session<br>τ › explain the agent loop
stream model events<br>request tool call<br>execute read / edit / bash<br>append transcript entries<br>render print mode or TUI
τ A map for building your own agent: start with events, add a loop, wrap it in a harness, then give it tools and a UI.<br>$ uv tool install tau-ai copy Get started → Follow the roadmap →