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
| Requirement | Details |
|---|---|
| Terminal colors | 256 colors or truecolor support (most modern terminals) |
| Minimum size | 80 columns x 24 rows |
| Unicode | UTF-8 support for box-drawing characters and sparklines |
| Python | 3.9 or later |
Launch
twosignal-tui
# or run as a module
python -m twosignal_tuiOn 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:
| Key | Action |
|---|---|
q | Quit the application (or close a modal) |
Tab | Switch between panels / cycle focus |
Enter | Select the highlighted item or confirm an action |
Esc | Go back to the previous screen or cancel |
/ | Open the search/filter input |
r | Refresh data on the current screen |
Up / Down | Navigate lists and tables |
PgUp / PgDn | Scroll one page at a time |
1-9 | Jump to a screen by number (shown in sidebar) |
Screens
| Screen | Description |
|---|---|
| Home | Organization selector and main navigation |
| Dashboard | Real-time stats, sparkline charts, traces table, activity log |
| Projects | Create, edit, and list projects |
| Traces | List, search, and filter traces |
| Trace Detail | Span tree view with input/output inspection |
| Evaluators | Create, edit, delete evaluators (all 7 types) |
| Datasets | Manage test datasets and items |
| API Keys | Create, view, and revoke API keys |
| Usage | Billing and usage metrics |
| Model Routing | Configure 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:
- Select the evaluator type from a list (CONTAINS, REGEX_MATCH, JSON_SCHEMA, LATENCY, COST, SIMILARITY, LLM_JUDGE).
- Fill in the configuration form. Fields are validated in real time — the TUI shows errors inline if a field is invalid.
- 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-tuiThe 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:
| Task | CLI | TUI |
|---|---|---|
| Exploring traces interactively | - | Best choice — browse, filter, drill into spans |
| Monitoring in real time | - | Best choice — live dashboard with auto-refresh |
| CI/CD automation | Best choice — scriptable, JSON output | - |
| Quick one-off queries | Best choice — single command | - |
| Creating evaluators | Faster if you know the config | Easier with the guided form |
| Managing API keys | Either works | Either works |
Troubleshooting
| Issue | Cause | Fix |
|---|---|---|
| Characters look garbled | Terminal lacks Unicode support | Switch to a terminal that supports UTF-8 (iTerm2, Windows Terminal, Alacritty, Kitty) |
| No colors / everything is white | Terminal does not advertise color support | Set TERM=xterm-256color in your shell profile |
| Layout is broken | Terminal window is too small | Resize to at least 80x24. The TUI displays a warning if the window is too small. |
| Connection refused | Cannot reach the 2Signal API | Check TWOSIGNAL_URL and ensure the server is running |
| Session expired | Tokens have expired from inactivity | The TUI will prompt you to log in again. Or run twosignal login from the CLI. |
| High CPU usage | Very rapid auto-refresh with large datasets | This is rare — check your terminal emulator's GPU acceleration settings |