[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5673":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":16,"starSnapshotCount":16,"syncStatus":38,"lastSyncTime":39,"discoverSource":40},5673,"rivet","rivet-dev\u002Frivet","rivet-dev","Rivet Actors are the primitive for stateful workloads. Built for AI agents, collaborative apps, and durable execution.","https:\u002F\u002Fwww.rivet.dev",null,"Rust",5571,190,16,6,0,9,47,7,72.04,"Apache License 2.0",false,"main",[25,26,27,28,29,30,31,32,33,34],"actor","actors","cloudflare","cloudflare-durable-objects","durable-objects","foundationdb","multiplayer","realtime","rust","serverless","2026-06-12 04:00:26","\u003Cdiv align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.rivet.dev\">\n    \u003Cpicture>\n      \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\".\u002F.github\u002Fmedia\u002Flogo\u002Ficon-text-white.svg\" alt=\"Rivet\">\n      \u003Cimg src=\".\u002F.github\u002Fmedia\u002Flogo\u002Ficon-text-black.svg\" alt=\"Rivet\" height=\"75\">\n    \u003C\u002Fpicture>\n  \u003C\u002Fa>\n  \u003Cbr\u002F>\n  \u003Cbr\u002F>\n  \u003Ch3>Rivet Actors are the primitive for stateful workloads.\u003C\u002Fh3>\n  \u003Cp>Built for AI agents, collaborative apps, and durable execution.\u003C\u002Fp>\n  \u003Cp>\n    \u003Ca href=\"https:\u002F\u002Fwww.rivet.dev\u002Fdocs\">Quickstart\u003C\u002Fa> •\n    \u003Ca href=\"https:\u002F\u002Fwww.rivet.dev\u002Fdocs\u002Factors\">Documentation\u003C\u002Fa> •\n    \u003Ca href=\"https:\u002F\u002Fwww.rivet.dev\u002Fchangelog\">Changelog\u003C\u002Fa> •\n    \u003Ca href=\"https:\u002F\u002Fwww.rivet.dev\u002Fdiscord\">Discord\u003C\u002Fa> •\n    \u003Ca href=\"https:\u002F\u002Fx.com\u002Frivet_dev\">X\u003C\u002Fa>\n  \u003C\u002Fp>\n\u003C\u002Fdiv>\n\n## What is Rivet?\n\nRivet Actors are long-running, lightweight processes designed for stateful workloads. State lives in-memory with automatic persistence. Create one per agent, per session, or per user — with built-in workflows, queues, and scheduling.\n\n**Backend**\n\n```typescript\nconst agent = actor({\n  \u002F\u002F In-memory, persisted state for the actor\n  state: { messages: [] as Message[] },\n\n  \u002F\u002F Long-running actor process\n  run: async (c) => {\n    \u002F\u002F Process incoming messages from the queue\n    for await (const msg of c.queue.iter()) {\n      c.state.messages.push({ role: \"user\", content: msg.body.text });\n      const response = streamText({ model: openai(\"gpt-5\"), messages: c.state.messages });\n\n      \u002F\u002F Stream realtime events to all connected clients\n      for await (const delta of response.textStream) {\n        c.broadcast(\"token\", delta);\n      }\n\n      c.state.messages.push({ role: \"assistant\", content: await response.text });\n    }\n  },\n});\n```\n\n**Client** (frontend or backend)\n\n```typescript\n\u002F\u002F Connect to an actor\nconst agent = client.agent.getOrCreate(\"agent-123\").connect();\n\n\u002F\u002F Listen for realtime events\nagent.on(\"token\", delta => process.stdout.write(delta));\n\n\u002F\u002F Send message to actor\nawait agent.queue.send(\"how many r's in strawberry?\");\n```\n\n## Features\n\nOne Actor per agent, per session, per user — state, storage, and networking included.\n\n**Rivet provides:**\n- **In-memory state** — Co-located with compute for instant reads and writes. Persist with SQLite or BYO database.\n- **Runs indefinitely, sleeps when idle** — Long-lived when active, hibernates when idle.\n- **Scales infinitely, scales to zero** — Supports bursty workloads and is cost-efficient.\n- **Global edge network** — Deploy close to your users or in specific legal jurisdictions without complexity.\n\n**Actors support:**\n- **WebSockets** — Real-time bidirectional streaming built in.\n- **Workflows** — Multi-step operations with automatic retries.\n- **Queues** — Durable message queues for reliable async processing.\n- **Scheduling** — Timers and cron jobs within your actor.\n\n## Use Cases\n\nOne primitive that adapts to agents, workflows, collaboration, and more.\n\n- **AI Agent** — Each agent runs as its own actor with persistent context, memory, and the ability to schedule tool calls.\n- **Sandbox Orchestration** — Coordinate sandbox sessions, queue work, and schedule cleanup in one long-lived actor per workspace.\n- **Workflows** — Multi-step operations with automatic retries, scheduling, and durable state across steps.\n- **Collaborative Documents** — Real-time collaborative editing where each document is an actor broadcasting changes to all connected users.\n- **Per-Tenant Database** — One actor per tenant with low-latency in-memory reads and durable tenant data persistence.\n- **Chat** — One actor per room or conversation with in-memory state, persistent history, and realtime delivery.\n\n## How Actors Compare\n\n**Rivet Actors vs. Traditional Infrastructure**\n\n| Metric | Rivet Actor | Kubernetes Pod | Virtual Machine |\n|--------|:-----------:|:--------------:|:---------------:|\n| **Cold start** | **~20ms** | ~6s | ~30s |\n| **Memory per instance** | **~0.6KB** | ~50MB | ~512MB |\n| **Idle cost** | **$0** | ~$85\u002Fmo (cluster) | ~$5\u002Fmo |\n| **Horizontal scale** | **Infinite** | ~5k nodes | Manual |\n| **Multi-region** | **Global edge** | 1 region | 1 region |\n\n**State**\n\n| Metric | Rivet Actor | Redis | Postgres |\n|--------|:-----------:|:-----:|:--------:|\n| **Read latency** | **0ms** | ~1ms | ~5ms |\n\n\u003Cdetails>\n\u003Csummary>Benchmark details & methodology\u003C\u002Fsummary>\n\n**Cold Start**\n- **Rivet Actor (~20ms):** Includes durable state init, not just a process spawn. No actor key, so no cross-region locking. Measured with Node.js and FoundationDB.\n- **Kubernetes Pod (~6s):** Node.js 24 Alpine image (56MB compressed) on AWS EKS with a pre-provisioned m5.large node. Breakdown: ~1s image pull and extraction, ~3-4s scheduling and container runtime setup, ~1s container start.\n- **Virtual Machine (~30s):** AWS EC2 t3.nano from launch to SSH-ready, using an Amazon Linux 2 AMI. t3.nano is the smallest available EC2 instance (512MB RAM).\n\n**Memory Per Instance**\n- **Rivet Actor (~0.6KB):** RSS delta divided by actor count, measured by spawning 10,000 actors in Node.js v24 on Linux x86.\n- **Kubernetes Pod (~50MB):** Minimum idle Node.js container on Linux x86: Node.js v24 runtime (~43MB RSS), containerd-shim (~3MB), pause container (~1MB), and kubelet per-pod tracking (~2MB).\n- **Virtual Machine (~512MB):** AWS EC2 t3.nano, the smallest available EC2 instance with 512MB allocated memory.\n\n**Read Latency**\n- **Rivet Actor (0ms):** State is read from co-located SQLite\u002FKV storage on the same machine as the actor, with no network round-trip.\n- **Redis (~1ms):** AWS ElastiCache Redis (cache.t3.micro) in the same availability zone as the application.\n- **Postgres (~5ms):** AWS RDS PostgreSQL (db.t3.micro) in the same availability zone as the application.\n\n**Idle Cost**\n- **Rivet Actor ($0):** Assumes Rivet Actors running on a serverless platform. Actors scale to zero with no idle infrastructure costs. Traditional container deployments may incur idle costs.\n- **Virtual Machine (~$5\u002Fmo):** AWS EC2 t3.nano ($0.0052\u002Fhr compute + $1.60\u002Fmo for 20GB gp3 storage) running 24\u002F7. t3.nano is the smallest available EC2 instance (512MB RAM).\n- **Kubernetes Cluster (~$85\u002Fmo):** AWS EKS control plane ($73\u002Fmo) plus a single t3.nano worker node with 20GB gp3 storage, running 24\u002F7.\n\n**Horizontal Scale**\n- **Rivet Actors (Infinite):** Scale linearly by adding nodes with no single cluster size limit.\n- **Kubernetes (~5k nodes):** Officially supports clusters of up to 5,000 nodes per the Kubernetes scalability documentation.\n\n**Multi-Region**\n- **Rivet (Global edge network):** Automatically spawns actors near your users and handles routing across regions.\n\n\u003C\u002Fdetails>\n\n## Built-In Observability\n\nPowerful debugging and monitoring tools from local development to production at scale.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\".\u002F.github\u002Fmedia\u002Fscreenshots\u002Finspector.png\" alt=\"Rivet Inspector\" width=\"800\" \u002F>\n\u003C\u002Fp>\n\n- **SQLite Viewer** — Browse and query your actor's SQLite database in real-time\n- **Workflow State** — Inspect workflow progress, steps, and retries as they execute\n- **Event Monitoring** — Track every state change and action as it happens\n- **REPL** — Call actions, subscribe to events, and interact directly with your code\n\n\n## Deployment Options\n\nRivetKit is a library. Connect it to Rivet Cloud or self-host when you need scaling, fault tolerance, and observability.\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd width=\"33%\" valign=\"top\">\n\n### Just a Library\n\nInstall a package and run locally. No servers, no infrastructure. Actors run in your process during development.\n\n```bash\nnpm install rivetkit\n```\n\n[Get started →](https:\u002F\u002Fwww.rivet.dev\u002Fdocs\u002Factors\u002Fquickstart)\n\n\u003C\u002Ftd>\n\u003Ctd width=\"33%\" valign=\"top\">\n\n### Self-Host\n\nSingle Rust binary or Docker container. Works with Postgres, file system, or FoundationDB.\n\n```bash\ndocker run -p 6420:6420 rivetdev\u002Fengine\n```\n\n[Self-hosting documentation →](https:\u002F\u002Fwww.rivet.dev\u002Fdocs\u002Fself-hosting\u002F)\n\n\u003C\u002Ftd>\n\u003Ctd width=\"33%\" valign=\"top\">\n\n### Rivet Cloud\n\nFully managed. Global edge network. Connects to your existing cloud — Vercel, Railway, AWS, wherever you already deploy.\n\n[Sign up →](https:\u002F\u002Fhub.rivet.dev)\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n**Open source, permissively licensed** — Self-hosting matters for enterprise deployments, cloud portability, and avoiding vendor lock-in. Apache 2.0 means you own your infrastructure. [View on GitHub →](https:\u002F\u002Fgithub.com\u002Frivet-dev\u002Frivet)\n\n## Getting Started\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd width=\"50%\" valign=\"top\">\n\n### Use with Your Coding Agent\n\nGive your coding agent the Rivet skills to create examples or integrate into existing projects:\n\n```bash\nnpx skills add rivet-dev\u002Fskills\n```\n\nWorks with Claude Code, Cursor, Windsurf, and other AI coding tools.\n\n\u003C\u002Ftd>\n\u003Ctd width=\"50%\" valign=\"top\">\n\n### Start From Scratch\n\n- [Node.js & Bun](https:\u002F\u002Fwww.rivet.dev\u002Fdocs\u002Factors\u002Fquickstart\u002Fbackend)\n- [React](https:\u002F\u002Fwww.rivet.dev\u002Fdocs\u002Factors\u002Fquickstart\u002Freact)\n- [Next.js](https:\u002F\u002Fwww.rivet.dev\u002Fdocs\u002Factors\u002Fquickstart\u002Fnext-js)\n\n[View documentation →](https:\u002F\u002Fwww.rivet.dev\u002Fdocs)\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## Integrations\n\nServerless, containers, or your own servers — Rivet Actors work with your existing infrastructure, frameworks, and tools.\n\n**Infrastructure**: [Vercel](https:\u002F\u002Fwww.rivet.dev\u002Fdocs\u002Fdeploy\u002Fvercel) • [Railway](https:\u002F\u002Fwww.rivet.dev\u002Fdocs\u002Fdeploy\u002Frailway) • [AWS](https:\u002F\u002Fwww.rivet.dev\u002Fdocs\u002Fdeploy\u002Faws) • [Docker](https:\u002F\u002Fwww.rivet.dev\u002Fdocs\u002Fself-hosting)\n\n**Frameworks**: [React](https:\u002F\u002Fwww.rivet.dev\u002Fdocs\u002Fclients\u002Freact) • [Next.js](https:\u002F\u002Fwww.rivet.dev\u002Fdocs\u002Fclients\u002Fnext-js) • [Hono](https:\u002F\u002Fgithub.com\u002Frivet-dev\u002Frivet\u002Ftree\u002Fmain\u002Fexamples\u002Fhono) • [Express](https:\u002F\u002Fgithub.com\u002Frivet-dev\u002Frivet\u002Ftree\u002Fmain\u002Fexamples\u002Fexpress) • [Elysia](https:\u002F\u002Fgithub.com\u002Frivet-dev\u002Frivet\u002Ftree\u002Fmain\u002Fexamples\u002Felysia) • [tRPC](https:\u002F\u002Fgithub.com\u002Frivet-dev\u002Frivet\u002Ftree\u002Fmain\u002Fexamples\u002Ftrpc)\n\n**Runtimes**: [Node.js](https:\u002F\u002Fwww.rivet.dev\u002Fdocs\u002Factors\u002Fquickstart\u002Fbackend) • [Bun](https:\u002F\u002Fwww.rivet.dev\u002Fdocs\u002Factors\u002Fquickstart\u002Fbackend) • [Deno](https:\u002F\u002Fgithub.com\u002Frivet-dev\u002Frivet\u002Ftree\u002Fmain\u002Fexamples\u002Fdeno)\n\n**Tools**: [Vitest](https:\u002F\u002Fwww.rivet.dev\u002Fdocs\u002Factors\u002Ftesting) • [Pino](https:\u002F\u002Fwww.rivet.dev\u002Fdocs\u002Fgeneral\u002Flogging) • [AI SDK](https:\u002F\u002Fgithub.com\u002Frivet-dev\u002Frivet\u002Ftree\u002Fmain\u002Fexamples\u002Fai-agent) • [OpenAPI](https:\u002F\u002Fgithub.com\u002Frivet-dev\u002Frivet\u002Ftree\u002Fmain\u002Frivetkit-openapi) • [AsyncAPI](https:\u002F\u002Fgithub.com\u002Frivet-dev\u002Frivet\u002Ftree\u002Fmain\u002Frivetkit-asyncapi)\n\n[Request an integration →](https:\u002F\u002Fgithub.com\u002Frivet-dev\u002Frivet\u002Fissues\u002Fnew)\n\n## Projects in This Repository\n\n| Project | Description |\n|---------|-------------|\n| [RivetKit TypeScript](.\u002Frivetkit-typescript) | Client & server library for building actors |\n| [RivetKit Rust](.\u002Frivetkit-rust) | Rust client (experimental) |\n| [RivetKit Python](.\u002Frivetkit-python) | Python client (experimental) |\n| [Rivet Engine](.\u002Fengine) | Rust orchestration engine |\n| ↳ [Pegboard](.\u002Fengine\u002Fpackages\u002Fpegboard) | Actor orchestrator & networking |\n| ↳ [Gasoline](.\u002Fengine\u002Fpackages\u002Fgasoline) | Durable execution engine |\n| ↳ [Guard](.\u002Fengine\u002Fpackages\u002Fguard) | Traffic routing proxy |\n| ↳ [Epoxy](.\u002Fengine\u002Fpackages\u002Fepoxy) | Multi-region KV store (EPaxos) |\n| [Dashboard](.\u002Ffrontend) | Inspector for debugging actors |\n| [Website](.\u002Fwebsite) | Source for [rivet.dev](https:\u002F\u002Fwww.rivet.dev) |\n| [Documentation](.\u002Fwebsite\u002Fsrc\u002Fcontent\u002Fdocs) | Source for [rivet.dev\u002Fdocs](https:\u002F\u002Fwww.rivet.dev\u002Fdocs) |\n\n## Community\n\n- [Discord](https:\u002F\u002Fwww.rivet.dev\u002Fdiscord) - Chat with the community\n- [X\u002FTwitter](https:\u002F\u002Fx.com\u002Frivet_dev) - Follow for updates\n- [Bluesky](https:\u002F\u002Fbsky.app\u002Fprofile\u002Fwww.rivet.dev) - Follow for updates\n- [GitHub Discussions](https:\u002F\u002Fgithub.com\u002Frivet-dev\u002Frivet\u002Fdiscussions) - Ask questions\n- [GitHub Issues](https:\u002F\u002Fgithub.com\u002Frivet-dev\u002Frivet\u002Fissues) - Report bugs\n- [Talk to an engineer](https:\u002F\u002Fwww.rivet.dev\u002Ftalk-to-an-engineer) - Discuss your use case\n\n## License\n\n[Apache 2.0](LICENSE)\n","Rivet 是一个用于构建有状态工作负载的框架，特别适用于AI代理、协作应用和持久化执行。它基于Rust语言开发，核心功能包括轻量级的长运行进程（称为Actors），这些进程具有内存中的状态存储，并支持自动持久化。每个Actor可以代表一个用户会话或AI代理，并内置了工作流、队列以及调度功能。Rivet还提供了WebSocket支持以实现双向实时通信、全局边缘网络部署能力等特性，使其非常适合需要低延迟响应及高并发处理的应用场景，如多人在线游戏、即时通讯软件或复杂的AI服务。",2,"2026-06-11 03:04:39","top_language"]