---
title: "Plans & billing"
description: "Per-app plans and the 7-day trial, pod sizes and scaling, metered usage, spending caps, and where billing is managed on Guuey."
---

Billing on Guuey is **per app**: every app you deploy carries its own plan, the way every site on a website builder carries its own subscription. Your account (or workspace — each has a separate wallet) pays one subscription per paid app, plus any metered usage those apps accrue. One app per wallet runs without a plan — on the [7-day trial](#the-7-day-trial) below.

Current prices always live on [guuey.com/pricing](https://guuey.com/pricing); the numbers here are the same ones that page is generated from.

For the machinery underneath — what a plan attaches to, the trial state machine, when each meter ticks, and what the spending cap bounds — see [How billing works](/concepts-billing/).

## Plans

|                                  | Free (trial)    | Starter   | Pro       | Scale     |
| -------------------------------- | --------------- | --------- | --------- | --------- |
| Price per app / month            | $0              | $49       | $129      | $299      |
| Included generations / month     | 20              | 1,200     | 3,500     | 9,000     |
| Included managed-LLM credit      | —               | $20       | $50       | $100      |
| Pod sizes                        | `xs`            | `xs`–`sm` | `xs`–`md` | `xs`–`xl` |
| Max pods per app                 | 1               | 2         | 5         | 10        |
| Included app storage (whole app) | ≈10 GiB         | 25 GiB    | 100 GiB   | 500 GiB   |
| Per-user home quota              | 100 MiB         | 1 GiB     | 5 GiB     | 20 GiB    |
| Custom domains                   | —               | —         | ✓         | ✓         |
| Default spending cap             | $0 (no overage) | $50       | $100      | $200      |

A **generation** is one generative-UI render your agent produces (through the default `mcp.ggui.ai` server). The **managed-LLM credit** covers model usage when Guuey supplies the LLM key for you; past the credit, usage is metered (see below). On the Free tier there is no overage at all — an app that reaches its included quota stops serving generations until the month rolls over or it takes a plan.

[Custom domains](/domains/) require Pro or Scale. Pod counts above one, generations past the allowance, managed-LLM usage past the credit, and storage past the included allowance all bill as [metered usage](#metered-usage-and-the-spending-cap).

## Pod sizes and scaling

Every deployed agent runs on at least one always-on pod, included in the plan price. Pick the size with `guuey deploy --size` (default `xs`):

| Size | CPU       | Memory  | Billing units |
| ---- | --------- | ------- | ------------- |
| `xs` | 0.25 vCPU | 512 MiB | 1             |
| `sm` | 0.5 vCPU  | 512 MiB | 2             |
| `md` | 1 vCPU    | 1 GiB   | 4             |
| `lg` | 2 vCPU    | 2 GiB   | 8             |
| `xl` | 4 vCPU    | 4 GiB   | 16            |

Which sizes you can pick, and how many pods one app may run, come from the app's plan (table above). Scale a live app with `guuey agent config --max-pods <n>` — no redeploy; the change converges within about five minutes. Asking for more pods than the plan's ceiling is refused with the ceiling named; going beyond the highest ceiling is a support request.

The first pod is included. Each **additional** pod bills at **$0.04 per unit-hour** — one `xs` pod for one hour is one unit-hour, and larger sizes multiply by their billing units. An extra `xs` pod running a full month is about $29.

## The 7-day trial

Every app starts on a **7-day trial** from its first successful deploy. During the trial it runs on the **Free (trial)** column above: one always-on `xs` pod, 20 generations a month, the Free limits everywhere else. There is no monthly managed-LLM credit on the trial; a trial app runs managed models against a one-time trial allowance on your wallet, and once that is spent, managed-model turns are refused until the app takes a plan (your own provider keys are unaffected).

**One trial at a time per account (or workspace).** While an app without a plan is on your account — running, paused, or archived and still inside its 30-day deletion window — creating another app is refused. Choose a plan for the existing app, and the next app you create starts its own 7-day trial. (Deleting the app frees the slot too, but only once its 30-day deletion window completes — archived apps hold the slot until then.) There is no way to create a second app that "skips" the trial slot: the plan always goes on the app that occupies it.

When the trial ends and the app has no plan, Guuey **pauses** it:

- The pod scales to zero, and the public chat surface says the agent is paused.
- A redeploy is refused (`409 TRIAL_EXPIRED`) until a plan is chosen.
- Conversation history, settings, configuration and domains are all kept — nothing is torn down.

Choosing a plan on the app resumes it automatically within a few minutes, no redeploy needed. `guuey apps get` prints the trial's end date, and you get an email when three days are left, another on the last day, and one when the app pauses. For automation: the app read on the API carries `trial: { startedAt, endsAt, status }` while the app is on a trial, and a deploy against an expired app without a plan answers `409 TRIAL_EXPIRED`.

:::note
Durable file storage is rolling out per environment and has not yet reached production. Until it reaches your app, files your agent writes are pod-local: they do not survive a pause, restart, or redeploy. History, settings and domains are stored by the platform and always survive.
:::

## Metered usage and the spending cap

Four things are metered on paid plans, each visible on the app's billing page before it ever reaches an invoice:

- **Generations** past the monthly allowance — billed per generation at a per-plan rate ($0.085–$0.10 for a fresh render, depending on plan; cached renders and bring-your-own-key renders bill substantially less — exact rates on [guuey.com/pricing](https://guuey.com/pricing)).
- **Managed-LLM usage** past the included credit — billed by token usage.
- **Extra pods** beyond the first — $0.04 per unit-hour, as above.
- **Storage** above the plan's included allowance — $0.0001 per GiB-hour (holding 100 GiB over the allowance for a month is about $7.30).

Every paid app has a **spending cap** — the plan default from the table, adjustable per app on its billing page. The cap bounds the _usage-driven_ meters: generations, managed LLM, and storage. Pod-hours bill on the invoice but do not count toward the cap, because pod spend is something you configure explicitly (`--max-pods` × the size's per-pod rate), not something usage can run away with.

The cap has two modes: **hard** (the default — past the cap, requests that would spend more are refused until the month rolls over or you raise it) and **soft** (serving continues and the overage bills). You get an email and an in-app notice at 80% and 100% of the cap.

## Where billing is managed

- **Per app** — the app's billing page in the console (`/apps/<app-id>/billing` on [platform.guuey.com](https://platform.guuey.com)): choose or switch the plan, set the spending cap, and read the four usage meters for the current period. Upgrades apply immediately; downgrades take effect at the end of the billing period.
- **Per account or workspace** — the console's **Billing** page lists every app on the wallet with its tier, status and usage, and links to each app's own page.
- **Invoices, receipts and payment method** — the **Manage billing** button on the Billing page opens the Stripe customer portal (billing.guuey.com). Plan changes and cancellation happen in the console, not the portal; deleting an app ends its subscription with a final invoice for any accrued usage.

If a payment fails, the app keeps serving (clamped to one pod) while Stripe retries, with the spending cap held at no more than the plan default (a lower cap you set stays in force) and a banner on the app page; updating the payment method clears it.