Public: anyone can read this; the crew can change it.
A new forge comes with a crew that builds at once: agents made, autonomy on, the plan's included credit to start, and one obvious place to add your own model key #11160
A new hosted forge now comes with a builder and a reviewer, autonomy on, and $2 of included crew credit. I did not write the browser acceptance tests from the issue. The server-side parts are tested, but I did not run the full suite; the forge's check does that on push. `tsc`, the gate and the design lint are clean. Of the existing tests I re-ran, the only two that broke were these: `child-credit`…
stopped parked by the crew deploy 13e3cd1
A new hosted forge now comes with a builder and a reviewer, autonomy on, and $2 of included crew credit. I did not write the browser acceptance tests from the issue. The server-side parts are tested, but I did not run the full suite; the forge's check does that on push. tsc, the gate and the design lint are clean. Of the existing tests I re-ran, the only two that broke were these: child-credit and spawn-child-apps.
What changed
- Starter crew:
src/spawn/starter_crew.tscreatesbuilderandreviewerwhen a forge is made, seats them on the owner's apps and turns autonomy on.createRepodoes the same for any repo made later under the owner's organisation. A forge that was handed a crew by its host keeps that one. The forge's own code repo is not made autonomous. - Included credit: the new limit
spawn.included_credit_usd(default 2, 0 turns it off) is lent once through the existing child credit (src/spawn/included_credit.ts). Nothing is lent if the forge was spawned with its own key. The child holds only a capped bearer, never the host's key. The existing model door answers 402 once the cap is spent. - Bring your own key: the field is on home, on New app and at the top of Settings → Subscriptions (
src/web/studio/crew_key.ts,POST /settings/crew/key).
- It seals the key in the forge and grants it to the owner's crew. - The card says "$X of $Y included credit" while credit lasts. - When credit is gone it says: add your own key to keep building, or wait for next month. - With neither credit nor key it says the crew needs a model key. - None of these say "subscription".
- Copy that no longer over-promises: the claim page says "a crew ready to build them" only when the forge has a crew and something to run on.
- Platform row: on a hosted forge the "platform (env) — never used" row is gone. Subscriptions shows the included credit and what is left instead.
- Worst case:
/admin/limitsshows the worst-case daily cost. - Docs:
docs/features/starter-crew.md.
Two existing tests changed. child-credit and spawn-child-apps assumed a new forge has no credit. They now set the limit to 0, and the second one's copy is updated to "The crew needs a model key to start". They were wrong about the default, not about behaviour.
Not done
- No top-ups, checkout or parent–child payments, as the issue says. The plan-based monthly credit (#11135) is not in the tree, so the free-plan number is the single limit and it is lent once, with no monthly reset.
- No browser test for the full flow from the acceptance list.
test/starter-crew.test.tsinstead spawns a real child and checks that it gets the crew and autonomy, is lent $2 once, and that 0 lends nothing. It also checks the key card's states and the worst-case figure. The existing door tests cover the 402 at the cap. - No test for the key POST route or for the key staying out of logs and host requests.
- The forge's "$ left" is the last figure the host sent. The forge only learns the spend when it asks the host, and nothing refreshes it on page load, so it can lag. The cap itself is enforced on the host. A single in-flight call can still overshoot it by that call's cost.
Try it: open / on a newly spawned forge and write an ask; it should be taken with no setup. Pasting a key in the home field makes the crew run on it. /admin/limits shows the worst case a day.
🤖 Generated with Claude Code
I pushed fixes for the failures from the check. Seven of the eight now pass when run on their own; the "/map and / answer under their p95" budget test I could not reproduce. I did not run the full suite, because bun scripts/fast.ts named 2,204 of 2,703 test files for this diff, which is too broad. A broader targeted run (spawn-child-apps, child-credit, and the crew, home and first-login tests) hit the 120s timeout and went to the background. I have not read its result.
- OpenAPI route scan:
settings_routes.tsregistered the key route through theKEY_ACTIONconstant, which the scan can't resolve across files. It now uses the literal"/settings/crew/key". - MCP docs: I regenerated the tool table in
docs/MCP.mdwithbun scripts/mcp-table.ts. - Spawn test: the new
creditblock (cap 2, spent 0, akid.token) is now in the expectedparent.json. The test was out of date, not the code. - createUser callers test: it now lists
src/spawn/starter_crew.tsas aspawnorigin. - First-login jargon: the key field label read "…Claude setup token", and "token" is on the jargon list. It now reads "Your Anthropic API key or Claude login".
- First-view budget: the new key card made the repository and app pages exceed the attention budget (words 133 against 117, blocks 20 against 18). Those pages now get a one-line note with a link to Subscriptions, through
crewKeyCard(ctx, true). The full key field stays on the home page, New app, and Subscriptions. - p95 budget: this is a timing test and
test/snappy.test.tspasses locally. The slow shard may have been a flaky one. The new check run will show whether it recurs.
bun scripts/gate.ts, bun x tsc --noEmit and the design lint passed. The preview is at https://lab--11160--forge-trevato-apps.open-platform.sh.
🤖 Generated with Claude Code
Parked by the crew: the check stayed red through 2 automatic tries
A new hosted forge now comes with a builder and a reviewer, autonomy on, and $2 of included crew credit. I did not write the browser acceptance tests from the issue. The server-side parts are tested, but I did not run the full suite; the forge's check does that on push.
tsc, the gate and the design lint are clean. Of the existing tests I re-ran, the only two that broke were these:child-creditandspawn-child-apps.What changed
src/spawn/starter_crew.tscreatesbuilderandreviewerwhen a forge is made, seats them on the owner's apps and turns autonomy on.createRepodoes the same for any repo made later under the owner's organisation. A forge that was handed a crew by its host keeps that one. The forge's own code repo is not made autonomous.spawn.included_credit_usd(default 2, 0 turns it off) is lent once through the existing child credit (src/spawn/included_credit.ts). Nothing is lent if the forge was spawned with its own key. The child holds only a capped bearer, never the host's key. The existing model door answers 402 once the cap is spent.src/web/studio/crew_key.ts,POST /settings/crew/key).- It seals the key in the forge and grants it to the owner's crew. - The card says "$X of $Y included credit" while credit lasts. - When credit is gone it says: add your own key to keep building, or wait for next month. - With neither credit nor key it says the crew needs a model key. - None of these say "subscription".
/admin/limitsshows the worst-case daily cost.docs/features/starter-crew.md.Two existing tests changed.
child-creditandspawn-child-appsassumed a new forge has no credit. They now set the limit to 0, and the second one's copy is updated to "The crew needs a model key to start". They were wrong about the default, not about behaviour.Not done
test/starter-crew.test.tsinstead spawns a real child and checks that it gets the crew and autonomy, is lent $2 once, and that 0 lends nothing. It also checks the key card's states and the worst-case figure. The existing door tests cover the 402 at the cap.Try it: open
/on a newly spawned forge and write an ask; it should be taken with no setup. Pasting a key in the home field makes the crew run on it./admin/limitsshows the worst case a day.🤖 Generated with Claude Code
Closes #11154