Skip to content

Tau

Tau is a hackable coding agent harness for CLI, TUI, or RPC. Extensions are Python. A session is a tree you can branch; context is a walk of it.

Everything reaches Tau through one methodTau sits at the centre as a rounded pill labelled AgentSession. Five inputs converge on it from the left — a Tectum agent node named agent dot persona underscore reflection, the tau TUI, tau dash p, the SDK's create underscore agent underscore session, and an extension's api dot submit — and every one lands on the same red bar marked submit before a single arrow enters the session. Above, a Tectum subject rail feeds the agent node, and a second rail carries the session's speak tool back out onto the bus. To the right the spine continues past the pill, forks at a filled dot, and splits into a solid branch that extends the active leaf and a dashed one left behind as an abandoned sibling. Below, two hatched slabs are the two places a session can be stored: a plain slab for a JSONL file under tilde slash dot tau slash sessions, and a doubled JMFTS slab where each entry becomes a document alongside the rest of the corpus.events.sensation.audio.filteredevents.workspace.persona_reflection.out.speakagent.persona_reflectiontautau -pcreate_agent_sessionapi.submit()submit()one doorAgentSessionextends the leafabandoned siblingtool: speak--store file--store jmfts~/.tau/sessionsevery input sourcea JSONL file per sessiondocumentstau:conversationan entry is a document
Everything that can drive Tau — a Tectum agent node holding the session open over RPC, the TUI, a headless run, the SDK, an extension — arrives at the same method. What comes back out is a tree rather than a log: the spine forks, and a rollback leaves the abandoned branch on disk instead of deleting it. The substrate above hears the turn's result as an ordinary event. The store below is a flag, and pointing it at JMFTS files every entry as a document beside the rest of the corpus.

Install

pip install ffwf-tau

Then run tau. The meta package pulls in the TUI; the bare ffwf-tau-coding-agent package is CLI and RPC only. The ffwf- prefix is required — tau-ai and tau-llm on PyPI are unrelated projects. The DevOps Manual covers the extras and the second command name.

Out of the box τ talks to any OpenAI-compatible endpoint, local or hosted. Anthropic and Google are two more extras — ffwf-tau-llm[anthropic] and ffwf-tau-llm[google] — and both import only when a model actually names them.

Where to start

The four categories below are a crosswalk, not a sequence. Pick the cell you are actually in.

Acquisition
Application
Action

Tutorials

Action × Acquisition

Guided builds. Concepts as you go, quickstart first.

Cookbook

Action × Application

Recipes for one job. Step by step.

Cognition

DevOps Manual

Cognition × Acquisition

Deployment, operation, and why it's like that.

Reference

Cognition × Application

API, config, schemas. Unfiltered lookup by module or endpoint.