Every few months someone asks me why I bother. I run my own VPS, my own Postgres, my own Redis, a stack of Docker containers, and most of my dev tooling sits on a box I pay for monthly. Meanwhile half the internet ships AI features by gluing together three managed services and a credit card. So why the extra work?
Short answer: because the extra work is the point, and the bill is predictable. Long answer below. And to be clear up front, this is not a manifesto. I use cloud APIs every day. I am not telling you to cancel your accounts. I am telling you where I personally draw the line, and why.
What I actually run, and what I don't
On my own infra I keep the things that are stateful, long-lived, and mine: databases (Postgres), caches and queues (Redis), application backends, internal tools, monitoring, and the glue that holds my projects together. These do not need a frontier GPU. They need to be up, fast, and under my control.
What I do not self-host is frontier model inference. I am not running a rack of GPUs in a closet to chase Claude or GPT-class reasoning. The economics there are brutal: serious analyses in 2026 put the break-even for owning inference hardware at tens of thousands in upfront spend and many months of amortization, and you still lag the frontier on raw capability. For the heavy reasoning I call an API. That is the honest hybrid most people land on, and I am no exception.
So the real debate is not "local LLM vs cloud LLM". It is "who owns the boring infrastructure your AI features sit on top of". That is where my opinion gets stronger.
What I gain
Cost predictability. A VPS is a flat monthly number. It costs the same whether my background job ran ten times today or ten thousand times. Cloud platforms invert that: the convenience is real, but so is the bill that arrives after a runaway loop, a retry storm, or a feature that suddenly got used. I have watched enough people get a surprise invoice to value the boring flat line on my own statement.
Control over the whole stack. When something breaks at 11pm, I can SSH in and actually see what is happening. No support ticket, no "this is a known limitation of the platform", no waiting for a status page to admit there is an incident. My Postgres is configured how I want, my logs are where I expect, and nothing silently changes under me because a vendor shipped a new default.
Privacy and data gravity. My chat logs, my vector data, my customers' data, they live on a server I rent and control. Yes, the big providers now offer enterprise tiers and data processing agreements, and for many cases that is genuinely fine. But "fine for most cases" is not the same as "I know exactly where this byte is". For some of what I build, that difference matters.
Learning that compounds. This is the underrated one. Running your own infra forces you to actually understand networking, process management, backups, TLS, and what a database does when it runs out of memory. That knowledge does not evaporate when a SaaS changes its UI. Every outage I have debugged on my own box made me better at the next one. Managed platforms are wonderful precisely because they hide all of this, which also means you never learn it.
What it costs me
I would be lying if I pretended this was free. It is not. The price is operational burden, and it is real.
- I patch my own OS and containers. Nobody does it for me.
- I own my backups. If I do not test a restore, I do not have a backup, I have a hope.
- I am the on-call engineer, the security team, and the person who renews the certificate. At 2am, that is all the same person.
- Uptime is on me. There is no 99.9% SLA, only my redundancy choices and my attention.
Industry numbers back the gut feeling here: self-hosted setups demand meaningfully more engineering effort than the managed equivalent. That is not marketing, that is just where the hours go. If your time is better spent shipping product than tuning systemd units, the cloud is the rational call and I will not argue with you.
Where I draw the line
My rule of thumb has settled into something like this:
- Self-host the durable, stateful core. Databases, queues, internal tooling, the stuff I want to own for years. The ops cost is fixed and the control payoff is high.
- Rent the frontier capability. Heavy model inference goes to an API. Owning that hardware is a bad trade unless you are at serious scale, and I am honest about not being there.
- Buy managed when failure is someone else's nightmare. Email delivery, payments, anything where a mistake is catastrophic and undifferentiated. I do not want to be the reason a payment got lost to save a few euros.
The trap on both sides is dogma. The "everything in the cloud" crowd ends up renting their own competence and paying variable rates for the privilege. The "self-host everything" crowd ends up running a one-person datacenter and calling it a hobby while their actual project stalls. Neither is winning.
I keep my infra on my own VPS because the parts I self-host are exactly the parts where predictability, control, and understanding pay me back more than they cost. For everything else, I happily hand over my credit card. The skill is not picking a side. The skill is knowing, for each piece, which side of that line it belongs on. And the only way I learned where that line is was by running the boring stuff myself.