Launch HN: Rivet (YC W23) – Scale and Orchestrate Agents on S3
Rivet is a novel orchestrator designed for agentic workloads, leveraging the actor model. Each Rivet Actor operates as a long-lived process with in-memory state, a SQLite database, WebSockets for real-time communication, and scheduling capabilities. These Actors are addressed by unique keys and can be created per agent, session, user, or tenant, running on Node.js, Bun, or Rust.
One of Rivet's key features is its simplicity and compatibility. Each product shipped by Rivet is an Actor, orchestrated by the same control plane. This control plane remains consistent, whether deployed in local development or production environments. Rivet supports a range of deployment options, including Docker Compose, Kubernetes, VMs, bare metal, Hetzner, AWS ECS, Railway, and Render. Tools such as Vitest, OpenTelemetry, Pino, AI SDK, OpenAPI, and AsyncAPI are readily available for use with Rivet.
Deploying Rivet is straightforward, as it runs within the user's own cloud account, including air-gapped environments. The control plane and storage are hosted within the user's Virtual Private Cloud (VPC), ensuring secure and flexible deployment. Rivet Cloud, on the other hand, offers fully managed, dedicated clusters on AWS or GCP, allowing users to run their app's Docker image as nodes or bring their own nodes.
Rivet's self-hosting capabilities are extensive, with the control plane adaptable to various containerized environments such as Docker Compose, Kubernetes, VMs, and bare metal. For enterprise support, Rivet provides a self-hosted deployment option. Importantly, Rivet requires only an object storage bucket (such as Amazon S3, Google Cloud Storage, Azure Blob Storage, or any S3-compatible store) as its sole dependency.
This setup eliminates the need for a separate database or message bus, with control plane instances discovering each other through the bucket.
Unlike traditional approaches that involve starting a VM or container per agent, Rivet's Actors run inside a shared node process. This design results in a significantly smaller footprint—72 KB of RAM with a 4.99 ms p99 start time, compared to 512 MiB and 1.70 seconds for traditional sandboxing. When idle, Rivet Actors hibernate, optimizing resource usage. For untrusted code execution, Rivet offers agentOS, a secure and efficient solution.
Rivet is often positioned as an open-source alternative to Cloudflare Durable Objects, offering greater ease of self-hosting and scalability. It addresses several limitations of Durable Objects, including the 128 MB memory cap, the 10 GB SQLite storage limit, and the random eviction of Actors. Rivet also provides built-in connection handling, event broadcasting, durable scheduling and cron functionality, full Vitest support, lifecycle hooks for draining, and control over Actor upgrades.
These features set Rivet apart from Cloudflare Durable Objects, offering a more flexible and powerful solution for modern workloads.
Rivet's virtual actor pattern, akin to Orleans, emphasizes modern requirements such as SQLite persistence and support for diverse runtimes. While Erlang and Akka offer virtual actors, Rivet stands out with its focused approach, catering specifically to the needs of contemporary applications. Rivet's requirements are minimal—it only necessitates a standard process that connects to the control plane via WebSocket, accommodating Node.js, Bun, Rust, or any other runtime.
This simplicity underscores Rivet's commitment to providing a fast, high-density, and scalable orchestrator for a wide array of workloads.
Written by urgent.news from Hacker News's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.