LearnNewsExamplesServices
Frontmatter
id13058
titleFleet Manager settings pane v0: define agents
stateClosed
labels
enhancementdeveloper-experiencedesignai
assigneesneo-gpt
createdAtJun 13, 2026, 5:28 AM
updatedAtJun 13, 2026, 4:27 PM
githubUrlhttps://github.com/neomjs/neo/issues/13058
authorneo-gpt
commentsCount2
parentIssue13015
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtJun 13, 2026, 4:27 PM

Fleet Manager settings pane v0: define agents

Closed v13.1.0/archive-v13-1-0-chunk-2 enhancementdeveloper-experiencedesignai
neo-gpt
neo-gpt commented on Jun 13, 2026, 5:28 AM

Context

Epic #13015 makes the Fleet Manager MVP settings-pane-first: define agents, start/stop them, and let repos/config/wake provisioning happen under the hood. The plan-of-record currently names the settings pane as open, while shipped/active sibling surfaces have already started to land: #13022 established the dark/light harness theme base, #13031/#13037 delivered the agent registry + credential store, #13049 owns lifecycle service work, and #13033 owns the Electron build root.

This ticket creates the first Body-side settings-pane leaf so peers have a concrete UI contract instead of re-deriving where the Fleet Manager starts.

Release classification: harness line (Project 13); post-v13 product line, not v13.x release-blocking.

The Problem

The Fleet Manager MVP has its Brain-side primitives and parent epic shape, but no leaf owns the first user-facing settings pane. Without that leaf, UI work can drift in two bad directions: either a mock-only screen that implies fake lifecycle success, or a backend-heavy ticket that bundles agent definition, process lifecycle, repo provisioning, and Electron shell concerns into one PR.

The first honest slice is narrower: a user can define and inspect agents from a Neo app surface, with credential handling routed Brain-side and lifecycle controls kept gated until their service contract is ready.

The Architectural Reality

  • #13015 assigns the settings pane to the Body side in apps/, replacing the early apps/agentos PoC at leaf-level structural-pre-flight time.
  • ADR 0020 (learn/agentos/decisions/0020-agent-harness-concept.md) keeps harness UI in apps/, Node-side fleet machinery in ai/, and credentials/PATs Brain-side only.
  • #13031/#13037 provide the registry/credential-store substrate this pane should consume; the pane must not invent a second credential store.
  • #13049 is the lifecycle-service sibling. This ticket may show lifecycle affordance placeholders only if they are explicitly non-successful/gated; it must not fake start/stop/restart behavior.
  • #13033 owns Electron packaging. This UI must remain dev-server runnable while being compatible with the eventual Electron shell.

The Fix

Implement the first Fleet Manager settings pane UI slice:

  1. Establish the app/route/component placement for the harness settings pane under apps/ after running structural-pre-flight.
  2. Render an agent list and add/edit flow for the minimal agent definition fields: GitHub username, harness type, and credential/PAT submission.
  3. Route credential submission to the Node-side Agent OS/Fleet Manager bridge contract; do not persist, echo, log, or URL-encode secrets in the browser/App Worker surface.
  4. Use the shipped harness theme baseline from #13022 (neo-theme-neo-dark and neo-theme-neo-light) and keep the UI dense, operator-grade, and compatible with the later Electron shell.
  5. Keep lifecycle controls out of scope or visibly gated until #13049's service contract is consumed.

Contract Ledger Matrix

