Tau×
013-layers<br>A coding agent as a curriculum
tau_aiModels become streams<br>Provider adapters turn model responses into provider-neutral events the rest of the agent consumes.
tau_agentThe agent loop<br>The reusable harness: messages, tools, transcript state, cancellation, queued prompts, sessions.
tau_codingIt becomes useful<br>The coding environment: files, shell, durable sessions, skills, slash commands, and a Textual TUI.
no black boxes<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 boundary<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
02the skills<br>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
03how we think<br>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 origin<br>Inspired by Pi, written as a Python learning path.<br>Pi is the minimalist coding-agent harness this project borrows its architectural lesson from — keep the harness, the environment, and the UI apart. Tau isn't a line-by-line port; it's an educational Python take on the same core ideas.<br>Visit pi.dev →
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<br>copy<br>Get started →<br>Follow the roadmap →