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

Table of contents


Back to top

Copyright © 2026 idelchi. Distributed under the MIT License.