OpenWorkers is an open-source runtime for executing untrusted JavaScript in V8 isolates. It brings the power of edge computing to your own infrastructure.
What works today
Features
Bindings
- β’ KV storage (get, put, delete, list)
- β’ PostgreSQL database
- β’ S3/R2-compatible storage
- β’ Service bindings
- β’ Environment variables & secrets
Web APIs
- β’ fetch, Request, Response
- β’ ReadableStream
- β’ crypto.subtle
- β’ TextEncoder/Decoder, Blob
- β’ setTimeout, AbortController
Architecture
βββββββββββββββββββ
β nginx (proxy) β
ββββββββββ¬βββββββββ
β
βββββββββββββββββ¬βββββββββ΄βββ¬ββββββββββββββββ
β β β β
β β β β
ββββββββββΈβββββββββ ββββββΈβββββ ββββββΈβββββ ββββββββββΈβββββββββ
β dashboa...
OpenWorkers is an open-source runtime for executing untrusted JavaScript in V8 isolates. It brings the power of edge computing to your own infrastructure.
What works today
Features
Bindings
- β’ KV storage (get, put, delete, list)
- β’ PostgreSQL database
- β’ S3/R2-compatible storage
- β’ Service bindings
- β’ Environment variables & secrets
Web APIs
- β’ fetch, Request, Response
- β’ ReadableStream
- β’ crypto.subtle
- β’ TextEncoder/Decoder, Blob
- β’ setTimeout, AbortController
Architecture
βββββββββββββββββββ
β nginx (proxy) β
ββββββββββ¬βββββββββ
β
βββββββββββββββββ¬βββββββββ΄βββ¬ββββββββββββββββ
β β β β
β β β β
ββββββββββΈβββββββββ ββββββΈβββββ ββββββΈβββββ ββββββββββΈβββββββββ
β dashboard β β api β β logs * β β runner (x3) * β
βββββββββββββββββββ ββββββ¬βββββ ββββββ°βββββ ββββββββββ°βββββββββ
β β β
β β β
ββββββββββΈβββββββββ β ββββββββββΈβββββββββ
β postgate * β ββββββββ₯ nats β
βββββββββββββββββββ ββββββββββ°βββββββββ
β
β
βββββββββββββββββββ ββββββββ΄ββββββββ
* ββββββ₯ PostgreSQL β β scheduler * β
βββββββββββββββββββ ββββββββββββββββ
- V8 Isolates: Secure sandboxing with CPU (100ms) and memory (128MB) limits per worker.
- Cron Scheduling: Built-in support for 5 or 6-field cron syntax.
- Compatibility: Cloudflare Workers syntax compatible.
Self-hosting
Deployment is designed to be simple. A single PostgreSQL database and a single Docker Compose file is all you need.
Why I built this
This project has been evolving for about 7 years. I started experimenting with vm2 for sandboxing JS, then Cloudflare launched Workers and I got hooked on the model. When Deno came out, I switched to deno-core and ran on that for two years. Recently, with Claudeβs help, I rewrote everything on top of rusty_v8 directly.
The goal has always been the same: run untrusted JavaScript securely on your own servers, with the same DX as Cloudflare Workers but without vendor lock-in.
Your Data
Never leaves your infrastructure
Predictable Costs
No per-request pricing
No Lock-in
Cloudflare Workers compatible
Next up: Execution recording & replay for deterministic debugging.