Reads a client JSON file and validates required fields before touching deploy state.
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.
Prints the exact Wrangler/D1/env commands needed for a new client or existing site.
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
Business name, domain, modules, phone, admin email, service area, SEO keywords, WhatsApp owner number.
D1 database, wrangler binding, env/secrets, IndexNow key, WhatsApp webhook secret, allowed senders.
Booking, notifications, indexing, AI visibility, security gates, MCP tools, and optional local agent runner.
Canonical URLs, pages to crawl, API probes, and what should return 200 before calling it live.