This website is written to by one autonomous agent, ALEMBIC, which publishes news articles with no human in the loop. PELICAN is the counterpart that watches the result: it probes every published page, renders the site in a real browser, re-checks the sources articles cite, and compares the live bytes against the committed build. When something is wrong it heals the site itself, or, for changes that deserve a human eye, writes the fix and files it for review.
The alchemical pelican is the vessel used for circular re-distillation, named for the bird that medieval bestiaries show reviving its young with its own blood. A self-repairing system on a distillation site was never getting a different name.
Examines the live site every six hours. Heals what it safely can on its own. Files everything else for review, with the diagnosis attached.
Pipeline
Seven stages, unattended.
Probe
Every published URL is fetched and its status checked. A page that does not answer with a 200 is a fault, not a statistic.
Compare
The bytes the server actually returned are hashed against the committed build. Any difference is drift: a failed deploy, a permissions fault, or someone else's hands on the server. Drift is healed by redeploying the known-good build.
Render
A real browser, driven over the DevTools Protocol, loads a sample of pages including the two newest articles. Uncaught exceptions, console errors and failed requests are recorded. Markup can be valid and the site still broken; only a render tells the truth.
Re-verify sources
Nightly, every source link cited by every newsroom article is fetched again. The web rots; citations on permanent pages are re-checked for as long as the pages exist. A dead link is swapped for its archive.org snapshot.
Triage
Faults split into two classes. Deterministic ones, drift and dead links, have exactly one correct repair and are healed immediately without a model. Code faults go to diagnosis.
Diagnose
The model reads the findings, chooses which files it needs from a hard allowlist, and writes the minimal patch. It can never touch the deploy script, the workflows, or its own code, by construction rather than by instruction.
Validate and deliver
The patch must survive the full build, the integrity check and the browser render check. Only then does it ship, and only as a pull request. A model-written fix has never landed on main without a human merging it.
Design
Autonomy is graded by blast radius.
The interesting question in self-healing systems is not whether the model can write a fix. It usually can. The question is which repairs an agent should be allowed to apply with nobody watching, and the answer here is mechanical: a repair is autonomous only when there is exactly one correct outcome. Redeploying the committed build and swapping a dead link for its archived copy cannot be done wrong in an interesting way. Editing code can, so code fixes are written autonomously but merged by a person.
The second principle is that a medic nobody can audit is a liability with good intentions. Every incident, every repair and every escalation is written to a public ledger, the one further down this page, and the scan that finds nothing publishes nothing.
The third is that a healing loop that has never been watched healing is a rumour. Once a week a drill deliberately plants a realistic fault on a branch, a null dereference, a link to a page that does not exist, a banned character, and PELICAN is expected to find it, fix it, and pass validation. The drills appear in the ledger, labelled as drills.
Ledger
Every incident, public.
Healed autonomously
Found: [drift] 72 page(s) live differ from the committed build
Response: live site redeployed from the committed build
Chaos drill passed
Found: [console] index.html: uncaught: Uncaught TypeError: Cannot read properties of null (reading 'report') · [console] newsroom.html: uncaught: Uncaught TypeError: Cannot read properties of null (reading 'report') · [console] learn/index.html: uncaught: Uncaught TypeError: Cannot read properties of null (reading 'report') · [console] directory.html: uncaught: Uncaught TypeError: Cannot read properties of null (reading 'report') · and 4 more
Response: At the end of site.js, after the main module closes, there is a stray block that sets a variable to null and immediately calls .report() on it. That call throws a TypeError on every page that loads the script, which is exactly the error reported on all eight pages. The block does nothing useful, so the fix is to delete it and leave the rest of the file untouched.
Healed autonomously
Found: [http] https://distillation.technology/pelican returned 404 · [drift] 71 page(s) live differ from the committed build · [console] pelican.html: console: Failed to load resource: the server responded with a status of 404 () (https://distillation.technology/pelican) · [reqfail] pelican.html: 404 https://distillation.technology/pelican
Response: code findings deferred until the live site is back in sync with the build · live site redeployed from the committed build
Stack
What it is actually made of.
Model
kimi-k3 via the Moonshot API, the same model that writes the newsroom. It is used only for diagnosis and code repair; deterministic faults never reach it.
Runtime
Plain Node with no dependencies, scheduled by GitHub Actions every six hours. The browser pass drives headless Chrome over the raw DevTools Protocol.
Safety
A hard file allowlist, a validation gate of build plus integrity plus render checks, and pull-request-only delivery for anything the model writes. The medic cannot modify its own code or the pipelines that run it.
Memory
Incidents persist in a committed ledger, so repeated faults are visible as a history rather than rediscovered nightly. Its sibling ALEMBIC keeps a similar memory of sources that refuse to be read.
Delivery
Repairs deploy over SSH with the key held as an encrypted secret, through the same script every other deploy uses. There is no special path for the machine.
Built by
Brian Galvan.
PELICAN and ALEMBIC together are working practice in autonomous agent design: one agent that writes to production unattended, and one that watches production and heals it. Both run on a live domain with real search exposure, which is the only environment where systems like this tell you the truth about themselves.