Desktop App
The Electron desktop app is the primary Neon Pilot operator UI. It hosts the React renderer, manages the local daemon lifecycle, and provides the full feature surface.
Starting
# Stable production build
pnpm run desktop:start
# Development mode with hot reload
pnpm run desktop:dev
# Demo mode with seeded data
pnpm run desktop:demo
Both desktop:start and desktop:dev build the Electron shell and launch it through
packages/desktop/scripts/launch-dev-app.mjs.
For packaged builds, launch Neon Pilot.app from the output directory. RC builds launch as
Neon Pilot RC.app so they can coexist with the stable app.
Runtime Model
Electron main process
│
├── Renderer (React) ── neon-pilot://app/
│ │
│ ├── Conversation routes
│ ├── Knowledge
│ ├── Automations
│ └── Settings
│
├── Backend child process
│ │
│ ├── Local API
│ ├── Session parsing and search
│ ├── Git/checkpoint operations
│ ├── Knowledge base reads/writes
│ ├── Extension backend host
│ └── Daemon runtime
│ │
│ ├── Scheduled tasks
│ ├── Wakeups
│ └── Follow-up queue
- Electron owns the UI surface through the
neon-pilot://app/protocol - Keep the startup path tiny: the main-process hot bundle should only create the window, register protocol/IPC, and schedule deferred work
- Freeze-prone local API work runs in the backend child process; do not import or execute heavy desktop server capabilities directly on the Electron main thread
- Avoid
spawnSync/execSyncin desktop main-process flows - The daemon owns durable background behavior inside the backend child and starts after the renderer has had a chance to paint; user actions that need it can force-start it immediately
- The desktop app loads initial readonly snapshots first, then connects to server-pushed events for conversations, executions, automations, and daemon status after startup settles
Layout
| State | Shortcut | Description |
|---|---|---|
| Workbench off | F1 |
Single-pane layout with left sidebar |
| Workbench open | F2 |
Conversation plus tabbed workbench |
Toggle the left sidebar with Cmd+/ (or Ctrl+/). Toggle the workbench with Cmd+\ (or
Ctrl+\).
Workbench Tabs
The workbench new tab page includes:
| Tab | Description |
|---|---|
| File Explorer | Project file tree browser |
| Artifacts | Rendered HTML, Mermaid, LaTeX |
| Browser | Embedded webview |
Knowledge is also a primary left-sidebar page. Extension-contributed workbench tools can appear on the new tab page. Tabs are context-sensitive; artifacts open from transcript cards and do not appear as a generic new-tab option. Checkpoint diffs and background work render inline in the transcript. Heavy workbench panels are lazy-loaded so they do not inflate the initial renderer bundle.
Keyboard Shortcuts
Desktop menu shortcuts are configurable in Settings → Desktop. Host and extension command keybindings are configurable in Settings → Commands. Defaults:
| Action | Default |
|---|---|
| Show Neon Pilot | Cmd/Ctrl+Shift+A |
| New conversation | Cmd/Ctrl+N |
| Close tab | Cmd/Ctrl+W |
| Reopen closed tab | Cmd+Shift+N |
| Previous conversation | Cmd/Ctrl+[ |
| Next conversation | Cmd/Ctrl+] |
| Toggle pinned | Cmd/Ctrl+Alt+P |
| Archive / restore | Cmd/Ctrl+Alt+A |
| Rename conversation | Cmd/Ctrl+Alt+R |
| Focus composer | Cmd/Ctrl+L |
| Edit working directory | Cmd/Ctrl+Shift+L |
| Find on page | Cmd/Ctrl+F |
| Settings | Cmd/Ctrl+, |
| Quit | Cmd/Ctrl+Q |
| Conversation mode | F1 |
| Workbench mode | F2 |
| New workbench tab | Cmd/Ctrl+T |
| Close workbench tab | Cmd/Ctrl+Shift+W |
| Close workbench file | Cmd/Ctrl+Alt+W |
| Refresh workbench file | F5 |
| Toggle workbench explorer | Cmd/Ctrl+B |
| Toggle workbench diff | Cmd/Ctrl+Shift+D |
| Toggle left sidebar | Cmd/Ctrl+/ |
| Toggle right rail | Cmd/Ctrl+\ |
Routes
| Route | Page |
|---|---|
/conversations |
Conversation list |
/conversations/new |
New conversation |
/conversations/:id |
Existing conversation |
/knowledge |
Knowledge browser |
/automations |
Automation list |
/automations/:id |
Automation detail |
/settings |
Settings panel |
/telemetry |
Telemetry traces page |
/gateways |
Gateway connections |
Demo Mode
pnpm run desktop:demo creates an isolated temporary state root with seeded conversations, automations, executions,
and assets for UI development and testing. Seeded content includes conversations with artifacts, checkpoints, reminders, subagent
demos, and pathological fixtures.