[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-rivet-cron-jobs":3,"mdc-w0d5ix-key":38,"related-org-rivet-cron-jobs":1706,"related-repo-rivet-cron-jobs":1900},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":27,"repoUrl":28,"updatedAt":29,"license":30,"forks":31,"topics":32,"repo":33,"sourceUrl":36,"mdContent":37},"cron-jobs","schedule durable cron jobs with Rivet","Patterns for durable one-shot, calendar, and fixed-interval work on Rivet Actors.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"rivet","Rivet","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Frivet.png","rivet-dev",[13,15,18,21,24],{"name":9,"slug":8,"type":14},"tag",{"name":16,"slug":17,"type":14},"Backend","backend",{"name":19,"slug":20,"type":14},"Automation","automation",{"name":22,"slug":23,"type":14},"Scheduling","scheduling",{"name":25,"slug":26,"type":14},"Infrastructure","infrastructure",17,"https:\u002F\u002Fgithub.com\u002Frivet-dev\u002Fskills","2026-07-21T05:37:43.395911",null,7,[],{"repoUrl":28,"stars":27,"forks":31,"topics":34,"description":35},[],"Generated skill files for Rivet AI integrations","https:\u002F\u002Fgithub.com\u002Frivet-dev\u002Fskills\u002Ftree\u002FHEAD\u002Fcron-jobs","---\nname: \"cron-jobs\"\ndescription: \"Patterns for durable one-shot, calendar, and fixed-interval work on Rivet Actors.\"\n---\n\n# Cron Jobs and Scheduled Tasks\n\n**IMPORTANT: Before doing anything, you MUST read `BASE_SKILL.md` in this skill's directory. It contains essential guidance on debugging, error handling, state management, deployment, and project setup. Those rules and patterns apply to all RivetKit work. Everything below assumes you have already read and understood it.**\n\n## Working Examples\n\nIf you need a reference implementation, read the raw working example code in these templates:\n\n- [scheduling](https:\u002F\u002Fgithub.com\u002Frivet-dev\u002Frivet\u002Ftree\u002Fmain\u002Fexamples\u002Fscheduling)\n\n\nRivet Actor schedules are durable actor-local timers. They survive actor sleep, restarts, upgrades, deploys, and crashes without a separate cron service.\n\n## Choose a schedule type\n\n| API | Use it for |\n| --- | --- |\n| `c.schedule.after(delayMs, action, ...args)` | One-time work after a relative delay. |\n| `c.schedule.at(timestamp, action, ...args)` | One-time work at an exact Unix timestamp in milliseconds. |\n| `c.cron.set({ ... })` | Named calendar recurrence in an IANA timezone. |\n| `c.cron.every({ ... })` | Named fixed intervals of at least 5 seconds. |\n\nAll callbacks are ordinary actions on the same actor. Keep the action name fixed in your code rather than accepting an arbitrary action name from a client.\n\nSee [Schedule & Cron](\u002Fdocs\u002Factors\u002Fschedule) for the full API, history, cancellation, failure behavior, and limits.\n\n## Calendar job\n\nUse `cron.set` instead of manually re-arming a one-shot action:\n\nInstall fixed background jobs in `onCreate` so setup runs once per actor. The job name remains an upsert key, so a later `cron.set` call updates the existing job rather than creating a duplicate. `cron.set` also handles timezone and daylight-saving transitions.\n\n## Fixed-interval job\n\nUse `cron.every` for frequent work such as presence sweeps or cache refreshes:\n\n```ts\nawait c.cron.every({\n  name: \"presence-sweep\",\n\tinterval: 15_000, \u002F\u002F Minimum 5 seconds.\n  action: \"sweepPresence\",\n  maxHistory: 25,\n});\n```\n\nIntervals remain anchored to scheduled deadlines rather than drifting by the action's runtime. If a previous run is still active, the overlapping occurrence is skipped.\n\n## Cancellation and updates\n\nKeep the ID returned by a one-shot schedule when it may need cancellation:\n\n```ts\nconst id = await c.schedule.after(60_000, \"expireSession\", sessionId);\nawait c.schedule.cancel(id);\n```\n\nRecurring jobs are managed by name:\n\n```ts\nawait c.cron.delete(\"presence-sweep\");\n```\n\nCalling `cron.set` or `cron.every` again with the same name replaces its configuration.\n\n## Failure and idempotency\n\nKeep scheduled actions idempotent when duplicate work would be harmful. See [Execution behavior](\u002Fdocs\u002Factors\u002Fschedule#execution-behavior) for retry behavior and workflow guidance.\n\n## Topology\n\nUse a singleton actor key for one global job, such as `jobs[\"daily-report\"]`. Use an actor per user or resource for isolated reminders, trials, billing periods, or other per-entity schedules.\n\n## Reference Map\n\n### Actors\n\n- [Access Control](reference\u002Factors\u002Faccess-control.md)\n- [Actions](reference\u002Factors\u002Factions.md)\n- [Actor Keys](reference\u002Factors\u002Fkeys.md)\n- [Actor Runtime Socket](reference\u002Factors\u002Factor-runtime-socket.md)\n- [Actor Statuses](reference\u002Factors\u002Fstatuses.md)\n- [Authentication](reference\u002Factors\u002Fauthentication.md)\n- [Cloudflare Workers Quickstart](reference\u002Factors\u002Fquickstart\u002Fcloudflare.md)\n- [Communicating Between Actors](reference\u002Factors\u002Fcommunicating-between-actors.md)\n- [Connections](reference\u002Factors\u002Fconnections.md)\n- [Custom Inspector Tabs](reference\u002Factors\u002Finspector-tabs.md)\n- [Debugging](reference\u002Factors\u002Fdebugging.md)\n- [Design Patterns](reference\u002Factors\u002Fdesign-patterns.md)\n- [Destroying Actors](reference\u002Factors\u002Fdestroy.md)\n- [Effect.ts Quickstart (Beta)](reference\u002Factors\u002Fquickstart\u002Feffect.md)\n- [Errors](reference\u002Factors\u002Ferrors.md)\n- [Fetch and WebSocket Handler](reference\u002Factors\u002Ffetch-and-websocket-handler.md)\n- [Helper Types](reference\u002Factors\u002Fhelper-types.md)\n- [Icons & Names](reference\u002Factors\u002Fappearance.md)\n- [In-Memory State](reference\u002Factors\u002Fstate.md)\n- [Input Parameters](reference\u002Factors\u002Finput.md)\n- [Lifecycle](reference\u002Factors\u002Flifecycle.md)\n- [Limits](reference\u002Factors\u002Flimits.md)\n- [Low-Level HTTP Request Handler](reference\u002Factors\u002Frequest-handler.md)\n- [Low-Level KV Storage](reference\u002Factors\u002Fkv.md)\n- [Low-Level WebSocket Handler](reference\u002Factors\u002Fwebsocket-handler.md)\n- [Metadata](reference\u002Factors\u002Fmetadata.md)\n- [Next.js Quickstart](reference\u002Factors\u002Fquickstart\u002Fnext-js.md)\n- [Node.js & Bun Quickstart](reference\u002Factors\u002Fquickstart\u002Fbackend.md)\n- [Queues & Run Loops](reference\u002Factors\u002Fqueues.md)\n- [React Quickstart](reference\u002Factors\u002Fquickstart\u002Freact.md)\n- [Realtime](reference\u002Factors\u002Fevents.md)\n- [Rust Quickstart (Beta)](reference\u002Factors\u002Fquickstart\u002Frust.md)\n- [Scaling & Concurrency](reference\u002Factors\u002Fscaling.md)\n- [Schedule & Cron](reference\u002Factors\u002Fschedule.md)\n- [Sharing and Joining State](reference\u002Factors\u002Fsharing-and-joining-state.md)\n- [SQLite](reference\u002Factors\u002Fsqlite.md)\n- [SQLite + Drizzle](reference\u002Factors\u002Fsqlite-drizzle.md)\n- [Supabase Functions Quickstart](reference\u002Factors\u002Fquickstart\u002Fsupabase.md)\n- [Testing](reference\u002Factors\u002Ftesting.md)\n- [Troubleshooting](reference\u002Factors\u002Ftroubleshooting.md)\n- [Types](reference\u002Factors\u002Ftypes.md)\n- [Vanilla HTTP API](reference\u002Factors\u002Fhttp-api.md)\n- [Versions & Upgrades](reference\u002Factors\u002Fversions.md)\n- [Workflows](reference\u002Factors\u002Fworkflows.md)\n\n### Cli\n\n- [CLI](reference\u002Fcli.md)\n\n### Clients\n\n- [Node.js & Bun](reference\u002Fclients\u002Fjavascript.md)\n- [React](reference\u002Fclients\u002Freact.md)\n- [Rust (Beta)](reference\u002Fclients\u002Frust.md)\n- [Swift](reference\u002Fclients\u002Fswift.md)\n- [SwiftUI](reference\u002Fclients\u002Fswiftui.md)\n\n### Cookbook\n\n- [AI Agent](reference\u002Fcookbook\u002Fai-agent.md)\n- [Chat Room](reference\u002Fcookbook\u002Fchat-room.md)\n- [Collaborative Text Editor](reference\u002Fcookbook\u002Fcollaborative-text-editor.md)\n- [Cron Jobs and Scheduled Tasks](reference\u002Fcookbook\u002Fcron-jobs.md)\n- [Database per Tenant](reference\u002Fcookbook\u002Fper-tenant-database.md)\n- [Deploying Rivet in a VPC or Air-Gapped Network](reference\u002Fcookbook\u002Fvpc-air-gapped.md)\n- [Live Cursors and Presence](reference\u002Fcookbook\u002Flive-cursors.md)\n- [Multiplayer Game](reference\u002Fcookbook\u002Fmultiplayer-game.md)\n\n### Deploy\n\n- [Container Runner](reference\u002Fdeploy\u002Fcontainer-runner.md)\n- [Deploy To Amazon Web Services Lambda](reference\u002Fdeploy\u002Faws-lambda.md)\n- [Deploying to AWS ECS](reference\u002Fdeploy\u002Faws-ecs.md)\n- [Deploying to Cloudflare Workers](reference\u002Fdeploy\u002Fcloudflare.md)\n- [Deploying to Freestyle](reference\u002Fdeploy\u002Ffreestyle.md)\n- [Deploying to Google Cloud Run](reference\u002Fdeploy\u002Fgcp-cloud-run.md)\n- [Deploying to Hetzner](reference\u002Fdeploy\u002Fhetzner.md)\n- [Deploying to Kubernetes](reference\u002Fdeploy\u002Fkubernetes.md)\n- [Deploying to Railway](reference\u002Fdeploy\u002Frailway.md)\n- [Deploying to Rivet Compute](reference\u002Fdeploy\u002Frivet-compute.md)\n- [Deploying to Supabase Functions](reference\u002Fdeploy\u002Fsupabase.md)\n- [Deploying to Vercel](reference\u002Fdeploy\u002Fvercel.md)\n- [Deploying to VMs & Bare Metal](reference\u002Fdeploy\u002Fvm-and-bare-metal.md)\n\n### General\n\n- [Actor Configuration](reference\u002Fgeneral\u002Factor-configuration.md)\n- [Architecture](reference\u002Fgeneral\u002Farchitecture.md)\n- [Cross-Origin Resource Sharing](reference\u002Fgeneral\u002Fcors.md)\n- [Documentation for LLMs & AI](reference\u002Fgeneral\u002Fdocs-for-llms.md)\n- [Edge Networking](reference\u002Fgeneral\u002Fedge.md)\n- [Endpoints](reference\u002Fgeneral\u002Fendpoints.md)\n- [Environment Variables](reference\u002Fgeneral\u002Fenvironment-variables.md)\n- [HTTP Server](reference\u002Fgeneral\u002Fhttp-server.md)\n- [Logging](reference\u002Fgeneral\u002Flogging.md)\n- [Pool Configuration](reference\u002Fgeneral\u002Fpool-configuration.md)\n- [Production Checklist](reference\u002Fgeneral\u002Fproduction-checklist.md)\n- [Registry Configuration](reference\u002Fgeneral\u002Fregistry-configuration.md)\n- [Runtime Modes](reference\u002Fgeneral\u002Fruntime-modes.md)\n- [WASM vs Native SDK](reference\u002Fgeneral\u002Fwasm-vs-native-sdk.md)\n\n### Self Hosting\n\n- [Configuration](reference\u002Fself-hosting\u002Fconfiguration.md)\n- [Docker Compose](reference\u002Fself-hosting\u002Fdocker-compose.md)\n- [Docker Container](reference\u002Fself-hosting\u002Fdocker-container.md)\n- [File System](reference\u002Fself-hosting\u002Ffilesystem.md)\n- [FoundationDB (Enterprise)](reference\u002Fself-hosting\u002Ffoundationdb.md)\n- [Installing Rivet Engine](reference\u002Fself-hosting\u002Finstall.md)\n- [Kubernetes](reference\u002Fself-hosting\u002Fkubernetes.md)\n- [Multi-Region](reference\u002Fself-hosting\u002Fmulti-region.md)\n- [PostgreSQL](reference\u002Fself-hosting\u002Fpostgres.md)\n- [Production Checklist](reference\u002Fself-hosting\u002Fproduction-checklist.md)\n- [Railway Deployment](reference\u002Fself-hosting\u002Frailway.md)\n- [Render Deployment](reference\u002Fself-hosting\u002Frender.md)\n- [TLS & Certificates](reference\u002Fself-hosting\u002Ftls.md)\n\n",{"data":39,"body":40},{"name":4,"description":6},{"type":41,"children":42},"root",[43,52,71,78,83,99,104,110,206,211,224,230,243,270,276,288,485,490,496,501,630,635,694,713,719,732,738,751,757,764,1162,1168,1180,1186,1234,1240,1314,1320,1440,1446,1575,1581,1700],{"type":44,"tag":45,"props":46,"children":48},"element","h1",{"id":47},"cron-jobs-and-scheduled-tasks",[49],{"type":50,"value":51},"text","Cron Jobs and Scheduled Tasks",{"type":44,"tag":53,"props":54,"children":55},"p",{},[56],{"type":44,"tag":57,"props":58,"children":59},"strong",{},[60,62,69],{"type":50,"value":61},"IMPORTANT: Before doing anything, you MUST read ",{"type":44,"tag":63,"props":64,"children":66},"code",{"className":65},[],[67],{"type":50,"value":68},"BASE_SKILL.md",{"type":50,"value":70}," in this skill's directory. It contains essential guidance on debugging, error handling, state management, deployment, and project setup. Those rules and patterns apply to all RivetKit work. Everything below assumes you have already read and understood it.",{"type":44,"tag":72,"props":73,"children":75},"h2",{"id":74},"working-examples",[76],{"type":50,"value":77},"Working Examples",{"type":44,"tag":53,"props":79,"children":80},{},[81],{"type":50,"value":82},"If you need a reference implementation, read the raw working example code in these templates:",{"type":44,"tag":84,"props":85,"children":86},"ul",{},[87],{"type":44,"tag":88,"props":89,"children":90},"li",{},[91],{"type":44,"tag":92,"props":93,"children":97},"a",{"href":94,"rel":95},"https:\u002F\u002Fgithub.com\u002Frivet-dev\u002Frivet\u002Ftree\u002Fmain\u002Fexamples\u002Fscheduling",[96],"nofollow",[98],{"type":50,"value":23},{"type":44,"tag":53,"props":100,"children":101},{},[102],{"type":50,"value":103},"Rivet Actor schedules are durable actor-local timers. They survive actor sleep, restarts, upgrades, deploys, and crashes without a separate cron service.",{"type":44,"tag":72,"props":105,"children":107},{"id":106},"choose-a-schedule-type",[108],{"type":50,"value":109},"Choose a schedule type",{"type":44,"tag":111,"props":112,"children":113},"table",{},[114,133],{"type":44,"tag":115,"props":116,"children":117},"thead",{},[118],{"type":44,"tag":119,"props":120,"children":121},"tr",{},[122,128],{"type":44,"tag":123,"props":124,"children":125},"th",{},[126],{"type":50,"value":127},"API",{"type":44,"tag":123,"props":129,"children":130},{},[131],{"type":50,"value":132},"Use it for",{"type":44,"tag":134,"props":135,"children":136},"tbody",{},[137,155,172,189],{"type":44,"tag":119,"props":138,"children":139},{},[140,150],{"type":44,"tag":141,"props":142,"children":143},"td",{},[144],{"type":44,"tag":63,"props":145,"children":147},{"className":146},[],[148],{"type":50,"value":149},"c.schedule.after(delayMs, action, ...args)",{"type":44,"tag":141,"props":151,"children":152},{},[153],{"type":50,"value":154},"One-time work after a relative delay.",{"type":44,"tag":119,"props":156,"children":157},{},[158,167],{"type":44,"tag":141,"props":159,"children":160},{},[161],{"type":44,"tag":63,"props":162,"children":164},{"className":163},[],[165],{"type":50,"value":166},"c.schedule.at(timestamp, action, ...args)",{"type":44,"tag":141,"props":168,"children":169},{},[170],{"type":50,"value":171},"One-time work at an exact Unix timestamp in milliseconds.",{"type":44,"tag":119,"props":173,"children":174},{},[175,184],{"type":44,"tag":141,"props":176,"children":177},{},[178],{"type":44,"tag":63,"props":179,"children":181},{"className":180},[],[182],{"type":50,"value":183},"c.cron.set({ ... })",{"type":44,"tag":141,"props":185,"children":186},{},[187],{"type":50,"value":188},"Named calendar recurrence in an IANA timezone.",{"type":44,"tag":119,"props":190,"children":191},{},[192,201],{"type":44,"tag":141,"props":193,"children":194},{},[195],{"type":44,"tag":63,"props":196,"children":198},{"className":197},[],[199],{"type":50,"value":200},"c.cron.every({ ... })",{"type":44,"tag":141,"props":202,"children":203},{},[204],{"type":50,"value":205},"Named fixed intervals of at least 5 seconds.",{"type":44,"tag":53,"props":207,"children":208},{},[209],{"type":50,"value":210},"All callbacks are ordinary actions on the same actor. Keep the action name fixed in your code rather than accepting an arbitrary action name from a client.",{"type":44,"tag":53,"props":212,"children":213},{},[214,216,222],{"type":50,"value":215},"See ",{"type":44,"tag":92,"props":217,"children":219},{"href":218},"\u002Fdocs\u002Factors\u002Fschedule",[220],{"type":50,"value":221},"Schedule & Cron",{"type":50,"value":223}," for the full API, history, cancellation, failure behavior, and limits.",{"type":44,"tag":72,"props":225,"children":227},{"id":226},"calendar-job",[228],{"type":50,"value":229},"Calendar job",{"type":44,"tag":53,"props":231,"children":232},{},[233,235,241],{"type":50,"value":234},"Use ",{"type":44,"tag":63,"props":236,"children":238},{"className":237},[],[239],{"type":50,"value":240},"cron.set",{"type":50,"value":242}," instead of manually re-arming a one-shot action:",{"type":44,"tag":53,"props":244,"children":245},{},[246,248,254,256,261,263,268],{"type":50,"value":247},"Install fixed background jobs in ",{"type":44,"tag":63,"props":249,"children":251},{"className":250},[],[252],{"type":50,"value":253},"onCreate",{"type":50,"value":255}," so setup runs once per actor. The job name remains an upsert key, so a later ",{"type":44,"tag":63,"props":257,"children":259},{"className":258},[],[260],{"type":50,"value":240},{"type":50,"value":262}," call updates the existing job rather than creating a duplicate. ",{"type":44,"tag":63,"props":264,"children":266},{"className":265},[],[267],{"type":50,"value":240},{"type":50,"value":269}," also handles timezone and daylight-saving transitions.",{"type":44,"tag":72,"props":271,"children":273},{"id":272},"fixed-interval-job",[274],{"type":50,"value":275},"Fixed-interval job",{"type":44,"tag":53,"props":277,"children":278},{},[279,280,286],{"type":50,"value":234},{"type":44,"tag":63,"props":281,"children":283},{"className":282},[],[284],{"type":50,"value":285},"cron.every",{"type":50,"value":287}," for frequent work such as presence sweeps or cache refreshes:",{"type":44,"tag":289,"props":290,"children":295},"pre",{"className":291,"code":292,"language":293,"meta":294,"style":294},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","await c.cron.every({\n  name: \"presence-sweep\",\n    interval: 15_000, \u002F\u002F Minimum 5 seconds.\n  action: \"sweepPresence\",\n  maxHistory: 25,\n});\n","ts","",[296],{"type":44,"tag":63,"props":297,"children":298},{"__ignoreMap":294},[299,348,384,414,444,466],{"type":44,"tag":300,"props":301,"children":304},"span",{"class":302,"line":303},"line",1,[305,311,317,323,328,332,338,343],{"type":44,"tag":300,"props":306,"children":308},{"style":307},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[309],{"type":50,"value":310},"await",{"type":44,"tag":300,"props":312,"children":314},{"style":313},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[315],{"type":50,"value":316}," c",{"type":44,"tag":300,"props":318,"children":320},{"style":319},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[321],{"type":50,"value":322},".",{"type":44,"tag":300,"props":324,"children":325},{"style":313},[326],{"type":50,"value":327},"cron",{"type":44,"tag":300,"props":329,"children":330},{"style":319},[331],{"type":50,"value":322},{"type":44,"tag":300,"props":333,"children":335},{"style":334},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[336],{"type":50,"value":337},"every",{"type":44,"tag":300,"props":339,"children":340},{"style":313},[341],{"type":50,"value":342},"(",{"type":44,"tag":300,"props":344,"children":345},{"style":319},[346],{"type":50,"value":347},"{\n",{"type":44,"tag":300,"props":349,"children":351},{"class":302,"line":350},2,[352,358,363,368,374,379],{"type":44,"tag":300,"props":353,"children":355},{"style":354},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[356],{"type":50,"value":357},"  name",{"type":44,"tag":300,"props":359,"children":360},{"style":319},[361],{"type":50,"value":362},":",{"type":44,"tag":300,"props":364,"children":365},{"style":319},[366],{"type":50,"value":367}," \"",{"type":44,"tag":300,"props":369,"children":371},{"style":370},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[372],{"type":50,"value":373},"presence-sweep",{"type":44,"tag":300,"props":375,"children":376},{"style":319},[377],{"type":50,"value":378},"\"",{"type":44,"tag":300,"props":380,"children":381},{"style":319},[382],{"type":50,"value":383},",\n",{"type":44,"tag":300,"props":385,"children":387},{"class":302,"line":386},3,[388,393,397,403,408],{"type":44,"tag":300,"props":389,"children":390},{"style":354},[391],{"type":50,"value":392},"    interval",{"type":44,"tag":300,"props":394,"children":395},{"style":319},[396],{"type":50,"value":362},{"type":44,"tag":300,"props":398,"children":400},{"style":399},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[401],{"type":50,"value":402}," 15_000",{"type":44,"tag":300,"props":404,"children":405},{"style":319},[406],{"type":50,"value":407},",",{"type":44,"tag":300,"props":409,"children":411},{"style":410},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[412],{"type":50,"value":413}," \u002F\u002F Minimum 5 seconds.\n",{"type":44,"tag":300,"props":415,"children":417},{"class":302,"line":416},4,[418,423,427,431,436,440],{"type":44,"tag":300,"props":419,"children":420},{"style":354},[421],{"type":50,"value":422},"  action",{"type":44,"tag":300,"props":424,"children":425},{"style":319},[426],{"type":50,"value":362},{"type":44,"tag":300,"props":428,"children":429},{"style":319},[430],{"type":50,"value":367},{"type":44,"tag":300,"props":432,"children":433},{"style":370},[434],{"type":50,"value":435},"sweepPresence",{"type":44,"tag":300,"props":437,"children":438},{"style":319},[439],{"type":50,"value":378},{"type":44,"tag":300,"props":441,"children":442},{"style":319},[443],{"type":50,"value":383},{"type":44,"tag":300,"props":445,"children":447},{"class":302,"line":446},5,[448,453,457,462],{"type":44,"tag":300,"props":449,"children":450},{"style":354},[451],{"type":50,"value":452},"  maxHistory",{"type":44,"tag":300,"props":454,"children":455},{"style":319},[456],{"type":50,"value":362},{"type":44,"tag":300,"props":458,"children":459},{"style":399},[460],{"type":50,"value":461}," 25",{"type":44,"tag":300,"props":463,"children":464},{"style":319},[465],{"type":50,"value":383},{"type":44,"tag":300,"props":467,"children":469},{"class":302,"line":468},6,[470,475,480],{"type":44,"tag":300,"props":471,"children":472},{"style":319},[473],{"type":50,"value":474},"}",{"type":44,"tag":300,"props":476,"children":477},{"style":313},[478],{"type":50,"value":479},")",{"type":44,"tag":300,"props":481,"children":482},{"style":319},[483],{"type":50,"value":484},";\n",{"type":44,"tag":53,"props":486,"children":487},{},[488],{"type":50,"value":489},"Intervals remain anchored to scheduled deadlines rather than drifting by the action's runtime. If a previous run is still active, the overlapping occurrence is skipped.",{"type":44,"tag":72,"props":491,"children":493},{"id":492},"cancellation-and-updates",[494],{"type":50,"value":495},"Cancellation and updates",{"type":44,"tag":53,"props":497,"children":498},{},[499],{"type":50,"value":500},"Keep the ID returned by a one-shot schedule when it may need cancellation:",{"type":44,"tag":289,"props":502,"children":504},{"className":291,"code":503,"language":293,"meta":294,"style":294},"const id = await c.schedule.after(60_000, \"expireSession\", sessionId);\nawait c.schedule.cancel(id);\n",[505],{"type":44,"tag":63,"props":506,"children":507},{"__ignoreMap":294},[508,593],{"type":44,"tag":300,"props":509,"children":510},{"class":302,"line":303},[511,517,522,527,532,536,540,545,549,554,558,563,567,571,576,580,584,589],{"type":44,"tag":300,"props":512,"children":514},{"style":513},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[515],{"type":50,"value":516},"const",{"type":44,"tag":300,"props":518,"children":519},{"style":313},[520],{"type":50,"value":521}," id ",{"type":44,"tag":300,"props":523,"children":524},{"style":319},[525],{"type":50,"value":526},"=",{"type":44,"tag":300,"props":528,"children":529},{"style":307},[530],{"type":50,"value":531}," await",{"type":44,"tag":300,"props":533,"children":534},{"style":313},[535],{"type":50,"value":316},{"type":44,"tag":300,"props":537,"children":538},{"style":319},[539],{"type":50,"value":322},{"type":44,"tag":300,"props":541,"children":542},{"style":313},[543],{"type":50,"value":544},"schedule",{"type":44,"tag":300,"props":546,"children":547},{"style":319},[548],{"type":50,"value":322},{"type":44,"tag":300,"props":550,"children":551},{"style":334},[552],{"type":50,"value":553},"after",{"type":44,"tag":300,"props":555,"children":556},{"style":313},[557],{"type":50,"value":342},{"type":44,"tag":300,"props":559,"children":560},{"style":399},[561],{"type":50,"value":562},"60_000",{"type":44,"tag":300,"props":564,"children":565},{"style":319},[566],{"type":50,"value":407},{"type":44,"tag":300,"props":568,"children":569},{"style":319},[570],{"type":50,"value":367},{"type":44,"tag":300,"props":572,"children":573},{"style":370},[574],{"type":50,"value":575},"expireSession",{"type":44,"tag":300,"props":577,"children":578},{"style":319},[579],{"type":50,"value":378},{"type":44,"tag":300,"props":581,"children":582},{"style":319},[583],{"type":50,"value":407},{"type":44,"tag":300,"props":585,"children":586},{"style":313},[587],{"type":50,"value":588}," sessionId)",{"type":44,"tag":300,"props":590,"children":591},{"style":319},[592],{"type":50,"value":484},{"type":44,"tag":300,"props":594,"children":595},{"class":302,"line":350},[596,600,604,608,612,616,621,626],{"type":44,"tag":300,"props":597,"children":598},{"style":307},[599],{"type":50,"value":310},{"type":44,"tag":300,"props":601,"children":602},{"style":313},[603],{"type":50,"value":316},{"type":44,"tag":300,"props":605,"children":606},{"style":319},[607],{"type":50,"value":322},{"type":44,"tag":300,"props":609,"children":610},{"style":313},[611],{"type":50,"value":544},{"type":44,"tag":300,"props":613,"children":614},{"style":319},[615],{"type":50,"value":322},{"type":44,"tag":300,"props":617,"children":618},{"style":334},[619],{"type":50,"value":620},"cancel",{"type":44,"tag":300,"props":622,"children":623},{"style":313},[624],{"type":50,"value":625},"(id)",{"type":44,"tag":300,"props":627,"children":628},{"style":319},[629],{"type":50,"value":484},{"type":44,"tag":53,"props":631,"children":632},{},[633],{"type":50,"value":634},"Recurring jobs are managed by name:",{"type":44,"tag":289,"props":636,"children":638},{"className":291,"code":637,"language":293,"meta":294,"style":294},"await c.cron.delete(\"presence-sweep\");\n",[639],{"type":44,"tag":63,"props":640,"children":641},{"__ignoreMap":294},[642],{"type":44,"tag":300,"props":643,"children":644},{"class":302,"line":303},[645,649,653,657,661,665,670,674,678,682,686,690],{"type":44,"tag":300,"props":646,"children":647},{"style":307},[648],{"type":50,"value":310},{"type":44,"tag":300,"props":650,"children":651},{"style":313},[652],{"type":50,"value":316},{"type":44,"tag":300,"props":654,"children":655},{"style":319},[656],{"type":50,"value":322},{"type":44,"tag":300,"props":658,"children":659},{"style":313},[660],{"type":50,"value":327},{"type":44,"tag":300,"props":662,"children":663},{"style":319},[664],{"type":50,"value":322},{"type":44,"tag":300,"props":666,"children":667},{"style":334},[668],{"type":50,"value":669},"delete",{"type":44,"tag":300,"props":671,"children":672},{"style":313},[673],{"type":50,"value":342},{"type":44,"tag":300,"props":675,"children":676},{"style":319},[677],{"type":50,"value":378},{"type":44,"tag":300,"props":679,"children":680},{"style":370},[681],{"type":50,"value":373},{"type":44,"tag":300,"props":683,"children":684},{"style":319},[685],{"type":50,"value":378},{"type":44,"tag":300,"props":687,"children":688},{"style":313},[689],{"type":50,"value":479},{"type":44,"tag":300,"props":691,"children":692},{"style":319},[693],{"type":50,"value":484},{"type":44,"tag":53,"props":695,"children":696},{},[697,699,704,706,711],{"type":50,"value":698},"Calling ",{"type":44,"tag":63,"props":700,"children":702},{"className":701},[],[703],{"type":50,"value":240},{"type":50,"value":705}," or ",{"type":44,"tag":63,"props":707,"children":709},{"className":708},[],[710],{"type":50,"value":285},{"type":50,"value":712}," again with the same name replaces its configuration.",{"type":44,"tag":72,"props":714,"children":716},{"id":715},"failure-and-idempotency",[717],{"type":50,"value":718},"Failure and idempotency",{"type":44,"tag":53,"props":720,"children":721},{},[722,724,730],{"type":50,"value":723},"Keep scheduled actions idempotent when duplicate work would be harmful. See ",{"type":44,"tag":92,"props":725,"children":727},{"href":726},"\u002Fdocs\u002Factors\u002Fschedule#execution-behavior",[728],{"type":50,"value":729},"Execution behavior",{"type":50,"value":731}," for retry behavior and workflow guidance.",{"type":44,"tag":72,"props":733,"children":735},{"id":734},"topology",[736],{"type":50,"value":737},"Topology",{"type":44,"tag":53,"props":739,"children":740},{},[741,743,749],{"type":50,"value":742},"Use a singleton actor key for one global job, such as ",{"type":44,"tag":63,"props":744,"children":746},{"className":745},[],[747],{"type":50,"value":748},"jobs[\"daily-report\"]",{"type":50,"value":750},". Use an actor per user or resource for isolated reminders, trials, billing periods, or other per-entity schedules.",{"type":44,"tag":72,"props":752,"children":754},{"id":753},"reference-map",[755],{"type":50,"value":756},"Reference Map",{"type":44,"tag":758,"props":759,"children":761},"h3",{"id":760},"actors",[762],{"type":50,"value":763},"Actors",{"type":44,"tag":84,"props":765,"children":766},{},[767,776,785,794,803,812,821,830,839,848,857,866,875,884,893,902,911,920,929,938,947,956,965,974,983,992,1001,1010,1019,1028,1037,1046,1055,1064,1072,1081,1090,1099,1108,1117,1126,1135,1144,1153],{"type":44,"tag":88,"props":768,"children":769},{},[770],{"type":44,"tag":92,"props":771,"children":773},{"href":772},"reference\u002Factors\u002Faccess-control.md",[774],{"type":50,"value":775},"Access Control",{"type":44,"tag":88,"props":777,"children":778},{},[779],{"type":44,"tag":92,"props":780,"children":782},{"href":781},"reference\u002Factors\u002Factions.md",[783],{"type":50,"value":784},"Actions",{"type":44,"tag":88,"props":786,"children":787},{},[788],{"type":44,"tag":92,"props":789,"children":791},{"href":790},"reference\u002Factors\u002Fkeys.md",[792],{"type":50,"value":793},"Actor Keys",{"type":44,"tag":88,"props":795,"children":796},{},[797],{"type":44,"tag":92,"props":798,"children":800},{"href":799},"reference\u002Factors\u002Factor-runtime-socket.md",[801],{"type":50,"value":802},"Actor Runtime Socket",{"type":44,"tag":88,"props":804,"children":805},{},[806],{"type":44,"tag":92,"props":807,"children":809},{"href":808},"reference\u002Factors\u002Fstatuses.md",[810],{"type":50,"value":811},"Actor Statuses",{"type":44,"tag":88,"props":813,"children":814},{},[815],{"type":44,"tag":92,"props":816,"children":818},{"href":817},"reference\u002Factors\u002Fauthentication.md",[819],{"type":50,"value":820},"Authentication",{"type":44,"tag":88,"props":822,"children":823},{},[824],{"type":44,"tag":92,"props":825,"children":827},{"href":826},"reference\u002Factors\u002Fquickstart\u002Fcloudflare.md",[828],{"type":50,"value":829},"Cloudflare Workers Quickstart",{"type":44,"tag":88,"props":831,"children":832},{},[833],{"type":44,"tag":92,"props":834,"children":836},{"href":835},"reference\u002Factors\u002Fcommunicating-between-actors.md",[837],{"type":50,"value":838},"Communicating Between Actors",{"type":44,"tag":88,"props":840,"children":841},{},[842],{"type":44,"tag":92,"props":843,"children":845},{"href":844},"reference\u002Factors\u002Fconnections.md",[846],{"type":50,"value":847},"Connections",{"type":44,"tag":88,"props":849,"children":850},{},[851],{"type":44,"tag":92,"props":852,"children":854},{"href":853},"reference\u002Factors\u002Finspector-tabs.md",[855],{"type":50,"value":856},"Custom Inspector Tabs",{"type":44,"tag":88,"props":858,"children":859},{},[860],{"type":44,"tag":92,"props":861,"children":863},{"href":862},"reference\u002Factors\u002Fdebugging.md",[864],{"type":50,"value":865},"Debugging",{"type":44,"tag":88,"props":867,"children":868},{},[869],{"type":44,"tag":92,"props":870,"children":872},{"href":871},"reference\u002Factors\u002Fdesign-patterns.md",[873],{"type":50,"value":874},"Design Patterns",{"type":44,"tag":88,"props":876,"children":877},{},[878],{"type":44,"tag":92,"props":879,"children":881},{"href":880},"reference\u002Factors\u002Fdestroy.md",[882],{"type":50,"value":883},"Destroying Actors",{"type":44,"tag":88,"props":885,"children":886},{},[887],{"type":44,"tag":92,"props":888,"children":890},{"href":889},"reference\u002Factors\u002Fquickstart\u002Feffect.md",[891],{"type":50,"value":892},"Effect.ts Quickstart (Beta)",{"type":44,"tag":88,"props":894,"children":895},{},[896],{"type":44,"tag":92,"props":897,"children":899},{"href":898},"reference\u002Factors\u002Ferrors.md",[900],{"type":50,"value":901},"Errors",{"type":44,"tag":88,"props":903,"children":904},{},[905],{"type":44,"tag":92,"props":906,"children":908},{"href":907},"reference\u002Factors\u002Ffetch-and-websocket-handler.md",[909],{"type":50,"value":910},"Fetch and WebSocket Handler",{"type":44,"tag":88,"props":912,"children":913},{},[914],{"type":44,"tag":92,"props":915,"children":917},{"href":916},"reference\u002Factors\u002Fhelper-types.md",[918],{"type":50,"value":919},"Helper Types",{"type":44,"tag":88,"props":921,"children":922},{},[923],{"type":44,"tag":92,"props":924,"children":926},{"href":925},"reference\u002Factors\u002Fappearance.md",[927],{"type":50,"value":928},"Icons & Names",{"type":44,"tag":88,"props":930,"children":931},{},[932],{"type":44,"tag":92,"props":933,"children":935},{"href":934},"reference\u002Factors\u002Fstate.md",[936],{"type":50,"value":937},"In-Memory State",{"type":44,"tag":88,"props":939,"children":940},{},[941],{"type":44,"tag":92,"props":942,"children":944},{"href":943},"reference\u002Factors\u002Finput.md",[945],{"type":50,"value":946},"Input Parameters",{"type":44,"tag":88,"props":948,"children":949},{},[950],{"type":44,"tag":92,"props":951,"children":953},{"href":952},"reference\u002Factors\u002Flifecycle.md",[954],{"type":50,"value":955},"Lifecycle",{"type":44,"tag":88,"props":957,"children":958},{},[959],{"type":44,"tag":92,"props":960,"children":962},{"href":961},"reference\u002Factors\u002Flimits.md",[963],{"type":50,"value":964},"Limits",{"type":44,"tag":88,"props":966,"children":967},{},[968],{"type":44,"tag":92,"props":969,"children":971},{"href":970},"reference\u002Factors\u002Frequest-handler.md",[972],{"type":50,"value":973},"Low-Level HTTP Request Handler",{"type":44,"tag":88,"props":975,"children":976},{},[977],{"type":44,"tag":92,"props":978,"children":980},{"href":979},"reference\u002Factors\u002Fkv.md",[981],{"type":50,"value":982},"Low-Level KV Storage",{"type":44,"tag":88,"props":984,"children":985},{},[986],{"type":44,"tag":92,"props":987,"children":989},{"href":988},"reference\u002Factors\u002Fwebsocket-handler.md",[990],{"type":50,"value":991},"Low-Level WebSocket Handler",{"type":44,"tag":88,"props":993,"children":994},{},[995],{"type":44,"tag":92,"props":996,"children":998},{"href":997},"reference\u002Factors\u002Fmetadata.md",[999],{"type":50,"value":1000},"Metadata",{"type":44,"tag":88,"props":1002,"children":1003},{},[1004],{"type":44,"tag":92,"props":1005,"children":1007},{"href":1006},"reference\u002Factors\u002Fquickstart\u002Fnext-js.md",[1008],{"type":50,"value":1009},"Next.js Quickstart",{"type":44,"tag":88,"props":1011,"children":1012},{},[1013],{"type":44,"tag":92,"props":1014,"children":1016},{"href":1015},"reference\u002Factors\u002Fquickstart\u002Fbackend.md",[1017],{"type":50,"value":1018},"Node.js & Bun Quickstart",{"type":44,"tag":88,"props":1020,"children":1021},{},[1022],{"type":44,"tag":92,"props":1023,"children":1025},{"href":1024},"reference\u002Factors\u002Fqueues.md",[1026],{"type":50,"value":1027},"Queues & Run Loops",{"type":44,"tag":88,"props":1029,"children":1030},{},[1031],{"type":44,"tag":92,"props":1032,"children":1034},{"href":1033},"reference\u002Factors\u002Fquickstart\u002Freact.md",[1035],{"type":50,"value":1036},"React Quickstart",{"type":44,"tag":88,"props":1038,"children":1039},{},[1040],{"type":44,"tag":92,"props":1041,"children":1043},{"href":1042},"reference\u002Factors\u002Fevents.md",[1044],{"type":50,"value":1045},"Realtime",{"type":44,"tag":88,"props":1047,"children":1048},{},[1049],{"type":44,"tag":92,"props":1050,"children":1052},{"href":1051},"reference\u002Factors\u002Fquickstart\u002Frust.md",[1053],{"type":50,"value":1054},"Rust Quickstart (Beta)",{"type":44,"tag":88,"props":1056,"children":1057},{},[1058],{"type":44,"tag":92,"props":1059,"children":1061},{"href":1060},"reference\u002Factors\u002Fscaling.md",[1062],{"type":50,"value":1063},"Scaling & Concurrency",{"type":44,"tag":88,"props":1065,"children":1066},{},[1067],{"type":44,"tag":92,"props":1068,"children":1070},{"href":1069},"reference\u002Factors\u002Fschedule.md",[1071],{"type":50,"value":221},{"type":44,"tag":88,"props":1073,"children":1074},{},[1075],{"type":44,"tag":92,"props":1076,"children":1078},{"href":1077},"reference\u002Factors\u002Fsharing-and-joining-state.md",[1079],{"type":50,"value":1080},"Sharing and Joining State",{"type":44,"tag":88,"props":1082,"children":1083},{},[1084],{"type":44,"tag":92,"props":1085,"children":1087},{"href":1086},"reference\u002Factors\u002Fsqlite.md",[1088],{"type":50,"value":1089},"SQLite",{"type":44,"tag":88,"props":1091,"children":1092},{},[1093],{"type":44,"tag":92,"props":1094,"children":1096},{"href":1095},"reference\u002Factors\u002Fsqlite-drizzle.md",[1097],{"type":50,"value":1098},"SQLite + Drizzle",{"type":44,"tag":88,"props":1100,"children":1101},{},[1102],{"type":44,"tag":92,"props":1103,"children":1105},{"href":1104},"reference\u002Factors\u002Fquickstart\u002Fsupabase.md",[1106],{"type":50,"value":1107},"Supabase Functions Quickstart",{"type":44,"tag":88,"props":1109,"children":1110},{},[1111],{"type":44,"tag":92,"props":1112,"children":1114},{"href":1113},"reference\u002Factors\u002Ftesting.md",[1115],{"type":50,"value":1116},"Testing",{"type":44,"tag":88,"props":1118,"children":1119},{},[1120],{"type":44,"tag":92,"props":1121,"children":1123},{"href":1122},"reference\u002Factors\u002Ftroubleshooting.md",[1124],{"type":50,"value":1125},"Troubleshooting",{"type":44,"tag":88,"props":1127,"children":1128},{},[1129],{"type":44,"tag":92,"props":1130,"children":1132},{"href":1131},"reference\u002Factors\u002Ftypes.md",[1133],{"type":50,"value":1134},"Types",{"type":44,"tag":88,"props":1136,"children":1137},{},[1138],{"type":44,"tag":92,"props":1139,"children":1141},{"href":1140},"reference\u002Factors\u002Fhttp-api.md",[1142],{"type":50,"value":1143},"Vanilla HTTP API",{"type":44,"tag":88,"props":1145,"children":1146},{},[1147],{"type":44,"tag":92,"props":1148,"children":1150},{"href":1149},"reference\u002Factors\u002Fversions.md",[1151],{"type":50,"value":1152},"Versions & Upgrades",{"type":44,"tag":88,"props":1154,"children":1155},{},[1156],{"type":44,"tag":92,"props":1157,"children":1159},{"href":1158},"reference\u002Factors\u002Fworkflows.md",[1160],{"type":50,"value":1161},"Workflows",{"type":44,"tag":758,"props":1163,"children":1165},{"id":1164},"cli",[1166],{"type":50,"value":1167},"Cli",{"type":44,"tag":84,"props":1169,"children":1170},{},[1171],{"type":44,"tag":88,"props":1172,"children":1173},{},[1174],{"type":44,"tag":92,"props":1175,"children":1177},{"href":1176},"reference\u002Fcli.md",[1178],{"type":50,"value":1179},"CLI",{"type":44,"tag":758,"props":1181,"children":1183},{"id":1182},"clients",[1184],{"type":50,"value":1185},"Clients",{"type":44,"tag":84,"props":1187,"children":1188},{},[1189,1198,1207,1216,1225],{"type":44,"tag":88,"props":1190,"children":1191},{},[1192],{"type":44,"tag":92,"props":1193,"children":1195},{"href":1194},"reference\u002Fclients\u002Fjavascript.md",[1196],{"type":50,"value":1197},"Node.js & Bun",{"type":44,"tag":88,"props":1199,"children":1200},{},[1201],{"type":44,"tag":92,"props":1202,"children":1204},{"href":1203},"reference\u002Fclients\u002Freact.md",[1205],{"type":50,"value":1206},"React",{"type":44,"tag":88,"props":1208,"children":1209},{},[1210],{"type":44,"tag":92,"props":1211,"children":1213},{"href":1212},"reference\u002Fclients\u002Frust.md",[1214],{"type":50,"value":1215},"Rust (Beta)",{"type":44,"tag":88,"props":1217,"children":1218},{},[1219],{"type":44,"tag":92,"props":1220,"children":1222},{"href":1221},"reference\u002Fclients\u002Fswift.md",[1223],{"type":50,"value":1224},"Swift",{"type":44,"tag":88,"props":1226,"children":1227},{},[1228],{"type":44,"tag":92,"props":1229,"children":1231},{"href":1230},"reference\u002Fclients\u002Fswiftui.md",[1232],{"type":50,"value":1233},"SwiftUI",{"type":44,"tag":758,"props":1235,"children":1237},{"id":1236},"cookbook",[1238],{"type":50,"value":1239},"Cookbook",{"type":44,"tag":84,"props":1241,"children":1242},{},[1243,1252,1261,1270,1278,1287,1296,1305],{"type":44,"tag":88,"props":1244,"children":1245},{},[1246],{"type":44,"tag":92,"props":1247,"children":1249},{"href":1248},"reference\u002Fcookbook\u002Fai-agent.md",[1250],{"type":50,"value":1251},"AI Agent",{"type":44,"tag":88,"props":1253,"children":1254},{},[1255],{"type":44,"tag":92,"props":1256,"children":1258},{"href":1257},"reference\u002Fcookbook\u002Fchat-room.md",[1259],{"type":50,"value":1260},"Chat Room",{"type":44,"tag":88,"props":1262,"children":1263},{},[1264],{"type":44,"tag":92,"props":1265,"children":1267},{"href":1266},"reference\u002Fcookbook\u002Fcollaborative-text-editor.md",[1268],{"type":50,"value":1269},"Collaborative Text Editor",{"type":44,"tag":88,"props":1271,"children":1272},{},[1273],{"type":44,"tag":92,"props":1274,"children":1276},{"href":1275},"reference\u002Fcookbook\u002Fcron-jobs.md",[1277],{"type":50,"value":51},{"type":44,"tag":88,"props":1279,"children":1280},{},[1281],{"type":44,"tag":92,"props":1282,"children":1284},{"href":1283},"reference\u002Fcookbook\u002Fper-tenant-database.md",[1285],{"type":50,"value":1286},"Database per Tenant",{"type":44,"tag":88,"props":1288,"children":1289},{},[1290],{"type":44,"tag":92,"props":1291,"children":1293},{"href":1292},"reference\u002Fcookbook\u002Fvpc-air-gapped.md",[1294],{"type":50,"value":1295},"Deploying Rivet in a VPC or Air-Gapped Network",{"type":44,"tag":88,"props":1297,"children":1298},{},[1299],{"type":44,"tag":92,"props":1300,"children":1302},{"href":1301},"reference\u002Fcookbook\u002Flive-cursors.md",[1303],{"type":50,"value":1304},"Live Cursors and Presence",{"type":44,"tag":88,"props":1306,"children":1307},{},[1308],{"type":44,"tag":92,"props":1309,"children":1311},{"href":1310},"reference\u002Fcookbook\u002Fmultiplayer-game.md",[1312],{"type":50,"value":1313},"Multiplayer Game",{"type":44,"tag":758,"props":1315,"children":1317},{"id":1316},"deploy",[1318],{"type":50,"value":1319},"Deploy",{"type":44,"tag":84,"props":1321,"children":1322},{},[1323,1332,1341,1350,1359,1368,1377,1386,1395,1404,1413,1422,1431],{"type":44,"tag":88,"props":1324,"children":1325},{},[1326],{"type":44,"tag":92,"props":1327,"children":1329},{"href":1328},"reference\u002Fdeploy\u002Fcontainer-runner.md",[1330],{"type":50,"value":1331},"Container Runner",{"type":44,"tag":88,"props":1333,"children":1334},{},[1335],{"type":44,"tag":92,"props":1336,"children":1338},{"href":1337},"reference\u002Fdeploy\u002Faws-lambda.md",[1339],{"type":50,"value":1340},"Deploy To Amazon Web Services Lambda",{"type":44,"tag":88,"props":1342,"children":1343},{},[1344],{"type":44,"tag":92,"props":1345,"children":1347},{"href":1346},"reference\u002Fdeploy\u002Faws-ecs.md",[1348],{"type":50,"value":1349},"Deploying to AWS ECS",{"type":44,"tag":88,"props":1351,"children":1352},{},[1353],{"type":44,"tag":92,"props":1354,"children":1356},{"href":1355},"reference\u002Fdeploy\u002Fcloudflare.md",[1357],{"type":50,"value":1358},"Deploying to Cloudflare Workers",{"type":44,"tag":88,"props":1360,"children":1361},{},[1362],{"type":44,"tag":92,"props":1363,"children":1365},{"href":1364},"reference\u002Fdeploy\u002Ffreestyle.md",[1366],{"type":50,"value":1367},"Deploying to Freestyle",{"type":44,"tag":88,"props":1369,"children":1370},{},[1371],{"type":44,"tag":92,"props":1372,"children":1374},{"href":1373},"reference\u002Fdeploy\u002Fgcp-cloud-run.md",[1375],{"type":50,"value":1376},"Deploying to Google Cloud Run",{"type":44,"tag":88,"props":1378,"children":1379},{},[1380],{"type":44,"tag":92,"props":1381,"children":1383},{"href":1382},"reference\u002Fdeploy\u002Fhetzner.md",[1384],{"type":50,"value":1385},"Deploying to Hetzner",{"type":44,"tag":88,"props":1387,"children":1388},{},[1389],{"type":44,"tag":92,"props":1390,"children":1392},{"href":1391},"reference\u002Fdeploy\u002Fkubernetes.md",[1393],{"type":50,"value":1394},"Deploying to Kubernetes",{"type":44,"tag":88,"props":1396,"children":1397},{},[1398],{"type":44,"tag":92,"props":1399,"children":1401},{"href":1400},"reference\u002Fdeploy\u002Frailway.md",[1402],{"type":50,"value":1403},"Deploying to Railway",{"type":44,"tag":88,"props":1405,"children":1406},{},[1407],{"type":44,"tag":92,"props":1408,"children":1410},{"href":1409},"reference\u002Fdeploy\u002Frivet-compute.md",[1411],{"type":50,"value":1412},"Deploying to Rivet Compute",{"type":44,"tag":88,"props":1414,"children":1415},{},[1416],{"type":44,"tag":92,"props":1417,"children":1419},{"href":1418},"reference\u002Fdeploy\u002Fsupabase.md",[1420],{"type":50,"value":1421},"Deploying to Supabase Functions",{"type":44,"tag":88,"props":1423,"children":1424},{},[1425],{"type":44,"tag":92,"props":1426,"children":1428},{"href":1427},"reference\u002Fdeploy\u002Fvercel.md",[1429],{"type":50,"value":1430},"Deploying to Vercel",{"type":44,"tag":88,"props":1432,"children":1433},{},[1434],{"type":44,"tag":92,"props":1435,"children":1437},{"href":1436},"reference\u002Fdeploy\u002Fvm-and-bare-metal.md",[1438],{"type":50,"value":1439},"Deploying to VMs & Bare Metal",{"type":44,"tag":758,"props":1441,"children":1443},{"id":1442},"general",[1444],{"type":50,"value":1445},"General",{"type":44,"tag":84,"props":1447,"children":1448},{},[1449,1458,1467,1476,1485,1494,1503,1512,1521,1530,1539,1548,1557,1566],{"type":44,"tag":88,"props":1450,"children":1451},{},[1452],{"type":44,"tag":92,"props":1453,"children":1455},{"href":1454},"reference\u002Fgeneral\u002Factor-configuration.md",[1456],{"type":50,"value":1457},"Actor Configuration",{"type":44,"tag":88,"props":1459,"children":1460},{},[1461],{"type":44,"tag":92,"props":1462,"children":1464},{"href":1463},"reference\u002Fgeneral\u002Farchitecture.md",[1465],{"type":50,"value":1466},"Architecture",{"type":44,"tag":88,"props":1468,"children":1469},{},[1470],{"type":44,"tag":92,"props":1471,"children":1473},{"href":1472},"reference\u002Fgeneral\u002Fcors.md",[1474],{"type":50,"value":1475},"Cross-Origin Resource Sharing",{"type":44,"tag":88,"props":1477,"children":1478},{},[1479],{"type":44,"tag":92,"props":1480,"children":1482},{"href":1481},"reference\u002Fgeneral\u002Fdocs-for-llms.md",[1483],{"type":50,"value":1484},"Documentation for LLMs & AI",{"type":44,"tag":88,"props":1486,"children":1487},{},[1488],{"type":44,"tag":92,"props":1489,"children":1491},{"href":1490},"reference\u002Fgeneral\u002Fedge.md",[1492],{"type":50,"value":1493},"Edge Networking",{"type":44,"tag":88,"props":1495,"children":1496},{},[1497],{"type":44,"tag":92,"props":1498,"children":1500},{"href":1499},"reference\u002Fgeneral\u002Fendpoints.md",[1501],{"type":50,"value":1502},"Endpoints",{"type":44,"tag":88,"props":1504,"children":1505},{},[1506],{"type":44,"tag":92,"props":1507,"children":1509},{"href":1508},"reference\u002Fgeneral\u002Fenvironment-variables.md",[1510],{"type":50,"value":1511},"Environment Variables",{"type":44,"tag":88,"props":1513,"children":1514},{},[1515],{"type":44,"tag":92,"props":1516,"children":1518},{"href":1517},"reference\u002Fgeneral\u002Fhttp-server.md",[1519],{"type":50,"value":1520},"HTTP Server",{"type":44,"tag":88,"props":1522,"children":1523},{},[1524],{"type":44,"tag":92,"props":1525,"children":1527},{"href":1526},"reference\u002Fgeneral\u002Flogging.md",[1528],{"type":50,"value":1529},"Logging",{"type":44,"tag":88,"props":1531,"children":1532},{},[1533],{"type":44,"tag":92,"props":1534,"children":1536},{"href":1535},"reference\u002Fgeneral\u002Fpool-configuration.md",[1537],{"type":50,"value":1538},"Pool Configuration",{"type":44,"tag":88,"props":1540,"children":1541},{},[1542],{"type":44,"tag":92,"props":1543,"children":1545},{"href":1544},"reference\u002Fgeneral\u002Fproduction-checklist.md",[1546],{"type":50,"value":1547},"Production Checklist",{"type":44,"tag":88,"props":1549,"children":1550},{},[1551],{"type":44,"tag":92,"props":1552,"children":1554},{"href":1553},"reference\u002Fgeneral\u002Fregistry-configuration.md",[1555],{"type":50,"value":1556},"Registry Configuration",{"type":44,"tag":88,"props":1558,"children":1559},{},[1560],{"type":44,"tag":92,"props":1561,"children":1563},{"href":1562},"reference\u002Fgeneral\u002Fruntime-modes.md",[1564],{"type":50,"value":1565},"Runtime Modes",{"type":44,"tag":88,"props":1567,"children":1568},{},[1569],{"type":44,"tag":92,"props":1570,"children":1572},{"href":1571},"reference\u002Fgeneral\u002Fwasm-vs-native-sdk.md",[1573],{"type":50,"value":1574},"WASM vs Native SDK",{"type":44,"tag":758,"props":1576,"children":1578},{"id":1577},"self-hosting",[1579],{"type":50,"value":1580},"Self Hosting",{"type":44,"tag":84,"props":1582,"children":1583},{},[1584,1593,1602,1611,1620,1629,1638,1647,1656,1665,1673,1682,1691],{"type":44,"tag":88,"props":1585,"children":1586},{},[1587],{"type":44,"tag":92,"props":1588,"children":1590},{"href":1589},"reference\u002Fself-hosting\u002Fconfiguration.md",[1591],{"type":50,"value":1592},"Configuration",{"type":44,"tag":88,"props":1594,"children":1595},{},[1596],{"type":44,"tag":92,"props":1597,"children":1599},{"href":1598},"reference\u002Fself-hosting\u002Fdocker-compose.md",[1600],{"type":50,"value":1601},"Docker Compose",{"type":44,"tag":88,"props":1603,"children":1604},{},[1605],{"type":44,"tag":92,"props":1606,"children":1608},{"href":1607},"reference\u002Fself-hosting\u002Fdocker-container.md",[1609],{"type":50,"value":1610},"Docker Container",{"type":44,"tag":88,"props":1612,"children":1613},{},[1614],{"type":44,"tag":92,"props":1615,"children":1617},{"href":1616},"reference\u002Fself-hosting\u002Ffilesystem.md",[1618],{"type":50,"value":1619},"File System",{"type":44,"tag":88,"props":1621,"children":1622},{},[1623],{"type":44,"tag":92,"props":1624,"children":1626},{"href":1625},"reference\u002Fself-hosting\u002Ffoundationdb.md",[1627],{"type":50,"value":1628},"FoundationDB (Enterprise)",{"type":44,"tag":88,"props":1630,"children":1631},{},[1632],{"type":44,"tag":92,"props":1633,"children":1635},{"href":1634},"reference\u002Fself-hosting\u002Finstall.md",[1636],{"type":50,"value":1637},"Installing Rivet Engine",{"type":44,"tag":88,"props":1639,"children":1640},{},[1641],{"type":44,"tag":92,"props":1642,"children":1644},{"href":1643},"reference\u002Fself-hosting\u002Fkubernetes.md",[1645],{"type":50,"value":1646},"Kubernetes",{"type":44,"tag":88,"props":1648,"children":1649},{},[1650],{"type":44,"tag":92,"props":1651,"children":1653},{"href":1652},"reference\u002Fself-hosting\u002Fmulti-region.md",[1654],{"type":50,"value":1655},"Multi-Region",{"type":44,"tag":88,"props":1657,"children":1658},{},[1659],{"type":44,"tag":92,"props":1660,"children":1662},{"href":1661},"reference\u002Fself-hosting\u002Fpostgres.md",[1663],{"type":50,"value":1664},"PostgreSQL",{"type":44,"tag":88,"props":1666,"children":1667},{},[1668],{"type":44,"tag":92,"props":1669,"children":1671},{"href":1670},"reference\u002Fself-hosting\u002Fproduction-checklist.md",[1672],{"type":50,"value":1547},{"type":44,"tag":88,"props":1674,"children":1675},{},[1676],{"type":44,"tag":92,"props":1677,"children":1679},{"href":1678},"reference\u002Fself-hosting\u002Frailway.md",[1680],{"type":50,"value":1681},"Railway Deployment",{"type":44,"tag":88,"props":1683,"children":1684},{},[1685],{"type":44,"tag":92,"props":1686,"children":1688},{"href":1687},"reference\u002Fself-hosting\u002Frender.md",[1689],{"type":50,"value":1690},"Render Deployment",{"type":44,"tag":88,"props":1692,"children":1693},{},[1694],{"type":44,"tag":92,"props":1695,"children":1697},{"href":1696},"reference\u002Fself-hosting\u002Ftls.md",[1698],{"type":50,"value":1699},"TLS & Certificates",{"type":44,"tag":1701,"props":1702,"children":1703},"style",{},[1704],{"type":50,"value":1705},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1707,"total":27},[1708,1729,1745,1764,1780,1788,1805,1822,1840,1855,1871,1886],{"slug":1709,"name":1709,"fn":1710,"description":1711,"org":1712,"tags":1713,"stars":27,"repoUrl":28,"updatedAt":1728},"ai-agent","build AI agent backends with Rivet","Build an AI agent backend with persistent memory: one Rivet Actor per conversation, queued message handling, and streaming LLM responses as realtime events.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1714,1717,1718,1721,1724,1727],{"name":1715,"slug":1716,"type":14},"Agents","agents",{"name":16,"slug":17,"type":14},{"name":1719,"slug":1720,"type":14},"LLM","llm",{"name":1722,"slug":1723,"type":14},"Memory","memory",{"name":1725,"slug":1726,"type":14},"Real-time","real-time",{"name":9,"slug":8,"type":14},"2026-07-21T05:37:45.411803",{"slug":1730,"name":1730,"fn":1731,"description":1732,"org":1733,"tags":1734,"stars":27,"repoUrl":28,"updatedAt":1744},"ai-agent-workspace","create persistent workspaces for AI agents","Give every AI agent its own computer: a persistent workspace with a filesystem, processes, shells, networking, and agent sessions on a lightweight in-process OS.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1735,1736,1739,1740,1741],{"name":1715,"slug":1716,"type":14},{"name":1737,"slug":1738,"type":14},"File Storage","file-storage",{"name":25,"slug":26,"type":14},{"name":9,"slug":8,"type":14},{"name":1742,"slug":1743,"type":14},"Sandboxing","sandboxing","2026-06-14T08:06:57.274844",{"slug":1746,"name":1746,"fn":1747,"description":1748,"org":1749,"tags":1750,"stars":27,"repoUrl":28,"updatedAt":1763},"chat-room","build realtime chat rooms with Rivet","Build a realtime chat room backend with Rivet Actors: one actor per room, SQLite-backed message history, and WebSocket broadcast to every connected client.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1751,1752,1755,1756,1757,1760],{"name":16,"slug":17,"type":14},{"name":1753,"slug":1754,"type":14},"Messaging","messaging",{"name":1725,"slug":1726,"type":14},{"name":9,"slug":8,"type":14},{"name":1758,"slug":1759,"type":14},"SQL","sql",{"name":1761,"slug":1762,"type":14},"WebSockets","websockets","2026-07-21T05:37:48.403494",{"slug":1765,"name":1765,"fn":1766,"description":1767,"org":1768,"tags":1769,"stars":27,"repoUrl":28,"updatedAt":1779},"collaborative-text-editor","build collaborative text editors with Rivet","Build a collaborative text editor backend with Yjs CRDTs and Rivet Actors: per-document actors relay sync and awareness updates and persist snapshots.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1770,1771,1774,1777,1778],{"name":16,"slug":17,"type":14},{"name":1772,"slug":1773,"type":14},"Collaboration","collaboration",{"name":1775,"slug":1776,"type":14},"Documents","documents",{"name":1725,"slug":1726,"type":14},{"name":9,"slug":8,"type":14},"2026-07-21T05:37:49.412829",{"slug":4,"name":4,"fn":5,"description":6,"org":1781,"tags":1782,"stars":27,"repoUrl":28,"updatedAt":29},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1783,1784,1785,1786,1787],{"name":19,"slug":20,"type":14},{"name":16,"slug":17,"type":14},{"name":25,"slug":26,"type":14},{"name":9,"slug":8,"type":14},{"name":22,"slug":23,"type":14},{"slug":1789,"name":1789,"fn":1790,"description":1791,"org":1792,"tags":1793,"stars":27,"repoUrl":28,"updatedAt":1804},"live-cursors","implement live cursors and multiplayer presence","Live cursors and multiplayer presence with Rivet Actors: per-connection cursor state, realtime updates over events or raw WebSockets, and throttling.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1794,1795,1798,1799,1800,1803],{"name":1772,"slug":1773,"type":14},{"name":1796,"slug":1797,"type":14},"Frontend","frontend",{"name":1725,"slug":1726,"type":14},{"name":9,"slug":8,"type":14},{"name":1801,"slug":1802,"type":14},"UX Design","ux-design",{"name":1761,"slug":1762,"type":14},"2026-07-21T05:37:47.391088",{"slug":1806,"name":1806,"fn":1807,"description":1808,"org":1809,"tags":1810,"stars":27,"repoUrl":28,"updatedAt":1821},"multiplayer-game","build multiplayer games with Rivet","Pragmatic patterns for building multiplayer games: matchmaking, tick loops, realtime state, interest management, and validation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1811,1813,1816,1819,1820],{"name":1466,"slug":1812,"type":14},"architecture",{"name":1814,"slug":1815,"type":14},"Engineering","engineering",{"name":1817,"slug":1818,"type":14},"Game Development","game-development",{"name":1725,"slug":1726,"type":14},{"name":9,"slug":8,"type":14},"2026-07-21T05:37:44.627991",{"slug":1823,"name":1823,"fn":1824,"description":1825,"org":1826,"tags":1827,"stars":27,"repoUrl":28,"updatedAt":1839},"per-tenant-database","implement multi-tenant data isolation with Rivet","Multi-tenant data isolation with one Rivet Actor per tenant: the actor key is the tenant id, so each tenant gets its own isolated dataset and migrations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1828,1829,1832,1835,1838],{"name":1466,"slug":1812,"type":14},{"name":1830,"slug":1831,"type":14},"Database","database",{"name":1833,"slug":1834,"type":14},"Migration","migration",{"name":1836,"slug":1837,"type":14},"Multi-Tenant","multi-tenant",{"name":9,"slug":8,"type":14},"2026-07-21T05:37:46.414425",{"slug":1841,"name":1841,"fn":1842,"description":1843,"org":1844,"tags":1845,"stars":27,"repoUrl":28,"updatedAt":1854},"rivetkit","build and debug Rivet Actors","RivetKit backend and Rivet Actor runtime guidance. Use for building, modifying, debugging, or testing Rivet Actors, registries, serverless\u002Frunner modes, deployment, or actor-based workflows.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1846,1847,1848,1850,1853],{"name":1715,"slug":1716,"type":14},{"name":16,"slug":17,"type":14},{"name":865,"slug":1849,"type":14},"debugging",{"name":1851,"slug":1852,"type":14},"Deployment","deployment",{"name":9,"slug":8,"type":14},"2026-07-24T05:38:58.10133",{"slug":1856,"name":1856,"fn":1857,"description":1858,"org":1859,"tags":1860,"stars":27,"repoUrl":28,"updatedAt":1870},"rivetkit-client-javascript","use RivetKit JavaScript client","RivetKit JavaScript client guidance. Use for browser, Node.js, or Bun clients that connect to Rivet Actors with rivetkit\u002Fclient, create clients, call actions, or manage connections.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1861,1862,1863,1866,1867],{"name":16,"slug":17,"type":14},{"name":1796,"slug":1797,"type":14},{"name":1864,"slug":1865,"type":14},"JavaScript","javascript",{"name":9,"slug":8,"type":14},{"name":1868,"slug":1869,"type":14},"SDK","sdk","2026-07-30T05:31:37.725576",{"slug":1872,"name":1872,"fn":1873,"description":1874,"org":1875,"tags":1876,"stars":27,"repoUrl":28,"updatedAt":1885},"rivetkit-client-react","use RivetKit React client","RivetKit React client guidance. Use for React apps that connect to Rivet Actors with @rivetkit\u002Freact, create hooks with createRivetKit, or manage realtime state with useActor.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1877,1878,1880,1881,1882],{"name":1796,"slug":1797,"type":14},{"name":1206,"slug":1879,"type":14},"react",{"name":9,"slug":8,"type":14},{"name":1868,"slug":1869,"type":14},{"name":1883,"slug":1884,"type":14},"State Management","state-management","2026-07-30T05:31:36.618873",{"slug":1887,"name":1887,"fn":1888,"description":1889,"org":1890,"tags":1891,"stars":27,"repoUrl":28,"updatedAt":1899},"rivetkit-client-rust","build RivetKit Rust clients","RivetKit Rust client guidance. Use for Rust clients and backends that connect to Rivet Actors with rivetkit::client, create typed actor handles, call actions, or manage connections.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1892,1895,1896],{"name":1893,"slug":1894,"type":14},"API Development","api-development",{"name":16,"slug":17,"type":14},{"name":1897,"slug":1898,"type":14},"Rust","rust","2026-07-24T05:39:02.105888",{"items":1901,"total":1961},[1902,1911,1919,1928,1936,1944,1953],{"slug":1709,"name":1709,"fn":1710,"description":1711,"org":1903,"tags":1904,"stars":27,"repoUrl":28,"updatedAt":1728},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1905,1906,1907,1908,1909,1910],{"name":1715,"slug":1716,"type":14},{"name":16,"slug":17,"type":14},{"name":1719,"slug":1720,"type":14},{"name":1722,"slug":1723,"type":14},{"name":1725,"slug":1726,"type":14},{"name":9,"slug":8,"type":14},{"slug":1730,"name":1730,"fn":1731,"description":1732,"org":1912,"tags":1913,"stars":27,"repoUrl":28,"updatedAt":1744},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1914,1915,1916,1917,1918],{"name":1715,"slug":1716,"type":14},{"name":1737,"slug":1738,"type":14},{"name":25,"slug":26,"type":14},{"name":9,"slug":8,"type":14},{"name":1742,"slug":1743,"type":14},{"slug":1746,"name":1746,"fn":1747,"description":1748,"org":1920,"tags":1921,"stars":27,"repoUrl":28,"updatedAt":1763},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1922,1923,1924,1925,1926,1927],{"name":16,"slug":17,"type":14},{"name":1753,"slug":1754,"type":14},{"name":1725,"slug":1726,"type":14},{"name":9,"slug":8,"type":14},{"name":1758,"slug":1759,"type":14},{"name":1761,"slug":1762,"type":14},{"slug":1765,"name":1765,"fn":1766,"description":1767,"org":1929,"tags":1930,"stars":27,"repoUrl":28,"updatedAt":1779},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1931,1932,1933,1934,1935],{"name":16,"slug":17,"type":14},{"name":1772,"slug":1773,"type":14},{"name":1775,"slug":1776,"type":14},{"name":1725,"slug":1726,"type":14},{"name":9,"slug":8,"type":14},{"slug":4,"name":4,"fn":5,"description":6,"org":1937,"tags":1938,"stars":27,"repoUrl":28,"updatedAt":29},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1939,1940,1941,1942,1943],{"name":19,"slug":20,"type":14},{"name":16,"slug":17,"type":14},{"name":25,"slug":26,"type":14},{"name":9,"slug":8,"type":14},{"name":22,"slug":23,"type":14},{"slug":1789,"name":1789,"fn":1790,"description":1791,"org":1945,"tags":1946,"stars":27,"repoUrl":28,"updatedAt":1804},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1947,1948,1949,1950,1951,1952],{"name":1772,"slug":1773,"type":14},{"name":1796,"slug":1797,"type":14},{"name":1725,"slug":1726,"type":14},{"name":9,"slug":8,"type":14},{"name":1801,"slug":1802,"type":14},{"name":1761,"slug":1762,"type":14},{"slug":1806,"name":1806,"fn":1807,"description":1808,"org":1954,"tags":1955,"stars":27,"repoUrl":28,"updatedAt":1821},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1956,1957,1958,1959,1960],{"name":1466,"slug":1812,"type":14},{"name":1814,"slug":1815,"type":14},{"name":1817,"slug":1818,"type":14},{"name":1725,"slug":1726,"type":14},{"name":9,"slug":8,"type":14},16]