Run Cloudflare Workers anywhere.
- Google Cloud
- Your servers
The same developer experience, without the runtime limits, for a fraction of the bill.
Built for serious scale.
- 4.8× cheaper compute
- 8.7× cheaper storage
- 0 downtime to migrate

Run it where you want.
Next to your database, in the cloud and region you choose.
Deployment documentation →
- Rivet Cloud Fully managed Runs on A dedicated cluster on AWS or Google Cloud, in the region you choose Operated by Rivet
Rivet Cloud
Fully managed
- BYOC Your cloud, our ops Runs on Your AWS, Google Cloud or Azure account Operated by Rivet, over an outbound connection
BYOC
Your cloud, our ops
- Self-hosted Open source, Apache 2.0 Runs on Any cloud, Hetzner or on-prem Operated by You
Self-hosted
Open source, Apache 2.0
Same work. A fraction of the bill.
Cloudflare's meters, priced on raw AWS.
Cloudflare pricing →
Same work. Less bill.
AWS Graviton · us-east-1AWS on-demand Graviton (ARM) prices in us-east-1, provisioned 40% above use for autoscaling. Reserved pricing, spot and credits are lower. Cloudflare and AWS list prices checked 2026-10-08.
- DO computeDurable Object compute, per GB-hour. Cloudflare: $12.50 per million GB-s. OpenOrange: r7g.xlarge (Graviton), 32 GB for $0.2142/h, plus 40% headroom. 4.8× cheaper. /GB-h $0.045 $0.0094 4.8×
- Workers CPUWorkers compute, per vCPU-hour. Cloudflare: $0.02 per million CPU-ms, plus $0.30 per million requests. OpenOrange: c7g.xlarge (Graviton), 4 vCPU for $0.145/h, plus 40% headroom. No request fee.. 1.4× cheaper. /vCPU-h $0.072 $0.051 1.4×
- DO SQLiteDurable Object SQLite, per GB-month. Cloudflare: $0.20 per GB-month. OpenOrange: S3 Standard in your account. 8.7× cheaper. /GB-mo $0.20 $0.023 8.7×
- SQLite writesSQLite rows written, per million rows. Cloudflare: $1.00 per million rows, Durable Objects and D1. OpenOrange: One SQLite write per row, at the measured S3 request cost per write. 5.7× cheaper. Measured on Rivet: 5,000 concurrent agents, each writing a 64-byte SQLite upsert every 10 s, made 1.32 billion writes a month for $232 in S3 requests. Your cost per write depends on your workload. /1M rows $1.00 $0.18 5.7×
- D1D1, per GB-month. Cloudflare: $0.75 per GB-month. OpenOrange: S3 Standard in your account. 32.6× cheaper. /GB-mo $0.75 $0.023 32.6×
- KVKV, per GB-month. Cloudflare: $0.50 per GB-month. OpenOrange: S3 Standard in your account. 21.7× cheaper. /GB-mo $0.50 $0.023 21.7×
- WorkflowsWorkflows, per GB-month. Cloudflare: $0.20 per GB-month. OpenOrange: S3 Standard in your account. 8.7× cheaper. /GB-mo $0.20 $0.023 8.7×
- KV writesKV writes, per million writes. Cloudflare: $5.00 per million writes, deletes or lists. OpenOrange: One SQLite write per KV write, at the measured S3 request cost per write. 28.4× cheaper. Measured on Rivet: 5,000 concurrent agents, each writing a 64-byte SQLite upsert every 10 s, made 1.32 billion writes a month for $232 in S3 requests. Your cost per write depends on your workload. /1M writes $5.00 $0.18 28.4×
- Queue msgsQueues messages, per million messages. Cloudflare: $0.40 per million operations, 3 per message. OpenOrange: Two SQLite writes per message, send and ack, at the measured S3 request cost per write. 3.4× cheaper. Measured on Rivet: 5,000 concurrent agents, each writing a 64-byte SQLite upsert every 10 s, made 1.32 billion writes a month for $232 in S3 requests. Your cost per write depends on your workload. /1M messages $1.20 $0.35 3.4×
- Workflow stepsWorkflows steps, per million steps. Cloudflare: $0.80 per 100,000 steps. OpenOrange: A few SQLite rows per step: log, state and result, at the measured S3 request cost per write. 45.4× cheaper. Measured on Rivet: 5,000 concurrent agents, each writing a 64-byte SQLite upsert every 10 s, made 1.32 billion writes a month for $232 in S3 requests. Your cost per write depends on your workload. /1M steps $8.00 $0.18 45.4×
- Egress taxTraffic inside your VPC is free. Every call from Cloudflare back to your database or APIs in AWS pays AWS egress, $0.09 per GB.$0.00 Free
- Cloud creditsAWS, Google and Azure credits and committed spend pay for OpenOrange. Cloudflare is a second bill.Accepted
Keep this for your CFO
No runtime limits.
128 MB is all the memory a Cloudflare Worker gets. OpenOrange runs your Workers and Durable Objects on machines you choose, so the limits are your hardware's.
| Limit | Cloudflare Workers Paid | OpenOrange |
|---|---|---|
| Memory per Worker or Durable Object | 128 MB | Up to your machine's memory Node.js heap: up to about 4 GB by default, configurable |
| CPU time per request | 30 s default, 5 min max | No cap |
| Cron, queue and alarm handlers | 15 min wall time | No cap |
| Open connections per request | 6 at once | OS limits |
| Storage per Durable Object | 10 GB | No cap |
| Worker bundle | 64 MiB | No cap |
| Node.js | nodejs_compat subset | Stock Node.js |
Workers Paid plan, from Cloudflare's docs. Free plan limits are stricter.
Don't sacrifice your DX.
Your wrangler.jsoncBindings, environments, build commands and .dev.vars work as they do with Wrangler. stays the source of truth. Same commands, new name.
$ orange dev
● Ready in 1.4s
Local http://127.0.0.1:8787
$ orange deploy -e staging
✓ Deployed pied-piper to staging
URL https://staging.piedpiper.com
$ orange deploy --dry-run
Dry run. Nothing was built or sent to Rivet Cloud.
Ask for code. The agent works in its own VM, and everyone in this thread sees it live.
Write fib.py that prints the first 15 Fibonacci numbers, run it, and tell me their sum.
Anton Agent 2 tools working
write fib.py
bash python3 fib.py
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
sum: 986
Richard, I wrote fib.py and ran it. It printed the first 15 Fibonacci numbers, starting from 0.
Their sum is 986.
Ask for code. The agent works in its own VM, and everyone in this thread sees it live.
Run middle-out on season-finale.mov and report the Weissman score.
Middle-out Agent 2 tools working
read compress.toml
bash ./middle-out season-finale.mov
season-finale.mov 4.2 GB → 806 MB
weissman score 5.2
Richard, middle-out took season-finale.mov from 4.2 GB to 806 MB.
The Weissman score is 5.2.
Get started.
Run this project's Cloudflare Worker on Rivet with OpenOrange. First, ask me where it should run: on my machine, on a Rivet cluster, or on my own Rivet Engine. Then read https://github.com/rivet-dev/open-orange/blob/main/README.md and follow its quickstart. Do not change my app code.
- Step 1: Install Install the orange CLI globally, then run it in your Worker project. Your code and your Wrangler configuration do not change. $ pnpm add -g open-orange
Step 1: Install
Install the orange CLI globally, then run it in your Worker project. Your code and your Wrangler configuration do not change.
$ pnpm add -g open-orange
- Step 2: Run your Worker Reads your Wrangler configuration. Each Durable Object runs as a Rivet Actor with its own SQLite database. $ orange dev ● Ready in 0.9s Local http://127.0.0.1:8787
Step 2: Run your Worker
Reads your Wrangler configuration. Each Durable Object runs as a Rivet Actor with its own SQLite database.
$ orange dev
● Ready in 0.9s
Local http://127.0.0.1:8787
- Step 3: Deploy Builds an image of your Worker and rolls it out to your own cloud (AWS, GCP, Azure) or on-prem servers. Or use Rivet Cloud: a fully managed, dedicated cluster on AWS or Google Cloud, in the region you choose. Deploy guide →Self-host it → $ orange login$ orange link --cluster <name>$ orange deploy ✓ Deployed my-worker URL https://api.example.com
Step 3: Deploy
Builds an image of your Worker and rolls it out to your own cloud (AWS, GCP, Azure) or on-prem servers. Or use Rivet Cloud: a fully managed, dedicated cluster on AWS or Google Cloud, in the region you choose.
Deploy guide →Self-host it →
$ orange login
$ orange link --cluster <name>
$ orange deploy
✓ Deployed my-worker
URL https://api.example.com
Migrate your data without downtime.
orange migrate copies every Durable Object and D1*Cloudflare doesn't provide a way to migrate D1 live, so requests to a D1 database are interrupted while its data copies. This takes a few minutes. database from Cloudflare while your app keeps serving. No maintenance window, no lost writes.
Migration guide →
Supported bindings.
Every Cloudflare binding OpenOrange runs, plus the fetch handler and runtime globals. Each is documented with its status, configuration and known differences from Cloudflare.
Bindings documentation →
- Fetch handler →
- Durable Objects →
- Cron Triggers →
- Static Assets →
- Service bindings →
- Hyperdrive →
- Workers AI →
- Browser Rendering →
- Rate Limiting →
- Secrets Store →
- Tail Workers →
- Version Metadata →
- Worker Loader →
- Runtime globals →
Questions.
For small, spiky Workers, it often is: the free tier and per-request pricing are hard to beat. The meters add up once Durable Objects stay busy. Duration is billed per GB-second while an object is active, and every SQLite row written costs $1 per million. The same GB-hours on Graviton EC2 cost about a fifth as much, and writes cost a fraction of that.
No. OpenOrange implements the Workers API on Node.js and maps each Cloudflare service onto Rivet. It uses Wrangler to read your configuration, and it reuses some MIT-licensed Cloudflare code, such as the Workflows engine. It does not run workerd.
workerd is Cloudflare's runtime, not its platform. It runs your fetch handler, but KV, D1, R2, Queues, Workflows and the Cache API are bindings that call services you have to build, and Durable Objects keep their data on one machine with nothing to place, replicate or scale them. It also keeps limits designed around Cloudflare's network rather than your servers: only the nodejs_compat subset of Node.js, no native npm modules, and alarms capped at 15 minutes. OpenOrange runs your Worker on Node.js with real SQLite, and Rivet provides the services, so your code keeps working on infrastructure you control. Compare OpenOrange and workerd →
No. Rivet is the control plane underneath. You use the orange CLI and your Wrangler configuration.
OpenOrange is Apache 2.0 and free. Self-host Rivet and your cloud bill is the only bill. Rivet Cloud and BYOC pricing is at rivet.dev/pricing.
orange migrate moves Durable Objects while your app serves, with no downtime. D1 databases are interrupted for a few minutes while they copy, because Cloudflare doesn't provide a way to migrate D1 live. R2 is S3-compatible, so rclone or aws s3 sync moves buckets.
It runs wherever you deploy it, in as many regions as you want. Most backends talk to one database; running next to it is faster than running at the edge. For stateless Worker requests, this works fine today. For Durable Objects, an upcoming Rivet update adds multi-region support, including edge regions.
Rivet. OpenOrange is not affiliated with or endorsed by Cloudflare, Inc.
Keep the platform. Lose the walls.
Your Cloudflare project in your datacenter.
Built for serious scale.