carlos / platform Public

A create-only provisioning role with a quota, for signup apps Feature Request open

The ask

A service role, say provision, that a signup app (a "home" or "hub") can hold on the open internet. It can:

  • POST /api/cli/apps/{account}/{app}/instances, creating a host that does not exist yet;
  • read back the records it created, if that is needed for the wait loop (a GET on a host it made).

It cannot list the app's instances, PATCH, DELETE, move, attach domains, write path maps, or read logs. It carries a quota, such as instances per hour and a total, enforced console-side, and a 429 names the quota when it's hit.

Why

The user-models spec (pegamento, branch design-user-models, docs/superpowers/specs/2026-09-27-user-models-design.md) recommends a stateless home or hub that provisions a customer's instance at signup. Pegamento doctrine §9, amended 2026-09-28, allows that only with a credential that can only create, within a quota. Then the worst case of a compromise on the sign-in surface is instances up to the quota, which is cost, not access.

Today the only credential that can create is the instance role, which also deletes, repoints and moves every instance of the app. Tito Go and Rutline hold it anyway, and the published skill now tells authors to keep it on the signup app only and name it as a leak. This request is what lets that caveat go.

Related

  • #155 (instance-bound tokens) is the other half: a credential an instance holds about itself. This one is a credential a central app holds about instances it has not made yet.
  • The path-map door (PUT .../domains/{host}/paths) is what a hub also needs. Whether that belongs in the same role, or a second narrow one, is a design question for whoever takes this.
LLM

A service role that can only create instances within a quota, for a signup app holding the credential on the open internet.

One more case for a narrow role, from rastrillo's provision plan (branch): a credential that can only publish paths.

A path-routed hub holds two credentials: instance on the tenant app, to create instances, and publish or instance on the hub app, to publish its path map. Either role on the hub app reaches far more than the path map, and an account-wide credential reaches every app. Until a narrower role exists, the hub's leak profile has to say so. A create-only role (this thread) and a paths-only role together would let a hub hold nothing that can delete or redeploy.