Help us improve
Share bugs, ideas, or general feedback.
From cloudflare
Use this skill when the user asks about Cloudflare Durable Objects, stateful serverless on Cloudflare, WebSocket coordination, distributed counters or locks, or managing Durable Objects with Pulumi.
npx claudepluginhub nsheaps/ai-mktpl --plugin cloudflareHow this skill is triggered — by the user, by Claude, or both
Slash command
/cloudflare:durable-objectsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Durable Objects provide strongly consistent, low-latency coordination and state for Workers. Each object is a single-threaded instance with persistent storage, ideal for WebSocket servers, counters, rate limiters, and collaborative apps.
Implements Cloudflare Durable Objects for stateful coordination in real-time apps like chat rooms, multiplayer games, WebSocket hibernation, alarms, and SQLite storage.
Provides expertise in Cloudflare Workers for edge computing, covering Wrangler, KV, D1, Durable Objects, R2 for serverless deployment, storage, and latency optimization.
Navigates Cloudflare products for compute (Workers, Pages), storage (KV, D1, R2), AI (Workers AI, Vectorize), networking, security, and IaC (Terraform, Pulumi) via decision trees. Prioritizes docs retrieval.
Share bugs, ideas, or general feedback.
Durable Objects provide strongly consistent, low-latency coordination and state for Workers. Each object is a single-threaded instance with persistent storage, ideal for WebSocket servers, counters, rate limiters, and collaborative apps.
cloudflare.WorkersScript with durableObjectBindingsexport class Counter {
state: DurableObjectState;
constructor(state: DurableObjectState) {
this.state = state;
}
async fetch(request: Request): Promise<Response> {
let value = (await this.state.storage.get<number>("count")) ?? 0;
value++;
await this.state.storage.put("count", value);
return new Response(value.toString());
}
}
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const id = env.COUNTER.idFromName("my-counter");
const stub = env.COUNTER.get(id);
return stub.fetch(request);
},
};
[durable_objects]
bindings = [
{ name = "COUNTER", class_name = "Counter" }
]
[[migrations]]
tag = "v1"
new_classes = ["Counter"]
const worker = new cloudflare.WorkersScript("do-worker", {
accountId,
name: "do-worker",
content: workerScript,
module: true,
});
// Durable Object bindings are part of the Worker script resource.
// The class must be exported from the Worker module.
// Migrations are handled via wrangler.toml, not Pulumi.
| Resource | Free | Paid |
|---|---|---|
| Requests | 1M included | $0.15/M |
| Duration | 400K GB-s | $12.50/M GB-s |
| Storage reads | 1M/month | $0.20/M |
| Storage writes | 1M/month | $1.00/M |
| Storage | 1 GB | $0.20/GB/month |