mrkeyoor.com_
Sat 08 Aug 21:01 UTC
Dev Toolsevaluationupdated 08 Aug 2026

rivet

Rivet is a framework and orchestration engine for building long-lived application workers called actors, each with its own state, queue, timers, and real-time connections. It is meant to replace the awkward mix of databases, message queues, schedulers, and WebSocket services that often sits behind agents, chats, collaborative documents, and per-customer workloads.

Verdict

Rivet is unusually coherent if your application naturally breaks into one stateful worker per agent, room, document, or customer. The TypeScript experience and inspector make it easy to prove the model locally, but self-hosting at scale is materially more involved than the one-container introduction. Trial it for a new stateful service, and favor Rivet Cloud or a carefully tested modest deployment until the open runtime edges and storage boundaries fit your risk tolerance.

Setup4/5Fast library start, with substantial production infrastructure work
Docs5/5Clear quickstarts, architecture guides, checklists, and examples
Community4/5Active releases, issue responses, and heavy pull-request traffic
Maturity3/5Useful core, but SDK and self-hosted scaling limits remain

Who it’s for

  • TypeScript teams building stateful agents, chat rooms, collaborative tools, or per-tenant services.
  • Developers who want one programming model for state, durable queues, schedules, workflows, and real-time events.
  • Teams that want to begin with an in-process library, then choose Rivet Cloud or a self-hosted engine.
  • Operators who need an Apache 2.0 actor platform and are prepared to own its storage and networking in production.

Who it’s NOT for

  • Large self-hosted deployments that require an entirely community-supported storage path: Rivet's docs describe PostgreSQL as suitable for light-to-moderate workloads and direct larger deployments toward FoundationDB with enterprise support.
  • Python or Rust teams expecting equal SDK maturity: the repository labels those clients experimental while TypeScript is the primary path.
  • .NET teams that need an official client today: the open .NET support request says users must currently build an HTTP wrapper or a Node.js bridge.
  • Operators who expect the local Docker demo to be production architecture: Rivet's checklist adds multiple engine nodes, NATS replicas, TLS, backups, failover, health checks, autoscaling, and OpenTelemetry.
  • Applications that cannot absorb young-runtime regressions: current reports cover a restart-time SQLite coordinator error, scheduled no-payload action failures, and a broken self-hosted Inspector WebSocket console.

Setup reality

The first experiment is genuinely quick: install rivetkit, define an actor, and run it with Node.js, Bun, or Deno, or start the engine container on port 6420. A serious self-hosted deployment is a platform project. You must choose file storage for one node or PostgreSQL for multiple nodes, secure the admin endpoint, register runners, terminate TLS, add NATS for multi-node messaging, arrange backups and failover, and monitor engine health. Rivet Cloud removes much of that work, but then the practical decision includes a managed service rather than only an open-source library.

A convincing model for stateful application work

Rivet starts from a useful observation: many modern backends are collections of small, stateful things. An AI agent has conversation memory and a queue of messages. A collaborative document has connected editors and updates to broadcast. A chat room has history, timers, and live clients. Teams commonly spread those responsibilities across a web server, Redis, a database, a queue, a scheduler, and a separate real-time service. Rivet puts them behind an actor abstraction instead.

Each actor is a long-running logical process with in-memory state, persistence, a durable queue, scheduling, workflows, and WebSocket communication. It can sleep while idle and resume when work arrives. The project suggests one actor per agent, session, user, document, or tenant. That is the right level of explanation: Rivet is not an agent framework or database replacement by itself, but an application runtime that coordinates stateful units of work.

The repository contains much more than a small SDK. RivetKit provides the TypeScript programming model, while the Rust engine handles actor orchestration, routing, durable execution, and storage. The dashboard supplies an SQLite viewer, workflow inspection, event monitoring, and a REPL. Experimental Rust and Python clients sit alongside the main TypeScript implementation. Apache 2.0 licensing keeps both the engine and library available for self-hosting.

The local developer experience is the best part

A basic trial is refreshingly direct. Install rivetkit, define an actor and registry, start the server, then connect from TypeScript or React. Node.js, Bun, and Deno are documented, and the local process exposes developer tools on port 6420. Teams can also install Rivet's coding-agent skills for Claude Code, Cursor, Windsurf, and compatible assistants.

