Proposal

Leave Pair.
Launch on Cloudflare.

Four breaches in six months on shared hosting. A system that replaces it all — from closing a deal to a live, secure client website in minutes, powered by Emergent and Cloudflare.

From Talmage
For Jed / Talking Heads
Date May 2026

Four security breaches hit the Pair Networks shared VPS — the one hosting talkingheads.com, websitetalkingheads.com, and client sites like mukbuddy.com — in six months — PHP backdoors, a reverse shell shared in an attacker Telegram channel, reinfection that survived cleanup for 10 days, and SEO spam injection. We responded with 22 security scripts and ~3,000 lines of bash, but the root cause never changed: shared hosting running WordPress with PHP is permanent attack surface. The fix isn't better defenses. It's removing the server entirely. Static sites on Cloudflare Pages have no server, no PHP, no database, no shared hosting neighbors, and no credentials on disk. There is nothing to compromise.

01 — The Workflow

Five commands from zero to live

Here's what Emergent does after you say "set up a site for Acme Corp at acme-corp.com":

1

Check & register the domain

Checks availability, shows the price, and registers it. DNS zone and SSL are configured automatically.

th-infra domain buy acme-corp.com
2

Create the hosting project

Spins up a Cloudflare Pages project. The site gets a free staging URL immediately.

th-infra site create acme-corp
3

Build and deploy

Emergent builds whatever site you described — any framework, any design. Then deploys it with one command.

th-infra site deploy acme-corp ./dist
4

Set up media storage

Creates an R2 bucket for videos, images, and assets. Uploads everything.

th-infra media create acme-corp
5

Connect domain to site

Wires the domain to the Pages project. CNAME records, custom domain registration — all handled.

th-infra site connect acme-corp acme-corp.com
02 — Live Demo

This already works

We tested every command against a live Cloudflare account. Here's an actual run — real API responses, not mockups.

th-infra — live test run
# Check if a domain is available
th-infra domain check test-acme-demo.com
test-acme-demo.com is available
Register: $10.46/yr — Renew: $10.46/yr
# Create a Pages project
th-infra site create th-infra-test
Project 'th-infra-test' created
URL: https://th-infra-test.pages.dev
# Deploy a site
th-infra site deploy th-infra-test ./dist
Live at https://th-infra-test.pages.dev
# Create media storage
th-infra media create th-infra-test
Bucket 'th-infra-test-media' created
# Upload assets
th-infra media upload th-infra-test ./assets
Uploaded 1 file(s) (0.0 MB)
# Check project health
th-infra status th-infra-test
Pages: https://th-infra-test.pages.dev (deployed)
Domain: not connected
Media: th-infra-test-media
# Verified live: HTTP 200
curl -sI https://th-infra-test.pages.dev | head -1
HTTP/2 200
03 — Costs

Almost free

Cloudflare's pricing model is uniquely generous. Most of what we use costs nothing.

Service Cost Notes
CF Pages (hosting) Free 500 deploys/month, unlimited bandwidth, global CDN
R2 (media storage) Free 10 GB storage + 10M reads/mo free. Then $0.015/GB
DNS Free Unlimited queries, always
SSL Certificates Free Auto-provisioned, auto-renewed, always strict
DDoS Protection Free Enterprise-grade, unmetered, on by default
Domain Registration ~$10/yr At-cost pricing — CF charges what the registry charges
Cost per client site
~$10 / year
04 — Getting Started

Three steps and you're live

Everything else is already built and tested.

Create a Cloudflare account

Free. Takes two minutes at dash.cloudflare.com. Add a payment method for domain registration.

Generate an API token

In CF dashboard → My Profile → API Tokens → Create Token. Permissions needed: Zone, DNS, Pages, R2, Registrar.

Run one command

Paste your token and account ID into th-infra. That's it — every command works immediately.

Ready to try it?

The toolkit is built, tested, and waiting. Set up a CF account and we'll launch a client site together in your next session.

See the Live Example Create Cloudflare Account