| Workers | OpenOrange runtime | Drop-in | The Workers API surface (fetch handler, env bindings, waitUntil, Cache) on Node.js. Your code and wrangler config load unchanged. |
| Durable Objects | Rivet Actors | Partial | One Rivet Actor per object, with SQLite storage and alarms. Same class, same bindings. WebSocket hibernation is emulated: the object leaves memory, and its actor keeps running. |
| Workers KV | Actor-backed KV | Drop-in | The KV binding API, one Actor per namespace. Strongly consistent instead of eventually. |
| Queues | Actor-backed queues | Drop-in | Producers and consumers keep the Queues API, with batching, retries and dead-letter queues. One batch runs at a time per queue. |
| Workflows | Cloudflare's own Workflows engine | Partial | The engine that wrangler dev runs, copied from @cloudflare/workflows-shared, with one Rivet Actor per instance. Steps, sleeps, events and retries work. instance.subscribe() is not available. |
| Cron Triggers | Actor schedules | Drop-in | Same cron syntax in your config. Crons fire in orange dev too. |
| D1 | SQLite on Rivet | Drop-in | The D1 binding API on one SQLite database in a Rivet Actor. |
| R2 | A Rivet Actor, or your S3-compatible store | Pluggable | A bucket is an Actor by default. Point it at any S3-compatible store instead. |
| Workers AI | An OpenAI-compatible provider | Pluggable | The AI binding calls any OpenAI-compatible endpoint you already pay for. Text and embedding models. |
| Sandboxes | Your sandbox provider | Pluggable | The Sandbox SDK runs on a hosted provider, an agentOS VM or a local directory. Other Container images are not run. |
| Hyperdrive | Direct connection | Drop-in | Works unchanged. You are already in the VPC, so env.HYPERDRIVE passes the connection string straight through. |
| Browser Run | Your browser | Pluggable | @cloudflare/puppeteer drives your Chrome or a hosted browser over the DevTools Protocol. |
| Email | Your SMTP server | Pluggable | send_email sends through your SMTP server. Inbound mail reaches email() from your provider's webhook. |
| Vectorize, Images, Pipelines | Bring your own | Not supported | The bindings load and every call throws. Call a replacement such as pgvector with fetch() today. |