dpc-tau 0.2.1

A minimal Unix-first coding agent.
dpc-tau-0.2.1 is not a library.

(dpc's) Tau coding agent

Tau is a minimal Unix-first coding agent for people who want local control, simple process boundaries, and tooling that fits naturally into a command-line environment.

Tau runs its main components as standalone POSIX processes and connects them over stdio and Unix sockets.

New here? Follow Your first Tau task from installation and authentication through a small reviewed repository change, then stop and resume the saved session. Read its trust/data summary before the first model request.

Components include:

  • UI
  • Harness
  • LLM provider integration
  • Extensions

This architecture has important benefits:

  • Starting a component is just running a process — supervise, sandbox, restart, or swap it for anything else that speaks the protocol.
  • Components can be system-provided, which pairs well with technologies like NixOS.
  • Components can be sandboxed individually using tools like bubblewrap, Docker, jails, or Landlock, according to their actual needs.
  • Components can be implemented in any programming language.
  • It avoids bringing in web technology where it does not belong.

Features

See FEATURES.md for a tour of the major features.

Sister-projects

Patchmark is a diff-aware language server for Markdown and plain-text review notes. It pairs nicely with Tau's prompt-editing flow: open your prompt in $EDITOR, review diffs with language-server help, and leave precise feedback for agents without leaving your normal editing environment.

Status: heavy development, daily use

Tau is still under heavy development, but it has been a productive daily driver for its developers for weeks. It already has features and design choices that are stronger than those in popular coding agents, while the Unix-centric UX keeps improving quickly.

Recent overview video: The State of Tau #1.

The State of Tau #1

Terminal demo:

asciicast

Installing

The canonical first-task guide explains prerequisites, provider authentication, a bounded first change, review, troubleshooting, and resume.

Native Linux packages

Tau v0.2.0 provides DEB, RPM, and tar.gz downloads for amd64 and arm64. Choose individual components or tau-full: its tarball bundles all nine binaries, while its DEB/RPM is an exact-dependency metapackage. Verify downloads with the release's SHA256SUMS. See the installation guide for exact downloads and commands. Packages require glibc 2.34 or later; default restricted extension startup requires Linux 5.12 or later. Package checks do not establish broad distro, CPU/kernel, or service-lifecycle qualification.

via Nix

Run the tagged release with nix run github:dpc/tau/v0.2.0. You can also import that reference as a flake input. Installing or updating a flake input does not by itself activate a NixOS configuration or restart Tau.

via cargo

With Rust 1.97 or newer and the native build tools required by dependencies:

cargo install --locked dpc-tau --version '=0.2.0'

The registry installation includes Tau's built-in extensions, not the separately maintained external integration binaries. See the release notes before upgrading existing state.

Extensions

Tau runs most capabilities as process extensions. Some standard extensions ship in this repository; other Tau projects are maintained separately. “External” below means a separate Tau project, not a third-party project.

Standard extensions

These extensions ship in the Tau workspace:

Extension What it provides
Provider backends Built-in model providers and provider profile management
Shell and filesystem Shell commands, file operations, locking, and image inspection
Utilities Timers, reminders, and papercut reporting
Web search Generic web search and URL fetching
Notifications Terminal-facing activity notifications and detached notification commands
Rhai Opt-in trusted local scripting

External Tau projects

Tau maintains these extensions in separate repositories. Published projects are pinned and re-exported by the Tau flake.

Integration What it provides Flake package Source
PIM Email and calendar tools with approval-gated writes tau-ext-pim Radicle
Swarm Live session projection and task coordination with a Tau Swarm peer tau-ext-swarm Radicle
Zulip Bot message bridge with long polling and scoped send/reaction tools tau-ext-zulip Radicle
Rostra Relay-only social client with local state, signed writes, and opt-in notifications tau-ext-rostra Radicle
Slack Socket Mode text bridge with scoped send/reaction tools and multiple-instance prefixes tau-ext-slack Radicle
Telegram Bot API text bridge, plus an optional separately supervised gateway tau-ext-telegram, tau-telegram-gateway Radicle
XMPP Disabled-by-default XMPP messaging integration tau-ext-xmpp Radicle

For example:

nix profile install github:dpc/tau#tau-ext-slack

Installing a package only puts its executable on PATH. Each integration remains disabled until you enable its std-* instance in harness.yaml, provide the service account or identity and Tau-managed secrets, and configure the allowed senders, routes, and role tool policy. Installation does not create an account, add credentials, enable an extension, or authorize any route or tool. See Configuring extensions and each standalone project's README for the full setup.

Third-party extensions

  • tau-ext-searxng-search, maintained by akohlsmith, provides a standalone searxng_search tool that queries a configured SearXNG instance over HTTP, with configurable engines and categories plus optional local-category prioritization. See the project's documentation for installation and configuration.

Third-party extensions are independently maintained. Listing one here is not a compatibility, security, or maintenance endorsement; review its source and documentation before granting it access to Tau.

Configuration

Use tau init to generate config files.

Use tau provider add to create or replace built-in provider profiles, including ChatGPT/Codex, OpenAI-compatible Chat Completions, and OpenRouter profiles; edit harness.yaml for harness-owned roles, defaults, and extension settings.

Before using private repositories, review Trust and data. For normal stop/resume behavior and conservative upgrades, see Session lifecycle and upgrades.

wait({"timeout_minutes": N}) silently clamps its activating-input deadline to the global harness.yaml bounds. The defaults trade small waits for fewer model rounds while preserving immediate input delivery:

wait_timeout_minimum_minutes: 1
wait_timeout_maximum_minutes: 1440

Both bounds are positive, inclusive whole minutes, and the maximum cannot exceed 65,535 minutes because wait registrations persist their effective value as u16. The minimum cannot exceed the maximum. Argument-free and exact background-result waits do not use these bounds.

By default, tau starts the harness daemon and the CLI UI.

To explore other entry points, run tau -h.

Contributing & Contact

Preferred: Tau Zulip chat

License

Mozilla Public License 2.0

Other agents named Tau

Because the author is not very original and forgot to do prior research, and Tau is just such a good name, there are other coding harnesses called "Tau", like:

Get used to it, I guess. Now that we can all be so productive, we'll have forks and personal re-implementations of everything, with conflicting names.

When you want to be specific, you can call this one "dpc's Tau coding agent".

AI usage disclosure

I use LLMs when working on my projects.

Because of its nature, this project is more AI-assisted than most of my other work.