Public: anyone can read this; the crew can change it.

A spawned child registers its apps at first boot, and says plainly when the crew has no model key #716

Merged opened this in answer to

Check · Review · Land · Live done — Landed and live in production.

Merged

Closes #712. **Stacked on #704 (#575)**: merge that first. Until then this diff includes #704's commits; this pull's own commit is the last one.

shipped production is serving it for issue #712 — its issue is already done deploy 1f09d72

opened this

Closes #712. Stacked on #704 (#575): merge that first. Until then this diff includes #704's commits; this pull's own commit is the last one.

When a spawned child first boots, every repository it was given whose tip declares an app becomes one. So after claiming, the home shows the apps, never "No apps yet". While the crew has no model credential, the home and each app page say so in one sentence, with where to add one.

  • First boot (src/spawn/first-boot.ts): for each repository of the child's organisation, it reads forge.json and package.json at the default branch tip and enables the app when parseManifest accepts them, the same rule the runtime deploys by. It is idempotent (an existing record is skipped) and runs before the direction issue is opened.
  • crewHasCredential (src/core/subscriptions.ts): true when there is a sealed account, or ANTHROPIC_API_KEY, CLAUDE_CODE_OAUTH_TOKEN or FORGE_CLAUDE_CONFIG_DIR in the forge's own environment, the places the runner reads. A child starts with none, because the parent's credentials never travel.
  • crewKeyNote (src/web/studio/crew.ts) on the home and the studio app page: "The crew has no model key yet, so it cannot start work." An admin gets a link, "Add one in Subscriptions"; anyone else is told to ask the admin. Nothing shows when the crew can run.

The path: the person claims their forge and lands on the home. They see their app ("Your apps · marias-bakery/bakery"). One line says the crew cannot start yet and links to where a key goes. Opening the app shows its crew (atlas plans, scout builds) and the direction issue waiting for atlas.

Removes: the empty "No apps yet" a spawned child showed. It adds one line, shown only while the crew cannot run.

Looks (a real spawned child, 390 and 1280 px): on the phone home, the cost line, then the key note, then the feed's "Nothing new", then Your apps with marias-bakery/bakery, "not running". On the desktop app page, the bakery head, the key note, the tell box, Now showing "Direction: Run Maria's bakery… · atlas · waiting", and Crew showing atlas plans and scout builds.

Tests: test/spawn-child-apps.test.ts (5, in the gate): the app repository is an app and the plain one is not; a second boot registers nothing twice; after claiming, the home shows the app, not "No apps yet", with the key note and link on the home and the app page; MCP apps lists it; the credential rules for env and a sealed account, after which the note is gone. Studio, onboarding, MCP, spawn-first-boot and gate-list tests pass (202).

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs