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.4.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.4-py3-none-any.whl (181.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: taui-0.4.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.4.tar.gz
Algorithm Hash digest
SHA256 0caf0ad99b6788d0df8d0021814e626cf37a25aac4d698026679abb93fc2bd40
MD5 c7595ff91af4a25b4384c039f58d1f0f
BLAKE2b-256 eef7331113f0213715f1dc8ef555b36929fdef553eaec958c3ec73c783d7d733

See more details on using hashes here.

File details

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

File metadata

  • Download URL: taui-0.4-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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 0297c31daefd203bd3ccd5d4e19bf87a31425c05c7889ad2e520177135d2f044
MD5 574a280388e095938282d240f519e06e
BLAKE2b-256 532fb67bbc32f1dfeac2487c33c23ba9a3a5f458accedf9395aec28f59bf6f3f

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