Skip to main content

Agentic coding interface you can reshape

Project description

taui

Taui is a customizable agentic coding interface for developers. It runs as a full-screen Textual TUI; the terminal app is the product.

Alpha software: APIs, commands, and behavior may change.

Install

uvx taui

For local development:

uv run taui
uv run taui --version
uv run taui --login
uv run taui -p copilot -m <model>
uv run taui -p codex -m <model>
uv run taui -d /path/to/project
uv run taui --session <session_id>

CLI parsing and app launch live in taui/main.py:29 and taui/main.py:90.

What It Does

  • Runs an async agent loop over provider responses, tool calls, and observations: taui/agent/loop.py:93.
  • Wires providers, tools, extensions, prompts, store, and loop in one composition root: taui/session.py:139.
  • Stores sessions as append-only SQLite event streams in the working directory: taui/store/store.py:97 and taui/store/stream.py:22.
  • Renders chat, streaming output, approvals, questions, sidebars, and session controls in Textual: taui/tui/app.py:206.

Providers

Built-in providers:

Provider Auth Implementation
GitHub Copilot device flow taui/llm_provider/providers/copilot.py:33
OpenAI Codex PKCE browser flow taui/llm_provider/providers/codex.py:26

Run taui --login to authenticate. Credentials are loaded through taui/llm_provider/config.py:15 and selected by Config.load() at taui/config.py:64.

Commands

Important slash commands are registered in taui/commands/builtins.py:858.

Command Purpose
/help, /h, /? Show help
/model Show, refresh, or switch models
/provider Show or switch provider
/agents List or activate agent profiles
/sessions List or resume sessions
/new [message] Start a new session
/compact, /context Manage or inspect context
/extensions, /reload, /ext-mode Inspect and reload extensions
/i [message] Enter self-edit mode
/copy, /export Copy context or export a session
/hotkeys, /keys Show key bindings
/verbose, /quiet Toggle tool output verbosity
/update-providers-models Refresh the models.dev cache

Keys

App-level bindings are defined in TauiApp.BINDINGS at taui/tui/app.py:399. Input-specific bindings are in ChatInput.BINDINGS at taui/tui/widgets/chat_input.py:64.

Key Action
Ctrl+Q Quit
Ctrl+N New session
Ctrl+C Cancel active request or approval
Ctrl+D Quit after double press
Ctrl+B Toggle sidebar
Ctrl+R Toggle info sidebar
Ctrl+E Enter self-edit mode
Ctrl+X Context breakdown
Alt+Left/Right Focus left/right pane
Ctrl+PageDown/Up Next/previous tab
Escape Leave mode or dismiss panels

Configuration

Config fields are defined in taui/config.py:33.

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

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

[taui.permission]
read = { "*" = "allow" }
bash = { "git status" = "allow", "*" = "ask" }

Tool policy evaluation is in taui/tools/executor.py:42; pattern permissions are in taui/permissions.py:38.

Extensions And Skills

Extensions are Python files loaded from ~/.taui/extensions/*.py and .taui/extensions/*.py. The register(ctx) context is defined at taui/extensions/__init__.py:66; extension loading starts at taui/extensions/__init__.py:169.

Skills are SKILL.md files discovered by taui/skills/__init__.py:91 and loaded lazily by taui/skills/__init__.py:52.

Documentation

  • Product and architecture overview: docs/taui.md:1
  • Runtime flow: docs/runtime.md:1
  • Tools and permissions: docs/tools.md:1, docs/permission-dsl.md:1
  • Extensions, hooks, skills, and agents: docs/build-your-harness.md:1, docs/extension-hooks.md:1, docs/agents.md:1
  • Providers and auth: docs/providers.md:1
  • Context and prompts: docs/context-strategies.md:1, docs/system-prompt.md:1
  • Tests and visual harness: docs/testing.md:1

Checks

uv run ruff check .
uv run python -m pytest -q -m tools  # replace tools with the changed domain

Use domain groups for focused checks instead of running everything:

uv run python -m pytest -q -m tools
uv run python -m pytest -q -m agent
uv run python -m pytest -q -m "agent or provider"
uv run python -m pytest -q -m tui

Target focused tests first when changing one subsystem. The scenario and visual harness are documented in docs/testing.md:1.

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.8.3.tar.gz (604.4 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.8.3-py3-none-any.whl (418.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: taui-0.8.3.tar.gz
  • Upload date:
  • Size: 604.4 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.8.3.tar.gz
Algorithm Hash digest
SHA256 977cc93a51c867949c0273a6ce188bc80d8c6701d7577609d4bee6e49c2e29f7
MD5 023d9a83d762e52eae43bc42142adf9c
BLAKE2b-256 69dc08b73f646859fd5f1ee7d7bc9ccb3652587fba6f3034a9f26046b335caac

See more details on using hashes here.

File details

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

File metadata

  • Download URL: taui-0.8.3-py3-none-any.whl
  • Upload date:
  • Size: 418.9 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.8.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c37342b543ca37409361cca741282c2ca761e92e802263f7e471739f7cec20eb
MD5 07b284bc8615885f6a9f15b1d467707c
BLAKE2b-256 d1716538e64398774530e98b10c02500fa2f5466047272f8c563d002e89200dd

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