Skip to content
Bindings / Status

Bindings

Binding status

21 of 28 Cloudflare bindings run on OpenOrange, with the same wrangler.jsonc and the same env. Each binding's page has how it runs, what differs, and the tests behind it.

7
Drop-in
5
Pluggable
9
Partial
7
Stub

From OpenOrange ea40348, 2026-11-10. Scores on the compatibility page.

Drop-in.
Same API, same config. Nothing to change.
Pluggable.
Works out of the box, and can point at a provider you choose.
Partial.
Works with known differences, listed on its row.
Stub.
The binding loads; every call throws an error that names it.
Drop-inWorkers— Node.js runtime with workerd-shaped globals, cloudflare:* and node:* modules
PartialDurable Objectsdurable_objects, migrations Rivet Actors with SQLite storage and alarms
Drop-inKVkv_namespaces Internal Rivet Actor per namespace
Drop-inD1d1_databases Internal Rivet Actor per database, on the Durable Object SQL bridge
PluggableR2r2_buckets Actor SQLite by default, or any S3-compatible store per bucket Works with Amazon S3, Google Cloud Storage, Cloudflare R2, Backblaze B2
Drop-inQueuesqueues.producers, queues.consumers Internal Rivet Actor per queue, delivered to the Worker's queue() handler
PartialWorkflowsworkflows Cloudflare's own Workflows engine, copied from @cloudflare/workflows-shared 0.15.1, with one Rivet Actor per instance
Drop-inCron Triggerstriggers.crons Internal Rivet Actor that evaluates the full Cloudflare cron syntax
Drop-inRate Limitingratelimits, unsafe.bindings Internal Rivet Actor per namespace_id with an exact fixed-window counter
PluggableWorkers AI + AI Gatewayai Any OpenAI-compatible provider (OpenRouter by default, or ORANGE_AI_BASE_URL) Works with OpenRouter, OpenAI, Groq, Together AI, Fireworks AI
PartialCache API— Internal Rivet Actor per cache name, with Miniflare's freshness rules
PartialDurable Object Facets— A child Rivet Actor per facet
PartialWorker Loaderworker_loaders One Node.js process per dynamic Worker in an agentOS VM, never on the host, Workers RPC over Cap'n Web
PartialService bindings to other Workersservices One runtime process per Worker in one orange dev session (orange dev -c a.jsonc -c b.jsonc), with fetch() and RPC over loopback HTTP
PartialWorkers for Platforms (dispatch namespaces)dispatch_namespaces env.DISPATCHER.get(name) finds the user Worker by name among the Workers of the orange dev session
PluggableSandboxescontainers, durable_objects, migrations @cloudflare/sandbox on the ORANGE_SANDBOX_PROVIDER backend: a local host directory (default), an embedded agentOS VM through @rivet-dev/agentos-core, or E2B, Daytona, or Freestyle through @rivet-dev/sandbox-adapter Works with E2B, Daytona, Freestyle
PartialContainerscontainers No container runtime. A class listed under containers gets a ctx.container that runs one sandbox per object on ORANGE_SANDBOX_PROVIDER
StubVectorizevectorize Stub binding
PluggableBrowser Renderingbrowser Your own headless Chrome or a hosted browser, through its DevTools Protocol endpoint Works with Browserbase, Browserless, Steel
StubImages, Media, Streamimages, media, stream Stub bindings
PluggableSend Emailsend_email Your SMTP server, with inbound email on /cdn-cgi/handler/email Works with Resend, Amazon SES, Postmark, SendGrid, Mailgun
Drop-inHyperdrivehyperdrive Direct connection to the database in the connection string Works with Neon, Supabase, Amazon RDS, PlanetScale
StubPipelinespipelines Stub binding
StubAI Searchai_search, ai_search_namespaces Stub binding
PartialAnalytics Engineanalytics_engine_datasets A dataset that drops every data point, as Miniflare does
StubmTLS certificatesmtls_certificates Stub binding
StubVPCvpc_networks, vpc_services Stub bindings
StubLegacy blobstext_blobs, data_blobs, wasm_modules Stub bindings

Stubs

The Worker loads and env.NAME exists. Every call throws an error that names the binding and says what to use instead.

StubVectorizevectorizeCalls throw. Use a vector database over fetch(), or SQLite with cosine similarity for small sets.
Runs on
Stub binding
Recorded results
Does not work Vectorize, Images, Pipelines, mTLS 0/4 pass
Matrix
binding-vectorize
StubImages, Media, Streamimages, media, streamCalls throw. Use an image service such as imgproxy over fetch().
Runs on
Stub bindings
Recorded results
Does not work Vectorize, Images, Pipelines, mTLS 0/4 pass
Matrix
binding-imagesbinding-streambinding-media
StubPipelinespipelinesCalls throw.
Runs on
Stub binding
Recorded results
Does not work Vectorize, Images, Pipelines, mTLS 0/4 pass
Matrix
binding-pipelines
StubmTLS certificatesmtls_certificatesCalls throw.
Runs on
Stub binding
Recorded results
Does not work Vectorize, Images, Pipelines, mTLS 0/4 pass
Matrix
binding-mtls-certificate
StubVPCvpc_networks, vpc_servicesvpc_network and vpc_service calls throw. The host network is reachable with fetch() directly.
Runs on
Stub bindings
Matrix
binding-vpc-servicebinding-vpc-network
StubLegacy blobstext_blobs, data_blobs, wasm_modulestext_blobs, data_blobs, and wasm_modules throw. Import the file from the Worker source instead.