What is Rivet?
Rivet runs actors: small long-lived processes, each with in-memory state, its own SQLite database, WebSocket connections and timers, addressed by a key such as an agent or tenant ID. You write them in TypeScript with the rivetkit npm package (a Rust SDK also exists) and run them inside your own Node.js or Bun service; the Rivet engine schedules them, puts idle ones to sleep and wakes them on the next request with their state intact.
Version 3.0, released on 1 November 2026, replaced the Postgres or FoundationDB and NATS dependencies of 2.x with a storage engine on object storage, so a self-hosted cluster needs only the rivetdev/engine Docker image and an S3-compatible bucket. The project is Apache-2.0, written mostly in Rust, and is also sold as Rivet Cloud and as a managed deployment inside your own cloud account.
Is Rivet worth it?
Rivet's argument is that an agent spends most of its life waiting on a model, so it should not hold a whole VM while it waits. An actor keeps the conversation, memory and live client connections in one cheap process, and reaches a sandbox only when it has to run code. The README puts an actor at 72 KB of memory with a 4.99 ms p99 cold start, against 512 MiB and 1.70 s for a default E2B sandbox; those are Rivet's own figures from its benchmark against Cloudflare Durable Objects, run on Rivet 3.0.3, and the raw samples are published.
The programming model will be familiar to anyone who has used Durable Objects or Orleans. You define an actor with actions, a SQLite schema and connection hooks, then call agent.getOrCreate with a key from a typed client or React hook. Persistence, broadcast to every connected client, cron-style wake-ups and actor-to-actor calls come built in. In practice that replaces a Redis cache, a WebSocket server and a job queue for per-user state, which is the real saving.
The security defaults are sensible for a control plane. The engine refuses to start without auth.admin_token, browser clients get scoped JWTs that last at most a day, and outbound calls to non-routable addresses are blocked to limit request forgery. Two things need attention: the peer port 6421 is plaintext and unauthenticated and must stay on a private network, and the engine sends crash reports to Rivet unless telemetry.enabled is set to false. Actors run your code with your service's own credentials; Rivet's agentOS sandbox or an external one is what isolates code an agent writes.
The catch is pace. The 3.0 announcement listed multi-region, serverless and ACLs as not yet carried over from 2.x and advised teams needing them to stay put, a promised migration tool had not shipped, and ten stable releases landed between 1 and 11 November. An actor whose data has gone cold to S3 takes about 689 ms to wake, according to the same post, far from the headline 5 ms. With 403 open issues and pull requests, this is a fast-moving codebase from a small company, not a settled standard.
Our take: for per-session agent state with live clients, Rivet does in one library what Temporal and a WebSocket server do in two systems, and does it cheaper. For long business workflows where a lost step costs money, Temporal's maturity still counts for more.
Where it earns its place
A three-person startup shipping a customer-support agent
Keep each customer's conversation and memory alive across restarts and browser tabs
One actor per customer stores messages in its SQLite database and streams tokens to every open tab. Rivet Cloud's Free plan with one node covers a prototype; Hobby at $18/month plus an $18 R-5 node is the next step.
A platform engineer at a regulated fintech
Run stateful agent sessions without customer data leaving the company's own cloud
Self-host the rivetdev/engine image on Kubernetes with an S3 bucket the company owns, a generated admin token and telemetry switched off. Licence cost is nil; the work is operating three instances across zones.
A product team building a collaborative document editor
Sync edits between everyone in a document without a separate realtime service
One actor per document holds the current state and broadcasts changes over WebSockets; idle documents sleep and cost nothing until someone opens them again.
Before you commit
- Setup
- npm install rivetkit, define an actor and a registry, and run it locally; the README also offers a prompt that has a coding agent install Rivet's own skills and scaffold a project. Production self-hosting is the rivetdev/engine image on ports 6420 and 6421 with a bucket and a local disk per instance.
- Integrations
- TypeScript SDK for Node.js and Bun, a Rust SDK, React hooks, the Vercel AI SDK, Vitest, OpenTelemetry, Pino, and OpenAPI and AsyncAPI specs. Storage on S3, Google Cloud Storage, Azure Blob, Cloudflare R2, MinIO or a local filesystem.
- Data and privacy
- Actor data lives in a bucket you choose when self-hosting, or in Rivet Cloud. Writes are committed to disk in a majority of instances before moving to object storage. Crash reports go to Rivet by default; telemetry.enabled: false turns them off.
- Cost at scale
- Self-hosting is free with no usage limits. Rivet Cloud's Team plan is $156/month for three control-plane nodes and up to 10 actor nodes at $18 to $327 each; a Team cluster with one R-5 node is $174/month. Larger clusters are quoted by sales.
- Limits
- The control plane runs in one region for now; multi-region, serverless and ACLs were not in 3.0. Cold wakes from S3 take about 689 ms for a 47 MiB database. No 2.x to 3.0 migration tool was published at the time of checking.
What’s good
- One stateful actor with its own SQLite per agent, user or document
- Self-hosting needs only one Docker image and an S3 bucket
- Typed TypeScript client and React hooks over WebSockets
- Admin token required to start; scoped JWTs for browsers
What’s not
- 3.0 dropped multi-region, serverless and ACLs for now
- Cold wakes from S3 take hundreds of milliseconds
- Performance figures come from Rivet's own benchmark
- Crash reports go to Rivet unless turned off
Best for
TypeScript teams building agents or collaborative apps that need durable per-user state and live connections without running a sandbox per session.
Rivet alternatives
Rivet: common questions
- Is Rivet worth it?
- Rivet is the most direct way to give each agent its own durable process and database without paying for an idle sandbox, provided you can live with a 3.x line that changed under its users this month. We rate it 4.1 out of 5.
- How much does Rivet cost?
- Free to self-host under Apache-2.0. Rivet Cloud: Free $0, Hobby $18/month, Team $156/month, Enterprise $740/month, plus $18 to $327 per actor node per month.
- What are the downsides of Rivet?
- 3.0 dropped multi-region, serverless and ACLs for now; cold wakes from S3 take hundreds of milliseconds; performance figures come from Rivet's own benchmark; crash reports go to Rivet unless turned off.
- Who is Rivet best for?
- TypeScript teams building agents or collaborative apps that need durable per-user state and live connections without running a sandbox per session.
- How much does Rivet cost for a team or in production?
- Self-hosting is free with no usage limits. Rivet Cloud's Team plan is $156/month for three control-plane nodes and up to 10 actor nodes at $18 to $327 each; a Team cluster with one R-5 node is $174/month. Larger clusters are quoted by sales.
- Is Rivet safe for company data?
- Actor data lives in a bucket you choose when self-hosting, or in Rivet Cloud. Writes are committed to disk in a majority of instances before moving to object storage. Crash reports go to Rivet by default; telemetry.enabled: false turns them off.
- What are the best Rivet alternatives?
- The closest alternatives we have reviewed are Temporal, Dapr and Mastra.
Answers checked Nov 13, 2026.