How rivet-dev/open-orange works
OpenOrange is a CLI and Node.js runtime for running Wrangler-configured Cloudflare Workers outside Cloudflare. Its primary workflow is to load a Worker project, run it locally through orange dev, then deploy it to Rivet; a separate migration command moves Durable Object data off Cloudflare. The graph includes runtime bindings and workflow execution as key internal layers, plus documented Rivet placement and S3-backed state. Source excerpts show configuration, serving, dispatch, and storage details; some deployment and migration implementation links are documented by the README rather than inspected source.
Main entry points: bin.ts Orange CLI · durable-object.ts Durable Objects · server.ts Runtime session server · service.ts Worker dispatch
Components 20
CLI and project setup
- Orange CLI
src/bin.ts - Wrangler config
src/config/load-wrangler.ts - Dev command
src/commands/dev.ts
Local serving
- Serve session
src/serve/session.ts - Worker routes
src/serve/routes.ts - Runtime session server
packages/runtime-node/src/session/server.ts
Worker runtime
- Worker dispatch
packages/runtime-node/src/bindings/service.ts - Fetch compatibility
packages/runtime-node/src/globals/http.ts
Bindings and state
- Durable Objects
packages/runtime-node/src/modules/cloudflare-workers/durable-object.ts - Object storage
packages/runtime-node/src/bindings/durable-objects/storage.ts - Alarm scheduling
packages/runtime-node/src/bindings/durable-objects/alarm-storage.ts - Workflow engine
packages/runtime-node/src/bindings/workflows/engine/engine.ts - Workflow host
packages/runtime-node/src/bindings/workflows/engine-object.ts - Other bindings
packages/runtime-node/src/bindings
Deployment and migration
- Deploy command
src/commands/deploy.ts - Migration command
src/commands/migrate.ts
Other components
- Worker developer
- Rivet platform
- S3 storage
- Cloudflare
Connections 19
- Worker developer → Orange CLI: runs commands
- Orange CLI → Dev command: dispatches
src/bin.ts - Orange CLI → Deploy command: dispatches
src/bin.ts - Orange CLI → Migration command: dispatches
src/bin.ts - Dev command → Wrangler config: loads config
src/config/load-wrangler.ts - Serve session → Wrangler config: loads config
src/serve/session.ts - Serve session → Runtime session server: starts session
src/serve/session.ts - Runtime session server → Worker dispatch: dispatches requests
packages/runtime-node/src/session/server.ts - Runtime session server → Durable Objects: routes RPC
packages/runtime-node/src/session/server.ts - Worker dispatch → Fetch compatibility: uses HTTP
packages/runtime-node/src/bindings/service.ts - Durable Objects → Object storage: uses storage
packages/runtime-node/src/bindings/durable-objects/storage.ts - Workflow host → Workflow engine: extends engine
packages/runtime-node/src/bindings/workflows/engine-object.ts - Workflow host → Durable Objects: uses object state
packages/runtime-node/src/bindings/workflows/engine-object.ts - Workflow engine → Durable Objects: uses durable APIs
packages/runtime-node/src/bindings/workflows/engine/engine.ts - Worker dispatch → Other bindings: exposes bindings
packages/runtime-node/src/bindings/service.ts - Deploy command → Rivet platform: rolls out image
- Rivet platform → S3 storage: stores object data
- Migration command → Cloudflare: moves data from
- Migration command → Rivet platform: moves data to