The API brings related behavior together. Actor code can update local state, iterate over queued messages, stream events to clients, schedule future work, and run retryable multi-step operations. Keeping those concerns in one unit should make an agent session or collaborative room easier to reason about than a chain of unrelated services.

Rivet publishes striking comparisons for cold starts, memory use, and local reads. The README includes methodology, which is better than presenting bare numbers, but buyers should treat them as project-run measurements under specific hardware and deployment assumptions. A Kubernetes pod and a Rivet actor are not interchangeable units. The practical advantage is the architecture's intent: small stateful processes that can hibernate, not a promise that every workload will reproduce the headline figures.

Self-hosting changes the size of the job

The README's single Docker command is enough to inspect the engine. The Docker Compose guide then shows the real shape: an engine, persistent storage, an application runner, endpoint credentials, and runner registration. Production adds decisions that cannot be hidden by the actor API.

For a single node, the docs recommend the file-system backend based on RocksDB. For multiple nodes, they recommend PostgreSQL, but explicitly describe it as suitable for light-to-moderate workloads, roughly up to 1,000 concurrent actors. The most scalable FoundationDB path comes with a direction to contact enterprise support. That boundary matters. Organizations choosing open source specifically to operate a large platform without vendor involvement should validate it before committing.

The production checklist calls for at least two engine nodes, a load balancer, two or more NATS replicas for multi-node messaging, TLS termination, database backups and failover, resource limits, health probes, autoscaling, and OpenTelemetry. Rivet Cloud and self-hosted Rivet are therefore very different purchasing decisions. The managed route lets an application team focus on actor code; the self-hosted route needs platform ownership.

The rough edges are specific, not theoretical

Recent reports show a runtime still being hardened. One issue describes an actor action hitting a closed SQLite coordinator immediately after a local engine restart, with a bounded client retry as the observed workaround. Another reports scheduled actions without payloads failing validation in the Effect integration. A self-hosted user found the Inspector console unable to open its WebSocket because the UI omitted a protocol header. There is also a release report showing 2.3.9 artifacts identifying themselves as 2.3.7.

These reports argue for pinning versions, exercising restart and recovery paths, and testing the dashboard against the exact engine image. External identity also needs attention: an open request says validating OIDC or JWT tokens from providers such as Keycloak currently requires manual discovery, key fetching, verification, and caching code.

Language support is another practical filter. TypeScript has the clearest path, while the repository calls Rust and Python experimental. An older open request asks for a .NET SDK and describes HTTP wrappers or a Node.js bridge as the current options. Polyglot organizations should check the client they actually need, not infer equal support from the Rust-heavy repository language.

Healthy, ambitious, and best adopted deliberately

The repository was pushed on August 7, 2026, release 2.3.10 arrived on July 26, and issues and pull requests were still changing on August 8. GitHub's combined open count is dominated by pull requests, while the open issue search returned a much smaller set of current reports. This is an active project with a busy development queue, not an abandoned engine with an old release badge.

Documentation is excellent for a project with this breadth. It separates local quickstarts, deployment targets, runtime modes, storage backends, security, and production checks. Crucially, it states the PostgreSQL and FoundationDB boundaries instead of hiding them.

Rivet is a strong trial for a TypeScript team whose system already looks like actors: agents, rooms, documents, sessions, or tenants with state and live connections. It is less compelling as a casual replacement for a queue, or as a large self-hosted platform chosen only from the quickstart. Build one representative actor, test failure recovery, and price the managed and self-hosted paths separately. If the model simplifies the application enough to justify the operating layer, Rivet earns a place on the shortlist.

Alternatives

ProjectWhat it isPick it when
PartyKitA JavaScript platform for real-time, room-oriented applications built around server-side state and WebSockets.pick this instead when collaborative rooms and a JavaScript-first real-time API matter more than Rivet's wider workflow and self-hosted engine scope.
RestateA durable execution system for reliable services, workflows, and stateful virtual objects.pick this instead when reliable service calls and durable workflows are the center of the design, especially across several supported languages.
TemporalA mature workflow engine for long-running business processes with durable retries and event history.pick this instead when workflow durability and operational maturity matter more than per-actor in-memory state and built-in real-time connections.

What people are saying

  1. [github-trending] rivet-dev/rivet

Sources

  1. Rivet repository and README
  2. Rivet self-hosting overview
  3. Rivet production checklist
  4. SQLite coordinator restart issue
  5. Self-hosted Inspector WebSocket issue
  6. Rivet 2.3.10 release