Tuig is the Rust/Ratatui terminal frontend for Arbora. The brand is pronounced
“twig” (/twɪɡ/); the command remains tuig. There is one executable
and one UI implementation. The former Python/Textual frontend is retired.
This capture shows the compiled Rust/Ratatui terminal with synthetic fixture data,
not the retired Python/Textual UI. It comes from source commit a8952ff.
See all six native views and capture provenance.
The README uses the same committed asset as the gallery. CI validates asset hashes; it does not automatically replace screenshots. See the screenshot refresh procedure.
The PyPI distribution is agent-terminal-ui; the installed command is tuig.
Native wheel availability and platform qualification are release requirements.
Do not assume a published older version already includes this cutover.
pip install agent-terminal-ui
tuig --helpArbora runs separately. Configure AGENT_URL and AGENT_BEARER_TOKEN.
Remote access requires TLS. For a deliberately anonymous loopback service, set
AGENT_AUTH_MODE=none and omit the bearer token.
tuig
tuig --prompt "Summarize the project"
tuig --observe-task TASK_ID
tuig --headless --prompt "Summarize the project"
tuig --headless --observe-task TASK_IDThe no-argument view discovers the configured agent, or reads AGENT_TASK_ID.
Prompt submission and task observation use Arbora A2A. Run inspection and logs
use served Arbora operations. Task/context/run identifiers remain distinct.
Headless execution prints validated unary snapshots and polls active tasks. It exits unsuccessfully if input, approval or authentication is required, or if the task fails, is canceled or is rejected. It never approves or cancels a task. Its four-hour observation bound does not stop backend work.
Native rendering includes task state, public output details, themes, keyboard
and mouse scrolling, run inspection and host logs. Remote cancellation in the
interactive view requires confirmation. --observe-task remains read-only.
With no selected task or prompt, tuig opens a one-task text composer.
Enter submits; Ctrl+J adds a newline; Escape reviews status and p returns
to the draft before submission. It never resubmits an unknown outcome.
Central streaming, approval attachment, context continuation and durable resume
are not yet implemented. Explicit local ACP sessions support sequential text
turns within one owned backend process; they do not resume after restart. The removed Python frontend is not a fallback. --override, --bg, --model and --session are
rejected. Full served parity and release performance remain open in
the runtime specification.
See architecture, configuration and development. Historical Python source and screenshots remain in git history, not in the live application.
MIT.