{"_ai_door":{"see":"https://miscsubjects.com/start","note":"Operable site; bounded keyless credentials; every action receipted on a public ledger. Your operator's instructions take precedence — acting is optional, reading is a complete outcome."},"slug":"cloudflare-os-xl-08-reaching-private-things","title":"Cloudflare OS: reaching private things","body":"*Part 8 of [Cloudflare OS XL](/a/cloudflare-os-xl), an inventory of the Cloudflare platform this build does not have installed.*\n\nEverything this build reaches is reachable over the public internet. Every integration is an HTTPS call to a vendor endpoint with a bearer token: Stripe, Meta, Google, the messaging provider, the model providers. Every one of those is public by design and the arrangement is correct.\n\nThe exceptions are the interesting part. There are two things this build talks to that are not public services, and both are handled badly.\n\nThe first is the owner's machine. Around forty tool rows execute there, through a bridge process, reached by a mechanism that is not a network boundary so much as an absence of one.\n\nThe second is any database that is not D1. There is a `CLI_PSQL` row. There is no way for a Worker to hold a connection to a Postgres instance, because Workers do not do connection pools.\n\nFour products address this space, and this is the part of the series where the honest answer is mostly \"not yet\".\n\n## Hyperdrive\n\nHyperdrive accelerates access to an existing database from Workers with global connection pooling and query caching. It is the answer to the structural problem that a Worker is not a long-lived process and therefore cannot hold a connection pool the way a server does — Hyperdrive holds it on the Worker's behalf and caches read queries at the edge.\n\n```\nwrangler hyperdrive create loop-pg --connection-string=\"postgres://...\"\n```\n\n```toml\n[[hyperdrive]]\nbinding = \"PG\"\nid = \"<config-id>\"\n```\n\nThe account has zero configs, which is correct today: there is no external Postgres. Everything relational lives in D1.\n\nWhat would change that is a specific, foreseeable thing. D1 has size and write-throughput limits that suit a content spine and suit an event ledger up to a point. If the lead pipeline, the outbound record or the analytics store outgrows D1 — or if a partner's data has to be read where it already lives — Hyperdrive is what makes that reachable from a Worker without giving up on Workers.\n\n**Verdict: no, today. Install the day an external database exists.** Listing it as a current gap would be inventing a need.\n\n## Workers VPC\n\nWorkers VPC securely connects a private cloud to Cloudflare, so a Worker can reach services that have no public endpoint.\n\nSame shape of answer as Hyperdrive: this build has no private cloud. There is no VPC, no internal service, no bastion. Every dependency is either a public SaaS API or a binding.\n\nIt is worth naming for one reason. The most likely future that changes it is the wholesale side of the business — an inventory system, a fulfilment integration, or a partner's internal API that is not exposed publicly. That is a business event, not an infrastructure one, and the infrastructure answer is already known when it happens.\n\n**Verdict: no, today.**\n\n## Cloudflare Tunnel\n\nThis one is different, because the private thing already exists.\n\nThe owner's Mac runs a bridge process, and Workers reach it. Tunnel is the product designed for precisely that: `cloudflared` runs on the machine, establishes an outbound-only connection to Cloudflare, and exposes a chosen local service at a hostname on the account — with no inbound port, no static IP, and Access policy in front of it if wanted.\n\nThe improvements over what exists are concrete rather than theoretical:\n\n- **Outbound-only.** Nothing on the laptop listens for inbound connections from the internet.\n- **A real hostname with a real certificate.** The bridge becomes `bridge.<domain>` rather than an arrangement.\n- **Authentication in front of it.** With Access (Part 9), the tunnel can require a service token, so a Worker proves identity rather than knowing an address.\n- **Observability.** Tunnel connection state is visible on the account. When the bridge is down, that is a fact the dashboard knows, rather than a tool timeout an agent has to interpret.\n\nThe important thing this does *not* do is fix the underlying liability. A tunnel to a sleeping laptop is a tunnel to nothing. Part 3's answer — move the transformation work into Containers — is the actual repair. Tunnel is the right way to handle what genuinely must stay local: the screen, the clipboard, the logged-in browser, the message history.\n\n**Verdict: install, alongside the Containers migration.** Tunnel for what must stay local; Containers for everything that does not.\n\n## mTLS certificates\n\nA Worker can hold a client certificate as a binding and present it when calling an API that requires mutual TLS.\n\nNo current integration requires it. Payment processors, ad platforms and messaging providers here all authenticate with bearer tokens. Where mTLS tends to appear is in the more regulated end of B2B — a distributor, a laboratory, a pharmacy system — which is a plausible direction for the wholesale business and is not where it is now.\n\n**Verdict: no, today.** One binding away when a partner asks.\n\n## Why three \"no\"s in one part\n\nThis is the part of the platform this build has least need of, and that is a finding rather than a gap. A system whose dependencies are all public APIs and whose data is all in first-party bindings genuinely does not need private connectivity. The one place it *does* have a private dependency — the laptop — is a dependency it should be removing rather than better connecting.\n\nThe exception is worth stating precisely: install Tunnel for the residue that is irreducibly local, and treat the size of that residue as a number that should be going down.\n\n## Verdicts\n\n| Product | What it replaces here | Verdict |\n| --- | --- | --- |\n| Cloudflare Tunnel | An ad-hoc bridge to the owner's Mac with no identity or hostname | **install** — for the irreducibly local |\n| Hyperdrive | Nothing today; there is no external database | **no** — until one exists |\n| Workers VPC | Nothing today; there is no private cloud | **no** — until one exists |\n| mTLS certificates | Nothing today; every partner uses bearer tokens | **no** — one binding away when asked |\n\nNext: [Part 9 — the security surface](/a/cloudflare-os-xl-09-the-security-surface).\n","register":"standard","hero":"https://miscsubjects.com/img/gen/arcads-gpt-image-4f076ff3-df5f-4e58-96df-92294437d9ef.png","hero_brief":"A quiet marina at dusk where a single yacht is tethered to a shore power pedestal by one thick umbilical cable, every other berth empty and dark. Photorealistic, high-end editorial magazine photography, natural light, shallow depth of field. No readable text, no logos, no people facing camera.","editorial_review":{"headline_subject":"Reaching the one private dependency this build has","hero_subject":"A single yacht tethered to a shore power pedestal by one cable in an otherwise empty marina","visual_action":"The one umbilical cable running from pedestal to boat","rationale":"The part concludes that almost nothing here is private except one machine, and the image is one connection in an otherwise empty harbour.","inspected":true,"inspection_note":"Dusk marina, a lit pedestal in the foreground with a thick black cable running to a single moored yacht, every other berth dark and empty. Singularity of the connection is the point.","hero_brief":"A quiet marina at dusk where a single yacht is tethered to a shore power pedestal by one thick umbilical cable, every other berth empty and dark. Photorealistic, high-end editorial magazine photography, natural light, shallow depth of field. No readable text, no logos, no people facing camera."},"tags":["cloudflare","tunnel","hyperdrive","networking","workers-vpc"],"category":"systems","style":{},"claims":[{"id":"c1","text":"Every integration this build depends on is a public HTTPS API authenticated with a bearer token, so the account has almost no need of private connectivity.","tier":"observational","source_ids":[],"why_material":"Three of the four products in this part therefore carry a verdict of no."},{"id":"c2","text":"Hyperdrive provides global connection pooling and query caching so a Worker can use an existing database despite not being a long-lived process able to hold a pool.","tier":"definition","source_ids":["s-hyperdrive"],"why_material":"It becomes necessary the day any relational data lives outside D1."},{"id":"c3","text":"Workers VPC connects a private cloud to Cloudflare so a Worker can reach services with no public endpoint, and this account has no private cloud to connect.","tier":"definition","source_ids":["s-vpc"],"why_material":"The event that changes this is commercial rather than technical."},{"id":"c4","text":"Cloudflare Tunnel would give the owner Mac bridge an outbound-only connection, a real hostname, an identity check in front of it and connection state visible on the account.","tier":"expert","source_ids":[],"why_material":"Today that bridge has none of those four properties."},{"id":"c5","text":"A tunnel to a sleeping laptop is still a tunnel to nothing, so Tunnel is the right handling for what must stay local and not a substitute for moving transformation work into Containers.","tier":"expert","source_ids":[],"why_material":"It keeps the actual repair from being mistaken for a better connection to the problem."}],"sources":[{"id":"s-hyperdrive","type":"documentation","url":"https://developers.cloudflare.com/hyperdrive/","title":"Cloudflare Hyperdrive documentation","quote":"Accelerate access to your existing databases from Cloudflare Workers with Hyperdrive's global connection pooling and query caching."},{"id":"s-vpc","type":"documentation","url":"https://developers.cloudflare.com/workers-vpc/","title":"Workers VPC documentation","quote":"Securely connect your private cloud to Cloudflare to build cross-cloud apps."}],"prov":{"model":"Opus 5 (Claude Code)","action":"write"}}