Skip to main content

Agentic coding interface you can reshape

Project description

taui

Agentic coding interface you can reshape.

Alpha: This project is still in early development. APIs, commands, and behavior may change without notice.

Install

uvx taui

Or install permanently:

uv pip install taui

What is taui?

Taui is a highly customizable agentic coding interface. Instead of adapting your workflow to a fixed assistant, you control the interface itself: UI, agent, tools, prompts, extensions, skills, and storage.

Taui is a full-screen Textual TUI. Running taui launches the terminal interface with a sidebar, scrollable chat history, live streaming, visual tool status, approvals, questions, steering, and queueing.

Requirements

  • Python 3.13+
  • A supported LLM provider account (see below)

Getting Started

First Run

When you run taui for the first time, it launches an interactive provider selection prompt. Pick one or both providers and follow the auth flow:

taui

You can also authenticate explicitly at any time:

taui --login

Providers

Taui currently ships with two built-in providers:

Provider Auth Method What You Need
GitHub Copilot OAuth device flow A GitHub account with an active Copilot subscription
OpenAI Codex PKCE browser redirect A ChatGPT Plus or Pro account

GitHub Copilot

  1. Run taui or taui --login
  2. Select GitHub Copilot
  3. A device code is displayed — open the GitHub URL shown and enter the code
  4. Once authorized, your token is saved to ~/.config/taui/config.toml
  5. Subsequent runs use the saved token automatically

OpenAI Codex (ChatGPT Plus/Pro)

  1. Run taui or taui --login
  2. Select OpenAI Codex
  3. A browser window opens for OpenAI OAuth — sign in and authorize
  4. The token is saved to ~/.config/taui/config.toml

Choosing a Provider and Model

# Start with a specific provider
taui -p copilot
taui -p codex

# Use a specific model
taui -p copilot -m claude-sonnet-4

# Work in a specific directory
taui -d /path/to/project

# Resume a previous session
taui --session <session_id>

# Check version
taui --version

Within the TUI, use /model to switch models and /provider to switch providers.

Tool Approval Policy

By default, destructive tools (bash, write, edit) require user confirmation before executing. Read-only tools (read, glob, grep) run automatically.

You can customize this in your config file (~/.config/taui/config.toml):

[taui.tool_policy]
bash = "auto"       # skip confirmation for bash
write = "confirm"   # require confirmation (default)
edit = "deny"       # block entirely

Valid policy values: auto, confirm, deny.

Approval prompts also support persistent auto-approval for a whole tool. Choosing the project option writes a generated extension to .taui/extensions/; choosing the global option writes it to ~/.taui/extensions/. The generated extension replaces the tool with an equivalent wrapper and sets that tool's policy to auto when extensions load. Project scope is the default persistent choice.

Key Bindings

Key Action
Ctrl+Q Quit
Ctrl+N New session
Ctrl+C Cancel active request or approval
Ctrl+B Toggle sidebar
Ctrl+X Context breakdown
Escape Leave self-edit mode

Slash Commands

Command Description
/help, /h, /? Show help
/model Switch model
/provider Switch provider
/compact Compact conversation (shows token savings)
/clear Clear chat
/cost Show session cost
/sessions Browse and resume sessions
/new Start new session
/reload Hot-reload extensions
/extensions List extensions
/i Enter self-edit mode
/login Re-authenticate providers
/logout Clear saved credentials
/copy Copy last response
/export Export session
/hotkeys, /keys Show key bindings
/verbose, /quiet Toggle tool output verbosity

Extending Taui

Extensions

Extensions are Python files that register tools, commands, hooks, and skills.

Locations:

  • Global: ~/.taui/extensions/*.py
  • Project: .taui/extensions/*.py

Example extension:

def register(ctx):
    ctx.tools.register(my_tool)
    if ctx.commands:
        ctx.commands.register(my_command)
    if ctx.hooks:
        ctx.hooks.add("system_prompt", my_transform)
    ctx.skills.add_path("skills/my-skill.md")

Use /reload to hot-reload extensions without restarting. Errors from individual extensions are reported in the chat log.

Skills

Skills provide specialized instructions loaded lazily into the agent context.

Locations:

  • ~/.config/agents/skills/<name>/SKILL.md
  • ~/.taui/skills/<name>/SKILL.md
  • .agents/skills/<name>/SKILL.md
  • .taui/skills/<name>/SKILL.md

Self-Edit Mode

Run /i to enter self-edit mode — a specialist agent that can create or modify extensions, skills, commands, and tools through the extension surface.

Configuration

Config is loaded from ~/.config/taui/config.toml with this structure:

[taui]
provider = "copilot"
model = "claude-sonnet-4"
max_turns = 50
verbose_tools = true

[taui.tool_policy]
bash = "confirm"
write = "confirm"
edit = "confirm"

CLI arguments and environment variables override config file values.

Data Storage

Taui stores session data in .taui/store.db (SQLite, WAL mode) in the working directory. Sessions are append-only event streams that support replay.

Credentials are stored at ~/.config/taui/config.toml. Logs are at ~/.taui/.logs.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

taui-0.3.tar.gz (321.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

taui-0.3-py3-none-any.whl (181.1 kB view details)

Uploaded Python 3

File details

Details for the file taui-0.3.tar.gz.

File metadata

  • Download URL: taui-0.3.tar.gz
  • Upload date:
  • Size: 321.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for taui-0.3.tar.gz
Algorithm Hash digest
SHA256 43221125fced58c84659ec974e97e51d69c825c9d6944c3628596a3e1f197785
MD5 8c7f2d5d983d0923155120af64dfaed4
BLAKE2b-256 ec93af7df5b59da9014606ea1c1b279206c4a0c4ccd25659364343486a4408ff

See more details on using hashes here.

File details

Details for the file taui-0.3-py3-none-any.whl.

File metadata

  • Download URL: taui-0.3-py3-none-any.whl
  • Upload date:
  • Size: 181.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for taui-0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 163258fb71d8bf3edeb1d5e3d153731edee7c3d53059bc64e6e98a253efe774d
MD5 25429a504c69c3ce3497666dd16667ca
BLAKE2b-256 84a638dc2dc0a9b65aa392859c606bf00f7e1ffd12658d4fc72bf1b05a40f5a8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page