A terminal god-view of every coding agent on your network
recondo-tui opens to a live realtime lens in under 500 ms. Five metric cards
on top, a 50-row virtualized traffic table underneath, vim navigation, command palette,
pinned tabs, and cross-lens selection. It's a GraphQL client over the same data
the dashboard reads — no separate ingestion, no extra storage.
Install
Option 1 — from source (current v1 path)
git clone github.com/recondodev/recondo
cd recondo
cargo run -p recondo-tui First-run compile is 30–60 s. Subsequent runs are instant. Requires Rust 1.80+ (rustup).
Option 2 — from crates.io (once v1 ships)
cargo install recondo-tui
recondo-tui
# Upgrade later
cargo install --force recondo-tui Option 3 — prebuilt binaries
macOS and Linux binaries are coming so you won't need a Rust toolchain. Track progress on the releases page.
Configuration
Environment variables
RECONDO_API_URL http://localhost:4000/graphql GraphQL endpoint the TUI polls for metrics + session data RECONDO_API_KEY — (dev-mode bypass) wrt_… bearer key for production / shared deployments CLI flags (override env vars)
recondo-tui --api-url http://staging.example.com:4000/graphql
recondo-tui --api-key wrt_abc123def456
recondo-tui --api-url http://staging.example.com:4000/graphql \
--api-key wrt_abc123def456 Authentication models
The TUI inherits the same auth model as the rest of Recondo. When the API runs with
NODE_ENV=development, no Authorization header is needed and the
API synthesizes an admin ApiKeyInfo with cross-project access — same posture as the dashboard.
In production (or any non-dev API), set RECONDO_API_KEY=wrt_… and the TUI
sends Authorization: Bearer wrt_… on every request. The API validates the key
against the api_keys table and scopes results to the key's project.
Lenses
Open a lens by pressing its key from anywhere. Selection follows you across lenses —
highlight a session in s, switch to c, and the cost lens scopes to that session.
d · Realtime monitor Live metrics + 50-row virtualized traffic table. Default landing. s · Sessions All captured sessions — filter by provider / model / framework / project. c · Cost & usage Spend grouped by provider / model / framework. 14-day daily sparkline. a · Agent analytics Active agents, framework mix, top developers, top repositories. A · Audit trail v1.5 — audit log of API/MCP calls and governance changes. v1 stubs to dashboard. r · Replay / diff v1.5 — compare two turns side-by-side. v1 stub. Global keybindings
: Command palette — :realtime · :sessions · :today · :since 2026-04-01 / Fuzzy search within the current lens (Esc closes) ? Help overlay — full keybinding reference q Quit (only outside the command palette) Esc Close overlays / search / palette Enter Drill in — session → turns → full prompt + response + tool calls j / k Move cursor down / up (vim) gg / G Jump to top / bottom H / L History back / forward across lenses Tab / ⇧-Tab Cycle focus between panels (multi-panel lenses only) f Filter — realtime cycles providers; sessions/cost/agents open a modal o / ⇧-O Sort forward / reverse (lens-dependent sort keys) g Group-by cycle (cost lens only) — provider → model → framework * Pin current lens + time window as a tab 1 – 9 Jump to pinned tab N
Vim / k9s muscle memory: j/k for up/down, / for search,
: for commands. gg is two key presses, detected as a sequence.
Time windows
Set via the command palette so numeric keys stay reserved for pinned tabs. Time windows persist across lens switches.
:today Midnight to now (local) :week Last 7 days from now :month Last 30 days from now :all No time filter — full history :since 2026-04-01 From the given date to now :between 2026-04-01 2026-04-15 Inclusive window Pinning views & cross-lens selection
Pinned tabs preserve a lens + time window combination. Selection is shared across all lenses through a tiny in-memory registry — pinning and returning doesn't reset your position.
1. Press 's' to open Sessions
2. Navigate with j/k to a session of interest
3. Press '*' to pin this view as tab 1
4. Press 'c' to open Cost — the lens scopes to that session
5. Press '1' to jump back to the pinned sessions view
6. Selection is still on the same session Troubleshooting
"Cannot reach Recondo API at http://localhost:4000/graphql"
API isn't running or you're pointed at the wrong host. Verify:
curl http://localhost:4000/graphql (a 400/200 is fine — connection refused isn't).
Point elsewhere with recondo-tui --api-url ….
"Empty realtime feed" / "No sessions"
Data exists somewhere but the TUI doesn't see it. Check captures first:
ls ~/.recondo/objects/req/ | head -5. If empty, no agent traffic ever
reached the gateway — send a prompt through Claude Code. If non-empty, check the API:
psql -h localhost -U recondo -d recondo -c "SELECT COUNT(*) FROM sessions;".
"Auth rejected" / 401
Key format must be wrt_…; header must be exactly Authorization: Bearer wrt_….
If the API is running in production mode, the dev-bypass doesn't apply — every request needs a valid key.
Where to go next
The TUI is one of three surfaces over the same capture stream.