Need help with cloudworker?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

497 Stars 79 Forks MIT License 233 Commits 44 Opened issues


Run Cloudflare Worker scripts locally

Services available


Need anything else?

Contributors list

⚠️ Cloudworker is no longer actively maintained at Dollar Shave Club. If you're interested in volunteering to help, please open an issue ⚠️

Cloudworker allows you to run Cloudflare Worker scripts locally.


Install via NPM:

npm install -g @dollarshaveclub/cloudworker

Package Usage

const Cloudworker = require('@dollarshaveclub/cloudworker')

const simpleScript = addEventListener('fetch', event => { event.respondWith(new Response('hello', {status: 200})) })

const req = new Cloudworker.Request('') const cw = new Cloudworker(simpleScript) cw.dispatch(req).then((res) => { console.log("Response Status: ", res.status) res.text().then((body) =>{ console.log("Response Body: ", body) }) })

CLI Usage

Usage: cloudworker [options] 

Options: -p, --port Port (default: 3000) -d, --debug Debug -s, --kv-set [variable.key=value] Binds variable to a local implementation of Workers KV and sets key to value (default: []) -f, --kv-file [variable=path] Set the filepath for value peristence for the local implementation of Workers KV (default: []) -w, --wasm [variable=path] Binds variable to wasm located at path (default: []) -c, --enable-cache Enables cache -r, --watch Watch the worker script and restart the worker when changes are detected -h, --help output usage information


cloudworker example/example.js
curl localhost:3000/
cloudworker --debug example/example.js
curl localhost:3000/

Workers KV

cloudworker --debug --kv-set KeyValueStore.key=value --kv-set KeyValueStore.hello=world example/example-kv.js
curl localhost:3000/

Workers KV with Persistence

cloudworker --debug --kv-file KeyValueStore=kv.json --kv-set KeyValueStore.key=value --kv-set KeyValueStore.hello=world example/example-kv.js
curl localhost:3000/



cloudworker --debug --wasm Wasm=example/simple.wasm example/example-wasm-simple.js
curl localhost:3000/

WebAssembly Source

Inverse Square Root

cloudworker --debug --wasm isqrt=example/isqrt.wasm example/example-wasm-isqrt.js
curl localhost:3000/?num=9

WebAssembly Source


cloudworker --debug --wasm RESIZER_WASM=example/resizer.wasm example/example-wasm-resizer.js
curl localhost:3000/wasm-demo/dogdrone.png?width=210 # or open in browser

WebAssembly Source

Cloudflare Worker Compatibility

Cloudworker strives to be as similar to the Cloudflare Worker runtime as possible. A script should behave the same when executed by Cloudworker and when run within Cloudflare Workers. Please file an issue for scenarios in which Cloudworker behaves differently. As behavior differences are found, this package will be updated to match the Cloudflare Worker runtime. This may result in breakage if scripts depended on those behavior differences.

Release Process

For beta releases: - Create a new release branch named

. e.g.
- Run
npm version [version]-beta.[beta number]
. e.g
npm version 0.0.10-beta.1
- Push branch to origin. - Run
npm publish --tag beta
. - Create a new release in Github using tag created by
npm version
, write relevant release notes, and ensure "This is a pre-release" is checked. - Bug fixes and changes should be made on feature branches, merged into master, and then merged into the release branch. - Subsequent beta releases of the same beta version should be made off of the same release branch.

For production releases: - Merge release branch (if one exists) into master. - Run

npm version [version]
. e.g.
npm version 0.0.10
- Push master to origin. - Run
npm publish
. - Create a new release in Github using tag created by
npm version
and copy release notes from beta.



We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.