vibeapp.win
This site, and the engine that drafts it from our own git history. The site build checks for leaks again before anything goes live.

The engine's admin page, run locally on 3 October 2026. Blurred: the signed-in user, how Claude is logged in, repository and source details, and the titles of drafts that are not approved yet.
What it is
This site. It tells what actually happens when Henning and Claude build apps together with agentic coding, with the numbers and with the failures. The site and its engine were built on 3 October 2026.
The stories come from git history, changelogs, task lists and measurements from repositories that Henning has approved. The main risk is that something internal leaks: a key, an address, or a detail that tells an attacker where to look.
How it works
The public site is static, built with Astro on Cloudflare Pages, with self-hosted fonts.
The engine runs in a container behind a login and reads the approved repositories read-only. Claude drafts posts with no tools. Each draft goes through a set of checks: form, leak patterns, a list of known internal values stored only as hashes, internal app names, advice-like wording, whether every source reference resolves, and two model reviews, one for leaks and one for facts.
An autopilot runs on Mondays and Thursdays and gives each draft up to three fix rounds. A separate judge model reads each leak doubt and answers allowed, fix or topic. Only fix goes to the fixer. Drafts that are green on two independent gate runs are scheduled. Since 8 October, a draft whose only remaining findings are fact doubts also goes out, as long as one more independent gate run agrees. An unsupported claim counts as a stop and never gets through this way. Everything else waits for Henning. The site’s build checks the finished pages for leaks once more.
Since 4 October
The repository got 66 commits from 4 to 8 October, 28 from 8 to 12 October, 10 from 12 to 19 October and none from 19 to 22 October (git log –no-merges, counted 2026-10-22). On 12 October the autopilot revised this page and counted 1,570 commits across 11 apps.
Two faults in Claude’s quota handling sent drafts to the inbox for reasons that had nothing to do with their text. Now an empty quota stops the run, and the run resumes three hours later. On 7 October the Instagram token died and two days of posts were missed. Every failure now shows as a banner on every admin page.
The Instagram job first ran on an hourly timer that counted from when the container started, so it could tick just before the 16:00 UTC slot and then just after it. Since 4 October it ticks every ten minutes.
On 8 October Claude’s code checked the eight-fact cap only after the model call, and this page failed validation. The cap is now in the schema and the prompt.
Reels
A commit from 9 October records that Reels were watched for 4.5 seconds on average, out of 35 to 45, and that carousels reached one to four accounts. The daily Reel was cut to about 25 seconds. Later that day, Reels started opening on a ten-second film made on a local GPU.
The films lasted three days. On 12 October Henning asked for something simpler: line drawings, expectation against reality. The film code and its on/off switch were removed. Each Reel now opens on a stick-figure skit, one for each of eleven mistake patterns, drawn in code with synthesised pencil and bonk sounds. The task list plans to compare Reels and carousels around 23 October and pick one format.
Every text here, this one included, is written with Claude.
What we expected, and what happened
Read it like a code review. Each removed line is something we expected, from a plan, a spec, a README or a code comment. The added line under it is what the history shows actually happened.
Expected: The first plan said: no engine before we know what it should do. Write three or four posts by hand first, then the site, and build the engine only after both.
Happened: Henning chose to build everything at once. The hand-written posts still came first in practice: four agents wrote them, and their notes on what they left out and why became the specification for the gates.
Expected: The reuse plan said to copy nothing from the newsroom engine until the engine milestone, and then copy deliberately, noting the source commit.
Happened: That is what happened. The Claude adapter and the login check were copied from one named commit and translated. The commit they came from is noted at the top of each file.
Expected: The plan for the leak gate was three layers: patterns, a list of known internal values, then a model review.
Happened: On the four finished drafts, the patterns and known values caught nothing; the agents had already kept those things out. The model review caught what no pattern sees, such as wording that pointed to where secrets are kept. And all four drafts used an internal app name that is also a real address. Henning caught that, not a gate, and it is now a rule.
Expected: The project notes warned not to assume the bare domain would just work, because it had not for kokkekunst.no. The site also had to stay outside the login that guards the other apps.
Happened: There was no record for www at all, and the bare domain pointed at nothing useful and answered with an error. The available permissions did not allow redirect rules, so the bare domain was attached to the Pages project and a small function sends it to www with a permanent redirect. Live on 3 October.
Expected: Nothing is published autonomously. That can be reconsidered once the gates have been measured, not before.
Happened: Until 4 October, publishing was a click on the admin page. The gates were measured on 3 October, and from 4 October the autopilot publishes drafts that are green on two independent gate runs. Corrected 8 October: this point used to say the gates had not been measured yet.
Expected: When app page revisions were built, the plan said existing expected/happened points are kept by code and the model can only add new ones.
Happened: On the autopilot's first run, on 4 October, the fix step in Claude's engine code removed one existing point from the monitoring app's page and shortened another. The page had no new commits since Henning approved it, and the history note said nothing else had changed. The revision was reverted. The fix step now gets old points back word for word, the autopilot refuses a revision that does not keep them, and pages with nothing new are skipped.
Expected: After the gates were measured on 3 October, the task list still said nothing is published autonomously, and that the next step was to make the leak gate quieter without making it blind.
Happened: The next day the engine got an autopilot. At first it published only what was green on two independent gate runs, with no leak doubt and only harmless doubts about counts or dates. Its first run published four posts. The site no longer says every post is approved by Henning; each post says who published it.
Expected: Until 4 October the rule was that a model never waves a leak doubt through, because clearing doubts is Henning's job. The autopilot ran weekly and published in batches.
Happened: On 4 October Henning asked for the app to handle its own doubts and keep the site fresh, instead of leaving a pile in the inbox. A separate judge model now reads each leak doubt against the written rules. Only 'fix' goes to the fixer, so a real doubt is cut from the text, not waved through. Stops are never judged. Green posts are scheduled one a day, and the autopilot runs on Mondays and Thursdays.
Expected: When Instagram was connected on 4 October, the engine kept a 60-day token and refreshed it before it ran out.
Happened: The token died on 7 October and two days of posts were missed. The only trace was a console line and small red text on a sub-page. Every failure now shows as a banner on every admin page until it works again.
Expected: After the revert on 4 October, code keeps an app page's published expected/happened points word for word.
Happened: The fact gate went on raising doubts about those kept points, which no fix could ever clear, and that held this page in the inbox. Fact triage now treats a doubt about a kept point as harmless, unless the draft repeats the outdated claim.
Expected: The app page schema allows at most eight facts, and the revision writer was meant to stay inside it.
Happened: On 8 October the revision of this page already had eight facts and added a ninth, so it failed validation. Claude's code checked the cap only after the model call. The cap is now in the JSON schema the model gets and in the revision prompt, which asks it to merge or replace the least useful fact.
Expected: The admin page said the weekly Reel took a couple of minutes to render.
Happened: It takes about 46 seconds. The admin page also hid the rendered film without any explanation whenever the week's posts changed after rendering. Since 10 October it shows the last render with its time, adds a note when the week has moved on, and shows a failed render in the same box.
Page history
- First version of this page.
- On 4 October 2026 the engine got a weekly autopilot that publishes what passes every gate twice. This page now covers the autopilot, its first run and the revert that followed, the gate measurements and the number of published posts.
- 2026-10-08: The page now covers the leak-doubt judge, publishing one post a day on a schedule, two faults in quota handling, the Instagram token failure and the alerts that came out of it, and the 6 October search round, with commit and post counts updated. Corrected the point on autonomous publishing, which said the gates had not been measured; they were measured on 3 October, and the autopilot has published since 4 October.
- 2026-10-12: The page now covers the autopilot rule from 8 October for drafts that have only fact doubts left, the failed revision that added a ninth fact to this page, and the Reels that now open on a short film made on a local GPU, and the commit count is updated.
- 12 October 2026: no new commits since the last update (git log --no-merges, counted 2026-10-12: 0), so the page content is unchanged.
- 2026-10-19: Since 12 October, Reels open on stick-figure skits drawn in code, which replace the films made on a local GPU. The page also adds the autopilot's commit measurement from 12 October and updates the commit count.
- On 22 October 2026 we noted that the repository had no new commits from 19 to 22 October, and added the published fix that moved the Instagram job from an hourly timer to a ten-minute one.