# The site that ships itself

> CustomLabs built this site and CodeHerder agents iterate on it. Read the real ledger of pull requests that shipped it.

Source: https://customhosted.com/built-in-the-open/

№ 01 Built in the open

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.

№ 02 The loop, on ourselves

## 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.

1. 01 — Build — CustomLabs — Designed and built this marketing site — the component system, the design tokens, the copy voice.
2. 02 — Iterate — 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.
3. 03 — Run — CustomHosted — This page loaded from the same global edge network we sell — the loop closes on the site you're reading.

№ 03 The ledger

## 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.

LG-01

“Explain how the consultancy, the hosting, and the automation piece all fit together.”

Added the homepage section walking through Build → Iterate → Run.

New section task/746f2aeff6c7 7 July 2026

LG-05

“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.

New section task/aa858bc96ffb 8 July 2026

LG-04

“The navigation breaks on phones — fix it properly, not with a squeeze.”

Added a proper mobile navigation drawer.

Refactor task/c94c4dc84c30 9 July 2026

LG-02

“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.

Refactor task/44176f9589a6 10 July 2026

LG-03

“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.

Refactor task/2bc86d3386c0 10 July 2026

LG-06

“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.

New page task/61549ad70cae 10 July 2026

LG-07

“Explain what static-site hosting actually includes, in depth.”

Added a deep-dive page for static-site hosting.

New page task/248e61bdc9b1 10 July 2026

LG-08

“Same again, but for dedicated servers.”

Added a deep-dive page for dedicated compute.

New page task/33c172b4487b 10 July 2026

LG-09

“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.

New page task/b3a0a796f016 10 July 2026

LG-10

“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.

New page task/22753bfbca33 10 July 2026

LG-11

“We need real terms, privacy, SLA, and acceptable-use pages, not placeholders.”

Added terms, privacy, SLA, and acceptable-use pages.

Content task/51906724e296 10 July 2026

LG-12

“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.

New page task/99cde7731c40 10 July 2026

LG-13

“Show what we actually run day to day, not just what we could run.”

Added a register of representative, anonymised deployments.

New page task/705a6eb1f694 13 July 2026

LG-14

“Make it obvious how we're different from a plain infrastructure bill or a generic dev shop.”

Added a homepage comparison section.

New section task/b828969c2057 14 July 2026

LG-26

“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.

New page task/9b13159f4a7b 15 July 2026

LG-25

“Explain what actually changes when a prototype needs to go live for real.”

Added a Field Manual guide on taking a prototype to production.

Content task/5bef1e2d772b 16 July 2026

LG-24

“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.

New section task/6b40495c8935 17 July 2026

LG-21

“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.

Refactor task/423ffddbb059 18 July 2026

LG-22

“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.

Refactor task/726d272716b2 18 July 2026

LG-23

“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.

Content task/2a7086645193 18 July 2026

LG-19

“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.

New section task/7c2e0f2c5ffb 19 July 2026

LG-20

“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.

Refactor task/043f2cb2bc6a 19 July 2026

LG-18

“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.

New page task/be4906a1b44a 20 July 2026

LG-17

“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.

New page task/e3901eba539e 21 July 2026

LG-16

“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.

New section task/89357221a7ee 22 July 2026

LG-15

“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.

Content task/a4c9591ce64b 23 July 2026

LG-29

“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.

New section task/f581eb50aec2 24 July 2026

LG-28

“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.

Content task/34dd22bbfec4 25 July 2026

LG-27

“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.

Refactor task/a9b3e685fbaf 26 July 2026

LG-30

“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.

New section task/d28b87c824fe 27 July 2026

LG-31

“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.

Fix task/0d456238a0ec 27 July 2026

LG-32

“Something's cut off on the right on my tablet.”

Fixed horizontal overflow across the mobile and tablet layouts.

Fix task/3e1758026e04 27 July 2026

LG-33

“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.

Fix task/32dfabec8158 28 July 2026

LG-34

“Agencies, founders and people with no developer all need different words.”

Added audience landing pages for each of the three.

New page task/6c1372af3211 29 July 2026

LG-35

“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.

New page task/20da0c1f270f 30 July 2026

LG-36

“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.

New section task/292cb6380e08 31 July 2026

LG-37

“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.

Fix task/2f14bd331887 1 August 2026

LG-38

“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.

Refactor task/8274a63d719c 1 August 2026

LG-39

“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.

New page task/90a657e12906 2 August 2026

LG-40

“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.

New page task/9c542c8ad027 3 August 2026

LG-41

“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.

New page task/aca3cf452bb5 4 August 2026

LG-42

“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.

Refactor task/b0fa98bf81f3 4 August 2026

LG-43

“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.

Fix task/b0fa98bf81f3-npmrc 4 August 2026

LG-44

“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.

New page task/41cd9d5f6dd2 5 August 2026

LG-45

“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.

