tavora-tui
tavora-tui is the interactive terminal UI for talking to an agent
you already configured. A scrolling output viewport on top, a prompt
input on the bottom, and every SSE event from the agent (execute_js,
tool_call, tool_result, sandbox_event, response) streams into
the viewport live. It’s built on
Bubble Tea and consumes
the public tavora-sdk-go, so it doubles as a worked example of
SDK integration.
Use it when you want to:
- Test an agent end-to-end without a browser.
- Demo what an agent does without spinning up a frontend.
- Resume a long-running session you started elsewhere.
- Read tool traces inline as the agent runs.
For authoring agents, skills, or MCP servers — use the
tavora CLI. For chatting with them, use the TUI.
Install
Section titled “Install”go install github.com/tavora-ai/tavora-tools/cmd/tavora-tui@latest# or from a source checkout:go install ./cmd/tavora-tuiFirst run
Section titled “First run”tavora-tuiFirst run drops you into a setup screen that asks for the Tavora URL
and an app-scoped API key. The key is validated against
/api/sdk/app before anything is saved. On success the credentials
persist to:
- macOS:
~/Library/Application Support/tavora/agent-tui.json - Linux:
$XDG_CONFIG_HOME/tavora/agent-tui.json(or~/.config/tavora/agent-tui.json) - Override:
TAVORA_TUI_CONFIG=/path/to/file
After credentials, the TUI picks an agent:
- One agent in the app → auto-select.
- Two or more → interactive picker (filter with
/). - Zero → error pointing you at
tavora agents versions create <agent-id> ....
The session is created bound to the agent’s active version, so
persona, model, and the version’s skills_json filtering resolve
automatically. No agent → no TUI, by design.
Subsequent runs
Section titled “Subsequent runs”tavora-tui # uses stored configTAVORA_URL=... TAVORA_API_KEY=... tavora-tui # env wins (not persisted)tavora-tui --reset-config # rerun setuptavora-tui --agent <id-or-name> # skip the pickertavora-tui --tools search,list_stores # enable extra platform toolstavora-tui --session <id> # resume a prior server-side sessionWhen the TUI exits (/quit, ctrl+c, or fatal error) it prints the
current session ID and the exact --session invocation to resume it.
Sessions live server-side and retain their full history, so resuming
picks up where the conversation left off.
In the chat
Section titled “In the chat”| Key / command | Effect |
|---|---|
enter | Send the prompt |
up / down | Browse prompt history; in-progress draft restored on down past newest |
ctrl+c | Quit (also prints resume command) |
/upload <path> | Upload a file as a document and reference it in the next turn |
/quit | Quit |
/help | Print the keybinding cheat sheet |
Tool calls render inline as → <tool>(args) / ← <tool> ok. The
viewport autoscrolls to follow output, but pgup / pgdn pause
follow and let you scroll the history.
When you’d reach for it vs the CLI
Section titled “When you’d reach for it vs the CLI”| Want to… | Use |
|---|---|
| Send one message and capture output for a script | tavora agents run <session-id> "<msg>" --output json |
| Iterate on a prompt or skill against the same agent | tavora-tui --agent <id> |
| Demo what an agent does in a screencast | tavora-tui (terminal recordings render beautifully) |
| Replay a session from a specific step with a tweaked prompt | tavora studio replay <session-id> --from-step N |
| Resume a session whose ID you have | tavora-tui --session <id> |
The CLI is for ops and scripting; the TUI is for conversation. Use both — they share configuration, so swapping between them is friction- free.
Related
Section titled “Related”- tavora CLI — the non-interactive sibling.
- CI integration — the
--gatepattern for automated pipelines. - Build the tasklist agent — the canonical code-first integration that pairs with TUI exploration.