RFC: unified launcher (single entry + device start/stop) — initial design [idea: Magdalena]#78
Draft
pskeshu wants to merge 3 commits into
Draft
RFC: unified launcher (single entry + device start/stop) — initial design [idea: Magdalena]#78pskeshu wants to merge 3 commits into
pskeshu wants to merge 3 commits into
Conversation
…gate PARKED for a future session. launch_gently as the single entry point that starts/stops the device layer (managed child subprocess; graceful stop + mid-run guard; auto-kill on exit; external device layer detected). Launch gate is BARE BASIC — two questions (microscope hardware on/off, AI agent/API on/off) + Let's go; organism/hardware/port/ SAM/session are defaults behind Advanced/Settings, never on the gate. Boot uses defer-init so a web gate can control boot-level behavior. Dark/sharp/sleek mockup at docs/superpowers/mockups/2026-07-02-launcher-gate.html. Decisions log + phasing included.
… work) This is initial/RFC work. Idea credited to Magdalena. Adds open questions: background (non-blocking) device startup after launch; gently usable while the device boots; on-demand device startup-sequence console; shutdown from that same console; guided shutdown housekeeping (e.g. prompt to reset the F drive).
Fold-in to weigh: package the unified launcher as a Windows desktop app (potentially Electron) that owns/spawns the Python backend + device-layer child and renders the web UI natively (launch gate as first screen), with native process lifecycle + installer. Web UI stays the single source of truth; pywebview/Tauri as lighter fallbacks. The managed-child model here is what an Electron shell would take over.
Collaborator
Author
|
Added a future direction: Windows desktop app (Electron) — Electron could be the launcher shell: own/spawn the Python backend + device-layer child, render the existing web UI natively (launch gate as the first screen), native process lifecycle (kill children on quit), tray + installer + auto-update. Web UI stays the single source of truth (Electron = thin shell); pywebview/Tauri as lighter fallbacks. Not required for the first cut, but the managed-child process model in this RFC is exactly what the shell would take over. Captured in the spec. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Unified launcher — initial design (RFC)
This is initial work, not a finished feature. It's a design + mockup to build on —
no implementation yet, and it's meant to be iterated on, not merged-and-done. Opening
it as a PR so the direction is visible and others can fold more into it.
What it proposes
Today you run two commands in two terminals (
start_device_layer.py, thenlaunch_gently.py) and gently can't start/stop the device layer. This makeslaunch_gentlythe single entry point:AI agent (API) on/off → Let's go. Everything else (organism, hardware module,
port, SAM device, session) is a default behind "Advanced options"/Settings — if you're
not using hardware, you're never asked which hardware.
DeviceLayerSupervisor): gently spawns and ownsstart_device_layer.py, so it can start/stop it, and it shuts down when gently exits.Design:
docs/superpowers/specs/2026-07-02-unified-launcher-design.mdMockup (dark/sharp/sleek):
docs/superpowers/mockups/2026-07-02-launcher-gate.htmlOpen questions to fold in (help wanted)
These are deliberately unresolved — the next round of work:
background (non-blocking) while gently proceeds to the dashboard. Confirm + design
the progress signalling.
features immediately; hardware actions gated behind a "device starting…" state).
sequence (live boot log + per-stage progress) on demand? Likely a device console in
the Devices panel.
can prompt the operator to reset the F drive as a step.
Status
Parked design/RFC — no code, safe to leave open for discussion; implementation is a
future session. Base:
development.