Skip to content

Export a snapshot

llms.txtlists every page for an agent

behold export captures whatever you are looking at into a static folder that any host can serve. Read-only, and fully interactive.

Terminal window
npx behold export --out ./behold-export
npx serve ./behold-export

Pan and zoom, the zoom dial, the inspect pane and the env/tier pickers all work client-side. There is no backend and no live observe: it is a snapshot, and it says so.

Every read endpoint for the whole lens matrix (each env/tier × zoom × radial), rendered in-process by the same handlers the live server runs. A snapshot is byte-identical to what live would have shown at that moment.

Terminal window
npx behold export ../my-project --env prod --out ./behold-export

Freezes the drift colours as they were when you exported. Useful for an incident write-up, or for showing someone an estate they have no credentials for.

Each captured environment also carries its health and rotation, read once with chant lifecycle health when the export runs: the health marks on the cards and the Route 53 records out of rotation are drawn as they were then. The read uses the export’s own credentials and endpoints (AWS_ENDPOINT_URL and the like, or the environment’s declared endpoint), the same as the drift overlay. A chant older than 0.124.33 captures the refusal, and the bundle draws no health marks.

A bundle opens on the source graph (env: (source)) at the zoom behold would pick for the estate. --open-env and --open-zoom choose something else:

Terminal window
npx behold export ../my-workspace --open-env frozen --open-zoom composites --out ./behold-export

--open-env takes one of the environments the export captures, which are the ones the estate declares. --open-zoom takes components, logical, composites, resources or attributes, and ops when the estate has emitted Ops. The export refuses any other value before it captures anything, and says which values it would take. The choice is written to the bundle’s manifest.json as opening. A link with its own ?env= or ?zoom= still opens where the link points.

--note puts one line of text under the graph, such as how to run the estate yourself. A span in backticks is drawn as code, and nothing else is markup:

Terminal window
npx behold export . --note 'Run this yourself: `npx @intentius/behold demo three-cloud`' --out ./behold-export

The note is at most 200 characters on one line, and the export refuses anything else before it captures. It is written to manifest.json as note. The three-cloud demo ends its page this way.

Exporting a directory that holds a chant.workspace.json names the bundle after the workspace, not after its first member. The generated wrangler.jsonc names the Worker behold-<workspace name> (behold-three-cloud for a workspace declared as three-cloud), and manifest.json carries workspace with the declared name and projectDir with the workspace root’s directory name. --name still overrides the Worker name. A single project is named after its directory, as before.

A bundle carries the picture and nothing about the machine that made it: no list of your recent projects, no user name, and every absolute path reduced to its directory’s name.

A Terraform card carries its root’s whole source file. --no-source leaves that text out of every snapshot:

Terminal window
npx behold export . --no-source --out ./behold-export

--terragucci <src> captures the marks serve --terragucci shows, with the same dates, and the audit record’s timeline as one more snapshot (a refusal or an absent record is captured as the lane shows it, and does not fail the export). --publish s3://<bucket>/<prefix>/views/<name> also uploads the bundle there, signed with AWS credentials from the environment; it writes only under a views/<name> directory, one folder per commit (views/<name>/<commit>/, the checkout’s HEAD or --commit <sha>), with history.json, latest.json and an index.html that opens the newest beside them; --keep <n> (default 30) is how many commits stay. Publish a view says how terragucci’s estate job puts it beside estate.html.

The bundle is deploy-ready for Cloudflare, since export writes an assets-only wrangler.jsonc:

Terminal window
cd ./behold-export && npx wrangler deploy

GitHub Pages, S3 and nginx work too. The live app needs Docker and a chant subprocess and cannot run on an edge worker; the pre-baked export can.

behold