Observed since 20 Oct, 23:33 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Terminal UI for Agentic SI!
The terminal frontend for Arbora agent sessions.
Textual-based TUI connecting to an Arbora-served agent backend through a normalized ACP transport adapter.
Documentation · Architecture · Features · Configuration
Agent Terminal UI is a Textual-based terminal interface
for interacting with agents served by Arbora.
It connects to an Arbora-hosted agent-utilities backend through a normalized transport
adapter; the currently shipped adapter uses ACP (JSON-RPC + SSE).
[!NOTE] This library is in early development and subject to change.
The full command, keyboard shortcut, and module reference lives in Features below and in the official documentation.
/capabilities; forms are generated from action schemas/run discovers recent runs and follows versioned events by cursor, with sequence deduplication and bounded-history gap notices~/.local/share/agent-utilities/agent_terminal_ui.db (override the directory with AGENT_UTILITIES_DATA_DIR)fork_session().git/restore N to roll back workspace to any previous turnShift+Tab cycling/compact -- force compaction at any tiersession_start, session_end, message_submit, tool_call_before/after, mode_change, on_error, shell_envshell_env hooks inject environment variables into tool executionread-only, workspace-write (default), danger-full-accessCtrl+S to stash, /stash list and /stash pop to manageCtrl+U clear + Ctrl+Y restore for single bufferon-request (ask per command), auto (YOLO), never (block all)danger.py 4-level classification/bg/goal command -- define an objective and let the agent work autonomouslyuntil <end_state> and without <constraints> patterns/exit/theme/help -- show available commands/clear -- clear the current event log/mcp -- browse connected MCP servers and their tools/history -- browse and select from historical chat sessions/image -- attach images to messages/init -- initialize a new project or workspace/review -- review code and suggest improvements/test -- run tests on the current codebase/search -- search through code and documentation/ask <question> -- answer a data question in plain English (multi-step analyst)/nl <question> -- translate a question into a graph query and run it (/nl preview ... to dry-run)/obs <promql> -- query observability metrics; /obs range <promql> (sparkline), /obs traces [service]/broker -- engine message-broker status (stats / queues / exchanges)/kvcache -- shared KV-cache occupancy and dedup stats/capabilities [query] -- search the live catalog and generate an action form/capability <id> -- inspect one live capability descriptor/run [run_id] -- follow a run in Mission Control, or browse recent runs when no ID is known/stats -- show statistics about the current session/fleet -- show fleet topology and pending approvals; /fleet grant <id> to approve/cost -- show token and cost tracking information/queue -- show current message queue status/queue:clear -- clear all queued messages/queue:toggle -- enable/disable message queuing/model -- switch between available models used by SI agents/theme -- switch between available themes/compact -- compact conversation context to save tokens/diff -- show interactive diff viewer for recent changes/recap -- summarize the session context/fast -- toggle fast mode (Haiku/Flash models)/memory -- manage project memory (AGENTS.md)/agents -- list available specialized agents/add-dir -- add a directory to the agent's working context/restore N -- restore workspace to snapshot at turn N/sessions -- list and manage durable sessions/trust -- toggle trust mode/sandbox -- set sandbox mode (read-only / workspace-write / danger-full-access)/approve -- set approval policy (on-request / auto / never)/jobs -- list and manage shell jobs/tasks -- list and manage background tasks/stash -- manage input draft stash/hooks -- show lifecycle hook status/exit, /quit -- exit the application with confirmation/goal <text> -- start an autonomous goal loop/goal:status -- show current goal progress/goal:cancel -- cancel the active goal/goal:history -- browse past goals from the Knowledge Graph/agents -- open the Agent View multi-session dashboard/bg -- background the current session/attach <id> -- attach to a specific session! -- Direct Bash execution (e.g., !ls -la)@ -- Fuzzy file mention autocomplete (e.g., @app.py)discover_all_specialists() unified rostertools-bound sideband events include toolset_count, dev_tools, and mcp_tools breakdowns for per-specialist visibilityAGENTS.md and MEMORY.md in the system prompt for project-aware reasoning.Start the Arbora-hosted agent-utilities backend server, then launch the TUI:
agent-terminal-ui
Or run with uv if installed locally:
uv run agent-terminal-ui
Run a single prompt without the TUI, streaming the response to stdout. No Textual widget tree is loaded, so a headless instance is lightweight (~30MB) -- suited to running many concurrent, non-interactive sessions against one shared backend.
agent-terminal-ui --headless --prompt "summarize the open PRs"
agent-terminal-ui --headless --prompt "run the tests" --model claude-opus-4-8
A slim, runtime-only image (Dockerfile, python:3.13-slim) ships the frontend
without test/shell extras or the agent_utilities backend. Point it at a shared
backend with AGENT_URL:
docker build -t agent-terminal-ui .
docker run --rm -e AGENT_URL=http://agent-utilities:8000 \
agent-terminal-ui --headless --prompt "status report"
Because the backend is the heavy component, run one backend service and many lightweight frontends against it.
When the agent is processing, your input is automatically queued. The system intelligently combines related queries using patterns like:
Example: If you type "fix the bug in app.py" followed by "and add a test for it", these will be combined into a single query.
| Variable | Default | Purpose |
|---|---|---|
AGENT_URL | http://localhost:8000 | Arbora base URL for A2A chat and REST operations |
AGENT_BEARER_TOKEN | unset | Caller credential for Arbora; required for remote endpoints |
AGENT_THEME | tokyo-night | Startup theme (any Textual built-in theme name) |
The /op command requires Python 3.12 or newer and an installed Arbora
distribution containing its generated client. The package, including basic chat,
supports Python 3.12 or newer. CI and release validation use Python 3.14. Without the generated client, /op refuses with CLIENT_UNAVAILABLE.
The TUI uses Textual's built-in themes. The default is tokyo-night; others include nord, gruvbox, dracula, monokai, textual-dark, and textual-light.
Switch themes live with the /theme <name> command, or set the startup theme via
the AGENT_THEME environment variable.
Create uv virtual environment and install dependencies:
uv sync --frozen --all-groups
To update dependencies (updates the lock file):
uv sync --all-groups
Run formatting, linting, and type checking:
uv run ruff format && uv run ruff check --fix && uv run ty check
Start at the Agent Terminal UI documentation. It includes Architecture, Features, and Configuration references.
See AGENTS.md for contribution and validation guidance.
Agent Terminal UI is released under the MIT License.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 2.3.2 | 18 Oct 2026 | 17 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 23:33 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:2516f2e817ddcc7fb8fa17ede4827f8cd49e6cad6d459eb725eaa7f60d5a3404