Count: {count}
Count: {count}
Lorem ipsum
", }); }, }, }); export const app = setup({ actors: { user } }); export type App = typeof app; ```This email was scheduled earlier!
", }); }, }, }); ``` ```typescript client.ts const client = createClientDon't forget to check in today.
", }); } // Reschedule for tomorrow await c.schedule.at(Date.now() + 24 * 60 * 60 * 1000, "checkActivity"); }, }, }); ``` ```typescript client.ts const client = createClientThe system is experiencing issues.
", }); } // Reschedule next check await c.schedule.at(Date.now() + 60000, "checkHealth"); }, }, }); // Mock function async function mockHealthCheck() { return Math.random() > 0.1; // 90% chance of being healthy } ``` ```typescript client.ts const client = createClient
The easiest way to build{" "}
stateful,{" "}
AI agent,{" "}
collaborative, or{" "}
local-first{" "}
applications.
Deploy to Rivet, Cloudflare, Bun, Node.js, and more.
Each unit of compute is like a tiny server that remembers things between requests – no need to reload data or worry about timeouts. Like AWS Lambda, but with memory and no timeouts.
Your code's state is saved automatically—no database, ORM, or config needed. Just use regular JavaScript objects or SQLite (available in April).
State is stored on the same machine as your compute, so reads and writes are ultra-fast. No database round trips, no latency spikes.
Update state and broadcast changes in realtime. No external pub/sub systems, no polling – just built-in low-latency events.
Your state lives close to your users on the edge – not in a faraway data center – so every interaction feels instant.
No servers to manage. Your code runs on-demand and scales automatically with usage.
Build powerful applications with ActorCore's comprehensive feature set.
Choose a login:
Logged in as: {token.split(":")[1]}
{/* Members Section - available to all users */}Name | Role | |
---|---|---|
{member.name} | {member.email} | {member.role} |
Invoice # | Date | Amount | Status |
---|---|---|---|
{invoice.id} | {new Date(invoice.date).toLocaleDateString()} | ${invoice.amount} | {invoice.paid ? "Paid" : "Unpaid"} |
Choose a login:
Logged in as: {token.split(":")[1]}
{/* Members Section - available to all users */}Name | Role | |
---|---|---|
{member.name} | {member.email} | {member.role} |
Invoice # | Date | Amount | Status |
---|---|---|---|
{invoice.id} | {new Date(invoice.date).toLocaleDateString()} | ${invoice.amount} | {invoice.paid ? "Paid" : "Unpaid"} |
Connected users: You and {Object.keys(otherCursors).length} others
Connected users: You and {Object.keys(otherCursors).length} others
Move: WASD or Arrow Keys
Move: WASD or Arrow Keys
Status: {result.allowed ? "Allowed" : "Blocked"}
Remaining: {result.remaining}
Resets in: {result.resetsIn} seconds
Status: {result.allowed ? "Allowed" : "Blocked"}
Remaining: {result.remaining}
Resets in: {result.resetsIn} seconds
ActorCore provides a solid foundation with the features you'd expect for modern apps.
Deploy ActorCore anywhere - from serverless platforms to your own infrastructure with our flexible runtime options.
Don't see the runtime you want? Add your own.
Seamlessly integrate ActorCore with your favorite frameworks, languages, and tools.
Don't see what you need? Request an integration.
We ship fast, so we want to share what you can expect to see before the end of the year.
Help shape our roadmap by creating issues and joining our Discord.
Like Postman, but for all of your stateful serverless needs.
From the platform formerly known as Twitter
gerred
@devgerred
Nice work, @rivet\_gg - nailed it
Samo
@samk0\_com
Great UX & DX possible thanks to @ActorCore\_org
John Curtis
@Social\_Quotient
Loving ActorCore direction!
Local-First Newsletter
@localfirstnews
Featured in newsletter
Chinomso
@Chinoman10\_
Alternatively, some dude (@NathanFlurry) recently told me about @ActorCore\_org, which optionally brings you vendor-flexibility (no lock-in since it's abstracted for you).
uripont
@uripont\_
Crazy to think that there are so many things to highlight that is actually hard to convey it in a few words.
sam
@samgoodwin89
"Durable Objects without the boilerplate"
Kacper Wojciechowski
@j0g1t
Your outie uses @ActorCore\_org to develop realtime applications.
alistair
@alistaiir
ActorCore looks super awesome.
Help make ActorCore the universal way to build & scale stateful serverless applications.
Common questions about stateful serverless and ActorCore.
ActorCore is a framework written in TypeScript that provides high-level functionality. Rivet is an open-source serverless platform written in Rust with features tailored for stateful serverless.
You can think of it as ActorCore is to Rivet as Next.js is to Vercel.
While Rivet is the primary maintainer of ActorCore, we intend for this to be community driven.
Stateful serverless is very similar to actors: it's essentially actors with persistence, and usually doesn't have as rigid constraints on message handling. This makes it more flexible while maintaining the core benefits of the actor model.
Stateless serverless works well when you have an external resource that maintains state. Stateful serverless, on the other hand, is almost like a mini-database.
Sometimes it makes sense to use stateless serverless to make requests to multiple stateful serverless instances, orchestrating complex operations across multiple state boundaries.
By storing state in memory and flushing to a persistence layer, we can serve requests instantly instead of waiting for a round trip to the database. There are additional optimizations that can be made around your state to tune the durability of it.
Additionally, data is stored near your users at the edge, ensuring round-trip times of less than 50ms when they request it. This edge-first approach eliminates the latency typically associated with centralized databases.
Some software makes sense to separate – e.g., for data lakes or highly relational data. But at the end of the day, data has to be partitioned somewhere at some point.
Usually "faster" databases like Cassandra, DynamoDB, or Vitess make consistency tradeoffs to get better performance. Stateful serverless forces you to think about how your data is sharded for better performance, better scalability, and less consistency footguns.
OLAP, data lakes, graph databases, and highly relational data are currently not ideal use cases for stateful serverless, though it will get better at handling these use cases over time.
Yes, but only as much as storing data in a single database row does. We're working on building out read replicas to allow you to perform read-only actions on actors.
Things are cooking! Check out our blog post about what a W3C standard for stateful serverless might look like and the awesome people who are collaborating on this.
Have more questions? Join our Discord or go to GitHub Discussions.
Stateful serverless is the future of how applications will be architected.
Startups increasingly build on stateful serverless to ship faster, achieve better performance, and outscale databases like Postgres. The actor model – closely related to stateful serverless – has an established history in frameworks like Elixir, Orleans, and Akka, though these typically involve steep learning curves and complex infrastructure. Cloudflare demonstrates the power of this approach, having built their entire infrastructure – including R2, Workflows, and Queues – on their stateful serverless engine called Durable Objects.
With years of experience in gaming infrastructure, we've seen firsthand how the stateful serverless model excels. After building numerous systems like matchmaking, chat, presence, and social networks using stateful serverless, we're convinced it's hands down the best way to build applications. However, the ecosystem lacks accessibility and resources.
To popularize stateful serverless, we decided to build something that works for everyone. No vendor lock-in, no steep learning curve, and a community-driven approach that brings the best ideas from different ecosystems together.
At Rivet, we maintain an open-source runtime to run stateful serverless workloads – including ActorCore. We see maintaining ActorCore as a rising tide: more people will build applications this way, and we hope to provide the best deployment, monitoring, and collaboration solution for this architecture.
Click here to file a complaint for bad puns.