Plans and limits

What Starter includes, what it limits, and what a paid plan adds.

There are three plans: Starter, Publisher and Enterprise. Most of this chapter is about Starter, because it is the one you can reach on your own.

Starter is where you build and test a game. It is not where a game meets an audience. Registering costs nothing, and scaffolding, the dev loop and playing the game locally all work with no approval needed. A hosted deploy to a public Playground needs your account approved first, which the next section covers. The limits below are sized for development rather than for a crowd, and a game that needs to reach real fans needs Publisher or Enterprise, which a person at Monterosa arranges with you.

A limit that is reached refuses, and never charges anybody. That holds on all three plans. A separate mechanism, the rate limiter, throttles a busy game with a retry-after wait instead of refusing outright; it protects the Engine's capacity rather than enforcing a plan.

Availability now

Local inspection, scaffolding and validation work without an account. Running the dev loop and verify both require a signed-in session.

The hosted Starter path runs on the CLI's own default, https://api.gamestage.ai. Sign in, get the account approved, and deploy to a public Playground from the published route with nothing else to configure.

Approval is the gate rather than availability: gamestage login leaves an account pending and somebody at Monterosa approves it. Gamestage is not commercially launched, so that approval is a conversation rather than a form.

Dev and prod

A game is either dev or prod, and a game on Starter is dev. Two separate things have to be true before it counts as prod, and you control one of them:

  • You approve your own game. gamestage promote <game> records that approval, and always succeeds for a game that exists and is not archived. Approving your own game is not a purchase, so there is nothing here for a plan to refuse.
  • Monterosa moves your workspace onto a paid plan. Only an operator does that. gamestage plan live is refused with operator_required and changes nothing.

Until both are true the game is dev, and gamestage promote tells you which of the two you are waiting on.

What is built today is the record and the gate: the approval is stored, and the two are composed into one answer the CLI reports. Serving does not read the approval: a dev game and a prod game are reached the same way and play the same way, so promoting a game records the decision rather than changing what a fan meets. Promotion creates no second deployment and no second id either, so the files, the scores and the leaderboard are unaffected.

Declared limits

Backstage's contract currently defines:

MeterStarter limit
Games in development3
Live games1
Monthly devices1,000
Storage250 MB

Monthly devices counts distinct browsers, not distinct people: a player id is minted per session and kept in that browser's storage for that game, so one person playing on a phone and a laptop counts twice.

The one-live-game allowance is updated from game state and enforced on deploy and wake. The devices and storage meters are also real: devices sums what each game reports, storage is recomputed from what the bucket actually holds. Meters count real usage; the deploy gate on them is deliberately held empty, so reaching 1,000 devices or 250 MB does not refuse a deploy today. Only the one-live-game allowance actually refuses.

Older planning files still call the plan Runtime and name 1,000 concurrent players and 10,000 monthly active players. Backstage's contract has no concurrency meter, so no concurrency figure anywhere is enforced. The App Manifest nomenclature and the contract above are the current source for the plan name and declared meters.

One live-game limit means a redeploy of the same live game is allowed. To put a different game live, suspend the first one:

gamestage suspend <game-id>
gamestage wake <game-id>

Suspension is reversible and returns the live slot. Archive is different: it takes the game off the air, retains its record and id, and moves its bundle outside the served prefix.

What Starter includes

  • Shared hosting: games are served from one shared Playground domain.
  • Your own Studio Space: your workspace gets its own Space, made on your first deploy. Nothing about it is shared with anybody else's games.
  • One live game: drafts do not consume the live-game allowance.
  • Managed Engine rules: the same built game formats as local development.
  • Fantenna Signal, on by default: per-player engagement collection is switched on for every tier, Starter included, at no extra cost. What is paid is routing that data to your own destinations, which the next section covers.
  • No surprise billing: the contract has refusal and busy outcomes rather than an overage charge.
  • Suspend and wake: sleeping, manual suspend and manual wake states exist.

What Starter does not include

The current entitlement rules reserve these for paid plans:

  • Custom analytics destinations: the manifest can declare destinations, but changing routing is a paid entitlement. Fantenna Signal's own collection is not gated this way; see the previous section.
  • In-game bug capture: on Starter, use your repository's issue tracker directly.
  • Prize promotions: a prize needs human approval and is refused below Publisher.
  • A contracted service level: an SLA belongs to an Enterprise agreement.

The manifest can declare a Monterosa Analytics destination. That declaration alone is not proof that analytics is flowing: production ingestion and Studio visibility are separate concerns from the manifest field.

Reached limits

Expected refusals carry a stable code:

  • live_allowance_reached: suspend the other live game or change plan.
  • tier_required: the declared feature needs a paid plan.
  • operator_required: the plan you asked for is one a person arranges. Your workspace is unchanged.

A refusal is returned as a normal command result and exits 0. In JSON, branch on code. Do not retry a refusal without changing its cause.

The stored plan keys are runtime, live and enterprise; creator-facing surfaces call them Starter, Publisher and Enterprise.

Publisher and Enterprise are human conversations rather than a completed self-serve purchase flow. Paid customer onboarding also needs a Monterosa account and org created by a person. Do not use gamestage plan as evidence that commercial approval or dedicated infrastructure exists.

gamestage plan enforces that. Starter is the only plan a workspace can move itself onto; asking for Publisher or Enterprise is refused with operator_required and changes nothing. An operator moves a workspace onto a paid plan out of band. Moving back down to Starter is not refused, because it grants nothing.