Memory and active CPU, that's it. Free egress, a spend cap on by default, and no memory or timeout ceilings to design around. See your exact cost before you deploy, then run your real app for as long as it needs.
save to deploy*/5 * * * *0 9 * * *0 8 * * 1Deploy the standard handler. No proprietary format to learn.
Per-request fees, egress, and a hard 15-minute cap make most serverless bills impossible to predict. Raff bills two meters, memory and active CPU, with requests and egress free and a spend cap on by default.
Set invocations, duration, memory and average response size. Raff bills two meters; requests and egress are free. We estimate the same run on Lambda, Cloud Run, Cloudflare and Vercel beside it.
Competitor figures use each provider's published on-demand pricing (US), free tiers excluded, gathered Jul 2026. Cloudflare and Vercel bill on different models; Cloudflare caps at 128 MB / 30s CPU. Vercel figures are estimates. Verify before relying on them.
FastAPI, Node's http, the Web Fetch API, Go's net/http. There's no proprietary format to learn on the way in, and nothing to unwind if you ever leave.
1from fastapi import FastAPI 3app = FastAPI() 5@app.get("/thumb")6def thumb(url: str):7 img = resize(fetch(url))8 return Response(img)Upload or paste your function. Raff maps it deterministically, rewrites the proprietary bits with AI, and shows you the diff. Review, then deploy a clean, portable handler.
AI rewrite: 5 of 5 free this month · then $0.30 each from your balance · run-as-is always free
Serves at my-function-xxxxx.fn.raffusercloud.com. Every URL gets a short random suffix, so names never collide across accounts.
1def lambda_handler(event, context):2 q = event["queryStringParameters"]3 return {4 "statusCode": 200,5 "body": greet(q)6 }1@app.get("/")2def handler(name: str) -> str:3 return greet(name)Timeouts run up to 1 hour by default and 24 hours on request. Long AI inference, batch processing, ETL and streaming don't get exiled to a second, heavier product. They run as functions, on the same two meters.
Sub-second cold starts, and autoscaling that follows load. When you're idle you pay nothing. Active CPU is billed only while your code is on-CPU, never while it's waiting on I/O. Add optional warm instances at 30% of the memory rate for latency-critical paths.
Write one standard handler and one deploy. Wire it to any trigger. No separate services, no duplicated code.
Runtimes, deploy tooling, bindings, observability and cost control. One product, one bill.
Live log tail with search and level filters, 14-day retention. Count, p50, p95 and error rate per function. Every recent request correlates to its own logs, all in the dashboard, nothing to install.
12:00:14INFOGET /thumb?url=… 200 · 84ms12:01:14INFOresize 1280×720 → 320×18012:02:14WARNupstream slow · 412ms12:03:14INFOGET /thumb?url=… 200 · 71ms12:04:14INFOcold start · 0.8s| RaffBest | Lambda | Cloudflare | Cloud Run | Vercel | |
|---|---|---|---|---|---|
| Handler format | Standard | Proprietary | Workers API | Container | Framework-tied |
| Per-request fee | None | $0.20/M | $0.30/M | Per-request | Metered |
| Egress | Free | Metered | Metered | Metered | Metered |
| Max duration | 1h → 24h | 15 min | 30s CPU | 60 min | ~60s |
| Scale to zero | Yes | Yes | Yes | Yes | Yes |
| CPU billed while idle | Never | Yes | Partial | Yes | No |
| Cold start | Sub-second | 100ms–1s | ~0ms | Seconds | 100ms–1s |
| Move your code | No rewrite | Rewrite | Rewrite | Portable | Rewrite |
| Logs & metrics | Included | CloudWatch $ | Add-on | Cloud $ | Add-on |
Competitor figures reflect each provider's published consumption pricing and default limits; Cloudflare Workers durations are CPU-time limits. Figures gathered Jul 2026.
Two metered numbers. Everything else is free or included.
Provisioned memory over the wall-clock lifetime of your instance.
Billed only while your code is on-CPU, never while idle on I/O.
Isolation, encryption and audit trails are on from the first deploy, nothing to configure.
Functions run on the same first-party cloud as the rest of Raff, and bind to everything below over the private fabric.
Two meters, and that's the whole bill. Memory at $0.0000035 per GB-second and active CPU at $0.000020 per vCPU-second. Requests and egress are free. Billing is balance-based, so it's predictable and invoiceable, and a per-account spend cap is on by default. See the full breakdown on the pricing section.
Yes. Every account gets 100,000 GB-seconds and 10,000 vCPU-seconds free each month, plus free requests and free egress on top. The free tier is permanent, not a trial, and it never bills you.
One setup note: Functions and the free tier switch on after a one-time $5 top-up, which stays in your balance as usable credit — a light anti-abuse gate, covered in the funding question below.
No. A per-account spend cap is on by default, so functions pause instead of running up a runaway bill. A near-real-time usage panel updates in 5-minute windows, and because requests and egress are free, the only two numbers that move are memory and active CPU.
Correct. Timeouts run up to 1 hour by default and 24 hours on request. Long AI inference, batch processing, ETL and streaming run as functions on the same two meters, instead of being pushed onto a second, heavier product.
No. You write your framework's standard HTTP handler: FastAPI/ASGI, Node's http, the Web Fetch API, or Go's net/http. There's no proprietary signature, so the same file runs on your laptop, on Raff, and on other platforms. A Dockerfile escape hatch covers anything else.
Yes. Paste or upload your Lambda and Raff maps it deterministically, rewrites the proprietary parts with AI assistance, and shows you the diff. Review it, then deploy a clean, portable handler with no lock-in. Prefer no AI? Run it as-is instead. No Dockerfile or YAML required, Buildpacks detects your language and builds the image.
Python, Node.js, TypeScript, JavaScript and Go, using each one's standard handler. For anything else, a Dockerfile escape hatch lets you run any language or runtime. See the runtime guides for details.
It scales to zero and you pay nothing. Cold starts are sub-second, and autoscaling follows load. Active CPU is billed only while your code is on-CPU, never while it's idle waiting on I/O. For latency-critical paths, you can add optional warm instances at 30% of the memory rate.
Write one standard handler, deploy once, and wire it to any trigger: an HTTP URL with automatic TLS, a timezone-aware cron schedule, a single one-off future run, or object-storage events like bucket uploads with prefix filters. No separate services and no duplicated code.
A binding injects scoped, per-function credentials for a Raff Managed Database or an Object Storage bucket, so there are no secrets to copy around. Rotate any binding at any time and your main credentials are never touched.
No. Observability is included free. You get a live log tail with search and level filters and 14-day retention, plus count, p50, p95 and error rate per function. Every recent request correlates to its own logs, all in the dashboard with nothing to install and no second bill.
Every function runs in per-tenant gVisor sandbox isolation. Traffic is encrypted in transit and at rest, every action is captured in exportable audit logs, and the platform is ISO 27001 certified and GDPR-ready with a DPA. It's all on from the first deploy, with nothing to configure.
A one-time top-up of $5 or more unlocks Functions, and that includes the free tier. It's a light anti-abuse gate for a product that runs your code on demand, not a fee: the money stays in your balance and you spend it on normal usage. It counts the moment your lifetime paid reaches $5, whether that's a deposit or spend on any other paid Raff product.
Brand-new accounts also run with lower concurrency and scale limits until $10 lifetime paid, then those lift automatically.
Two meters, free requests and egress, a spend cap on by default. Start on the free tier and see for yourself.