Target Surface Source of Authority Proposed Behavior Fallback Docs Evidence
Fleet settings pane app/component placement #13015 + ADR 0020 + structural-pre-flight First Body-side settings pane lives under apps/, replacing/retiring the early apps/agentos PoC only through the validated leaf-level path. If the structural-pre-flight rejects the presumed path, document the chosen sibling-lift path in the PR. PR body + relevant app docs/comments only where non-obvious. Static path review + dev-server render proof.
Agent definition form #13015 + #13031/#13037 User can list/add/edit minimal agent definitions: GitHub username, harness type, credential/PAT submission. If the registry bridge is unavailable, form fails loud and preserves no secret client-side. UI labels stay product-facing; implementation contract in PR. Focused unit/whitebox coverage for submit payload shape and failure state.
Credential handling boundary ADR 0020 + #13015 security rule PAT/credential material crosses only to Node-side service; it is never stored in browser persistent state, logs, URL, or visible echo. Secret submission disabled if the Node-side bridge is absent. PR evidence names the inspected storage/log surfaces. Test or manual audit proving no localStorage/sessionStorage/URL/log echo on submit.
Lifecycle affordance boundary #13049 sibling service Start/stop/restart are absent, disabled, or explicitly gated until lifecycle contract is wired. No fake success state. Read-only status shell is acceptable. Related #13049 reference in PR. Visual/UI state evidence that gated controls cannot report success.
Theme/visual contract #13022 + #13015 product bar Pane supports neo-theme-neo-dark and neo-theme-neo-light from day one. If one theme exposes contrast/layout defects, fix before PR handoff. PR test evidence. Desktop + narrow viewport visual verification.

Decision Record impact

Aligned-with ADR 0020. This ticket implements the Body-side surface prescribed by the accepted harness concept without changing the Brain/Body source split or credential boundary.

Acceptance Criteria

  • Structural-pre-flight is run before creating, renaming, or relocating any .mjs file for the settings pane.
  • A dev-server-runnable settings pane renders an agent list and add/edit flow for GitHub username, harness type, and credential/PAT submission.
  • Credential/PAT material is never persisted or echoed in browser storage, logs, URLs, visible UI after submit, or exported client config.
  • Registry/credential writes go through the Node-side Agent OS/Fleet Manager bridge contract, or fail loud if that bridge is unavailable.
  • Lifecycle controls are absent, disabled, or visibly gated until #13049 is consumed; the UI cannot report fake start/stop/restart success.
  • Both neo-theme-neo-dark and neo-theme-neo-light are visually verified at desktop and narrow viewport sizes.
  • The PR documents the exact app placement decision and cites how the early apps/agentos PoC was handled.

Out of Scope

  • Implementing process lifecycle start/stop/restart behavior (#13049).
  • Electron build-root packaging (#13033).
  • Repo provisioning, wake-subscription provisioning, and config migration leaves.
  • Native Anthropic login or remote-tenant connection.
  • Extended-NL multi-writer coordination (#13056).

Avoided Traps

  • Credentials in the browser — rejected by ADR 0020 and #13015; the UI collects/forwards but never owns secrets.
  • Mock lifecycle success — rejected; a pretty control that lies about process state is worse than no control.
  • Top-level harness source tree — rejected; source placement stays in apps/ + ai/ with Neural Link/MCP as the bridge.
  • Electron-only UI assumptions — rejected for v0; dev-server mode remains the development proof path while #13033 lands.

Related

Parent: #13015 Refs #13012 Refs #13022 Refs #13031 Refs #13037 Refs #13049 Refs #13033

Live latest-open sweep: checked latest 20 open issues at 2026-06-13T03:27Z via gh api search/issues; no equivalent leaf found. Closest matches are parent/sibling issues #13015, #13012, #13033, #13049 lineage. A2A in-flight sweep: checked last 50 inbox messages at 2026-06-13T03:27Z; no recent [lane-claim]/[lane-intent] overlaps this settings-pane leaf. Active related claims are #13039 by @neo-opus-ada and older #13023/#13052 lanes. KB/local sweep: ask_knowledge_base returned no matching ticket context for this leaf; local exact search found #13015/ADR0020/Discussion #10119 lineage but no open settings-pane leaf.

Origin Session ID: 019ebe4d-0687-7dd2-8e37-c48ac8e057ad

Retrieval Hint: "Fleet Manager settings pane v0 define agents PAT credential boundary apps agentos ADR 0020"