Skip to content

feat(cockpit): OBJ-A — assemble + orchestrate the full sovereign cockpit#73

Merged
mdheller merged 1 commit into
mainfrom
feat/cockpit-app-assembly
Jul 20, 2026
Merged

feat(cockpit): OBJ-A — assemble + orchestrate the full sovereign cockpit#73
mdheller merged 1 commit into
mainfrom
feat/cockpit-app-assembly

Conversation

@mdheller

Copy link
Copy Markdown
Contributor

OBJ-A of the Next Assault. Now that Lanes 1–4 + Receipts are all on main, this fuses them into one assembled, governed, runnable surface — built and verified end-to-end overnight.

What lands:

  • scripts/assemble-cockpit.sh — build-time stager. Runs build-cockpit.sh + build-agent-machine-sidecar.sh, lays out Contents/Resources/{cockpit, sidecars, scripts, policy} + a manifest. One command → the whole app staged.
  • scripts/bearbrowser-cockpit-up — runtime orchestrator. Stands up the governed topology and points the cockpit at the gate, never the raw sidecar:
    cockpit → gate 127.0.0.1:8080 → agent-machine sidecar :8091   (+ receipts :8092)
    
    loopback only, foreground, tears down all three on exit.
  • scripts/build-cockpit.shbug fix: its resolver self-check grepped the module's content for cockpitRuntime (0 hits — the file exports resolveBase), so it false-failed for every assembly once #468 landed. Now greps resolveBase.

Verified on the assembled staging tree:

  • assemble → cockpit (43 files) + 68M sidecar (self-smoke 200) + staged scripts + manifest
  • orchestrator up: gate(→sidecar)=200, receipts=200, cockpit-config rewritten → gate
  • the moat holds: allowed read via gate → 200; POST /api/shell/exec via gate → 403 (blocked at decision time)

So the sovereign local control plane now stands up as one governed unit from a single command.

Follow-up: Homebrew/nix formula wiring (run assemble at package-time + install bearbrowser-cockpit-up as a CLI); per-service sovereign loopback map; the connect flow (cloud opt-in).

The capstone: fuse Lanes 1-4 + Receipts (now all on main) into one assembled,
governed, runnable surface.

- scripts/assemble-cockpit.sh — build-time stager: runs build-cockpit.sh +
  build-agent-machine-sidecar.sh and lays out Contents/Resources/{cockpit, sidecars,
  scripts, policy} + a manifest. One command → the whole app staged.
- scripts/bearbrowser-cockpit-up — runtime orchestrator: stands up the GOVERNED
  topology and points the cockpit at the gate, never the raw sidecar:
      cockpit → gate 127.0.0.1:8080 → agent-machine sidecar :8091  (+ receipts :8092)
  loopback only; foreground; tears down all three on exit.
- scripts/build-cockpit.sh — fix a broken self-check: it grepped the resolver file's
  CONTENT for 'cockpitRuntime' (0 hits — the module exports resolveBase); now greps
  'resolveBase'. The old assert always false-failed once #468 landed.

VERIFIED end-to-end on the assembled staging tree:
  • assemble → cockpit (43 files) + 68M sidecar binary (self-smoke 200) + staged scripts
  • orchestrator up: gate(→sidecar)=200, receipts=200, cockpit-config→gate
  • MOAT HOLDS: allowed read via gate → 200; POST /api/shell/exec via gate → 403 (blocked)

Follow-up: Homebrew/nix formula wiring to run assemble at package-time + install the
orchestrator as a CLI.
@mdheller
mdheller merged commit 769a0b9 into main Jul 20, 2026
17 checks passed
@mdheller
mdheller deleted the feat/cockpit-app-assembly branch July 20, 2026 11:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant