tau README

The project's README from github.com/huggingface/tau. As one markdown file: README.md.

Tau — a Python coding-agent harness inspired by Pi

A small, readable terminal coding agent — and a working example of how coding agents are built.

Documentation · Quickstart · Architecture · PyPI · Roadmap

Join the Tau Discord community →


What is Tau?

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

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.

Install

Tau is published on PyPI as tau-ai and installs a tau command. It requires Python 3.12 or newer. The recommended installers use uv and install it first when necessary.

macOS and Linux:

curl -LsSf https://twotimespi.dev/install.sh | sh

Windows PowerShell:

irm https://twotimespi.dev/install.ps1 | iex

The installers do not use sudo. They announce before installing uv, install Tau in an isolated tool environment, verify tau --version, and report if a shell restart is needed. You can inspect the shell installer or PowerShell installer before running it.

Already have a package manager? Install Tau directly:

uv tool install tau-ai
# or
pipx install tau-ai
# or
python -m pip install tau-ai

Then check it worked:

tau --version

Tau is also available on conda-forge, and can be installed using pixi:

pixi global install tau-ai

Upgrade a normal installation with:

tau update

For local development:

git clone https://github.com/huggingface/tau.git
cd tau
uv sync --dev
uv run tau --version

To make the checkout-backed command available globally, install it as an editable tool:

uv tool install --editable --force .

Run that command again after git pull. Editable installs expose source-code changes immediately, but the tool environment's package metadata, dependencies, and entry points are only refreshed when uv reinstalls the tool. Without the refresh, tau --version can still show the version from the previous install.

Quickstart

Run Tau from the project you want it to work on:

cd my-project
tau

Then 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.

The built-in catalog lives in src/tau_coding/data/catalog.toml; add your own providers and models by dropping a ~/.tau/catalog.toml with the same schema — no code changes required.

What Tau can do

Philosophy

Tau follows a few rules:

Use Tau as a library

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.

Development

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 mypy

Run Tau from the checkout:

uv run tau
uv run tau -p "explain this repo"

Run the Hugo documentation site:

cd website
hugo server -D

Open http://localhost:1313/. Build with hugo --minify.

Documentation

User docs are published at https://twotimespi.dev/ and live in website/content/.

Useful entry points:

Tau is under active development. The implementation roadmap is tracked in GitHub issue #1.

License

Tau is released under the MIT License.

tau (huggingface/tau)

Searching Database…

3K ·GitHub
What is this?Tau is Hugging Face's Python port of Pi's minimalist coding agent — a terminal app you ask to explain a repo, add tests or fix a stack trace, and it reads files, edits code, runs commands and streams what it is doing.
Is it a finished tool, or more of a codebase to learn from?Both. It is a working CLI/TUI coding agent, but also a deliberately readable teaching project split into small single-job packages, so you can study how a coding-agent system is built without wading through a giant production codebase.
How do I install it and start using it?Install from PyPI as tau-ai (it installs a tau command) via the shell installer on macOS/Linux or the PowerShell installer on Windows — both use uv, need no sudo, and require Python 3.12+; conda-forge via pixi also works. Then run tau inside your project and connect a provider with /login.
Do I need an Anthropic API key to use it?No — you connect whichever provider you have: OpenAI, Anthropic, OpenAI Codex subscription auth, OpenRouter, Hugging Face, or any custom OpenAI-compatible endpoint, including local models.
Any install gotchas I should know about?The main one hits editable installs from a checkout: after git pull you must re-run the uv tool install command, or the package metadata and entry points are not refreshed and tau --version can still report the previous version.
Where does my session history end up?On your own disk: history is append-only JSONL under ~/.tau/sessions/ that you can resume, branch and inspect, and compaction never rewrites the record.
Is it free to use?Yes — MIT licensed, so it is free to use, modify and redistribute.
What can it do inside a session?Built-in read, write, edit and bash tools; slash commands for login, model selection, sessions, compaction, export and themes; project instructions picked up from AGENTS.md, .tau/ and .agents/; plus user skills, prompt templates, custom TUI themes, and manual or automatic context compaction.
How is the codebase organized?Three single-job layers: tauai turns model providers into a provider-neutral event stream, tauagent is the portable brain (messages, tools, events, loop, harness, sessions), and taucoding wraps it as a real coding app with CLI, TUI, file and shell tools and on-disk sessions. The core never touches Textual or Rich — frontends just consume typed events, so you can build your own.
Can I add my own providers or models?Yes — drop a ~/.tau/catalog.toml with the same schema as the built-in catalog (src/taucoding/data/catalog.toml) and your providers and models appear without any code changes.
Is there a non-interactive mode for scripts?Yes — besides the interactive Textual TUI there is a one-shot print mode for scripts and quick prompts, and the provider-neutral event stream can render as Rich output, plain text, JSON or transcripts.
Size
15.8 MB
Stars
3K
Age
4mo
Commits · 90 Days