Skip to content

CLI ↔ Dashboard Coverage Gap Inventory

Last updated: 2026-08-24

Methodology

Every user-facing capability — ndx orchestration commands, rex / sourcevision / hench package CLI commands, and rex / sourcevision MCP tools — is rated:

  • full — dashboard has a trigger, status view, and configuration surface for this capability
  • partial — dashboard exposes some but not all meaningful facets (read-only view without trigger, trigger without config, or a subset of the CLI's options)
  • none — no dashboard representation at all
  • n/a — intentionally terminal-only or not meaningful inside the dashboard (rationale given)

"User impact" is rated high / medium / low based on how frequently the capability appears in a normal daily workflow.

Coverage was verified against the current viewer (packages/web/src/viewer/views/view-registry.ts, components/sidebar.ts) and server routes (packages/web/src/server/routes-*.ts), including the trigger controls shipped in feat(web): add dashboard trigger controls for CLI commands (/api/commands/*).


Changes since the 2026-04-18 audit

The Dashboard Trigger Controls feature closed five of the previous Tier 1–3 gaps:

CommandWasNowShipped surface
ndx analyzenonefull"Run Analysis" button on Overview → POST /api/commands/sv-analyze (lite/full)
ndx syncnonefullPush / Pull / Sync buttons in ndx sync settings → POST /api/commands/sync
ndx recommendpartialfull"Refresh Recommendations" on Suggestions → POST /api/commands/recommend
ndx exportnonepartialExport panel in Commands view → POST /api/commands/export (no --deploy=github flow)
ndx self-healnonepartialSelf-Heal panel in Commands view → POST /api/commands/self-heal + status poll (no live phase/iteration view, no stop control)

One capability regressed: the Analyze/Batch-Import panels (ndx plan proposal review) are no longer reachable — see Orphaned UI surface.


ndx orchestration commands

CommandCoverageImpactNotes
ndx workfullhighPer-task Execute button (task detail), "Start" on next-task card, epic-by-epic panel with pause/resume, terminate + throttle/emergency-stop controls
ndx analyzefullhigh"Run Analysis" on Overview (lite/full); --deep not exposed
ndx syncfullhighPush/pull/sync triggers + Notion config, connection test, schema wizard
ndx recommendfullhighSuggestions view + refresh trigger
ndx plan / --acceptpartialhighRegression: smart-add preview + accept-edited work (SmartAddInput), but the proposal-review panel (AnalyzePanel/api/rex/analyze, /api/rex/proposals*) is only mounted by the orphaned views/analysis.ts
ndx addfullhighSmart-add input with debounced preview, accept-edited flow
ndx statusfullhighRex dashboard + PRD tree
ndx usagefullhighPeriod grouping (day/week/month toggle), per-command breakdown with package filter, and budget alerts by severity — all served by the aggregate /api/token/utilization endpoint
ndx refreshpartialhigh"Refresh Data" panel triggers the data phases live (--data-only --live-server); full UI rebuild still requires the terminal (server must stop)
ndx self-healfullmediumTrigger, status poll, iteration/phase display, and a Stop control that cancels the running loop
ndx exportpartialmediumExport trigger exists; deploy flow not exposed
ndx cifullmediumRun-CI-check action in the Validation view with structured results from --format=json
ndx configfullmediumSettings section: General (LLM provider), project settings, hench config, Notion, feature flags, CLI timeouts — grouped by CLI command
ndx authfulllowCredential status chip in Settings → General (GET /api/commands/auth), with re-check
ndx install-sample / ndx destroy-samplefulllowSample App panel in Commands view (packages/web/src/viewer/views/commands.ts) — Install/Destroy buttons, live status polling via GET /api/commands/sample-status, POST /api/commands/install-sample and /api/commands/destroy-sample
ndx pair-programming / bickernonelowExperimental; not yet a dashboard workflow
ndx initn/aOne-time setup; dashboard requires init to exist
ndx start / ndx devn/aThese commands launch the dashboard
ndx version / ndx helpn/aFooter version + Guide/FAQ views cover this

ndx config — LLM Provider view detail

  • Local vendor (full): the LLM Provider view (packages/web/src/viewer/views/llm-provider.ts) adds a "local" vendor alongside Claude/Codex — host/port/model fields, a live status probe, a connection smoke test (latency + tokens/sec), and saved server profiles. Backed by GET/PUT /api/llm/config plus GET /api/llm/local-status, POST /api/llm/local-test, and GET/POST/DELETE /api/llm/local-profiles (packages/web/src/server/routes-llm.ts).
  • Google/Gemini vendor (none, impact: medium): the CLI's google vendor (packages/core/config.js) has no dashboard representation — VENDORS in llm-provider.ts and VALID_VENDORS in routes-llm.ts cover only claude/codex/local; no tab, no field in the GET/PUT /api/llm/config contract.

rex package CLI

CommandCoverageImpactNotes
rex status / treefullhighPRD tree view
rex nextfullhighNext-task card on Rex dashboard
rex add (manual + smart)fullhighInline add + smart-add
rex update / remove / movefullmediumInline status picker, bulk actions, delete, reparent
rex validatefullmediumValidation view re-fetches /api/rex/validate + dependency graph with cycle detection
rex healthfullmediumHealth gauge on dashboard
rex reorganizefullmediumReorganize panel with preview + apply
rex prunefullmediumPrune preview + confirmation + execute
rex reshapefullmediumReshape action in the Validation view: previews proposals via --dry-run, applies only on explicit confirm
rex fixfullmediumFix action in the Validation view: --dry-run preview, then apply, then automatic re-validation
rex restorefullhighSnapshots/Restore panel on the Rex dashboard (list + restore-with-confirmation) — GET /api/rex/backups, POST /api/rex/restore (routes-rex/restore.ts). The in-app undo for reorganize/prune/reshape/fix
rex verifyfullmediumRequirements page renders coverage + traceability matrix (per-item CRUD deferred to the task detail panel)
rex analyze / importpartialmediumSame orphaned-panel regression as ndx plan
rex usagefullmediumSame coverage as ndx usage
rex syncfullmediumVia sync triggers
rex adapterpartiallowIntegrations view provides schema-driven config for registered adapters; no add/remove
rex reportnonelowJSON for CI; health view covers interactive use
rex facets (MCP facets)partiallowDeferred by decision (2026-08-14). Facet filters exist in the PRD tree. A distribution view was scoped and skipped: facets is MCP-only (no CLI command), no facets are configured in this project, and the panel would render an empty state for most users. Revisit if facet configuration becomes common.
rex migrate-to-md / migrate-folder-tree-filenames / backfill-commit-attributionn/aOne-time migrations; terminal-only by design
rex mcpn/aServer plumbing; MCP HTTP endpoints served by the dashboard itself

sourcevision package CLI

CommandCoverageImpactNotes
sourcevision analyzefullhighRun Analysis trigger + eight data views
sourcevision pr-markdownfullmediumPR Markdown tab with per-section copy + freshness state
sourcevision validatenonelowNo UI to validate .sourcevision/ outputs; freshness indicator partially covers intent
sourcevision export-pdffullmedium"Export PDF report" beside the Export panel; reports the written path (the viewer sandbox blocks page-initiated downloads)
sourcevision workspacenonelowMulti-repo aggregation has no dashboard concept yet (project switcher /api/projects is single-repo)
sourcevision serven/aLegacy standalone viewer; superseded by ndx start
sourcevision resetn/aDestructive; intentionally terminal-only
sourcevision git-credential-helpern/aInteractive terminal flow
sourcevision mcpn/aServer plumbing

hench package CLI

CommandCoverageImpactNotes
hench runfullhighExecute buttons + epic-by-epic panel (see ndx work)
hench status / showfullmediumRuns view: history, transcript, token breakdown, files changed
hench configfullmediumndx work settings view (GET/PUT /api/hench/config)
hench templatefullmediumTemplates view: gallery, apply, save, delete
hench validate-tokensfulllow"Validate token reporting" trigger in the Runs view, beside the per-run token diagnostics
hench recordn/aPlumbing for the assisted-run skills (/ndx-work, /ndx-capture, /ndx-plan, /ndx-reshape, /ndx-config); reads its token usage from the Claude Code session transcript
hench initn/aCovered by ndx init

Rex MCP tools (17)

MCP tools are AI-assistant-facing; the dashboard need not mirror them 1:1. Coverage below records whether an equivalent human surface exists, since a capability reachable by agents but invisible to humans is an observability gap.

ToolEquivalent UICoverage
get_prd_statusRex dashboard stats + PRD treefull
get_next_taskNext-task cardfull
update_task_statusInline status picker / bulk actionsfull
add_itemAdd-item + smart-addfull
edit_itemDetail panel editingfull
get_itemDetail panelfull
move_itemTree reparentfull
merge_itemsMerge previewfull
get_recommendationsSuggestions viewfull
verify_criteriaRequirements page (coverage + traceability matrix)full
reorganizeReorganize panelfull
healthHealth gaugefull
facetsFacet filters (no distribution view)partial
append_logActivity view (REX → Activity) renders the logfull
sync_with_remoteSync triggersfull
get_token_usageToken Usage view (utilization only)partial
get_capabilitiesn/a (protocol handshake)

Sourcevision MCP tools (10)

ToolEquivalent UICoverage
get_overviewOverview tabfull
get_next_stepsNext Steps panel on Overview (derived steps, any pass) + Suggestions tabfull
get_zonenone — the zone-detail view (views/zones.ts, 2569 lines) exists but is unreachable (see orphaned surface)
get_findingsArchitecture / Problems / Suggestions tabsfull
get_file_infoFiles tabfull
search_filesFiles tab filters + global search overlayfull
get_importsMap tabfull
get_classificationsFiles tab Archetype column (via /api/sv/classifications)full
set_file_archetypeArchetype override control in the Files tab (POST /api/sv/archetype)full
get_route_treeRoutes tabfull

Orphaned UI surface — resolved 2026-08-12

Roughly 2,900 lines of built view code were unreachable; both views are now registered (guarded by tests/unit/viewer/restored-views.test.ts):

  1. views/analysis.ts (AnalysisView) — was never registered after the web-package extraction, leaving POST /api/rex/analyze, /api/rex/proposals*, and /api/rex/batch-import without reachable UI. Now analysis (REX → "Analyze & Import").
  2. views/zones.ts (ZonesView, 2569 lines) — removed from navigation in PR #189 ("obsolete Zones navigation") before PRs #317/#321 invested in expandable zones and a11y, leaving that feature work invisible. Now zones (SourceVision → "Zones" tab).

Server APIs with no UI consumer

API surfaceSizeNote
/api/hench/adaptive/*873 lines, 10 endpointsDone 2026-08-13: Adaptive Optimization view (HENCH → Adaptive) consumes all 10 endpoints
/api/rex/requirements/*575 linesDone 2026-08-13: Requirements page (REX → Requirements) renders coverage + traceability; per-item CRUD deferred to the task detail panel
/api/sv/* (all except pr-markdown)8 endpointsViewer reads /data/*.json directly; these serve external/MCP consumers — document as external API, not a UI gap
/api/token/{summary,events,by-command,by-period,budget}5 endpointsNot a UI gap (verified 2026-08-14). utilization returns commands, budget and trend in one response, and the Token Usage view already renders all three — a day/week/month toggle (ndx usage --group parity), a per-command table with package filtering, and budget alerts by severity. These five are the granular/external split of the same data; wiring them separately would duplicate working UI and add redundant requests.
/api/hench/{metrics,metrics/snapshots,memory/history,memory/leaks,runs/health}5 endpointsPanels exist for live memory/concurrency; historical metrics unexposed
/api/rex/{next,stats}2 endpointsDashboard consumes /api/rex/dashboard instead; candidates for removal or documentation

SourceVision full-flow note — trigger shipped 2026-08-12

The SourceVision tabs are gated by zones.enrichmentPass (Architecture ≥ 2, Problems ≥ 3, Suggestions ≥ 4). The Overview now has a "Full analysis" control that runs sourcevision analyze --full (all four enrichment passes) as a background job — POST /api/commands/sv-analyze with full: true returns 202 and progress streams via GET /api/commands/sv-analyze/status (30-minute budget for the LLM passes; the old synchronous path capped out at 3 minutes). Locked tabs unlock automatically as the viewer's data polling picks up the refreshed zones.json. Remaining scope for the feature lives in its second task: surfacing every recommendation/function per tab once data exists.


Priority-ordered gap list

Tier 1 — high impact

  1. Restore the orphaned AnalysisViewdone 2026-08-12: registered as analysis (REX → "Analyze & Import"); ndx plan proposal review is reachable again.
  2. Restore the orphaned ZonesViewdone 2026-08-12: registered as zones (SourceVision → "Zones" tab); zone drill-down (get_zone equivalent) is navigable.
  3. ndx refresh triggerdone 2026-08-12: "Refresh Data" panel in the Commands view → POST /api/commands/refresh (spawns ndx refresh --data-only --live-server, a new CLI mode that keeps the running server alive) with phase progress from the [refresh] output and a status poll endpoint.
  4. Full-flow analysis trigger — extend /api/commands/sv-analyze to drive deep/enrichment passes with per-pass progress so all SourceVision tabs unlock from the UI (feeds feature a83b1a2f).

Tier 2 — medium impact

  1. Requirements / traceability pagedone 2026-08-13 (REX → Requirements: coverage stats + expandable traceability matrix).
  2. Adaptive-optimization pagedone 2026-08-13 (HENCH → Adaptive view: metrics, apply/dismiss/lock, settings, overrides, history).
  3. rex fix actiondone 2026-08-14 (Validation view, dry-run preview then apply).
  4. rex reshape flowdone 2026-08-14 (preview proposals, apply on confirm).
  5. ndx ci triggerdone 2026-08-14 (async run with structured JSON results).
  6. Token usage depthclosed 2026-08-14, no work needed: the capabilities were already present via utilization (see the API table). The audit had flagged unused endpoints, not missing features.
  7. Self-heal live viewdone 2026-08-14: iteration/phase display parsed from loop output, plus a Stop control (new POST /api/commands/self-heal/stop, backed by AbortSignal support added to the foundation exec).

Tier 3 — low impact

  1. sourcevision export-pdf controldone 2026-08-14.
  2. set_file_archetype override UIdone 2026-08-12 (Files tab Archetype column with override control).
  3. Facet distribution viewdeferred 2026-08-14 with rationale (see the rex CLI table): MCP-only, unconfigured in practice, would render empty for most projects.
  4. ndx auth status chipdone 2026-08-14 (Settings → General).
  5. hench validate-tokens triggerdone 2026-08-14.
  6. Execution-log viewerdone 2026-08-14: REX → Activity renders the full log with event filtering and search.

Intentionally terminal-only (excluded)

CapabilityRationale
ndx start / ndx devThese launch the dashboard
ndx init / hench init / rex init / sourcevision initOne-time setup; dashboard presupposes init
ndx version / ndx helpFooter version, Guide + FAQ views
sourcevision resetDestructive, low frequency
sourcevision serveSuperseded by ndx start
sourcevision git-credential-helperInteractive terminal flow
rex migrate-* / backfill-commit-attributionOne-time migrations
rex mcp / sourcevision mcpTransport plumbing; HTTP MCP is served by the dashboard
hench recordSkill-integration plumbing (writes the run record, and the tokens the skill spent)
MCP get_capabilitiesProtocol handshake
/api/sv/* read endpointsExternal/MCP-facing API by design; viewer reads /data/*.json

Released under the Elastic License 2.0.