As of
OpenOrange runs Durable Objects in your cloud, without Cloudflare’s limits.
Same code. OpenOrange runs it in your VPC, next to your database, on infrastructure you control.
OpenOrange
The same Durable Objects, on your own cloud. Rivet places each object across your machines, next to your database, with your machine’s memory and no CPU or storage cap. Cloudflare locks your data in. OpenOrange opens it up and live-migrates it, with zero downtime.
Durable Objects
Runs only on Cloudflare
Cloudflare’s stateful Workers. Each object runs on one thread on Cloudflare’s network, with 128 MB of memory and up to 10 GB of SQLite storage. Cloudflare picks the data center and updates the runtime on its own schedule.
When to use which
Use OpenOrange when…
Most teams that grow end up on AWS, for compliance, data residency, latency to their database, cost at scale and what enterprise customers require. Durable Objects can’t move with them. OpenOrange takes them along.
- Your database runs in AWS, GCP or Azure, and p99s matter.
- You’ve outgrown 128 MB of memory, 5 minutes of CPU or 10 GB per object.
- Your data has to stay in your cloud account, on your own servers or air-gapped.
- You want to own your uptime, deploys and redundancy.
- Your npm packages need stock Node.js.
- You’re moving a live app off Cloudflare, with zero downtime.
Use Durable Objects when…
- You don’t plan to grow into a full AWS, GCP or Azure deployment.
- You’ll never need to deploy into your customers’ clouds or on-prem.
- Your data can live on Cloudflare’s network, in Cloudflare’s jurisdictions.
- You can live with 128 MB per object and Cloudflare’s deploy schedule.
Side by side
| Feature | OpenOrange | Durable Objects |
|---|---|---|
| Latency to your database | OpenOrange Yes: In your VPC, next to it No trip across the internet, so p99s stay steady. | Durable Objects No: Every query crosses the internet Location hints are “best effort and not a guarantee.” |
| Where it runs | OpenOrange Yes: Rivet Cloud, your AWS, GCP or Azure account, or your own servers | Durable Objects No: Cloudflare’s network only Not on-prem, not in your cloud account, not air-gapped. |
| Data residency | OpenOrange Yes: Your cloud account, your own servers, or air-gapped Air-gapped: build the image once and ship it into your network. | Durable Objects Partly: EU, US or FedRAMP jurisdictions, on Cloudflare only Object IDs are still logged outside the jurisdiction. |
| Uptime | OpenOrange Yes: Your infrastructure, your redundancy | Durable Objects Tied to Cloudflare’s platform In its June 12, 2025 outage, SQLite-backed objects’ errors peaked at 22%. |
| Runtime updates | OpenOrange Yes: When you deploy | Durable Objects No: On Cloudflare’s schedule Open connections get up to 20 minutes, then close. |
| Object resets | OpenOrange Yes: On your machines, on your schedule | Durable Objects No: On code updates, slow storage and overload Cloudflare’s own wording is below. |
| Memory per object | OpenOrange Yes: Up to your machine's memory Node.js heap: up to about 4 GB by default, configurable | Durable Objects Partly: 128 MB |
| CPU time per request | OpenOrange Yes: No cap | Durable Objects Partly: 30 s default, 5 min max |
| Storage per object | OpenOrange Yes: No cap | Durable Objects Partly: 10 GB Writes then fail with SQLITE_FULL. |
| Requests per object | OpenOrange Yes: No set limit | Durable Objects Partly: About 1,000 per second, a soft limit Past it, the object returns “overloaded” errors. |
| Alarm wall time | OpenOrange Yes: No cap | Durable Objects Partly: 15 minutes |
| Node.js | OpenOrange Yes: Stock Node.js 22 or later | Durable Objects Partly: The nodejs_compat subset Some modules are shims that throw when called. |
| Live migration of your data | OpenOrange Yes: orange migrate moves Durable Objects live, with no downtime SQLite-backed objects, straight off Cloudflare. | Durable Objects No: Locked in to Cloudflare |
| Your code | Same on both Your Durable Object classes and wrangler config, unchanged | |
Yes Partly No Cloudflare figures are for the Workers Paid plan, from Cloudflare’s docs.
Cloudflare resets your objects.
Its own docs say when. On OpenOrange, you control the machines and when deploys happen.
-
“Durable Object reset because its code was updated.”
A deploy lands before the object hibernates. source
-
“Durable Object storage operation exceeded timeout which caused object to be reset.”
A storage call runs too long. source
-
“Durable Object is overloaded. Too many requests queued.”
One object gets more work than one thread can do. source
-
“…there is a heightened chance that the individual Durable Object is evicted and reset.”
It uses more than 30 seconds of CPU between requests. source
Sources, read November 12, 2026
- Cloudflare: Durable Objects limits
- Cloudflare: Workers limits
- Cloudflare: Durable Objects troubleshooting
- Cloudflare: Durable Objects data location
- Cloudflare: Node.js compatibility
- Cloudflare: June 12, 2025 service outage
- Cloudflare status
- OpenOrange: deploy and self-host
- OpenOrange: migrate from Cloudflare
Same Durable Objects. Next to your database.
Run orange dev in your Worker project.