Feature: interactive TUI dashboard (opencode-style) for managing scans
Author: AzizWaresCoCreated Sep 6, 2026Updated Sep 6, 2026
Feature Request: Interactive TUI (opencode-style dashboard)
Summary
Add a persistent, terminal-based TUI to Shannon — an interactive dashboard for launching, monitoring, and resuming pentest scans, in the style of modern coding-agent CLIs (e.g. opencode). Today the experience is splash screen + discrete commands (start, status, logs, stop). A TUI would unify those into one live, persistent interface.
Motivation
- Single live surface: running a scan currently means juggling
start(background),status,logs, andstopacross terminals. A TUI gives one persistent view: scan list, live per-agent progress tree, streaming logs, and controls — the same terminal stays useful while a scan runs. - Lower onboarding friction: the current flow is splashes + help text + separate monitoring commands. A guided TUI (wizard-style launcher → live dashboard) matches how developers now expect agentic tools to behave.
- Better scan triage: multiple workspaces side-by-side (running/completed/failed) would make
shannon scansandstatuslegible at a glance instead of per-command invocation.
Proposed Experience
- Launch:
shannon(bare) opens the TUI. A "New scan" panel prompts for target URL, repo path, config, workspace name — likesetup's existing clack prompts but inside the dashboard. - Dashboard: persistent panel with:
- scan list (running / completed / failed), selectable to focus;
- live phase + agent tree (same data as
status --json); - streaming combined log + per-agent log tabs (same data as
logs); - actions: pause/stop/resume, open report path, copy report.
- Resume: pick a workspace from the list to resume rather than re-typing
-w. - CI-friendly fallback: full non-interactive behavior preserved (flags,
--json) when stdout isn't a TTY.
Considerations / Open Questions
- Library choice (e.g.
ink,blessed,@clack-based panels) and how it composes with the existing clack prompts. - Keep the TUI as a thin layer over the existing CLI commands / Temporal client so business logic and
--jsoncontracts stay shared. - Accessibility:
NO_COLOR, reduced-motion, and keyboard-only navigation.
Related
- Current CLI surface:
apps/cli/src/index.ts,apps/cli/src/commands/ - Live progress already exposed via
status --jsonand the Temporal client (apps/cli/src/temporal-client.ts)
Happy to help prototype or flesh out the wireframe if maintainers are interested.
Source: KeygraphHQ/shannon