TUI Dashboard

The 2Signal TUI is an interactive terminal dashboard for real-time monitoring of your AI agents. Think lazydocker, but for AI traces.

Installation

pip install twosignal[tui]

Requirements

RequirementDetails
Terminal colors256 colors or truecolor support (most modern terminals)
Minimum size80 columns x 24 rows
UnicodeUTF-8 support for box-drawing characters and sparklines
Python3.9 or later

Launch

twosignal-tui

# or run as a module
python -m twosignal_tui

On first launch, you'll be prompted for your email and password. If you've already run twosignal login via the CLI, you'll be authenticated automatically.

Keyboard Shortcuts

The TUI is fully keyboard-driven. Shortcuts are shown in the footer bar, but here is the full reference:

KeyAction
qQuit the application (or close a modal)
TabSwitch between panels / cycle focus
EnterSelect the highlighted item or confirm an action
EscGo back to the previous screen or cancel
/Open the search/filter input
rRefresh data on the current screen
Up / DownNavigate lists and tables
PgUp / PgDnScroll one page at a time
1-9Jump to a screen by number (shown in sidebar)

Screens

ScreenDescription
HomeOrganization selector and main navigation
DashboardReal-time stats, sparkline charts, traces table, activity log
ProjectsCreate, edit, and list projects
TracesList, search, and filter traces
Trace DetailSpan tree view with input/output inspection
EvaluatorsCreate, edit, delete evaluators (all 7 types)
DatasetsManage test datasets and items
API KeysCreate, view, and revoke API keys
UsageBilling and usage metrics
Model RoutingConfigure model routing rules

Dashboard Screen

The dashboard is the main screen you see after selecting a project. It provides a real-time overview of your agent's health:

  • Trace count sparkline — a compact chart showing trace volume over the last hour. Spikes indicate bursts of activity; gaps may indicate downtime.
  • Error rate — the percentage of traces with ERROR status, updated in real time.
  • Average latency — mean trace duration across recent traces, displayed with a trend indicator.
  • Recent traces table — the most recent traces with their status, duration, cost, and timestamp. Select a row and press Enter to drill into the trace detail.
  • Activity log — a scrolling feed of recent events: new traces, evaluator results, errors, and configuration changes.

The dashboard auto-refreshes every few seconds. Press r to force an immediate refresh.

Trace Detail View

When you select a trace, the detail view shows a hierarchical span tree:

  • Span tree — traces are broken into nested spans displayed as an indented tree. Each span shows its name, type, duration, and token count. Parent-child relationships are represented with box-drawing characters.
  • Input/output inspection — select a span and press Enter to view its full input and output. The JSON viewer provides syntax highlighting and collapsible sections for large payloads.
  • Scores — if evaluators have run on this trace, scores are displayed alongside the trace summary. Each score shows the evaluator name, numeric score, and pass/fail status.
  • Metadata — view tags, model names, token usage, and cost for each span.

Evaluator Management

The Evaluators screen lets you create, edit, and delete evaluators without leaving the terminal. When you create a new evaluator:

  1. Select the evaluator type from a list (CONTAINS, REGEX_MATCH, JSON_SCHEMA, LATENCY, COST, SIMILARITY, LLM_JUDGE).
  2. Fill in the configuration form. Fields are validated in real time — the TUI shows errors inline if a field is invalid.
  3. Give the evaluator a name and confirm. It takes effect on the next incoming trace.

You can also toggle evaluators on/off and delete them from the list view. Changes are saved immediately to the server.

Features

  • Live updates — auto-refreshing dashboard with sparkline charts
  • Span tree — hierarchical view of trace spans with timing and tokens
  • JSON viewer — inspect span inputs and outputs with syntax highlighting
  • Keyboard-driven — full navigation via keyboard shortcuts (shown in footer)
  • Shared auth — same session as the CLI

Configuration

# connect to a local dev instance
TWOSIGNAL_URL=http://localhost:3000 twosignal-tui

The TUI reads from TWOSIGNAL_URL env var, ~/.twosignal/config.json, or defaults to https://app.twosignal.dev.

CLI vs TUI

Both tools share the same authentication and can do many of the same things. Choose based on your workflow:

TaskCLITUI
Exploring traces interactively-Best choice — browse, filter, drill into spans
Monitoring in real time-Best choice — live dashboard with auto-refresh
CI/CD automationBest choice — scriptable, JSON output-
Quick one-off queriesBest choice — single command-
Creating evaluatorsFaster if you know the configEasier with the guided form
Managing API keysEither worksEither works

Troubleshooting

IssueCauseFix
Characters look garbledTerminal lacks Unicode supportSwitch to a terminal that supports UTF-8 (iTerm2, Windows Terminal, Alacritty, Kitty)
No colors / everything is whiteTerminal does not advertise color supportSet TERM=xterm-256color in your shell profile
Layout is brokenTerminal window is too smallResize to at least 80x24. The TUI displays a warning if the window is too small.
Connection refusedCannot reach the 2Signal APICheck TWOSIGNAL_URL and ensure the server is running
Session expiredTokens have expired from inactivityThe TUI will prompt you to log in again. Or run twosignal login from the CLI.
High CPU usageVery rapid auto-refresh with large datasetsThis is rare — check your terminal emulator's GPU acceleration settings

Have questions? Join our community!

Connect with other developers and the 2Signal team.

Join Discord