Dashboard
The local dashboard is a Vite/React/Tailwind app served beside the Hono/Flue backend. It is the always-on surface for Neon: a companion display, vertical panel, ultrawide strip, or sensor deck on the primary monitor.
Display target
Neondeck is designed for everything from 32:9 aspect ratios like the Corsair Xeneon Edge to custom layouts for the size, orientation, and constraints you want. The layout engine supports horizontal, vertical, and compact panels by measuring the deck shell instead of assuming one device, and Neon can adapt validated dashboard config through typed actions. The UI favors dense, stable panels over marketing-style cards because it is meant to stay visible during real work.
Install as an app
The production dashboard ships a web app manifest, so the browser can install it as a standalone Neondeck window with its own dock icon and remembered window bounds. This is the preferred sidebar setup because resizing the dashboard no longer changes normal Safari or Chrome windows.
In Safari, open the local dashboard and choose File → Add to Dock. In Chrome or Edge, open the dashboard and use the install button in the address bar, or choose Install Neondeck from the browser menu.
The PWA does not include offline caching. If the local server is down,
start it with neondeck open or
neondeck service start.
Plugins
Display panels are typed in-repo plugins selected by runtime
dashboard.json. The current plugin set covers GitHub PRs,
Flue chat, runtime overview, commands, watches, memory, learning
operator review, workflow observability, and terminal-style status
surfaces.
The Learning panel is the operator surface for self-improvement. It shows review runs, pending memory and skill candidates, audit events, and buttons for manual conversation or PR retrospective reviews. Skill patch rows can apply, reject, or restore audited patches when the backend restore guard allows it.
Reviewing diffs and PRs stays inside the deck. Watched-PR Autopilot
commits in managed worktrees, prepared diffs from explicit workflows,
skill patches, Kilo tasks, repo-edit events, and GitHub PR rows can
open a syntax-highlighted file diff view with a searchable file tree
on wide layouts and a compact file selector on narrow layouts. GitHub
PRs can also be reviewed from this view: select lines to draft inline
review comments, reply to or resolve existing review threads, and
submit one review with Comment, Approve, or Request changes. Draft
comments survive reloads and stale anchors are skipped until the human
re-anchors them. Compact layouts keep the deck glanceable; use the
review pop-out control or neondeck open when a full PR review
needs the wider controls. Generated overview and issues artifacts open as
keyboard-navigable slide decks that lead with the agent's review brief,
render a bounded safe Markdown subset, and preserve overflow in a final
appendix. Retained report artifacts are adapted into the same view. These
review actions are dashboard-only controls; Neon does not get a model-callable
action or tool for submitting PR reviews, verdicts, thread replies, or thread
resolution.
Start Autopilot from a GitHub PR row with watch, then choose its mode in Active Watches. The watch row exposes pause, resume, retry, review diff, review agent, and stop controls. See the Autopilot guide for the authority and recovery rules behind those controls.
The focused PR workbench adds a guided review map over files, hunks,
unresolved threads, local drafts, and Neon findings. Visible previous
and next controls have keyboard parity with [ and
]; ? opens shortcut help. Shortcuts stay scoped
away from inputs, editors, dialogs, modified browser keys, and text composition.
The tree, diff, inspector, and active review target move together, including
across files, without loading every patch up front.
Current-revision Neon findings render inline with their severity, explanation, and provenance. Dismissing one is local-only. Promotion is always explicit: a GitHub finding can seed a local draft comment without submitting a review, while a prepared-diff finding can request a confirmed revision through the existing approval and recovery flow. Unsupported or stale findings remain visible as history instead of silently attaching to different code.
Live GitHub, prepared-diff, and worktree-backed Kilo reviews remain bound to the revision shown in the viewer. When a newer revision is detected, Neondeck either refreshes a clean surface or shows a New revision available control with the reason an automatic refresh is paused. Dirty editors and in-flight actions are never replaced. An applied refresh keeps the nearest valid file and review target when possible, while stale drafts and findings retain their older-revision identity instead of silently moving.
Work rows can open linked chat sessions without a side-by-side chat layout. PR, watch, repo, briefing, Kilo, and autopilot rows create context-aware sessions with compact summary metadata, and the chat panel can reference the active session for cross-session follow-up.
Layout config
{
"schemaVersion": 1,
"display": { "width": 2560, "height": 720 },
"theme": "dark",
"layout": {
"columns": 12,
"rows": 6,
"regions": []
}
}
The dashboard subscribes to config events so supported layout and runtime changes refresh without a browser reload.
Theme
The dark theme uses the Miami tiger-stripe palette: hot pink, Aztec teal, cyan, violet, charcoal, and pale blue text. Light mode exists from the start so future dashboards can switch without changing the plugin contract.
Future TUI
The web dashboard is the first UI. A future OpenTUI client should use the same backend APIs, event streams, config model, and agent runtime rather than forking behavior.