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:97andtaui/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.
Metadata
Release files for taui 0.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| taui-0.9.tar.gz | 636.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| taui-0.9-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.1 MB
Release files / taui-0.9.tar.gz
| Download URL | taui-0.9.tar.gz |
|---|---|
| Size | 636.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
30bb9ee6a36181be8b0f65d9c46c11e8e2b460320f77a670b07cd62a0f3c9721
|
|
BLAKE2b-256 checksum How to use checksums |
fab29d0fcaaed334051f8d4d420a1ff01bf2a56b7b8570fabbe7017ea1b12427
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / taui-0.9-py3-none-any.whl
| Download URL | taui-0.9-py3-none-any.whl |
|---|---|
| Size | 441.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4feb830f9311401ccd3b418ad9c08ff21f827ca731f4dfab2224ad6c67525200
|
|
BLAKE2b-256 checksum How to use checksums |
3c646962a7a52699993a3b097a337498e1addaa5dec840660e2c7130e7969117
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|