Rivet is an open-source actor runtime that replaces Cloudflare Workers Durable Objects with self-hosted stateful processes and per-actor SQLite storage.
Cloudflare Workers binds stateful Durable Objects to a closed proprietary edge with strict CPU and memory budgets. Rivet provides an actor runtime that gives developers the same stateful primitives, persistent in-memory execution, and co-located SQLite storage on self-hosted infrastructure. Teams run the orchestration engine and workers on their own hardware without sacrificing local inspectability or rapid boot times.
Cloudflare Workers simplifies edge hosting when requests are stateless, but stateful workloads require Durable Objects. That dependency ties application state to Cloudflare's proprietary APIs, strict isolate memory limits, and vendor pricing tiers. Rivet provides an equivalent actor model—giving each agent, session, or document an addressable process with an embedded SQLite database—while decoupling execution from any specific cloud provider. Developers can embed actors inside Node.js or Bun services, deploy workers across Docker containers, and coordinate them via a self-hosted Rust control plane.
The operational tradeoff swaps cloud platform bills for infrastructure maintenance. Cloudflare eliminates server management, whereas scaling Rivet requires operating an orchestration engine backed by PostgreSQL or FoundationDB. In return, DevOps engineers gain full network visibility, unmetered in-memory processing, and the ability to run stateful actors inside private VPCs or on-premises clusters subject to strict data-residency policies.
Is Rivet a drop-in replacement for Cloudflare Workers? No, Rivet replaces stateful primitives like Durable Objects rather than Cloudflare's global CDN and DNS network. Teams run Rivet actors for application state while routing traffic through standard reverse proxies.
What storage backends are required to self-host Rivet? Single-node instances run on local file storage or SQLite, while multi-node clusters rely on PostgreSQL or FoundationDB for coordination.
Can Rivet run in existing container environments? Yes, the engine distributes as a Docker container or Linux binary, and workers deploy to Kubernetes, ECS, or bare-metal Linux nodes.
Rivet is an appropriate choice for organizations needing stateful actors and isolated SQLite persistence without locking architecture into proprietary cloud runtimes. With active maintenance, unarchived status, and steady updates through September 2026, its permissive Apache-2.0 license ensures engineering teams can deploy, modify, and self-host the engine across custom infrastructure without commercial licensing restrictions. Teams without the operational capacity to manage PostgreSQL or FoundationDB should evaluate managed deployment options before running the multi-node control plane in-house.
We started this exact setup from scratch in a clean Linux machine on Nov 2, 2026 and checked it through Rivet's own API: every check passed. Recipes are re-checked regularly and removed if they stop working.
mkdir -p rivet && cd rivet
curl -fsSL https://open-source.store/tools/rivet/compose.yml -o compose.ymlcat > .env <<EOF
RIVET_ADMIN_TOKEN=$(openssl rand -hex 16)
EOFRIVET_ADMIN_TOKEN — Admin authentication token for managing namespaces, node pools, and actors. Generated above; keep it secret.docker compose up -dservices:
rivet:
image: rivetdev/engine:3.0.0
ports:
- "6420:6420"
environment:
RIVET__AUTH__ADMIN_TOKEN: ${RIVET_ADMIN_TOKEN}
RIVET__STORAGE__LOG_DIRECTORY: /var/lib/rivet/log
RIVET__STORAGE__AUTO_PROVISION_PARTITIONS: 1
RIVET__STORAGE__BALANCING__ENABLED: "false"
RIVET__OBJECT_STORAGE__PRIMARY__FILE_SYSTEM__PATH: /var/lib/rivet/objects
volumes:
- rivet-log:/var/lib/rivet/log
- rivet-objects:/var/lib/rivet/objects
restart: always
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:6420/health"]
interval: 5s
timeout: 5s
retries: 10
volumes:
rivet-log:
rivet-objects:
Free IDE for Java, Kotlin, Go, TypeScript and Python. Built on IntelliJ Community, fully open source, 300+ plugins.
Show that Rivet is listed as an open-source alternative. Paste into your README:
Ubuntu 24.04 · Apple container, Docker 29.1.3, Compose 2.40.3+ds1-0ubuntu1~24.04.1. Images pulled in 60 s: rivetdev/engine:3.0.0.
Based on the upstream setup. Official control plane image pinned to 3.0.0; configured via environment variables for single-instance local filesystem object storage and embedded tablet storage; admin token moved to .env.
rivet-1 | 2026-11-02T23:40:12.513684427Z ts=2026-11-02T23:40:12.513599885Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:12.518386802Z ts=2026-11-02T23:40:12.518310635Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:12.518888927Z ts=2026-11-02T23:40:12.518852802Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:12.519747552Z ts=2026-11-02T23:40:12.519706593Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:12.520051760Z ts=2026-11-02T23:40:12.520020385Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:12.524483718Z ts=2026-11-02T23:40:12.524429385Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:12.525044135Z ts=2026-11-02T23:40:12.525013677Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:12.525842593Z ts=2026-11-02T23:40:12.525805677Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:13.523106510Z ts=2026-11-02T23:40:13.50442101Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:13.523158302Z ts=2026-11-02T23:40:13.504634844Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:13.523161927Z ts=2026-11-02T23:40:13.504914552Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:13.523163510Z ts=2026-11-02T23:40:13.50598951Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:13.523164594Z ts=2026-11-02T23:40:13.512755844Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:13.523165635Z ts=2026-11-02T23:40:13.515496135Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:14.498641553Z ts=2026-11-02T23:40:14.497381719Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:14.498758803Z ts=2026-11-02T23:40:14.497960928Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:14.498955261Z ts=2026-11-02T23:40:14.498899469Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:14.505168761Z ts=2026-11-02T23:40:14.505048428Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:14.510087636Z ts=2026-11-02T23:40:14.510000469Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:14.513354344Z ts=2026-11-02T23:40:14.513285219Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:14.513621053Z ts=2026-11-02T23:40:14.513572219Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:14.514623344Z ts=2026-11-02T23:40:14.514571011Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:15.505980970Z ts=2026-11-02T23:40:15.502812011Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:15.506001511Z ts=2026-11-02T23:40:15.503021095Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:15.511326220Z ts=2026-11-02T23:40:15.511238636Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:15.512727595Z ts=2026-11-02T23:40:15.512674053Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:15.521522595Z ts=2026-11-02T23:40:15.521455511Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:15.521853720Z ts=2026-11-02T23:40:15.521773136Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:16.500049470Z ts=2026-11-02T23:40:16.499551887Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:16.500133137Z ts=2026-11-02T23:40:16.499880303Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:16.500367637Z ts=2026-11-02T23:40:16.500325637Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:16.500944095Z ts=2026-11-02T23:40:16.500898387Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:17.510145971Z ts=2026-11-02T23:40:17.509979054Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:17.510494804Z ts=2026-11-02T23:40:17.510432721Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:17.519491679Z ts=2026-11-02T23:40:17.519380179Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:17.520392637Z ts=2026-11-02T23:40:17.520344137Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:18.503335846Z ts=2026-11-02T23:40:18.502530679Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:18.503369804Z ts=2026-11-02T23:40:18.502841513Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:18.503372596Z ts=2026-11-02T23:40:18.502899971Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:18.503374013Z ts=2026-11-02T23:40:18.502920096Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:18.503594721Z ts=2026-11-02T23:40:18.503564013Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:18.511553971Z ts=2026-11-02T23:40:18.511441263Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:18.518064471Z ts=2026-11-02T23:40:18.517983054Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:18.521236471Z ts=2026-11-02T23:40:18.521166721Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:18.525968721Z ts=2026-11-02T23:40:18.525939638Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:19.507245013Z ts=2026-11-02T23:40:19.503406638Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:19.526098430Z ts=2026-11-02T23:40:19.52599268Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:20.494450389Z ts=2026-11-02T23:40:20.49328918Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:21.502331348Z ts=2026-11-02T23:40:21.502177848Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:21.507193931Z ts=2026-11-02T23:40:21.506816806Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:21.507786681Z ts=2026-11-02T23:40:21.507748806Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:21.509287514Z ts=2026-11-02T23:40:21.507082389Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:21.518416973Z ts=2026-11-02T23:40:21.517956556Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:21.519093139Z ts=2026-11-02T23:40:21.518320556Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:21.526628723Z ts=2026-11-02T23:40:21.526556306Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:21.526858473Z ts=2026-11-02T23:40:21.526824514Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:22.502319167Z ts=2026-11-02T23:40:22.502079292Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:22.504202708Z ts=2026-11-02T23:40:22.504114208Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:23.499301000Z ts=2026-11-02T23:40:23.495396334Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:23.499815542Z ts=2026-11-02T23:40:23.495457459Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:23.505913042Z ts=2026-11-02T23:40:23.50582975Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:23.506913417Z ts=2026-11-02T23:40:23.506833125Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:23.512634667Z ts=2026-11-02T23:40:23.512570875Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:23.512757917Z ts=2026-11-02T23:40:23.512727542Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:23.516044250Z ts=2026-11-02T23:40:23.5158415Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:23.517320959Z ts=2026-11-02T23:40:23.517270792Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:23.517619750Z ts=2026-11-02T23:40:23.517593334Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:23.517662834Z ts=2026-11-02T23:40:23.517647459Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:24.498392418Z ts=2026-11-02T23:40:24.497188668Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:24.498416209Z ts=2026-11-02T23:40:24.497250959Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:24.498418501Z ts=2026-11-02T23:40:24.498153709Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:24.498849084Z ts=2026-11-02T23:40:24.498791543Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:24.504208168Z ts=2026-11-02T23:40:24.504133376Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:24.505361459Z ts=2026-11-02T23:40:24.505316876Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:25.521241793Z ts=2026-11-02T23:40:25.495451085Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:25.521256918Z ts=2026-11-02T23:40:25.496726626Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:25.521259001Z ts=2026-11-02T23:40:25.50080946Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:25.521260501Z ts=2026-11-02T23:40:25.510770918Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:25.521262168Z ts=2026-11-02T23:40:25.51087446Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:25.521265668Z ts=2026-11-02T23:40:25.511370876Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:25.521267251Z ts=2026-11-02T23:40:25.512085585Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:25.521268460Z ts=2026-11-02T23:40:25.512103668Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:25.521269668Z ts=2026-11-02T23:40:25.519778335Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:25.521270876Z ts=2026-11-02T23:40:25.519987751Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:26.510398793Z ts=2026-11-02T23:40:26.510226627Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:26.510913752Z ts=2026-11-02T23:40:26.510848252Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:26.511227668Z ts=2026-11-02T23:40:26.511182752Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:26.512092418Z ts=2026-11-02T23:40:26.512020502Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:26.521707127Z ts=2026-11-02T23:40:26.521623919Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:26.524481627Z ts=2026-11-02T23:40:26.524410877Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:27.495893377Z ts=2026-11-02T23:40:27.495465877Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:27.495917002Z ts=2026-11-02T23:40:27.495731002Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:27.509214627Z ts=2026-11-02T23:40:27.509112627Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:27.511258627Z ts=2026-11-02T23:40:27.511190086Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:27.512128419Z ts=2026-11-02T23:40:27.512073794Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:27.512314919Z ts=2026-11-02T23:40:27.512274961Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:27.513025919Z ts=2026-11-02T23:40:27.512960461Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:27.514710044Z ts=2026-11-02T23:40:27.514638211Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:27.519792377Z ts=2026-11-02T23:40:27.519742169Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:27.521906461Z ts=2026-11-02T23:40:27.521874711Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:28.495412461Z ts=2026-11-02T23:40:28.494560253Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:28.499808419Z ts=2026-11-02T23:40:28.499413711Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:28.499828711Z ts=2026-11-02T23:40:28.499643544Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:28.500201836Z ts=2026-11-02T23:40:28.500153669Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:28.501745128Z ts=2026-11-02T23:40:28.501628378Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:28.501756544Z ts=2026-11-02T23:40:28.501646128Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:28.501757794Z ts=2026-11-02T23:40:28.501656294Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:28.501759169Z ts=2026-11-02T23:40:28.501674003Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:28.501839961Z ts=2026-11-02T23:40:28.501812961Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:28.502386628Z ts=2026-11-02T23:40:28.502338961Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:28.509111628Z ts=2026-11-02T23:40:28.509011503Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:28.510670669Z ts=2026-11-02T23:40:28.510577961Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:29.510242462Z ts=2026-11-02T23:40:29.51013642Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:29.511471128Z ts=2026-11-02T23:40:29.51140667Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:29.517857962Z ts=2026-11-02T23:40:29.51780467Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:29.518287087Z ts=2026-11-02T23:40:29.518244587Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:31.511072046Z ts=2026-11-02T23:40:31.510828421Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:31.511886963Z ts=2026-11-02T23:40:31.511817296Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:32.497898338Z ts=2026-11-02T23:40:32.497690838Z level=warn message="HTTP connection error: invalid URI" rivet-1 | 2026-11-02T23:40:32.504334255Z ts=2026-11-02T23:40:32.503612796Z level=warn message="HTTP connection error: invalid URI"