$ fn0 — pronounced f-n-zero

You build the service.
We handle the rest.

fn0 is an open-source, batteries-included FaaS platform powered by WebAssembly — a reasonable alternative to Cloudflare Workers.

GitHub →

cargo binstall fn0-cli

~/my-app
$ fn0 init my-app
my-app created
$ cd my-app && fn0 deploy
compiling to wasm ......... done
uploading bundle .......... done
deployed in 4.2s
$

$ why fn0

All-in-one, without the ceremony

Easier to build. Easier to deploy.

fn0 init scaffolds a project; fn0 deploy ships it. No Dockerfiles, no YAML, no infrastructure to babysit.

Any language that compiles to Wasm

fn0 runs WASI 0.2 components on wasmtime. Rust and JavaScript/TypeScript are supported today; more arrive as the ecosystem grows.

Local is production

fn0 local runs the same runtime on your machine. What works locally works deployed — no staging surprises.

Open source, no lock-in

AGPL-3.0 on GitHub. Self-host on AWS or OCI with adapters, or let fn0 Cloud run it for you.

$ full-stack

Full-stack web apps on fn0

fn0 runs anything that compiles to Wasm — bring your own stack. And when you're building a server-rendered web app, Forte makes it easier: React pages rendered on the server, typed server actions, a document database, and object storage — one repo, one deploy command. This page is served this way.

Meet Forte →
rs/src/pages/hello/mod.rs
#[derive(Serialize)]
pub struct Props {
    pub message: String,
}

pub async fn handler(
    _req: ForteRequest<'_>,
) -> Result<Props> {
    Ok(Props {
        message: "typed, server-rendered".into(),
    })
}

$ fn0 cloud

fn0 Cloud is coming

A managed fn0 — you deploy, we run it. Two plans are in the works.

freeplanned

$0

For hobby projects and trying things out.

Projects1
fn0.dev subdomainIncluded
Custom domains
Monthly quotasTBASized for trying things out and development traffic.
one dollarplanned

$1 / month

≈ 2,000,000 server-rendered requests, every month

For small production services — a real domain, a database, storage, queues, and cron behind one deploy command.

Projects & domains
Projects1
Custom domains1Automatic TLS — point a CNAME and you're done.
fn0.dev subdomainIncluded
Compute
CPU pool500 min / mo≈ 2M server-rendered pages at ~15 ms each. Pooled monthly, not daily — a launch-day spike won't hit a wall.
CPU per request50 msOnly your code counts. Waiting on a database or an LLM API costs nothing.
Network
Compute egress20 GB / moSSR pages and API responses leaving your handlers.
Object storage downloadsUnlimitedServed through the CDN cache — never metered, never counted as egress.
Document database
Active databases1
Storage500 MB
Row reads150M / mo
Row writes1M / moA busy community site writes ~300k a month.
Object storage
Storage10 GB
Uploads100k / mo
DownloadsUnlimitedServed through the CDN cache.
Queues & cron
Queue tasks & cron runsShared CPU poolThey spend the same CPU minutes as requests — nothing extra to buy.
Cron jobs10 / project1 minute minimum interval.
Queue message size128 KB
Queue backlog100k messages

Full limits & quotas in the docs →

on the roadmapplanned
  • Monitoring & logs

    See what your service is doing without leaving fn0.

  • Pay-as-you-go overage

    Keep growing past the included quotas without hitting a wall.

  • Bring your own R2 / Turso

    Connect your own bucket or database — your resources, your limits.

  • A higher tier

    For services that outgrow a dollar.

$ limits

Per-request limits

Applied to every invocation on fn0 Cloud, on every plan. Run fn0 yourself and these limits are yours to change.

All limits & quotas →
Request headers128 KB
Request body100 MB
Response headers128 KB
Response bodyUnlimited
Memory128 MB
CPU time50 ms
Max duration15 seconds
Subrequests50 per request

$ waitlist

Join the waitlist

fn0 Cloud isn't open yet. Leave your email and we'll let you know the moment it is.

Plan you're interested in