Skip to main content

Infrastructure Commands

Commands for setting up Genie, launching the TUI and desktop app, managing services, diagnosing issues, updating, database management, and configuring terminal shortcuts.

genie tui

Launch the interactive terminal UI (OpenTUI nav + tmux Claude Code).
genie tui is not in the top-level genie --help output. Invoke it directly by name — the CLI resolves it at dispatch time. If your install was built without the TUI module, the command will error immediately; fall back to genie app (desktop app) or the pane-level commands in this page.

genie serve

Start, stop, and check status of all genie infrastructure services (pgserve, tmux, scheduler).

Subcommands

genie serve start Options

genie daemon start now redirects to genie serve --headless. Use genie serve start directly for explicit control.

genie app

Launch the Genie desktop app — a Tauri-based native cockpit that layers 12 views on top of the same PostgreSQL state, NATS event stream, and tmux/SDK executors that power genie tui and the raw CLI. The app ships a Bun sidecar for IPC (JSON-RPC over stdin/stdout, proxied through Tauri’s invoke()), subscribes to khal.*.genie.* NATS subjects for live updates, and loads each view lazily from the app manifest.
The desktop app requires a graphical environment (Linux X11/Wayland, macOS, or Windows). On headless servers use --tui to fall back to the OpenTUI interface, --backend-only to run just the sidecar for remote frontends, or the plain genie CLI.

Views

The app manifest declares 12 native views. The primary sidebar surfaces nine of them; Terminal, Activity, and Setup are opened from context (per-agent terminals, detail panels, first-run onboarding).
The app shell landing view — live activity feed, team activity rollups, recent cost snapshot, and quick links. Subscribes to events.runtime for real-time updates.
Agent roster grouped by team with a detail panel for identity, executor, and activity. Replaces the earlier 5-icon agents strip — one view with sidebar + main list + detail rail.
Historical session replay — scroll through completed sessions, re-watch transcripts, and inspect tool-use timelines.
Orchestration dashboard for in-flight wishes and task groups. Modal overlays for task detail; backed by the task NATS prefix.
Token spend and cost analytics — per-agent, per-team, and per-model breakdowns with live cost counters streamed from the backend.
Browser for project files, the brain memory store, and scheduled artifacts. Backed by the fs NATS prefix for filesystem notifications.
Create, pause, and inspect cron + ad-hoc schedules. Mirrors genie schedule from the CLI.
Host health — processes, PostgreSQL, tmux, NATS, CPU/memory/disk. Requires the platform-dev role.
Tabbed configuration surface for executor defaults, NATS URL, theme, and per-view permissions. Anchored to the bottom of the sidebar.
Embedded xterm.js panes streamed over NATS PTY subjects (pty.create, pty.resize, pty.data, pty.input). Opened from the Fleet detail panel when you attach to an agent. Requires the platform-dev role.
Recent events feed surfaced inside the Fleet detail panel (no standalone sidebar entry). Lives on the event NATS prefix.
First-run onboarding flow for new workspaces — configures executor, NATS, and default team.

When to use app, TUI, or CLI

Desktop app

Rich multi-view cockpit on a workstation with a GUI. Best for day-to-day orchestration, cost tracking, and live agent supervision.

TUI

Same visual affordances in a pure terminal. Best over SSH, in tmux, or on hosts without a display.

CLI

Scripts, CI, heartbeats, and remote automation. Best when you need deterministic, composable commands with JSON output.

Examples


genie omni

Manage the Omni ↔ Genie NATS bridge. genie omni subscribes to omni.message.> subjects, routes inbound messages to agent sessions, and streams responses back to Omni. Session state and executor configuration are read from PostgreSQL — there is no in-memory Map, so status queries stay accurate across restarts and multiple bridge processes.
genie omni is not in the top-level genie --help output. It resolves by name at dispatch time; installations without the Omni bridge module will exit with a clear error. The bridge is opt-in and does not auto-start with genie serve.

Subcommands

genie omni start options

genie omni status options

Key concepts

genie omni status reads active sessions, queue depth, and idle timers directly from PostgreSQL via the executors table and its metadata index. The legacy in-memory session Map is documented but no longer authoritative, so status is consistent across bridge restarts and multiple observer processes. A safePgCall helper + pgAvailable scaffolding keeps the bridge resilient if PG is briefly unavailable.
The bridge resolves executor configuration (tmux vs SDK, concurrency, idle timeout) through a single resolver that honours the genie_executor flip switch. Flipping a single row swaps the backend for new sessions without restarting the bridge; in-flight sessions continue on their original executor.
Suspended sessions are resumed on demand. When a new message arrives for an idle chat, the bridge looks up the session row in executors, rehydrates state from its metadata index, and reattaches the executor. The SDK executor additionally captures inline session content so resumed SDK sessions start with their previous turns.

Examples

The NATS subjects, subscription patterns, and reliability semantics the bridge relies on are documented in Architecture → Messaging.

genie setup

Interactive wizard for configuring Genie settings.
Terminal

Options

Terminal

genie doctor

Diagnose the Genie installation and environment.
Terminal

genie update

Update Genie to the latest version.
Terminal

genie uninstall

Remove Genie from the system. Cleans up global state, configuration, and the CLI binary.
Terminal

genie db

For full database commands (db status, db migrate, db query, db backup, db restore, db url), see the Database CLI reference.

genie shortcuts

Configure Warp-like keyboard shortcuts for tmux.

Subcommands

Generates and installs:
Terminal