A $6 VPS instead of Codespaces
By Salvatore Castellitti, developer of CodeMote · 27 July 2026
I used Codespaces for about a year and liked it more than I expected to. Click a button, get an environment, work from any browser. The complaints that eventually piled up were all secondary: the hourly meter, the cold starts, the stopped-due-to-inactivity emails, and the low-grade awareness that my working copies lived on infrastructure I don't control.
What actually moved me was doing the arithmetic. I was renting compute by the hour that was weaker than a VPS I could rent by the month for less than my average week of metered usage. So I moved, and it's been over a year, and this post is the honest version of how that's gone: the math, the setup, and the parts where Codespaces is still better.
The math
GitHub bills a 4-core codespace at $0.36 per hour plus storage. Call it six focused hours a day, twenty days a month: about $43, for a machine that evaporates when the meter stops. The free tier's 120 core-hours per month sounds like a lot until you divide by four cores and get 30 hours, which is one normal week.
My replacement is a Hetzner CX32: 4 vCPUs, 8 GB RAM, 80 GB disk, about 7 euros a month, flat. It runs all 720 hours whether I use them or not and keeps its state indefinitely. A comparable DigitalOcean droplet is around $24 if you'd rather stay there; still well under the metered number.
The general rule this falls out of: metered compute is priced for spiky usage. "The place I work every day" is the opposite of spiky, and metering it is how you end up paying laptop money for droplet hardware.
The setup
On a fresh Ubuntu VPS:
adduser dev && usermod -aG sudo dev && su - dev curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - sudo apt-get install -y nodejs git build-essential git clone https://github.com/you/your-project.git && cd your-project npx codemote-cli start
The last command opens an outbound tunnel and prints a pairing code; paste it at the connect page in any browser. The workspace has the file tree, editor, terminals, git and PRs, plus Claude Code sessions if you install the claude CLI on the box. No ports to open, no domain, no TLS to manage. The longer walkthrough is in the VPS setup post.
What always-on changes
The absence of a stop/start cycle turned out to be the thing I notice daily. There's no cold start; the tab opens onto the machine exactly as I left it. Watchers still running, containers up, yesterday's terminal scrollback still there.
Long jobs run overnight because nobody's counting hours. And the environment accumulates the way a real computer does: dotfiles, seeded databases, half-finished experiments that are still there next week. With Codespaces I was always slightly aware that state was disposable; some of that is discipline-inducing, most of it was just friction.
The client side keeps the Codespaces property I actually valued: any browser is the IDE. Laptop, iPad, a machine at a client's office. Credentials stay on the VPS; the browser holds nothing. That's also what makes PR review from anywhere work.
Where Codespaces is still better
Three places, and I'd rather list them than have you find them.
Reproducibility. devcontainer.json giving every teammate an identical environment is genuinely good, and a pet VPS has no equivalent guarantee. I keep a setup script in the repo, which is the same idea with fewer teeth. For a team, this one might decide the whole question.
Zero ops. When a codespace breaks you create a new one. When the VPS breaks, you're the ops team. My disk filled up mid-run once and I spent the evening with du -sh figuring out where 30 GB of node_modules had accumulated. Rare, but it's yours when it happens.
Onboarding outsiders. For a drive-by contributor, click-to-environment beats "here's my provisioning script" by a mile.
For a solo developer working daily on their own stack, though, none of those three came up often enough to justify the meter. Your weighting may differ, especially inside a team.
After a year
Roughly 84 euros total, versus the ~$500 the same year of metered hours would have cost at my usage. The box also absorbed side duties along the way: backups, a staging deploy, my Claude Code runs. And the working copies of everything sit on a disk I rent bare from a company that has no idea what's on it, which I've decided I care about more than I used to admit.
If you want to run the same experiment, it's a coffee-priced VPS and about ten minutes: provision, npx codemote-cli start, pair a browser. Beta signup is on the homepage. Your codespace will keep, stopped, in case you want it back.