The site that ships itself
This page is not a testimonial about the loop — it's the loop's own paper trail. CustomLabs designed this site, CodeHerder's agents have been iterating on it in the open ever since, and CustomHosted is what's serving it to you right now. Below is the real ledger, not a mock-up.
Same three roles, same site
The loop we sell isn't hypothetical — it's how this site you're reading got built and keeps getting built.
- 01Build
CustomLabs
Designed and built this marketing site — the component system, the design tokens, the copy voice.
- 02Iterate
CodeHerder
Every row in the ledger below started as a plain-language brief. An agent implemented it on its own branch and opened a pull request.
- 03Run
CustomHosted
This page loaded from the same global edge network we sell — the loop closes on the site you're reading.
Every row is a merged pull request
Drawn from this repo's real history — the plain-language brief on the left, what actually shipped on the right, and the branch it shipped on. The date under each branch comes from that merge commit itself, not a hand-typed one. No invented figures.
“Explain how the consultancy, the hosting, and the automation piece all fit together.”
Added the homepage section walking through Build → Iterate → Run.
“Add an FAQ so search engines can surface our answers directly, not just the page title.”
Added a structured FAQ section with search-engine answer markup.
“The navigation breaks on phones — fix it properly, not with a squeeze.”
Added a proper mobile navigation drawer.
“Stop hand-maintaining the same set of links in the header, the footer, and the sitemap.”
Centralised every route into one typed navigation module every other component reads from.
“Every new page keeps reinventing its own header banner and closing call-to-action.”
Built a shared set of page-header and call-to-action components for interior pages to reuse.
“Give people one page that lays out the whole platform before they dig into specifics.”
Added a platform overview page and a reusable related-links component.
“Explain what static-site hosting actually includes, in depth.”
Added a deep-dive page for static-site hosting.
“Same again, but for dedicated servers.”
Added a deep-dive page for dedicated compute.
“People want real numbers before they'll fill out a form.”
Added a full pricing page with the rate card, add-ons, and a self-serve estimator.
“Prospects keep asking about backups and patching before they will sign — put it in writing.”
Added a security page covering backups, patching, TLS/DNS, and portability.
“We need real terms, privacy, SLA, and acceptable-use pages, not placeholders.”
Added terms, privacy, SLA, and acceptable-use pages.
“The homepage loop section is good, but give it a full page of its own.”
Added a dedicated deep-dive page for the Build → Iterate → Run loop.
“Show what we actually run day to day, not just what we could run.”
Added a register of representative, anonymised deployments.
“Make it obvious how we're different from a plain infrastructure bill or a generic dev shop.”
Added a homepage comparison section.
“Don't just claim you ship fast — show me a running record of every change you've made.”
Added this public iteration ledger, a running record of every change shipped to the site.
“Explain what actually changes when a prototype needs to go live for real.”
Added a Field Manual guide on taking a prototype to production.
“When someone shares one of our pages, it should look right — not a generic thumbnail.”
Added dedicated social-share preview cards so every page previews correctly when shared.
“Our infrastructure setup is one tangled definition — split it so each piece can change on its own.”
Reorganised the infrastructure definitions into separate modules per component.
“Keep the site's tooling current so we're not stuck on an old build.”
Upgraded the site's build framework to its current major version.
“Explain why our pricing is flat-rate instead of the usual pay-per-use billing.”
Added a Field Manual guide comparing flat-rate and usage-based hosting pricing.
“I read guides in a feed reader, not by checking your site by hand — give me a feed.”
Added an RSS feed for the Field Manual guides.
“The header has too many links now, and the mobile menu breaks under a submenu.”
Decluttered the header navigation and fixed the mobile submenu and breadcrumb behaviour.
“I don't know if I need static hosting or a dedicated box — help me work it out without a sales call.”
Added a self-serve selector tool that recommends a hosting shape from a few questions.
“We don't fit your static-site or dedicated-box boxes — what do you do for something bespoke?”
Added a deep-dive page for the custom-hosting tier covering arbitrary applications.
“Don't just tell me you ship — link me straight to the receipts from the homepage.”
Added a homepage section linking directly to the iteration ledger and the deployment register.
“Should we just run this ourselves instead of paying someone to host it — what are the real trade-offs?”
Added a Field Manual guide weighing self-hosting against managed hosting.
“Show me one of these changes followed all the way through, not just a list.”
Added the "Anatomy of a change" walkthrough to the ledger page.
“What does a website actually cost me over three years, all in?”
Added a Field Manual guide costing a site's build, run, and iteration over three years.
“I just configured a plan in your estimator — why do I have to type it all out again on the contact form?”
Made the estimator and selector configurations a shareable link that carries through to the quote form, pre-filling it instead of discarding the work.
“Your guides read like a wall of text — make them navigable.”
Turned the Field Manual into a real reading system with a contents rail and next-guide links.
“On my phone the page scrolls behind the menu, and jumping to a section lands in the wrong place.”
Fixed mobile drawer scroll-locking and anchor landing positions.
“Something's cut off on the right on my tablet.”
Fixed horizontal overflow across the mobile and tablet layouts.
“Make sure someone on a low-contrast display or a screen reader can actually use this.”
Fixed WCAG 2.1 AA contrast and heading-structure failures site-wide, and added an automated accessibility check.
“Agencies, founders and people with no developer all need different words.”
Added audience landing pages for each of the three.
“People keep asking 'can you host Next.js / WordPress / Laravel?' — answer it on a page.”
Added a stack-coverage register naming every stack we run, with deep pages for the five asked about most.
“The site is blinding at night — support dark mode.”
Added a full night theme that follows the visitor’s system preference, with a manual override.
“One of the theming comments says something that's no longer true — fix it before it misleads someone.”
Corrected a stale doc comment claiming the dark bookend tokens were unchanged, when night shift now gives them their own values.
“This ledger's numbers are hand-regenerated — make them actually computed, and fail the build rather than ship a stale count.”
Added the generator that derives the ledger's counts from this repo's own merge history, ran it in CI, and made missing git history a hard build failure instead of a silently stale snapshot.
“Answer engines should be able to read the whole site, not just the pages we remembered to list.”
Added a generated site directory and a machine-readable llms.txt, both rendered from one route manifest so neither can fall out of sync.
“People keep hitting jargon on this site with no plain-English definition — give them one page for all of it.”
Added a glossary defining every hosting term used on the site, plus a same-week fix for clipped deep links and section eyebrows reading as headings.
“Stop telling people we iterate quickly and show them three changes that actually shipped.”
Added a case-files page pairing three real changes with the diff stats from this repo’s own history, so no figure on it is hand-typed.
“A poisoned package release is the thing most likely to bite us — make it harder to pull one in.”
Locked installs to reviewed, exact versions with a week-long cooldown on brand-new releases, pinned the build image by content digest, and added a guard that fails the build if any of it is quietly relaxed.
“One of those new install controls is in a folder the tool never reads — it is doing nothing.”
Moved the package-manager config to the only directory the tool reads it from, proved it takes effect, and taught the guard to fail if someone tidies it back.
“When someone prices a setup, they need something they can send to their boss or print out.”
Added a shareable, printable spec sheet for any configuration, built from the same link the estimator already produces.
“The site is big enough now that browsing it is not the same as finding an answer.”
Added real search across every page, running in the visitor’s browser with no third-party service involved.
“People are weighing us against rolling it themselves or a self-serve platform — help them do that fairly.”
Added a comparison page setting us next to the four options a buyer is really choosing between, with the cases where one of them is the better pick.
“The desktop header looks cramped, and one nav item is styled differently from the rest.”
Rebalanced the desktop header spacing and brought the odd navigation item back in line with its neighbours.
“Before signing, people want to know what the first week actually asks of them.”
Added an onboarding page laying out the move-in week step by step, with the minutes each step costs the customer rather than us.
“Customers do not know what to write when they ask for a change — teach them.”
Added a page on the five parts of a change brief that gets a good result first time, plus a composer that assembles one to send.
“We say there is no lock-in on every other page. Prove it.”
Published the exit procedure — what is in the handover pack, who does what, and how long leaving takes.
“The estimator prices the invoice. Price the other thing this costs someone: their own hours.”
Added a page that estimates the time a self-run stack takes each month against the same setup run by us, with every assumption stated.
“"Fast on the edge" is a claim, not evidence. Back it with numbers from our own site.”
Added a performance page reporting measurements taken from this site’s real pages at build time, including the routes that come out worst.
“We promise daily backups and tested restores everywhere. Say what a restore actually involves.”
Published the recovery procedure: what a backup holds, how far back it reaches, how a restore goes, and what one cannot fix.
“This page is meant to show what we ship, and it has fallen behind what we actually shipped.”
Caught the iteration ledger up with every merge it had fallen behind, so the page lists the real history instead of a stale slice of it.
“You say someone is watching. What are you actually watching, and who gets woken when it breaks?”
Published the watch list: what is checked, what fixes itself without anyone hearing about it, and the escalation ladder for everything that does not.
“Security patching is on every plan page. Say when it happens and whether it takes my app down.”
Published the patching cadence layer by layer, what a standing window actually does, and where a dependency upgrade becomes a reviewed code change instead.
“If I point my domain at you, who owns the records — and will my email break?”
Published the domain record sheet: who owns what, which records are carried over untouched, the certificate lifecycle, and the propagation window a cutover opens.
“We need to know which pages people actually read, without turning the site into a tracker farm.”
Added one analytics script, disclosed it on the privacy page, and made the build fail if any other third-party script is ever added without the same disclosure.
“You sell a staging environment. What is it, who can see it, and what data is sitting in it?”
Published what a staging environment is here: its address, who can reach it, the data it holds, how a change is promoted out of it, and how to go back.
“Show me what a month actually looks like on an invoice, and what can move the number.”
Published the billing month end to end — a specimen invoice, what moves the total, what never does, and the fair-use allowances in real numbers.
“Who can touch my production — including the agent that writes our changes?”
Published every party that can reach production, what each one can and cannot do, how secrets are handled, and the things the automation is deliberately not allowed to do.
“Our own working files are being committed into the product repository. They are not part of the product.”
Stopped tracking the agent session scaffolding and added it to the ignore list, so a working file cannot land in the repository again.
“What happens when we outgrow the plan we are on — do you just move us, and do visitors notice?”
Published the tier ladder, how a capacity signal becomes a scheduled move, what a visitor sees while it happens, and when a bigger machine is the wrong answer.
“What happens to a request between my domain resolving and my page appearing?”
Published the rules a request meets on the way in — redirects, trailing slashes, a real 404, the cache, and the response headers every page gets by default.
“If someone attacks the site, what actually stops them — and where does that stop?”
Published the perimeter layer by layer, the four different things people mean by an attack, what junk traffic does to the bill, and the honest line where a code change takes over.
“Our app sends password resets and receipts. Will they still work once you host it?”
Published the outbound mail path: the records a sending domain adds alongside the ones it already has, why an app calling the machine’s own mail command stops working, and the limits nobody can promise past.
“The public change log has fallen behind what we have actually shipped. It should not need chasing.”
Caught the public iteration ledger up with the changes already shipped, so the page stops trailing the real history behind it.
“Where are our logs, and how do we see the error a customer just hit?”
Published the three different things people call logs, where a line goes hop by hop, what is kept and for how long, and how a log line turns into a briefed change.
“We run a nightly report and a queue. Where does that work actually happen once you host us?”
Published the three kinds of work no browser waits for, what runs each one per hosting shape, how the clock is wired, what happens when a job fails, and who owns whether it is safe to run twice.
“Our users upload files. Where do those go, and what happens when the disk fills up?”
Published the three kinds of file an app writes, what holds each one per hosting shape, what happens when a disk fills, and what survives a deploy, a resize, a restore, and an exit.
“The database page gives us a tier and a price. It never says what happens when a migration fails halfway.”
Deepened the managed-database page: how an app connects, how a schema change ships, what a version upgrade does, and what happens when one stops halfway.
“If the site goes down at two in the morning, who finds out, and what do you actually do about it?”
Published what counts as an incident, the first hour step by step, the first response for each symptom, and what an incident costs.
“Where does our API key live, and how do we rotate one without taking the app down?”
Published the difference between a setting and a secret, where a value lives hop by hop, the build-time-against-run-time trap, and the honest limits.
“How do we know any of this worked? We want the numbers, not a feeling.”
Published who visited, how much traffic the plan moved, where a measurement tool fits, and how one of those numbers becomes a briefed change.
“What actually happens between approving a change and a visitor seeing it?”
Published the hops from a merge to serving traffic, what each hosting shape takes down, what survives a deploy, and what happens when a build fails.
“You keep saying a human approves each change. What am I looking at, if I cannot read code?”
Published what a pull request actually shows, how to review one without reading code, the three answers available, and who may approve.
“The long explainer pages have no way to jump to the part I came for.”
Added a jump-link index to every deep page, built from that page's own sections so the index and the page can never disagree.
“The platform menu is one long list now. Nobody can find anything in it.”
Grouped the platform menu and its matching footer column into labelled sub-sections, read from one shared list so the two stay identical.
“Will our site actually turn up in a search, or is that all on us?”
Published the half of search visibility hosting owns — the address, the sitemap, crawlability, structured data, and speed — and the half that stays yours.
“We rely on a payment gateway and a mail sender. What happens when one of those breaks?”
Published the four kinds of outside service, where a call connects hop by hop, what changes per hosting shape, and the route out when one breaks.
“What do you need from us to quote this, and what does the number commit us to?”
Published what a quote needs, how a brief becomes one fixed number, what it contains, what it leaves out, and what accepting it commits you to.
“Who owns the code once you host it? We do not even have a repository yet.”
Published who owns the one copy of your code that every other promise depends on, and the four states you can start from.
“Our site is static and we need a contact form. Where does a submission even go?”
Published where a form submission goes when there is no server, what catches it per hosting shape, and this site's own quote form as the worked example.
“We need to fix a typo and change a price. Must we ask a developer every time?”
Published how a wording change, a price, or a whole new page ships on a site with no admin screen, and what each one costs.
“Our photos make the site slow. Whose job is that to fix?”
Published what makes a picture heavy, what the page budget allows, how a picture ships, and the alt text that travels with it.
“How do you know a change works before it reaches our customers?”
Published what runs before a change ships, whose checks they are, what a failure stops, and what happens when a repository has no tests at all.
“Tell us what you do not do, in one place, before we sign anything.”
Collected every limit the site publishes into one grouped, deduplicated page, with each limit still owned by the page that wrote it.
“If something breaks, what does the person using our app actually see?”
Published what a visitor gets during a failure or a planned change, and the three pages you can put in front of them.
“Our app signs people in. Which part of that do you handle, and which part is ours?”
Published what a login needs and who supplies it, where a session lives, what a release does to one, and this site's own login: there is not one.
“We run a plain Node API. Your stack list names it, but there is nothing to read.”
Added the Node API page the stack register was missing, then derived every stack page's navigation link from that register so none stay unlinked.
“Your homepage says things your own pages say are not true.”
Rewrote the homepage against the facts the rest of the site already publishes, and replaced its invented CodeHerder demo with a real change drawn from the case files.
One ledger row, followed end to end
Take LG-01 from the ledger above and rewind it — the five hops from a plain-language brief to a live merge, on this very page.
- 01
Brief
"Explain how the consultancy, the hosting, and the automation piece all fit together." — that's the whole ask, in a human's words. No ticket, no code, no spec.
- 02
Agent picks it up
CodeHerder spins up on its own branch (task/746f2aeff6c7), reads this codebase as it stands, and implements the change.
- 03
Pull request
The agent opens a pull request against the default branch — a scoped, reviewable diff, same as any other change.
- 04
Human review
A person reads the diff and approves it — or sends it back with notes. Nothing merges itself.
- 05
Merge → live
Merging ships through the same pipeline that already runs this site. Added the homepage section walking through Build → Iterate → Run. — live on the global edge network in minutes.
Honest, not impressive
The whole point is that these are real counts, not a demo — small enough to be true.
- Changes shipped
- 132
- Every one a reviewed pull request — the ledger above shows a curated slice.
- Shipping since
- 2026-07-07 → 2026-10-03
- The right-hand date is the last merge that shipped this page — both numbers are read from this repo at build time, not hand-typed.
- Chatbots added
- 0
- Content is the pitch. This page is content.
Keep exploring
- Limits
Built in the open cuts both ways: this is the same honesty, applied to what the platform doesn't do.
- Case files
Three of these rows, followed end to end — the brief, the review, and the real diff stats behind each.
- The Loop
The Build → Iterate → Run story told in full, as a product.
- In service
The same loop, worked through on five other hosting shapes instead of on ourselves.
- Guides
Long-form, no-pitch write-ups on hosting decisions — some of them briefed the same way.
- Platform
What the edge network, storage, and dedicated compute actually are.
Want the same loop on your own project?
Host with us and CodeHerder's agents can iterate on your codebase the same way — brief a change, review the pull request, ship the merge.