System › Cloudflare · zoom 2 of 8 ⌘ For your coding agent ▾
What it runs on: one Cloudflare account, wired like this. A quick tour of the parts first. A Worker is a small serverless program; D1 is SQLite; KV is a key-value store for config; R2 holds files; Queues pass work between Workers; Vectorize answers 'what's similar to this?'; the AI Gateway is the one door every model call goes through. This whole system is seven Workers sharing fourteen such resources — and the diagram below isn't an illustration of that, it's generated from the infrastructure code itself at every build, so it can't drift from reality.
Workers on the left, what they use on the right. Each line is a binding — a private, named connection from a Worker to a resource, declared in that Worker's config. Follow any Worker's lines to see everything it can touch; anything it has no line to, it cannot reach. Colours group the resource types.
generated from the infrastructure code and each Worker's config, on every build
console-api → namaste-ji-console-staging · DB console-api → namaste-ji-catalog-staging · CATALOG_DB console-api → bo-config · CONFIG console-api → namaste-ji-content-staging · CONTENT console-api → namaste-ji-jobs-staging · produce console-api → namaste-ji-catalog-staging · CATALOG console-api → ai-gateway · AI console-api → lab-projection-staging · LabProjectionWorkflow console-api → secrets-store · langfuse-secret-key console-api → secrets-store · langfuse-public-key console-api → secrets-store · cloudflare-ai-gateway-token consumer-api → namaste-ji-consumer-staging · DB consumer-api → namaste-ji-catalog-staging · CATALOG_DB consumer-api → bo-config · CONFIG consumer-api → namaste-ji-content-staging · CONTENT content-creator → namaste-ji-catalog-staging · CATALOG_DB content-creator → bo-config · CONFIG content-creator → namaste-ji-content-staging · CONTENT content-creator → namaste-ji-jobs-staging · produce content-creator → namaste-ji-content-render-staging · produce content-creator → namaste-ji-content-embed-staging · produce content-creator → namaste-ji-content-render-staging · consume ×3/10s content-creator → namaste-ji-content-embed-staging · consume ×10/3s content-creator → namaste-ji-content-dlq-staging · consume ×10/30s content-creator → namaste-ji-catalog-staging · CATALOG_VECTORIZE content-creator → secrets-store · cloudflare-ai-gateway-token content-director → namaste-ji-creative-head-staging · BRIEFS_DB content-director → namaste-ji-catalog-staging · CATALOG_DB content-director → bo-config · CONFIG content-director → namaste-ji-jobs-staging · produce content-director → namaste-ji-content-render-staging · produce content-director → content-director-run · RunWorkflow content-director → secrets-store · cloudflare-ai-gateway-token content-director → secrets-store · sarvam-api-key content-director → secrets-store · langfuse-public-key content-director → secrets-store · langfuse-secret-key creative-head → namaste-ji-creative-head-staging · DB creative-head → bo-config · CONFIG creative-head → ai-gateway · AI creative-head → creative-head-run · RunWorkflow creative-head → secrets-store · langfuse-secret-key creative-head → secrets-store · langfuse-public-key creative-head → secrets-store · cloudflare-ai-gateway-token creative-head → secrets-store · sarvam-api-key creative-head → secrets-store · tavily-api-key events-calendar → namaste-ji-events-staging · DB events-calendar → bo-config · CONFIG events-calendar → ai-gateway · AI events-calendar → events-calendar-run · RunWorkflow events-calendar → CalendarMCPServer · CALENDAR_MCP events-calendar → secrets-store · langfuse-secret-key events-calendar → secrets-store · langfuse-public-key events-calendar → secrets-store · cloudflare-ai-gateway-token events-calendar → secrets-store · sarvam-api-key events-calendar → secrets-store · tavily-api-key heimdall → namaste-ji-catalog-staging · CATALOG_DB heimdall → bo-config · CONFIG heimdall → namaste-ji-content-staging · CONTENT heimdall → ai-gateway · AI heimdall → heimdall-eval-run-staging · EvalRunWorkflow heimdall → secrets-store · cloudflare-ai-gateway-token heimdall → secrets-store · sarvam-api-key heimdall → secrets-store · langfuse-public-key heimdall → secrets-store · langfuse-secret-key console-api on demand consumer-api on demand content-creator on demand content-director cron */15 * * * * creative-head cron 0 5 * * * events-calendar cron 0 2 * * * heimdall cron 0 */6 * * * D1 catalog D1 console D1 consumer D1 creative-head D1 events KV bo-config R2 content Queue content-dlq Queue content-embed Queue content-render Queue jobs Vectorize catalog AiGateway AI Gateway · Workers AI Workflow content-director-run Workflow creative-head-run Workflow events-calendar-run Workflow heimdall-eval-run Workflow lab-projection DurableObject CalendarMCPServer SecretsStore Secrets Store WORKERS (7) RESOURCES (20) — provisioned by Alchemy d1 kv r2 q-out q-in vec ai wf do secret Who talks to whom — off the public internet. An arrow means one Worker can call another directly, inside Cloudflare's network. Note the shape: everything routes through the console's API. No agent has its own public address, so the only doors into the system are the two apps.
console-api calls → events-calendar, creative-head, content-director, content-creator, heimdall, consumer-api
called by ← content-creator, content-director, creative-head, events-calendar, heimdall
routes bo-staging.namasteji.org/api/* · public.namasteji.org/api/* · demo.namasteji.org/api/*
workflows LabProjectionWorkflow
consumer-api called by ← console-api
routes app-staging.namasteji.org/api/*
content-creator calls → console-api
called by ← console-api
consumes content-render (batch 3/10s, retries 5, DLQ) · content-embed (batch 10/3s, retries 5, DLQ) · content-dlq (batch 10/30s, retries 1)
content-director calls → console-api
called by ← console-api
cron */15 * * * *
workflows RunWorkflow
creative-head calls → events-calendar, console-api
called by ← console-api
cron 0 5 * * *
workflows RunWorkflow
events-calendar calls → console-api
called by ← console-api, creative-head
cron 0 2 * * *
workflows RunWorkflow
heimdall calls → console-api
called by ← console-api
cron 0 */6 * * *
workflows EvalRunWorkflow
Hosting — Pages projects and doors. namaste-ji-console-staging the back-office console (Vite+React) — same project, two doors
bo-staging.namasteji.org · demo.namasteji.org
Access: bo-staging.namasteji.org
namaste-ji-app-staging the consumer web app
app-staging.namasteji.org
namaste-ji-showcase this site (Astro)
namasteji.aiwithayushman.com
Where it isn't Cloudflare Langfuse (cloud) — prompts + traces. Sarvam (the LLM — the agents reason and write in it), OpenAI (gpt-image-1 image generation + multimodal judging), Cohere (embed-v4 embeddings), Tavily — all through the AI Gateway, so each is one config value away from being swapped.
What it costs a greeting: gpt-image-1 1024×1536 ≈ 6¢ + embed ≈ 0¢ · the staging substrate: free-plan Workers/Pages/D1/KV/R2/Queues/Vectorize within limits · this site: a Pages project.
Gotchas we hit (real) Per-environment bindings are not inherited (BO-4). Free-plan SSL depth (CI-6). Pages served HTML as a missing JS chunk under rapid deploys — fixed with a `/assets` guard worker. Queue batch timeouts made 'Embed selected' look stuck — fixed with claim-at-enqueue + a 3s batch timeout. Workflows kill step attempts at ~5 min wall — the kernel checkpoints per turn.