Skip to main content

The primitive for
software that thinks.

Rivet Actors are a serverless primitive for stateful workloads.

Start Building
Give this to your coding agent
The Thinker by Auguste Rodin
A Lady Writing by Johannes Vermeer
Portrait of a Man (Possibly Jan Snoeck) by Jan Gossaert

The Thinker

Auguste Rodin · modeled 1880

See it in action.

One primitive that adapts to agents, workflows, collaboration, and more.

backend.ts
// One actor per agent
const agent = actor({
  // State is persisted automatically
  state: { messages: [], memory: {} },
  actions: {
    chat: (c, message) => {
      c.state.messages.push(message);
      const response = await c.llm.chat(c.state);
      c.state.memory = response.memory;
      return response.text;
    },
  },
});
client.ts
const agent = client.agent.get("agent-123");
const reply = await agent.chat("Hello!");
Rivet Actor/ AI Agent

Each agent runs as its own actor with persistent context, memory, and the ability to schedule tool calls.

How Actors work.

Define state, write a run loop, broadcast events.

01/04

Define the Actor

An Actor is an independent process with its own isolated state. Create one per user, per agent, or per session.

actor({
});
02/04

Declare State

State is automatically persisted and loaded into memory when the Actor wakes. No database queries. No ORM. Just an object.

state: { messages: [], history: [] },
03/04

Process Messages

The run loop executes continuously. Wait for messages from a queue, process them with your logic. The Actor stays alive as long as it needs to.

run: async (c) => {
while (true) {
const message = await c.queue.next("message");
const response = await ai(message);
c.state.history.push({ message, response });
04/04

Broadcast in Real-time

Push updates to all connected clients instantly. WebSockets and SSE are built in — no Socket.io, no pub/sub layer, just one line.

c.broadcast("response", response);
}
},

Runs where you do.

Rivet Actors integrate with your existing infrastructure, frameworks, runtimes, and tools.

Rivet Inspector Dashboard

Built-In Observability

Powerful debugging and monitoring tools that work seamlessly from local development to production at scale.

Live State Inspection

View and edit your actor state in real-time as messages are sent and processed

Network Inspector

Monitor active connections with state and parameters for each client

Event Monitoring

See all events happening in your actor in real-time and track every state change and action as it happens

REPL

Debug your actor in real-time by calling actions, subscribing to events, and interacting directly with your code

Start local. Scale to millions.

Three options, same API. Pick what works for you.

Self-Host

Single Rust binary or Docker container. Works with Postgres, file system, or FoundationDB. Full dashboard included.

$docker run -p 6420:6420 rivetkit/engine
Rivet

Rivet Cloud

Fully managed. Global edge network. Connects to your existing cloud — Vercel, Railway, AWS, wherever you already deploy.

  • Global Edge Network
  • Scales Seamlessly
  • Connects To Your Cloud

Open Source

Apache 2.0. Audit the code, contribute features, run it however you want.

$git clone https://github.com/rivet-gg/rivet
$cd rivet && cargo run -p rivet-engine

Infrastructure for software that thinks.

The next generation of software needs a new kind of backend. This is it.