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, the file sidebar, and session modal 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
/skills [name|add <source>] List/toggle skills, or install from a source
/sessions Open the session picker modal or resume a session
/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 file 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.

Install skills from external sources (compatible with vercel-labs/skills) with /skills add <source>, or just paste npx skills add <source> / a bare repo ref into the chat input. Sources may be GitHub shorthand (owner/repo), a full git/GitHub/GitLab URL, a URL pointing at one skill (…/tree/<ref>/<path>), an SSH git URL, or a local path; add -g to install globally. The installer lives in taui/skills/installer.py, and the self-edit agent exposes the same engine as the install_skill tool.

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.9.tar.gz (636.5 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.9-py3-none-any.whl (441.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: taui-0.9.tar.gz
  • Upload date:
  • Size: 636.5 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.9.tar.gz
Algorithm Hash digest
SHA256 30bb9ee6a36181be8b0f65d9c46c11e8e2b460320f77a670b07cd62a0f3c9721
MD5 1cf0eeab6566cedcc6358d7b0e500555
BLAKE2b-256 fab29d0fcaaed334051f8d4d420a1ff01bf2a56b7b8570fabbe7017ea1b12427

See more details on using hashes here.

File details

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

File metadata

  • Download URL: taui-0.9-py3-none-any.whl
  • Upload date:
  • Size: 441.0 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.9-py3-none-any.whl
Algorithm Hash digest
SHA256 4feb830f9311401ccd3b418ad9c08ff21f827ca731f4dfab2224ad6c67525200
MD5 ef4960f716fef43b5c000b020ef6608d
BLAKE2b-256 3c646962a7a52699993a3b097a337498e1addaa5dec840660e2c7130e7969117

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