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.
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
- 96
- Every one a reviewed pull request — the ledger above shows a curated slice.
- Shipping since
- 2026-07-07 → 2026-08-27
- 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
- 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, shown on anonymised customer deployments 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.