Skip to content

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.

4.8×
cheaper compute
8.7×
cheaper storage
0
downtime to migrate

Walkthrough of OpenOrange

Video coming soon

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 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×

Cloudflare pricing

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.

ItemCloudflareYou pay
  • 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. $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. $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. $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. $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. $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. $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. $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. $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. $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. $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.

Cloudflare limits

Cloudflare's wallWorkers Paid plan, checked 2026-10-08. Free plan limits are stricter. OpenOrange
  • 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.

~/pied-piper

$ 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.

  1. 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

  2. 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

  3. 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.

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

Not built yet: Vectorize, Images, Pipelines, mTLS certificates. These bindings load, and each call throws an error that names the binding.

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.