Run Cloudflare Workers anywhere.
- AWS
- Google Cloud
- Azure
- Rivet Cloud
- Your servers
The same developer experience, without the runtime limits, for a fraction of the bill.
Built for serious scale.
Walkthrough of OpenOrange
Video coming soon
Run it where you want.
Next to your database, in the cloud and region you choose.
-
Rivet Cloud
Fully managed
- Runs on
- A dedicated cluster in the provider and region you choose
- Operated by
- Rivet
-
BYOC
Your cloud, our ops
- Runs on
- Your AWS, Google Cloud or Azure account
- Operated by
- Rivet, over an outbound connection
-
Self-hosted
Open source, Apache 2.0
- Runs on
- Any cloud, Hetzner or on-prem
- Operated by
- You
Same work. A fraction of the bill.
Cloudflare's meters, priced on raw AWS.
- cheaper compute
- 4.8×
- cheaper storage
- 8.7×
- cheaper writes
- 5.7×
OpenOrange
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.
Memory, CPU time and connections are set by the instance you choose, not a platform cap.
- MemoryMemory per Worker isolate. Each Durable Object has the same 128 MB cap. 128 MB Your instance
- CPU timeCPU time per request: 30 seconds by default, 5 minutes at most. 5 min No limit
- ConnectionsSimultaneous outgoing connections per request. Extra fetch() calls wait for a free one. 6 OS limits
- Wall timeCron, queue and alarm handlers stop after 15 minutes of wall time. 15 min No limit
- Bundle sizeThe largest Worker bundle Cloudflare accepts. 64 MiB No limit
- Node.jsCloudflare runs part of the Node.js API behind nodejs_compat. OpenOrange runs stock Node.js, with a few node: modules swapped for workerd-shaped versions so Workers code behaves the same. A subset Stock Node.js
- p99 latencyRun next to your database instead of crossing the internet on every query. No CPU cap cuts a slow request short, and no memory ceiling evicts a busy object, so p99s stay steady. Edge ↔ DB Next to DB
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 on 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.
Get started.
Run this project's Cloudflare Worker on Rivet with Open Orange. 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
Add Open Orange to your Worker project. Your code and your Wrangler configuration do not change.
$ git clone https://github.com/rivet-dev/open-orange
$ cd my-worker && pnpm add -D ../open-orange
-
Step 2: Run your Worker
Reads your Wrangler configuration. Each Durable Object runs as a Rivet Actor with its own SQLite database.
$ pnpm orange dev
ready 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: fully managed, on a dedicated cluster in the provider and region you choose.
$ pnpm orange login
$ pnpm orange link --cluster <name>
$ pnpm orange deploy
live 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.
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.
- Fetch handler
- Durable Objects
- KV
- D1
- R2
- Queues
- Workflows
- Cron Triggers
- Static Assets
- Cache API
- Service bindings
- Hyperdrive
- Workers AI
- Browser Rendering
- Rate Limiting
- Secrets Store
- Tail Workers
- Version Metadata
- Worker Loader
- Sandbox
- Runtime globals
Questions.
Wait, wasn't Cloudflare supposed to be cheaper?
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.
Is OpenOrange a fork of Cloudflare?
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.
Do I need to learn Rivet?
No. Rivet is the control plane underneath. You use the orange CLI and your Wrangler configuration.
What does it cost?
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.
What happens to the data already in KV, Durable Objects and R2?
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.
Does it run at the edge?
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.
Who maintains OpenOrange?
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.