🤖 Running the fleet · About this guide
Maintaining this guide
The guide is ten plain HTML pages, one shared stylesheet, and one shared script — no build step, no dependencies, nothing to install. Open any page in a browser straight from the repository, or serve the directory statically. This page explains how to keep it accurate and how to extend it.
How the directory is put together
| File | Role |
|---|---|
index.html … reference.html | The ten content pages. Each is self-contained semantic HTML; nothing is generated. |
guide.css | The single stylesheet. Colors, typography, panels, badges, tables, diagrams — edit here and every page follows. Light and dark themes are both defined at the top. |
guide.js | The single script, and the guide’s one source of structure: the PAGES list (which drives the sidebar and the previous/next links on every page) and the shared “you are here” system-map diagram. All injected markup is built from static in-code strings only, per the repository rule about innerHTML. |
README.html | This page. |
Editing an existing page
- The code is the source of truth. Before changing a factual claim, check it against the code (
control.go,router.go,activator.go,mesh.go,controld.go,cloud.go,reaper.go,deploy/systemd/) or the design documents (docs/planet-scale.md,docs/instance-router.md). Where this guide and the code disagree, fix the guide. - Keep the register. The guide deliberately avoids contractions, avoids unexplained jargon, spells out commands in full, and repeats key ideas where they matter. Match that when adding text.
- Keep the status badges honest. Anything not operable today must carry partially built or designed, not built, and aspirational behaviour belongs in a dashed
.roadmappanel, never in running prose. When a roadmap item ships, promote its badge and move the text out of the panel in the same change. - Use the shared components rather than inventing new markup:
figure.cmdfor labelled command blocks,ol.procedurefor step-by-step tasks,.plain/.warn/.whypanels for recaps, cautions, and rationale, and.statusbadges. Examples of each are on every page.
Adding a page
Copy an existing page as the template.
Keep the
<head>, the.frame/nav.side/main.contentskeleton, the header block, and thediv.sysmap. Setdata-pageon<body>to the new file name.Add one entry to the
PAGESlist inguide.js, in reading order.That single edit updates every page’s sidebar and previous/next links. Renumber the
numfields and each page’s eyebrow (“Part NN of NN”) if the new page changes the ordering.Choose the system-map highlight.
Set
data-highlighton thediv.sysmapto the node keys the page covers (members router instances services control updater bucket backup peer, space-separated). If the page introduces a genuinely new component, add a node for it tosysmapSVGinguide.jsso the map stays a true whole-system picture.
Checking your changes
node --check docs/planet-scale-guide/guide.js # the script must stay parseable
# then open the pages and click through:
open docs/planet-scale-guide/index.html # macOS; or any static file server
Eyeball both color schemes (the pages follow the operating system’s light/dark preference), confirm the sidebar highlights the page you are on, and confirm the previous/next links at the bottom of each page still make sense.
Authorship marking
Per the repository’s authorship convention (CLAUDE.md), these pages were written by an LLM and carry the visible 🤖 marker in each page’s eyebrow. A human who substantially rewrites a page should remove the marker from that page (or add a person marker to certify it); an LLM editing further keeps it.
Publishing to elevenmessenger.com
The guide is published to elevenmessenger.com/infrastructure/, and this directory is the only source — nothing is ever hand-edited at the destination. Publishing is a local build, no GitHub Actions involved, in two steps:
Mirror this directory into the website repo.
Run
tools/sync-guide-to-website.sh <path-to-a-local-checkout-of-elevenmessenger/website>. It copies this directory into that separate, public repo’ssrc/infrastructure/(Eleventy passthrough-copies it to/infrastructure/unmodified — see that repo’s.eleventy.js), commits, and pushes the website’smain. It uses your own git credentials — no token to set up.Build and publish the website.
In that website checkout, run
./deploy.sh: it builds the Eleventy site and force-pushes the output to thegh-pagesbranch, which GitHub Pages serves directly (deploy-from-a-branch). The custom domain and HTTPS ride along inside the build; live within about a minute. See the website repo’sREADME.md§ Deploy.
This used to be automatic: a push to main touching this directory triggered .github/workflows/sync-guide-to-website.yml, which synced and deployed through the website’s own workflow. Both are now disabled — the project moved off GitHub Actions entirely (every binary already builds locally, and Actions was only ever publishing this site). The workflow files are kept in their trees, disabled, as the record of that approach; re-enabling them and flipping the website’s Pages source back to workflow-build is how you would restore auto-publish. (An earlier second copy served at home.elevenmessenger.com/infrastructure/ is being retired.)