Skip to content

workerd

Open-source V8 behind Cloudflare Workers. Runs your fetch handler. Every stateful binding calls a service you have to build.

OpenOrange

Workers API on Node.js, with Rivet underneath for everything stateful. The services ship with it.

2 / 15
services complete in workerd
8
need a backend you build
7
drop-in on OpenOrange

Service by service

  • Workers

    workerd

    Supported

    The production V8 runtime. source

    OpenOrange

    Drop-in

    Node.js.

  • Durable Objects

    workerd

    Partial

    SQLite on local disk, marked experimental. One process owns every object. Cluster mode is behind --experimental and sends peer traffic unencrypted. source

    OpenOrange

    Partial

    Rivet Actors, spread across your instances. WebSocket hibernation is emulated.

  • Workers KV

    workerd

    Shim only

    Calls are forwarded to a service you write. source

    OpenOrange

    Drop-in

    One Actor per namespace, strongly consistent.

  • Queues

    workerd

    Shim only

    No broker, retries or dead-letter. The consumer handler needs an experimental flag. source

    OpenOrange

    Drop-in

    Batching, retries, dead-letter. One batch at a time per queue.

  • Workflows

    workerd

    Shim only

    The engine is in Miniflare, not workerd. source

    OpenOrange

    Partial

    Cloudflare's own engine, one Rivet Actor per instance.

  • Cron Triggers

    workerd

    Not included

    The handler exists. Nothing fires it.

    OpenOrange

    Drop-in

    Same cron syntax.

  • D1

    workerd

    Shim only

    No d1 binding in the schema. The client wraps a fetcher you provide.

    OpenOrange

    Drop-in

    One Actor's SQLite per database.

  • R2

    workerd

    Shim only

    Calls are forwarded to a service you write. source

    OpenOrange

    Pluggable

    Actor storage, or any S3-compatible store: S3, GCS, R2 or MinIO.

  • Cache API

    workerd

    Not included

    Throws "No Cache was configured" unless you supply an HTTP cache. source

    OpenOrange

    Partial

    One Rivet Actor per cache name. Vary is ignored.

  • Hyperdrive

    workerd

    Partial

    Passes straight to Postgres. No pooling.

    OpenOrange

    Drop-in

    Passes the connection string through.

  • Workers AI, Vectorize, Browser Rendering

    workerd

    Not included

    Shims only. wrangler dev proxies them to Cloudflare.

    OpenOrange

    Pluggable

    AI and Browser Rendering use your provider. Vectorize is not supported.

  • Email Workers

    workerd

    Partial

    Handler type only. No ingress, no send_email.

    OpenOrange

    Pluggable

    Send and receive email through your SMTP server.

  • Static assets

    workerd

    Partial

    A disk service with no Content-Type, _headers or _redirects. source

    OpenOrange

    Partial

    Serves the assets directory with Wrangler's rules. _headers and _redirects are not applied.

  • Service bindings, WebSockets, Wasm

    workerd

    Supported

    OpenOrange

    Partial

    connect() and WebSocket upgrades to another Worker throw. Wasm module bindings are not supported.

  • wrangler config

    workerd

    Partial

    name, main, compat flags, vars, durable_objects and migrations. Anything else is an error. source

    OpenOrange

    Drop-in

    Read unchanged. A few keys, such as legacy_assets, stop orange dev.

workerd read from cloudflare/workerd at eed7c37, 2026-10-31. Shim only: the binding ships, the service does not. Test results per feature: compatibility; per binding: bindings.

Limits

The 128 MB and 30 second caps are Cloudflare's, not workerd's.

  • Memory per Worker

    Cloudflare
    128 MB
    workerd
    No limit
    OpenOrange
    The Node.js heap of the runtime process
  • CPU time per request

    Cloudflare
    30 s default, 5 min max
    workerd
    No limit
    OpenOrange
    No limit
  • Subrequests per request

    Cloudflare
    10,000
    workerd
    No limit
    OpenOrange
    OS limits
  • Alarm wall time

    Cloudflare
    15 min
    workerd
    15 min, hard-coded
    OpenOrange
    About 24.8 days, the longest Node.js timer
  • Node.js APIs

    Cloudflare
    nodejs_compat subset
    workerd
    nodejs_compat subset
    OpenOrange
    Node.js modules, with workerd-shaped process and fs
  • Native npm modules

    Cloudflare
    No
    workerd
    No
    OpenOrange
    Not tested
  • Process model

    Cloudflare
    Cloudflare's
    workerd
    One thread per process. You run the load balancer.
    OpenOrange
    One process per Worker per instance. Rivet places Actors across instances.
  • Durable Objects across machines

    Cloudflare
    Yes
    workerd
    Experimental cluster mode, unencrypted.
    OpenOrange
    Yes
  • Running untrusted code

    Cloudflare
    Hardened
    workerd
    "Not a hardened sandbox"
    OpenOrange
    Same as any Node.js service
  • Runtime upgrades

    Cloudflare
    Cloudflare's schedule
    workerd
    Your schedule
    OpenOrange
    Your schedule

Workers Paid plan, checked 2026-10-08. workerd from worker-factory.c++ at eed7c37.

Cost

100 always-on Durable Objects for one month.

Cloudflare

  • Durable Object duration 412.50
  • Durable Object requests 1.80
  • Workers Paid minimum 5.00

Cloudflare's pricing example 3

Total / mo $419.30

workerd

  • m7i.xlarge, 730 h 147.00
  • KV store you build it
  • Queue broker you build it
  • SQLite service you build it
  • HTTP cache you build it
  • Scheduler you build it
  • Load balancer you build it
  • Deploy pipeline you build it

Total / mo $147.00 + ?

OpenOrange

  • m7i.xlarge, 730 h 147.00
  • Rivet, Apache 2.0 0.00

AWS on-demand, us-east-1

Total / mo $147.00

See the cost breakdown

Pick workerd when

  • Your Worker is a fetch handler with no stateful bindings.
  • You need the exact V8 semantics Cloudflare runs.
  • You are building a dev tool.

Pick OpenOrange when

  • You use KV, Queues, D1, Workflows, cron or the Cache API.
  • Durable Objects need more than one machine.
  • You want to deploy with one command.

Same project. All of it runs.

Keep the wrangler config.

Built for serious scale.