Terminal user interface for AI agents built on agent-utilities.
A Textual-based terminal interface for interacting with AI agents. Connects to an agent-utilities backend via dual protocol support: AG-UI (SSE streaming) and ACP (JSON-RPC + SSE).
Note
This library is in early development and subject to change.
- Dual protocol support -- AG-UI (SSE streaming, default) and ACP (JSON-RPC + SSE, opt-in)
- Dynamic workflow sidebar -- discovers graph nodes from sideband events at runtime; nodes are never hardcoded
- Phase labels -- Planning, Discovery, Execution, Validation
- Completed node markers -- checkmarks on finished specialists
- Rich tool execution display -- extensible formatter system for rendering tool calls and results
- Human-in-the-loop tool approval -- modal for confirming sensitive tool calls before execution
- Multi-modal image attachment -- attach images to messages for visual reasoning
- Session management and chat history -- browse and resume previous conversations
- MCP server browser -- inspect connected MCP servers and their tools
- Slash commands --
/help,/clear,/mcp,/history,/image - Unified specialist visibility -- MCP agents and A2A peers appear identically in the workflow sidebar; both emit the same sideband events via the backend's
discover_all_specialists()unified roster - Tool-count telemetry --
tools-boundsideband events includetoolset_count,dev_tools, andmcp_toolsbreakdowns for per-specialist visibility
Start the agent-utilities backend server, then launch the TUI:
agent-tuiOr run with uv if installed locally:
uv run agent-tui| Variable | Default | Purpose |
|---|---|---|
AGENT_URL |
http://localhost:8000 |
Agent server URL |
ENABLE_ACP |
false |
Enable ACP protocol instead of AG-UI |
ACP_URL |
http://localhost:8001 |
ACP server URL (when ACP is enabled) |
Create uv virtual environment and install dependencies:
uv sync --frozen --all-groupsSet up git hooks:
prek installTo update dependencies (updates the lock file):
uv sync --all-groupsRun formatting, linting, and type checking:
uv run ruff format && uv run ruff check --fix && uv run ty check