All docs

Limits & Quotas

Every limit that applies to fn0 Cloud, in one place. Self-hosted fn0 has none of these — run it yourself and they are yours to change.

fn0 Cloud is not open yet; values below are the planned launch limits and may be adjusted before general availability.

Per-request runtime limits

These apply to every invocation — HTTP requests, queue tasks, and cron runs — on every plan.

LimitValue
CPU time50 ms
Memory128 MB
Max duration15 seconds
Request headers128 KB
Request body100 MB
Response headers128 KB
Response bodyUnlimited
Subrequests50 per request

CPU time counts only time spent executing your code. Waiting on I/O — a database query, an upstream API call, a slow LLM response — costs nothing.

Monthly quotas — one dollar plan

Projects & domains

QuotaValueNotes
Projects1
Custom domains1Automatic TLS — point a CNAME and you're done
fn0.dev subdomainIncluded

Compute

QuotaValueNotes
CPU pool500 CPU-minutes / month≈ 2M server-rendered pages at ~15 ms each

The pool is monthly, not daily. A launch-day traffic spike draws on the whole month's budget instead of hitting a daily wall.

Network

QuotaValueNotes
Compute egress20 GB / monthBytes leaving your handlers: SSR pages, API responses
Static asset downloadsUnlimitedServed through the CDN cache — never metered, never counted as egress

Static assets (your deployed build's files) are the unlimited-download path. Object storage downloads go directly to the storage endpoint, are not cached, and carry the quotas below.

Document database

QuotaValueNotes
Active databases1
Storage500 MB
Row reads150M / month
Row writes1M / monthA busy community site writes ~300k a month

Object storage

QuotaValueNotes
Storage10 GB
Write operations100k / month, 2k / hourUploads, copies, lists — from your handlers or presigned PUT
Read operations100k / month, 5k / hourDownloads and HEADs — from your handlers or presigned GET
Presigned URLs minted100k / month, 1k / hour
Presigned URL expiry5 minutes maximumLonger requested expiries are clamped, not rejected

Treat presigned URLs as opaque, short-lived strings: mint one right before use, and never store one or parse its structure — the URL format may change.

Going over quota blocks presigned URL minting only (requests get 429); your deployed app keeps serving and already-minted URLs stay valid until they expire. The block lifts automatically once usage falls back under the hourly and rolling 30-day limits — no action needed. If your app legitimately needs high-volume presigned downloads, contact us: a paid add-on serving them through the CDN cache is planned.

Queues & cron

Queue task execution and cron runs consume the shared monthly CPU pool — there is no separate billing for them.

LimitValueNotes
Cron jobs10 per project
Cron interval1 minute minimum
Queue message size128 KB
Queue backlog100k messages per project

Monthly quotas — free plan

To be announced. The free plan targets trying things out: one project on a *.fn0.dev subdomain, with quotas sized for development traffic.

When you outgrow these

  • Pay-as-you-go overage (planned) — keep growing past the included quotas without hitting a wall.
  • Bring your own resources (planned) — connect your own R2 bucket or Turso database; quotas for that resource become whatever your own account allows.
  • Self-host — fn0 is open source. Run it on your own infrastructure with no limits at all.