Every system on this box gets a real site, without anyone writing it
The Architect watches /opt/norfield-systems and the running containers, reads each system's own documentation, writes the page with one sandboxed model call, and publishes it end to end. No ticket, no design review, no human in the loop.
What the daemon does
One hardened Node.js process on the Norfield VPS, doing the same things on a fixed loop.
Five-minute discovery
Scans /opt/norfield-systems and the running Docker containers for new or changed systems. Anything that appears or moves is picked up on the next pass.
Reads only its subject
For a given system it reads that system's own documentation — README and package.json — and nothing else, then scrubs anything secret-shaped before the text leaves the machine.
One sandboxed call
The words come from a single call to the claude CLI, granted zero tools and none of the publisher credentials. The model can only ever return text.
Strict schema gate
Returned words must be plain text: no HTML, no links, no capabilities the source documentation does not support. Copy that fails the gate is not rendered.
One audited template
Every site is rendered through the same reviewed Next.js template carrying the Norfield brand tokens. The model never supplies markup.
Builds happen in the cloud
The rendered site is pushed to a private GitHub repository and built by Cloudflare Pages. This VPS never runs a frontend build.
Proof before live
The Architect wires a real subdomain, then refuses to record the site as live until the published page provably serves its own generator marker.
From directory change to published page
Scan
Every five minutes, walk /opt/norfield-systems and the running Docker containers, then pick out the systems that are new or have changed since the last pass.
Read and scrub
Open only that system's README and package.json. Remove anything secret-shaped before a single character is handed to the model.
Write
Make one call to the claude CLI with zero tools and no publisher credentials. Text goes in, text comes back, and that is the whole surface.
Gate and render
Hold the copy to the schema — plain text, no HTML, no links, no invented capabilities — then render it through the one audited Next.js template.
Publish
Push to a private GitHub repository, let Cloudflare Pages build the site, and wire a real subdomain for it.
Verify
Fetch the published page and look for its own generator marker. Until that marker is served, the site is not recorded as live.
Signals from the loop
A pass, from the outside
Where the work moves
The shape of a run
1scan.interval = 5m2scan.sources = /opt/norfield-systems, running docker containers3read.allow = README, package.json (that system only)4read.scrub = anything secret-shaped, before it leaves the machine5copy.call = claude CLI, once6copy.tools = none7copy.credentials = none8copy.schema = plain text only; no HTML; no links; no invented capabilities9render.template = one audited Next.js template + Norfield brand tokens10publish.repo = private GitHub repository11build.runner = Cloudflare Pages (never on this VPS)12live.requires = published page serves its own generator marker
Five gates every page passes
Scrub
Only that system's README and package.json are read, and anything secret-shaped is removed before a single character leaves the machine.
Sandbox
One call to the claude CLI, granted zero tools and none of the publisher credentials. The only thing the model can return is text.
Schema
The returned copy must be plain text with no HTML, no links, and no capabilities the source documentation does not support. Failing copy is not rendered.
Template
Approved words go into the single audited Next.js template carrying the Norfield brand tokens. Nothing model-authored ever becomes markup.
Proof
After the subdomain is wired and Cloudflare Pages has built the site, it is recorded live only once the published page provably serves its own generator marker.
Questions operators ask
How quickly does a new system get a site?
Discovery runs every five minutes, so a system dropped into /opt/norfield-systems or started as a container is picked up on the next pass. Publishing then waits on the Cloudflare Pages build and on the generator marker check before the site is recorded live.
What does the model actually see?
Only that system's own documentation — its README and package.json — after secret-shaped content has been scrubbed. The call is granted zero tools, so the model cannot go and read anything else on the machine, and it is given none of the publisher credentials.
Can a generated page contain HTML or links?
No. The schema gate accepts plain text only: no HTML, no links, and no capabilities the source documentation does not support. All markup comes from the one audited Next.js template.
Does this VPS build the frontend?
No. Rendered sites are pushed to a private GitHub repository and Cloudflare Pages builds them in the cloud. The build toolchain never runs here.
What stops a broken deploy from being reported as live?
The Architect refuses to record a site as live until it can confirm the published page serves its own generator marker. Wiring the subdomain is not enough on its own.
Is a human in the loop anywhere?
Not inside a run. People own the two audited artifacts — the template and the schema — but discovery, writing, rendering, publishing and verification all happen without one.
About the Architect
The Architect is one Node.js process with a narrow job: keep the public face of every backend system on this VPS current, without asking anyone. One template, one set of brand tokens, one path from a system's own documentation to a published page. The parts that could go wrong are fenced: the model call gets zero tools and no publisher credentials, the returned words must survive a strict schema gate, the frontend build runs in Cloudflare's cloud rather than here, and a site is not recorded live until the page serves its own generator marker.