Compute & storage
| Plan | Starter | Live |
|---|---|---|
| Price | $0 | $9 ($99/yr) |
| Always-on projects | Sleeps after 3h idle | 2 projects always-on |
| Application memory | 512 MB | 2 GB |
| Storage (pooled) | 5 GB | 25 GB |
| Build memory | 4 GB | 6 GB |
| Upload cap | 100 MB | 500 MB |
| Bandwidth | 1 TB | Unlimited (AUP) |
| Custom domains | No | Yes |
| ML Python + Rust + BoxLang | No | Yes |
Upload & deploy size caps
The compressed-archive cap for a drag-and-drop upload or a canner deploy — enforced at the upload endpoint, per plan. Anonymous (no-account) deploys cap at 50 MB regardless. node_modules and other build output are excluded before upload, so this is almost always your source plus committed assets.
| Plan | Archive cap |
|---|---|
| Starter | 100 MB |
| Live | 500 MB |
Passkey authentication (Canner Auth)
The sign-in API itself is on every plan, free included. A monthly active user is one who signed in during the last 30 days. Reaching the cap stops newenrolments only — everyone already using your app keeps signing in, because locking a tenant’s customers out over a billing relationship they are not party to is not a limit, it is an outage. Full guide: Passkeys for your app.
| Plan | Starter | Live |
|---|---|---|
| Passkey sign-in API | Yes | Yes |
| Monthly active end users | 1,000 | 125,000 |
| Canner Auth apps | Unlimited | Unlimited |
| Auth emails / day, per organization | 50 | 5,000 |
| Sign-in behaviour settings | No | Yes |
| Management API (secret key) | No | Yes |
| Send from your own domain | No | Yes |
The daily email cap is the one that usually binds first, and it is deliberately sized so the user number above it is reachable. Both it and the user count are measured across your whole account, not per app — which is why the number of apps is not rationed: another app adds no load and buys no headroom, so charging for one would be charging for how you choose to organise things. Apps that enrol users through their own backend (/v1/auth/tickets) send no email at all and are limited only by the user count.
Add-ons
On any paid plan you add resources and compliance à la carte, without changing plan. They are bought and cancelled under Usage & plan: a click first previews the new totals and the monthly price, and nothing is charged until you confirm.
| Add-on | Price | What you get |
|---|---|---|
| Extra always-on app | $4/ mo | One more project kept permanently awake, on any paid plan. |
| App RAM +1 GB | $4/ GB / mo | More memory for one app, without buying dedicated memory. Pooled on shared capacity: when the server is busy your app is slowed down, never cut off. |
| Dedicated RAM +1 GB | $19/ GB / mo | Guaranteed memory that is never oversold, shared between a project's app and its dedicated Postgres. Choose it for databases, AI workloads, or any app that needs guaranteed performance. |
| Storage +50 GB | $5/ mo | 50 GB more storage, added to your organization's shared pool. |
| Dedicated Postgres | $9/ project / mo | A project's own Postgres instance, with point-in-time recovery, extensions, replication and 0.5 GB of dedicated memory. |
| Compliance | $29/ mo | A signed Data Processing Agreement (PIPEDA / Law 25), a data-residency attestation, and your organization's audit log with export. |
Storage is one pool per organization: your plan’s limit plus any 50 GB blocks you buy. Databases, backups, the recovery archive, objects and Data Workshop datasets all draw from it; adding a database never raises it.
App RAM or Dedicated RAM?
Both add memory to a project, but not in the same way. App RAM raises the shared memory of your app: it is pooled on common capacity, so when the server is busy your app is slowed down, never cut off. Dedicated RAM is reserved for you and never oversold; a project shares it between its app and its dedicated Postgres instance.
| App RAM | Dedicated RAM | |
|---|---|---|
| Price | $4 / GB / mo | $19 / GB / mo |
| Guaranteed | No: pooled memory | Yes: never oversold |
| When the server is busy | Your app slows down, never cut off | Steady performance |
| Goes to | Your app (the shared part) | App and dedicated Postgres, split by the slider |
| Build memory | +1 GB for each GB assigned to the project | Unchanged |
| Choose it for | An app that needs more memory but can tolerate slowdowns at busy times | Postgres, AI workloads, or any app that needs guaranteed performance |
| Limit | No supply limit | A limited share of each server: a purchase can be refused when it is sold out |
In practice: Postgres and AI workloads are safer on Dedicated RAM, because a database or model starved of memory slows down or fails visibly. For a site or API that just needs more headroom, App RAM costs far less.
What each plan unlocks
Some capabilities are gated rather than metered. ML Python (PyTorch/TensorFlow/transformers), Rust, and BoxLang need the memory and build budget of a paid plan, so they require Live or above. Custom domains are also a paid-plan feature. Always-on is an allowance rather than a switch: Live keeps 2 projects permanently up (more with the always-on add-on), and any project beyond that sleeps after about three hours of inactivity and wakes on the next request. Storage is one pooled figure per organization covering applications, builds, databases, Data Workshop and object storage.