Docs · Reference

Plans & limits.

Every plan runs the same platform — the difference is resource limits and a few gated features. These are the numbers actually enforced by the deploy pipeline, not marketing rounding. For the full side-by-side, see Pricing.

Compute & storage

PlanStarterLive
Price$0$9 ($99/yr)
Always-on projectsSleeps after 3h idle2 projects always-on
Application memory512 MB2 GB
Storage (pooled)5 GB25 GB
Build memory4 GB6 GB
Upload cap100 MB500 MB
Bandwidth1 TBUnlimited (AUP)
Custom domainsNoYes
ML Python + Rust + BoxLangNoYes

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.

PlanArchive cap
Starter100 MB
Live500 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.

PlanStarterLive
Passkey sign-in APIYesYes
Monthly active end users1,000125,000
Canner Auth appsUnlimitedUnlimited
Auth emails / day, per organization505,000
Sign-in behaviour settingsNoYes
Management API (secret key)NoYes
Send from your own domainNoYes

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-onPriceWhat you get
Extra always-on app$4/ moOne more project kept permanently awake, on any paid plan.
App RAM +1 GB$4/ GB / moMore 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 / moGuaranteed 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/ mo50 GB more storage, added to your organization's shared pool.
Dedicated Postgres$9/ project / moA project's own Postgres instance, with point-in-time recovery, extensions, replication and 0.5 GB of dedicated memory.
Compliance$29/ moA 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 RAMDedicated RAM
Price$4 / GB / mo$19 / GB / mo
GuaranteedNo: pooled memoryYes: never oversold
When the server is busyYour app slows down, never cut offSteady performance
Goes toYour app (the shared part)App and dedicated Postgres, split by the slider
Build memory+1 GB for each GB assigned to the projectUnchanged
Choose it forAn app that needs more memory but can tolerate slowdowns at busy timesPostgres, AI workloads, or any app that needs guaranteed performance
LimitNo supply limitA 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.

Related