website/src/content/docs/connect/cloudflare-workers.mdx
import { faGithub } from "@rivet-gg/icons";
Deploy your Cloudflare Workers + RivetKit app to Cloudflare Workers.
<CardGroup> <Card title="Cloudflare Workers" href="https://github.com/rivet-dev/rivet/tree/main/examples/cloudflare-workers" target="_blank" icon={faGithub}> Minimal Cloudflare Workers + RivetKit example. </Card> <Card title="Cloudflare Workers + Hono" href="https://github.com/rivet-dev/rivet/tree/main/examples/cloudflare-workers-hono" target="_blank" icon={faGithub}> Cloudflare Workers with Hono router. </Card> <Card title="Cloudflare Workers + Inline Client" href="https://github.com/rivet-dev/rivet/tree/main/examples/cloudflare-workers-inline-client" target="_blank" icon={faGithub}> Advanced setup using createInlineClient. </Card> </CardGroup>src/index.ts (or similar entry point with createHandler)src/registry.ts (or similar actor registry file)wrangler.json with proper Durable Objects and KV namespace configurationIf your project is not integrated with RivetKit yet, follow the Cloudflare Workers quickstart guide or see the Cloudflare Workers example. </Step> <Step title="Deploy to Cloudflare Workers">
Deploy to Cloudflare's global network:
wrangler deploy
Your worker will be deployed and you'll receive a URL like https://my-rivetkit-worker.workers.dev.
More information on deployments is available in Cloudflare's docs.
</Step> <Step title="Connect and Verify">After running wrangler deploy, note the URL printed in the output (e.g., https://my-rivetkit-worker.workers.dev).
Your RivetKit endpoint will be available at this URL with /rivet appended:
https://my-rivetkit-worker.workers.dev/rivetUse this endpoint URL when configuring your RivetKit client or connecting from the Rivet dashboard.
</Step> </Steps>You can access Cloudflare Workers environment bindings directly using the importable env:
import { env } from "cloudflare:workers";
import { actor } from "rivetkit";
// Access environment variables and secrets in top-level scope
const API_KEY = env.API_KEY;
const LOG_LEVEL = env.LOG_LEVEL || "info";
// Use bindings in your actor
const myActor = actor({
state: { count: 0 },
actions: {
// Access KV, D1, or other bindings during request handling
getFromKV: async (c, key: string) => {
// Access additional KV namespaces defined in wrangler.json
if (env.MY_CACHE_KV) {
return await env.MY_CACHE_KV.get(key);
}
}
}
});
The Cloudflare Workers driver provides access to the Durable Object state and environment through the driver context in createVars.
import { actor, CreateVarsContext } from "rivetkit";
import type { DriverContext } from "@rivetkit/cloudflare-workers";
const myActor = actor({
state: { count: 0 },
// Save the Cloudflare driver context
createVars: (ctx: CreateVarsContext, driver: DriverContext) => ({
state: driver.state,
}),
actions: {
// Example: Access Durable Object info (not recommended in practice)
kvGet: (c, key: string) => {
const doState = c.vars.state;
return await doState.storage.get(key)
},
}
});
The Cloudflare Workers driver context type is exported as DriverContext from @rivetkit/cloudflare-workers:
interface DriverContext {
state: DurableObjectState;
}