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:97andtaui/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 tests/ -q
Target focused tests first when changing one subsystem. The scenario and visual harness
are documented in docs/testing.md:1.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file taui-0.8.1.tar.gz.
File metadata
- Download URL: taui-0.8.1.tar.gz
- Upload date:
- Size: 553.6 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
735e53f438e37eed0581a6124f98c96e84226a305d932c109346f216dc110d94
|
|
| MD5 |
57046a8cc2223aa4605da1578ebdaeb2
|
|
| BLAKE2b-256 |
5fd78216b25bc2f489deca0f402fe9581b9dd5fcac0df18b380bd222991875a4
|
File details
Details for the file taui-0.8.1-py3-none-any.whl.
File metadata
- Download URL: taui-0.8.1-py3-none-any.whl
- Upload date:
- Size: 380.3 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e346def62a033545ad3accee29d4c7dc79b565613c80af24ed1762205b41c54
|
|
| MD5 |
156f38615347cd462ecfff719ef5372b
|
|
| BLAKE2b-256 |
7e3f0107ea633e27f6923f58f8e0c67ae1e4cf7da07b767648d83f90d447a62c
|