TUI Dashboard
Use the interactive laser dashboard with the keyboard, mouse, command palette, and forms
Run laser tui, or its alias laser ui, to open the interactive Ratatui dashboard. It supports keyboard and mouse input, a command palette, and saved history. TUI means terminal user interface. It shares the CLI binary, authentication, configuration, and backend.
Launch
laser tuiTo display a command's result inside the dashboard, use interactive mode:
laser deployment list --interactive
laser tenant get --interactive--interactive runs the selected command and displays its result beside the navigation panes.
Layout
The dashboard follows the organization hierarchy:
- Welcome / Dashboard shows the account, active context, environment overview, and starter shortcut.
- Tenant shows members, roles, invitations, API keys, cloud accounts, and billing.
- Division lists its environments.
- Environment lists its deployments.
- Deployment provides tabs for overview, credentials, configuration, heartbeats, metrics, logs, access rules, snapshots, activity, and connectors.
- Resource tables provide paginated lists with filters based on the current location.
The status bar shows the active context, polling state, and screen. Welcome also lists detected environment overrides, including LD_API_KEY and LD_CONTEXT.
Key Bindings
Direct bindings cover common navigation without conflicting with terminal conventions. Other actions use the command palette. Type on a navigation screen to open it, or press :.
Navigation
| Key | Action |
|---|---|
↑ / ↓ | Move up / down in lists, scroll panes |
← / → | Back / forward, or pane focus on the dashboard |
Enter | Drill into the selected resource, or execute the typed command |
Esc | Back one screen. On the Logs tab also clears the filter |
Tab | Next deployment tab. On the dashboard toggles tree / detail focus |
Shift+Tab | Previous deployment tab |
1...9 / 0 | Jump directly to deployment tab N (0 maps to tab 10) |
Ctrl+C / Ctrl+D | Quit |
Function and Modifier Keys
| Key | Action |
|---|---|
F5 | Force-refresh the active screen (works regardless of auto-poll) |
F4 | Cycle the runtime filter (iggy / connectors / warden) on the deployment view |
Ctrl+P | Toggle background auto-poll on / off |
PageUp / PageDown | Page-scroll the active pane |
Ctrl+B / Ctrl+F | Page-scroll up / down (vim-style alternative) |
< / > | Page-scroll up / down (modifier-free alternative) |
Command Palette
The input appears at the bottom of the screen. Commands with a : prefix act on the current screen, such as :create, :upgrade, and :refresh. Commands without the prefix, such as deployment list and tenant get, use the CLI parser and run inside the dashboard.
| Key (palette open) | Action |
|---|---|
Enter | Execute the line (or accept the highlighted suggestion) |
Tab | Accept / cycle the next candidate |
↑ / ↓ | Cycle command history (up = older) |
Esc | Reset the input. Second press exits |
TUI verbs
| Verb | Effect |
|---|---|
:auth / :login | Open the auth wizard |
:logout | Sign out of the active context |
:purge | Delete every context and keyring entry (confirmation required) |
:whoami | Show the active context and tenant |
:nav / :browse | Open the navigator from the welcome screen |
:dashboard / :overview | Jump to the dashboard |
:welcome / :home / :hello | Return to the welcome screen |
:help / :? | Show the help panel |
:use <context> | Switch the active context |
:contexts / :ctxs | List all contexts |
:show | Show details for the selected resource |
:format <table|json|yaml|name> | Change the output format used by inline command results |
:new / :create | Open the create wizard for the current scope |
:edit | Edit the selected resource |
:delete / :rm | Delete the selected resource (with confirmation) |
:upgrade | Open the upgrade wizard for the current deployment |
:managed / :byoc / :starter | Open the matching deployment provisioning wizard |
:reveal | Reveal masked deployment credentials |
:activate | Activate the selected config version |
:download | Generate a download URL for the selected snapshot |
:filter | Focus the filter input on logs / metrics tabs |
:copy / :select | Toggle terminal mouse-capture so you can drag-select text |
:save | Save the current command output to a file |
:raw | Show the raw response payload for the last command |
:clear | Clear the message log |
:refresh / :reload | Force-refresh the active screen (same as F5) |
:poll | Toggle auto-poll (same as Ctrl+P) |
:permissions / :perms | Show the active API key's role and scopes |
:settings / :config | Show the tenant settings |
:types <list> | Filter an audit or activity table by event types. No argument clears the filter |
:stream | Open the stream screen of the current deployment, see below |
:stream-whoami | Show the connected Iggy user's effective grants |
:exit / :quit / :q | Exit the TUI |
History is stored at $XDG_DATA_HOME/laser/history. It keeps at most 1000 entries and uses atomic writes to prevent partial updates.
Stream Screen
From a deployment screen, :stream opens the deployment's own data: Iggy streams and the managed data plane. Each :stream-<tab> verb opens the same screen on a tab. Tab, Shift+Tab, and the digit keys move between tabs, Enter drills into a row, and F5 refetches.
| Tab | Verb | Shows |
|---|---|---|
| streams | :stream | Streams, then topics, partitions, and messages |
| kv store | :stream-kv | KV namespaces, then keys and values |
| memory | :stream-memory | The same KV data as agent memory, by conversation |
| schemas | :stream-schemas | Registered writer schemas |
| forks | :stream-forks | Forks of the materialized state |
| projections | :stream-projections | Projections and their bindings |
| graphs | :stream-graphs | Registered graphs |
| destinations | :stream-destinations | Materialization destinations and their status |
| filters | :stream-filters | Saved consumer filters, then one filter with its revisions and bound groups |
| query | :stream-query | A query form for a materialized index, in DSL or SQL mode |
| runs | :stream-runs | Agent runs |
| agents | :stream-agents | The agent registry |
| users | :stream-users | Iggy users with their permissions and governance roles |
| governance | :stream-governance | Governance roles and the users bound to them |
| capabilities | :stream-capabilities | The AGDX capabilities of the deployment |
On the stream screen, s hides or shows system-managed rows, v cycles a payload view between auto, JSON, text, and hex, [ and ] page through messages, and g jumps to an offset.
Wizards
Forms guide creation, upgrades, and deletion, with errors shown beside invalid fields:
- The Managed deployment form asks for cloud, region, tier, cluster mode, storage, availability, encryption, retention, and spend limit. It retrieves choices from
laser cloud tiersandlaser cloud storages. - The BYOC form adds AWS account ID, role ARN, external ID, and VPC details. For GCP, it asks for project, service account, and VPC details.
- The Starter form creates a Free deployment on one screen. Its region defaults are
us-east-1for AWS andus-central1for GCP. - The Upgrade form retrieves valid tier and storage changes from the API.
- Destructive actions require typed approval. Protected resources also require a one-time code.
Mouse
Mouse input uses crossterm. Left-click rows, tabs, or panes to select them and move focus. Use the wheel to scroll lists and details. If the terminal disables mouse support, use the keyboard equivalents.
Polling
The dashboard refreshes from the backend every five seconds. Toggle automatic polling with Ctrl+P or :poll. Refresh immediately with F5 or :refresh. The status bar shows whether polling is active.
Theming
The dashboard uses a monochrome, high-contrast palette. NO_COLOR or --no-color disables color output. Alternate-screen mode preserves terminal scrollback when you exit.
When to Use the TUI vs Headless Verbs
| Use the TUI when | Use headless verbs when |
|---|---|
| Exploring a new tenant | Scripting, CI, or cron jobs |
| Creating deployments interactively | Composing pipelines |
| Tailing live logs or metrics | Returning JSON to another tool |
| Triaging an incident | Embedding in agents |
Both modes use the same authentication, context, and backend. Choose either mode for each task.