UI
Aura supports four UI backends, all consuming the same event protocol from the backend.
| UI | Flag | Input | Features |
|---|---|---|---|
| TUI | default | Interactive (Bubble Tea) | Full keybindings, text selection, status bar, spinner, picker overlay |
| Simple | --simple | Interactive (readline) | History file, basic streaming |
| Headless | (automatic) | None (stdout only) | Pure output, used for aura run, aura tools |
| Web | aura web | Browser (SSE + htmx) | Browser-based chat, session persistence, Markdown rendering |
Startup Spinner
Before any UI backend starts, Aura shows a stderr spinner with progress messages covering the initialization phase (config loading, provider registry refresh, plugin compilation, MCP connections, LSP spawning). The spinner writes to stderr so it never pollutes stdout — important for aura run where stdout carries assistant output.
The spinner stops automatically before the UI takes the terminal.
TUI Layout
┌─────────────────────────────────────────────┐
│ Chat History (scrollable viewport) │
│ │
│ You: ... │
│ Aura: ... │
│ │
├─────────────────────────────────────────────┤
│ ╭──────────────────────────────────────╮ │
│ │ Input area (1-3 lines, auto-grows) │ │
│ ╰──────────────────────────────────────╯ │
│ Agent • Mode • Model • think: level • │
│ Provider • step X/Y • tokens: 12k/131k • │
│ 🔒 • verbose • auto │
│ Ctrl+T: thinking • Ctrl+R: think • ... │
└─────────────────────────────────────────────┘
- Top: Scrollable chat history viewport
- Middle: Input textarea with rounded blue border (1-3 lines, grows with content)
- Status line: Runtime state joined with “ • “
- Help line: Keybinding hints
Visual Styles
| Element | Color | Style |
|---|---|---|
| User messages | Blue (#39) | Bold |
| Assistant messages | Orange (#214) | Bold |
| Thinking content | Gray (#241) | Faint |
| Content | Light gray (#252) | Normal |
| Tool calls | Blue (#39) | Faint |
| Tool pending | Gray (#240) | Faint |
| Tool results | Dim gray (#242) | Faint; Read uses Chroma syntax highlighting, Rg highlights pattern matches in magenta |
| Tool errors | Red (#196) | Faint |
| Errors | Red (#196) | Bold |
| Synthetic/System | Blue (#39) | Faint |
| DisplayOnly notices | Blue (#39) | Faint |
| Bookmark dividers | Blue (#39) | Faint, rendered as --- label --- |
| Input border | Blue (#62) | Rounded |
| Status line | Dim gray (#245) | Normal |
Chat Rendering
- User messages:
"You: "prefix + content - Assistant messages:
"Aura: "prefix, then parts in order (thinking → content → tool calls) - Tool calls: 4-state lifecycle —
○Pending (dimmed), spinner Running,✓Complete (with result),✗Error. All tool calls from a single LLM response are registered upfront as Pending before sequential execution begins - DisplayOnly: Rendered as notice text (never sent to the LLM)
- Bookmark: Rendered as
--- label ---divider line - Text wrapping: ANSI-aware word wrapping to terminal width