New page task/568bcfbe6930 6 August 2026

LG-46

“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.

New page task/71ffd61a77af 7 August 2026

LG-47

“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.

Fix task/e0caa2b8c7d0 7 August 2026

LG-48

“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.

New page task/d4420f303c4c 8 August 2026

LG-49

“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.

New page task/b22263372dd4 9 August 2026

LG-50

“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.

New page task/20ad8d9cc098 10 August 2026

LG-51

“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.

New page task/818e47870246 11 August 2026

LG-52

“"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.

New page task/9e5a7e797279 12 August 2026

LG-53

“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.

New page task/f542d94668f0 13 August 2026

LG-54

“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.

Content task/f542d94668f0-ledger 13 August 2026

LG-55

“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.

New page task/3f96d0020973 14 August 2026

LG-56

“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.

New page task/4eab6690b0a4 15 August 2026

LG-57

“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.

New page task/76afe2b21ee2 16 August 2026

LG-58

“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.

Refactor task/3643463cb31c 17 August 2026

LG-59

“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.

New page task/b3973472a0d8 17 August 2026

LG-60

“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.

New page task/ecb192d02c58 18 August 2026

LG-61

“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.

New page task/550685552c3a 19 August 2026

LG-62

“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.

Refactor task/45f94309e203 19 August 2026

LG-63

“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.

New page task/5590154d2675 20 August 2026

LG-64

“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.

New page task/9e1e7be452f3 21 August 2026

LG-65

“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.

New page task/ac6dafeab438 22 August 2026

LG-66

“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.

New page task/7450183ff17f 23 August 2026

LG-67

“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.

Content task/7450183ff17f-ledger 23 August 2026

LG-68

“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.

New page task/b42b64d9f189 24 August 2026

LG-69

“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.

New page task/d3b611b46519 25 August 2026

LG-70

“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.

New page task/61bb9d05dd3e 26 August 2026

LG-71

“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.

Content task/b8d1b80f7fb3 27 August 2026

LG-72

“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.

New page task/bf3bcf9ed61a 28 August 2026

LG-73

“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.

New page task/6622b2e238c4 29 August 2026

LG-74

“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.

New page task/f2abd9725acf 30 August 2026

LG-75

“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.

New page task/344073a5d04b 31 August 2026

LG-76

“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.

New page task/f2439ac0f296 1 September 2026

LG-77

“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.

Refactor task/cfabd7e20877 2 September 2026

LG-78

“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.

Refactor task/4077dd4d4165 3 September 2026

LG-79

“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.

New page task/eb2f365008c1 4 September 2026

LG-80

“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.

New page task/9d0215b3d1ba 5 September 2026

LG-81

“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.

New page task/b277eb832bbb 6 September 2026

LG-82

“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.

New page task/e8ce0d355035 7 September 2026

LG-83

“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.

New page task/520eb6543bdb 9 September 2026

LG-84

“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.

New page task/c9d2f9421fa8 9 September 2026

LG-85

“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.

New page task/3cd5d404fb33 10 September 2026

LG-86

“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.

New page task/5e7b6ea60302 11 September 2026

LG-87

“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.

New page task/cb5423643b96 12 September 2026

LG-88

“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.

New page task/c13c11fa5af3 13 September 2026

LG-89

“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.

New page task/81a52a25c55a 14 September 2026

LG-90

“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.

New page task/c4936db84189 15 September 2026

LG-91

“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.

Fix task/8983db46e40a 27 September 2026

№ 04 Anatomy of a change

## 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.

1. 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.
2. 02 — Agent picks it up — CodeHerder spins up on its own branch (task/746f2aeff6c7), reads this codebase as it stands, and implements the change.
3. 03 — Pull request — The agent opens a pull request against the default branch — a scoped, reviewable diff, same as any other change.
4. 04 — Human review — A person reads the diff and approves it — or sends it back with notes. Nothing merges itself.
5. 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.

[The same loop, as a product →](https://customhosted.com/loop) [Want this on your project? Get a quote →](https://customhosted.com/contact)

№ 05 The tally

## 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.

№ 06 See also

## Keep exploring

- [Limits Built in the open cuts both ways: this is the same honesty, applied to what the platform doesn't do.](https://customhosted.com/limits)
- [Case files Three of these rows, followed end to end — the brief, the review, and the real diff stats behind each.](https://customhosted.com/case-files)
- [The Loop The Build → Iterate → Run story told in full, as a product.](https://customhosted.com/loop)
- [In service The same loop, worked through on five other hosting shapes instead of on ourselves.](https://customhosted.com/in-service)
- [Guides Long-form, no-pitch write-ups on hosting decisions — some of them briefed the same way.](https://customhosted.com/guides)
- [Platform What the edge network, storage, and dedicated compute actually are.](https://customhosted.com/platform)

## 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.

[Get a quote →](https://customhosted.com/contact)
