Go to file
2026-02-18 09:08:08 -08:00
.gitea/workflows Add launcher CI workflow 2026-02-17 20:55:08 -08:00
app feat(launcher): add one-click membership flow automation 2026-02-18 09:08:08 -08:00
docs Add launcher conformance vectors and manifest 2026-02-17 14:39:49 -08:00
.gitignore Add launcher repo hygiene and manifest check target 2026-02-17 20:48:33 -08:00
Makefile Add launcher local serve target 2026-02-17 20:51:26 -08:00
README.md feat(launcher): add one-click membership flow automation 2026-02-18 09:08:08 -08:00

EDUT Launcher

Free control-plane application for EDUT onboarding and entitlement-aware installs.

Scope

  1. Local wallet create/import/recovery UX.
  2. Device readiness checks.
  3. Membership status and governance install controls.
  4. Signed package download and verification orchestrator.
  5. Member app-channel inbox.

Out of Scope

  1. Governance runtime internals.
  2. Paid module execution engines.

Boundary

Launcher never contains private kernel internals. It verifies and installs signed paid runtimes only after entitlement checks pass.

Local Harness (Current)

app/index.html is a local launcher shell harness for end-to-end API validation:

  1. Wallet intent + verify
  2. Membership quote + confirm
  3. Member channel register/poll/ack/support
  4. Governance install token/confirm/status
  5. Lease heartbeat + offline renew
  6. Injected wallet automation for intent signing and membership tx send
  7. One-click Run membership flow path (intent -> verify -> quote -> tx -> confirm)

Wallet automation shortcuts in the shell:

  1. Connect wallet fills address from window.ethereum.
  2. Sign intent (EIP-712) signs the current intent payload and fills walletSignature.
  3. Sign payer proof signs distinct-payer ownership proof and fills payerProof.
  4. Send membership tx submits the quote transaction via eth_sendTransaction and fills confirmTxHash.

Run locally:

cd /Users/vsg/Documents/VSG\ Codex/launcher/app
python3 -m http.server 4310

Then open http://127.0.0.1:4310 and point API base URL at running secretapi.