Answers from the documentation; checking which model is on duty
Hi - I answer from the OpenSmartRoute documentation: routing, the API, plans and quotas, self-hosting. Ask away, or open a support ticket if you need a person.
Grounded in the docs - follow a source before acting on it.
edge-computing - Skill - OpenSmartRoute
Skillv1.0.0
edge-computing
Edge computing with Cloudflare Workers, Deno Deploy, Bun, Vercel Edge Functions, AWS Lambda@Edge, and edge databases (Turso, D1, DynamoDB Global Tables).
Imported from travisjneuman/.claude (skills/edge-computing/SKILL.md). Install upstream with npx skills add travisjneuman/.claude --skill edge-computing. Copyright stays with the author.
Edge Computing
Platforms
Platform
Runtime
Cold Start
Limits
Cloudflare Workers
V8 isolates
~0ms
128MB, 30s CPU
Deno Deploy
V8 isolates
~0ms
512MB, 50ms CPU
Vercel Edge Functions
V8 isolates
~0ms
128MB, 25s
AWS Lambda@Edge
Node.js
~100ms
128MB, 5s (viewer)
Bun
JavaScriptCore
N/A (server)
No hard limits
Cloudflare Workers
export default { async fetch(request: Request, env: Env): Promise<Response> { const url = new URL(request.url); // KV storage const cached = await env.KV.get(url.pathname); if (cached) return new Response(cached, { headers: { 'Cache-Control': 'max-age=60' } }); // D1 database const { results } = await env.DB.prepare('SELECT * FROM users WHERE id = ?') .bind(url.searchParams.get('id')) .all(); // Durable Objects for state const id = env.COUNTER.idFromName('global'); const obj = env.COUNTER.get(id); const count = await obj.fetch(request); return new Response(JSON.stringify(results)); }};
Edge Databases
Database
Type
Best For
Cloudflare D1
SQLite
Workers-native, SQL at edge
Turso
libSQL (SQLite)
Multi-region replicas, embedded
Cloudflare KV
Key-value
Simple caching, config
Durable Objects
Stateful
Real-time, coordination, counters
Upstash Redis
Redis
Rate limiting, sessions at edge
Deno Deploy
Deno.serve(async (req: Request) => { const kv = await Deno.openKv(); const url = new URL(req.url); if (req.method === "POST") { const body = await req.json(); await kv.set(["items", crypto.randomUUID()], body); return new Response("Created", { status: 201 }); } const entries = kv.list({ prefix: ["items"] }); const items = []; for await (const entry of entries) items.push(entry.value); return Response.json(items);});
Patterns
Edge-side rendering: SSR at the edge for <50ms TTFB globally
Smart routing: Geo-aware request routing based on request.cf.country
Edge caching: Cache API for fine-grained control, stale-while-revalidate
Rate limiting: Sliding window counters with Durable Objects or Upstash
A/B testing: Edge-side feature flags without origin round-trips
Image optimization: On-the-fly transforms at edge (Cloudflare Images, Imgproxy)
Constraints & Gotchas
No Node.js APIs (fs, net, etc.) in V8 isolate runtimes
No native modules or binaries (use WASM for compute-heavy work)
Limited CPU time per request — offload heavy work to queues
Cold starts are near-zero for isolates but real for Lambda@Edge
Database connections: use HTTP-based clients, not TCP connection pools
Installed into a catalogue, chosen by a router
Install edge-computing and it becomes one more candidate the router can pick - when it fits.
A listing is a routing target with a manifest: what it does, which domains it covers, what it costs and who publishes it. Once installed it sits beside your own models and tools, is scored like any other candidate for each request, and shows up in the trace when it wins. Ratings come from workspaces that installed it, one per account.
When a provider is down or over quota the request moves on; the trace says it did.
Use it
Copy one of these into your project. Installing also returns the manifest and these snippets.
# after Install: the listing is in your workspace's routing pool - a plan picks it for its slotcurl-s-X POST https://osr-api.kindrock-caaab1a2.centralindia.azurecontainerapps.io/api/v1/route -H 'Authorization: Bearer $OSR_API_KEY' -H 'Content-Type: application/json' -d '{"text": "...", "plan": true}'
Manifest
An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.