Textual TUI application for axio.
A full-featured terminal chat interface with session management, a plugin system for transports and tools, and a built-in SQLite context store. Pick your LLM backend, load your tools, and start chatting — all from the terminal.
- Plugin system — transports, tools, and guards discovered automatically via entry points
- Session management — persistent SQLite-backed conversations; fork, switch, and resume sessions
- Streaming UI — text and tool calls rendered incrementally as they arrive
- Multi-transport — switch between OpenAI, Nebius, Codex, or any registered backend at runtime
- Sub-agent support — the
subagenttool lets the agent spin up nested agent sessions - Vision —
visiontool for image analysis (with compatible models) - Serveable —
textual-servesupport for browser-based access
Minimal (core TUI only, bring your own transport):
pip install axio-tuiWith everything:
pip install "axio-tui[all]"Pick what you need:
pip install "axio-tui[openai,local,mcp]"| Extra | Installs |
|---|---|
openai |
axio-transport-openai |
nebius |
axio-transport-nebius |
codex |
axio-transport-codex |
local |
axio-tools-local |
mcp |
axio-tools-mcp |
rag |
axio-tui-rag |
guards |
axio-tui-guards |
all |
Everything above |
pip install "axio-tui[openai,local]"
axioOn first launch, open Settings (s) to configure your API key and model. Sessions are stored in ~/.local/share/axio/.
axio-tui
├── App (Textual)
│ ├── ChatScreen — message list, input, streaming
│ ├── SessionScreen — session list and management
│ └── SettingsScreen — per-plugin configuration
├── SQLiteContextStore — persistent conversation history
├── TransportRegistry — discovers axio.transport entry points
└── Plugin system
├── ToolsPlugin — wraps axio.tools.settings providers
└── PermissionGuard — wraps axio.guards providers
These tools are always available regardless of installed plugins:
| Tool | Description |
|---|---|
confirm |
Ask the user a yes/no question (for guard prompts) |
status_line |
Update the TUI status bar from within the agent |
subagent |
Spawn a nested agent with its own tools and context |
vision |
Analyse an image file (requires a vision-capable model) |
axio-tui discovers plugins automatically when installed packages declare:
# Transport backend
[project.entry-points."axio.transport"]
openai = "axio_transport_openai:OpenAITransport"
# Tool group with settings screen
[project.entry-points."axio.tools.settings"]
docker = "axio_tools_docker.plugin:DockerPlugin"
# Simple tools (no settings)
[project.entry-points."axio.tools"]
shell = "axio_tools_local.shell:Shell"
# Permission guards
[project.entry-points."axio.guards"]
path = "axio_tui_guards.guards:PathGuard"textual-serve axio_tui.__main__:app
# Open http://localhost:8000 in your browseraxio · axio-tui-rag · axio-tui-guards · axio-tools-local · axio-tools-mcp · axio-tools-docker
MIT