Changelog
0.5.0 (2026-09-10)
- feat(tui): collapse reasoning blocks by default, stream deltas as one block (#755) (#956)
- ci: publish to PyPI, and add jaato-eval to the release set (#923)
- feat(media): deliver binary media chunks, and know when a spoken turn ended (#824)
- chore: normalise line endings to LF, once, in one commit (#794) (#807)
- fix(tui,permission): make a permission prompt readable, and answerable only as chosen (#796)
- fix(tui,clarification): answer a batched clarification instead of hanging (#704) (#783)
- fix(providers): one prompt-token convention, converted at the seam (#758) (#763)
- fix(security): close the symlink escapes in file tools and search (#669) (#746)
- fix(daemon): refuse a relative path at the process boundary (#742) (#744)
- test(guards): a guard that cannot detect its own reversion now fails the build (#665)
- fix(memory): list_memory_tags reported an empty store while holding a raw queue (#664)
Rich Client
Interactive TUI client for jaato with multi-agent support, streaming output, and rich formatting.
Installation
pip install jaato-tui
Overview
The rich client provides:
- Multi-agent conversation view with agent cycling
- Streaming output with real-time rendering
- Permission prompts for tool execution
- Plan panel for tracking agent plans
- Customizable keybindings and themes
Running
# Start server daemon first
.venv/bin/python -m server --ipc-socket /tmp/jaato.sock --daemon
# Connect TUI to running server
.venv/bin/python jaato-tui/rich_client.py --connect /tmp/jaato.sock
Commands
General
| Command | Description |
|---|---|
help |
Show help message and available commands |
reset |
Clear conversation history |
history |
Show full conversation history |
context |
Show context window usage |
export [file] |
Export session to YAML |
clear |
Clear output panel |
quit / exit |
Exit the client |
Model
| Command | Description |
|---|---|
model <name> |
Switch to a different model |
Tools
| Command | Description |
|---|---|
tools |
Manage tools available to the model |
tools list |
List all tools with enabled/disabled status |
tools enable <name> |
Enable a tool (or all) |
tools disable <name> |
Disable a tool (or all) |
Plugins
| Command | Description |
|---|---|
plugins |
List available plugins with status |
Sessions
| Command | Description |
|---|---|
save [name] |
Save current session |
resume [name] |
Resume a saved session |
sessions |
List saved sessions |
Plan
| Command | Description |
|---|---|
plan |
Show current plan status |
Screenshot
Capture TUI state as images. The command is intercepted client-side. By default, a system hint is sent to the model with the capture path.
| Command | Description |
|---|---|
screenshot |
Capture and send hint to model |
screenshot nosend |
Capture only, no hint to model |
screenshot format F |
Set output format (svg, png, html) |
screenshot auto |
Toggle auto-capture on turn end |
screenshot interval N |
Capture every N ms during streaming (0=off) |
screenshot help |
Show help |
Captures are saved to /tmp/jaato_vision/ by default. SVG is the default format. PNG requires cairosvg package.
Keybindings
| Command | Description |
|---|---|
keybindings |
Manage keyboard shortcuts |
keybindings list |
Show current keybinding configuration |
keybindings set <action> <key> |
Set a keybinding |
keybindings profile |
Show/switch terminal-specific profiles |
keybindings reload |
Reload keybindings from config files |
Authentication
Anthropic Claude:
| Command | Description |
|---|---|
anthropic-auth login |
Open browser for OAuth authentication |
anthropic-auth code <code> |
Complete login with authorization code |
anthropic-auth logout |
Clear stored OAuth tokens |
anthropic-auth status |
Show current authentication status |
Antigravity (Google IDE Backend):
| Command | Description |
|---|---|
antigravity-auth login |
Open browser for Google OAuth |
antigravity-auth code <code> |
Complete login with authorization code |
antigravity-auth logout |
Clear stored accounts |
antigravity-auth status |
Show current authentication status |
antigravity-auth accounts |
List all authenticated accounts |
Theme
| Command | Description |
|---|---|
theme |
Show current theme info |
theme <name> |
Switch theme (dark, light, high-contrast, dracula, or custom) |
theme reload |
Reload from config files |
Default Keybindings
| Action | Key | Description |
|---|---|---|
| Submit | Enter |
Send message |
| Newline | Escape Enter |
Insert newline |
| Clear input | Escape Escape |
Clear input buffer |
| Cancel | Ctrl-C |
Cancel current operation |
| Exit | Ctrl-D |
Exit the client |
| Scroll up | PageUp |
Scroll output up |
| Scroll down | PageDown |
Scroll output down |
| Scroll top | Home |
Scroll to top |
| Scroll bottom | End |
Scroll to bottom |
| Toggle plan | Ctrl-P |
Show/hide plan panel |
| Toggle tools | Ctrl-T |
Show/hide tools panel |
| Cycle agents | Ctrl-A |
Cycle through agents |
| Yank/copy | Ctrl-Y |
Copy to clipboard |
| View full | V |
View full content in pager |
Configuration
Keybindings
Keybindings can be configured via:
- Project config:
.jaato/keybindings.json - User config:
~/.jaato/keybindings.json - Environment variables:
JAATO_KEY_<ACTION>=<key>
Priority: Environment variables > Project config > User config > Defaults
Themes
The rich client supports customizable themes with automatic persistence.
Built-in Themes:
| Theme | Description |
|---|---|
dark |
Dark background with cyan/green accents (default) |
light |
Light background for bright terminals |
high-contrast |
High contrast for accessibility |
Custom themes can be defined in:
- Project:
.jaato/theme.json - User:
~/.jaato/theme.json
Theme selection is persisted to ~/.jaato/preferences.json.
Custom Theme Example:
{
"name": "my-theme",
"version": "1.0",
"colors": {
"primary": "#5fd7ff",
"secondary": "#87d787",
"success": "#5fd75f",
"warning": "#ffff5f",
"error": "#ff5f5f",
"muted": "#808080",
"background": "#1a1a1a",
"surface": "#333333",
"text": "#ffffff",
"text_muted": "#aaaaaa"
}
}
Environment Variables
| Variable | Purpose |
|---|---|
JAATO_THEME |
Override theme (temporary) |
JAATO_VISION_DIR |
Screenshot output directory (default: /tmp/jaato_vision) |
JAATO_VISION_FORMAT |
Screenshot format: svg (default), png, html |
JAATO_COPY_MECHANISM |
Clipboard provider: osc52 (default) |
JAATO_COPY_SOURCES |
Sources to copy: model (default), or model&user&tool |
File References
Reference files in prompts with @ prefix:
What's in @screenshot.png?
Review @src/main.py
Related
- Vision Capture Plugin - Screenshot implementation
- Architecture - Framework architecture
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 jaato_tui-0.5.0.tar.gz.
File metadata
- Download URL: jaato_tui-0.5.0.tar.gz
- Upload date:
- Size: 363.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b9bb736fc4c6798c6c81197cb1371e6b9fcaf6864bf747b45a744a78357ccb0
|
|
| MD5 |
78f8179cfbc27340a21566020e4293b5
|
|
| BLAKE2b-256 |
2903dc36497f5103ed46e20c38300792410f339cc32a3a0c1cd6aa5db5ca1880
|
Provenance
The following attestation bundles were made for jaato_tui-0.5.0.tar.gz:
Publisher:
publish-pypi-tui.yml on Jaato-framework-and-examples/jaato
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jaato_tui-0.5.0.tar.gz -
Subject digest:
2b9bb736fc4c6798c6c81197cb1371e6b9fcaf6864bf747b45a744a78357ccb0 - Sigstore transparency entry: 2784024582
- Sigstore integration time:
-
Permalink:
Jaato-framework-and-examples/jaato@2bd24567a27802f82e125ae69e7330a9fc90f726 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Jaato-framework-and-examples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi-tui.yml@2bd24567a27802f82e125ae69e7330a9fc90f726 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file jaato_tui-0.5.0-py3-none-any.whl.
File metadata
- Download URL: jaato_tui-0.5.0-py3-none-any.whl
- Upload date:
- Size: 361.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b10d8fec7b005eb0c1e1b2b8aed3e038793d35f4dbc885b3ada94abcd431d31c
|
|
| MD5 |
b7f54410c92c3726401d28bb6aa29647
|
|
| BLAKE2b-256 |
810c555314b42a7ceb1e4e9011de3a3f39d51be01e3ecf6180d00facb516b19e
|
Provenance
The following attestation bundles were made for jaato_tui-0.5.0-py3-none-any.whl:
Publisher:
publish-pypi-tui.yml on Jaato-framework-and-examples/jaato
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jaato_tui-0.5.0-py3-none-any.whl -
Subject digest:
b10d8fec7b005eb0c1e1b2b8aed3e038793d35f4dbc885b3ada94abcd431d31c - Sigstore transparency entry: 2784024628
- Sigstore integration time:
-
Permalink:
Jaato-framework-and-examples/jaato@2bd24567a27802f82e125ae69e7330a9fc90f726 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Jaato-framework-and-examples
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi-tui.yml@2bd24567a27802f82e125ae69e7330a9fc90f726 -
Trigger Event:
workflow_dispatch
-
Statement type: