The Honest Math of Cloud Repatriation
37signals published their receipts. Read them before copying them.

The loudest cloud-exit story in the industry ended with almost no noise. In the summer of 2025, when a four-year storage contract expired, 37signals moved its final petabytes off S3 and completed the exit David Heinemeier Hansson had been announcing, itemizing, and gloating about since 2022. AWS even waived about $250,000 in egress fees on the way out, which under the post-Data-Act rules is what goodbye looks like now.
What makes 37signals worth a post isn't that they left the cloud. Companies drift on and off cloud constantly. It's that they published receipts at every step, which makes them the one repatriation story you can actually do arithmetic on, and the arithmetic deserves more honesty than either fan club gives it. My read: their math is real, their savings are real, and most companies who cite them are reading someone else's spreadsheet as if it were their own.
The receipts
Collected from their published posts and the reporting around them, the numbers that matter:
| Item | Published figure |
|---|---|
| Cloud spend at peak, 2022 | Roughly $3.2M per year |
| Replacement servers, 2023 | About $700K of Dell hardware, recouped within the year |
| Annual savings by late 2024 | Almost $2M per year |
| S3 exit, 2025 | ~10 PB on S3 at ~$1.5M/yr replaced by 18 PB of Pure Storage running under $200K/yr |
| Projected five-year total | Over $10M saved |
All figures as published by 37signals or reported from their disclosures; links at each claim.
Take the numbers at face value; nobody has seriously disputed them, and their transparency shames an industry that discusses infrastructure costs the way Victorians discussed ankles. Doubling storage capacity while cutting its annual cost by a factor of seven is not an accounting trick. It's what buying hardware looks like when the hardware market has spent a decade getting absurdly good while cloud storage prices mostly didn't follow it down.
Why it worked for them
Every line of that table rests on properties of 37signals that the table doesn't show. Their load is stable and predictable: mature products, steady subscriber bases, no hypergrowth, no viral spikes, which means capacity planning is a spreadsheet rather than a gamble, and owned hardware is a mortgage on a house they know they'll keep living in. Renting makes sense when you don't know where you'll live next year. They know.
They also brought an ops team that most companies their size don't have, and a stack built for leaving. They run boring, portable components, they wrote their own deployment tooling (Kamal) expressly to make cloud and metal interchangeable, and they'd already sworn off the proprietary managed services that make exits into rewrites. In the vocabulary of our lock-in taxonomy: they'd only ever locked the billing lock, so leaving was a math problem instead of an engineering one. The repatriation didn't create their portability. Their portability is what made the repatriation cheap enough to be worth blogging about.
Why it's a meme everywhere else
Now run the same table for a typical company citing it. Spiky or growing load turns the mortgage back into a gamble: own for peak and idle most of it, or own for average and fall over at peak; elasticity is precisely the product the cloud is good at. The ops team you'd need is payroll the savings must fund before a dollar counts, and two senior infrastructure engineers cost more than a lot of startups' entire cloud bill. If your stack leans on managed databases, queues, and identity, you're not repatriating; you're rebuilding, and the rebuild is the cost that never makes it into the envy math. And a small team taking on datacenter contracts, hardware refresh cycles, and 3 a.m. disk failures is spending its scarcest resource, attention, on the least differentiating work available.
We're the walking counterexample, and it's worth being concrete: a two-person infrastructure company that deliberately builds on hyperscaler primitives, because pretending we should rack servers would be theater. Repatriation math at our scale doesn't just fail to break even. It doesn't reach the starting line.
The middle path is the actual lesson
Here's the steelman for the cloud side, stated fairly: elasticity, managed services, and velocity are worth real premiums for most companies most of the time, 37signals is a special case that generalizes poorly, and DHH's evangelism sometimes elides how special. Every word defensible. And yet the story still carries a general lesson, because the interesting thing 37signals did wasn't leaving. It was being able to leave: knowing their per-workload costs precisely, keeping their stack portable, and treating "where should this run" as a periodically re-asked question instead of an identity.
That's the version that generalizes. The math of rent-versus-own shifts with hardware prices, cloud pricing, your load shape, and your team, which means the right answer has an expiration date, and the companies in trouble aren't the ones on cloud or on metal; they're the ones who can no longer do the math. Per-workload margins nobody tracks, exit plans nobody tests, architectures that made the question unaskable years ago. Portable workloads can move when the math says move, in either direction; everything else stays where it was put, at whatever price appears.
So skip the argument about whether DHH is right. Answer the question his receipts pose: if the math said "move" for one of your workloads next year, could you? And if you don't know the math, that's your answer.
Related: Same App, Four Platforms: What the List Prices Actually Say, the do-the-math habit applied to platform choice. More about what we're building at light-cloud.com.