Autonomous designer-in-residence for the Norfield VPS: every backend system on this box gets a published site, no human in the loop.

Every backend on this box ships with a finished website

One hardened Node.js daemon on the VPS. Every five minutes it looks for new or changed systems, writes their words inside a sandbox, renders them through a single audited template, and publishes. No site is called live until the published page proves it is the page the Architect generated.

5-minute scan loop Zero tools at write time No frontend build on VPS Verified before live

What the daemon does

Seven behaviours, all of them running unattended on the VPS.

Five-minute scan

On a five-minute loop the Architect scans /opt/norfield-systems and the running Docker containers, looking for systems that are new or have changed since the last pass.

Reads only the system's own docs

For each system it reads that system's README and package.json and nothing else, then scrubs anything secret-shaped out of the text before it goes any further.

Sandboxed writing call

The words come from one sandboxed call to the claude CLI. That call is granted zero tools and none of the publisher credentials, so the model can only ever hand back text.

Strict schema gate

Returned copy must pass a schema gate before it is used: plain text only, no HTML, no links, and no capabilities that the source documentation does not support.

One audited template

Approved copy is rendered through a single audited Next.js template carrying the Norfield brand tokens. There is one template to review, not one design per system.

Builds 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, and a real subdomain is wired for each system.

Proof before live

A site is recorded as live only once the Architect fetches the published page and confirms it serves its own generator marker. No marker, no live status.

5 min
Scan interval
0
Tools granted to the writing call
1
Audited template behind every site
0
Frontend builds on this VPS

From a changed directory to a verified page

Step 1

Scan

The daemon walks /opt/norfield-systems and the running Docker containers, looking for systems that are new or have changed since the last pass.

Step 2

Read and scrub

It reads that system's README and package.json and nothing else, then strips anything secret-shaped out of the text.

Step 3

Write in a sandbox

One call to the claude CLI, granted zero tools and none of the publisher credentials, returns the site's words as plain text.

Step 4

Gate the words

The copy must pass a strict schema: plain text only, no HTML, no links, and no capabilities the source documentation does not support.

Step 5

Render and push

Approved copy goes through one audited Next.js template with the Norfield brand tokens and is pushed to a private GitHub repository.

Step 6

Build and verify

Cloudflare Pages builds the site in the cloud and a real subdomain is wired. The Architect records it live only once the page serves its own generator marker.

One pass, as it appears in the log

root@vps — architect
$ systemctl status norfield-architect
active (running) — scan loop every 5 minutes
watching /opt/norfield-systems and running docker containers
$ journalctl -u norfield-architect -n 6
scan: 1 changed system detected
read README.md and package.json — secret-shaped strings scrubbed
copy: claude CLI call returned text, 0 tools granted
schema gate: passed — plain text, no HTML, no links
push: private repo updated, Cloudflare Pages build queued
verify: generator marker served — site recorded live
$

Inputs in, proof out

1# inputs: only the system's own documentation
2/opt/norfield-systems/SYSTEM/README.md
3/opt/norfield-systems/SYSTEM/package.json
4# copy: one sandboxed claude CLI call, zero tools, no credentials
5# gate: plain text only, no HTML, no links, no invented capabilities
6# render: one audited Next.js template with Norfield brand tokens
7# publish: push to private GitHub repo, Cloudflare Pages builds it
8curl -s $PUBLISHED_URL | grep norfield-architect-generator
9# marker found: record live. marker missing: not live.
The only files the Architect reads for a system, and the check that decides whether the site counts as live.

Hand-built pages against the Architect

Hand-built system pages
Norfield Architect
Someone writes the copy when they have time, or the page never appears at all.
The scan loop finds the system within five minutes and writes the copy that pass.
Every page drifts into its own layout and its own idea of the brand.
One audited Next.js template carries the Norfield brand tokens for all of them.
Docs get copied across by hand, and secrets sometimes come along for the ride.
Only README and package.json are read, and secret-shaped strings are scrubbed.
The work is called done when the push succeeds.
A site is live only after the published page serves its own generator marker.
Frontend builds run wherever there is a shell, including on the VPS itself.
Cloudflare Pages builds in the cloud. This VPS never runs a frontend build.

How it protects itself

The writing call holds no tools and no credentials

Words are produced by a single sandboxed call to the claude CLI. That call is granted zero tools and none of the publisher credentials, so the only thing it can return is text. It cannot reach the filesystem, the repository, or the DNS records that the Architect controls.

A site is not live because we pushed it. It is live because we fetched the published page and found our own generator marker in it.

Norfield Architect operating rule

Questions operators ask

Does the model that writes the copy have access to the VPS?

No. The copy comes from one sandboxed call to the claude CLI that is granted zero tools and none of the publisher credentials. It can return text and nothing else. Reading files, pushing to the repository, and wiring the subdomain are all done by the daemon, not by the model.

What does the Architect read about my system?

That system's README and package.json, and nothing else. It does not read other systems, other directories, or anything outside the documentation the system ships with. The text is scrubbed of secret-shaped strings before it goes any further down the pipeline.

What happens when the copy fails the schema gate?

The gate is a pass or fail check that sits in front of the template. Copy carrying HTML, links, or capabilities the source documentation does not support does not reach the renderer, so nothing is built or published from it.

Where does the frontend build run?

In the cloud. The rendered site is pushed to a private GitHub repository and Cloudflare Pages builds it there. This VPS never runs a frontend build, so a build has no way to consume resources or credentials on the machine that runs your backends.

How long before a new system gets a page?

The scan runs every five minutes over /opt/norfield-systems and the running Docker containers, so a new or changed system is picked up on the next pass. The page is only recorded as live once the published page serves its generator marker.

Can I get a page that claims something my system does not do?

The schema gate rejects capabilities that are not supported by the system's own documentation, and the documentation is the only input. If a page is missing something true, the fix is in the system's README and package.json.

About the Architect

Norfield Architect is a single hardened Node.js daemon running on the Norfield VPS. It is the designer-in-residence for every backend system on the machine: it finds them, reads their documentation, writes their words under a sandbox, renders them through one audited Next.js template carrying the Norfield brand tokens, and publishes them through a private GitHub repository and Cloudflare Pages. No human sits in that loop, and no site is recorded as live until the Architect has seen its own generator marker on the published page.