Phase 08

Installer that ships the same way every time.

This is the boring part that makes the product real: one config in, a client-ready Cloudflare stack out, then smoke checks and links. No hunting around the dashboard, no guessing which schema ran.

Prepare

Reads a client JSON file and validates required fields before touching deploy state.

Provision

Prints the exact Wrangler/D1/env commands needed for a new client or existing site.

Verify

Generates smoke URLs for homepage, APIs, sitemap, llms.txt, booking, indexing, and WhatsApp.

Run Pattern

node tools/localops-installer/install.mjs client-kit/localops/example-client/austins-doors.json --dry-run
node tools/localops-installer/install.mjs client-kit/localops/example-client/austins-doors.json --write-report

What It Creates

Client manifest

Business name, domain, modules, phone, admin email, service area, SEO keywords, WhatsApp owner number.

Cloudflare checklist

D1 database, wrangler binding, env/secrets, IndexNow key, WhatsApp webhook secret, allowed senders.

Module map

Booking, notifications, indexing, AI visibility, security gates, MCP tools, and optional local agent runner.

Smoke report

Canonical URLs, pages to crawl, API probes, and what should return 200 before calling it live.