< all projects

D.O.R.I.S.

Durable Offloaded Rust Isomorphic Stack. My write-up of a Cloudflare-native pattern: Rust compiled to WASM, Axum inside a Worker, Durable Objects to get around the CPU budget.

status
Live docs
role
Author
when
2026
kind
Architecture write-up
the TSPL2 that prints this label
SIZE 101.6 mm, 50.8 mm
GAP 3 mm, 0 mm
DIRECTION 1
CLS
TEXT 32,28,"4",0,1,1,"D.O.R.I.S."
TEXT 32,92,"2",0,1,1,"Architecture write-up"
TEXT 32,124,"2",0,1,1,"2026"
BARCODE 32,196,"128",120,0,0,1,2,"https://ansh.bhalala.org/projects/doris"
PRINT 1,1

D.O.R.I.S. stands for Durable Offloaded Rust Isomorphic Stack. It's my write-up of a pattern for running Rust on Cloudflare, which I pulled out of a Bitwarden-compatible server (warden-worker) while studying how it fits together. The site is live at doris.bhalala.org.

The pattern

  1. Rust compiled to WASM, with an Axum router running inside the Worker.
  2. A thin JS entry that sends WebSockets and CPU-heavy requests to Durable Objects.
  3. A Durable Object that reuses the same Axum router to get a 30 second CPU budget for heavy work.
  4. A second Durable Object that fans out WebSocket pushes by tag.
  5. D1 behind a single Db type.
  6. Cloudflare's own rate limiting and static assets.
  7. Push to main and it deploys, with separate workflows for prod, dev, and backups.

Why write it down

The Worker CPU limit is the wall everyone hits with Rust on Cloudflare. Routing heavy calls to a Durable Object running the same router gets around it without a second codebase.

Built with

  • Rust
  • WASM
  • Axum
  • Durable Objects
  • D1
  • MDX