The monthly bill was reasonable. Call it $10-70 for a VPS with enough headroom for an agent, a few services, and some storage. That’s a rounding error in a budget. Not the problem.
The problem was the SSH sessions. Twice a day, normally way more, something needed attention. A framework update broke a plugin. Disk space filled up from logs nobody was rotating. A scheduled job ran at the wrong time because the server timezone was UTC and nobody remembered that. Security patches needed applying. The agent framework itself needed upgrading, and the upgrade process was never clean.
Each session was 10-20 minutes. Not catastrophic. But those hours compound, and they always came from the same budget: the time I had to build the actual product.
The Problem
Running a personal agent on a rented VPS creates a maintenance surface that’s disproportionate to the value. You’re maintaining an operating system, a network configuration, a framework, and the agent itself — four layers of potential problems, all accessed via SSH from wherever you happen to be.
The VPS doesn’t just host the agent. It becomes a second job. A small one, but persistent. The kind that eats Tuesday evenings and Sunday mornings.
Why This Happens
VPS is the default recommendation for “always-on” applications. It’s good advice for web services that need geographic distribution, high availability, and public endpoints. But a personal agent doesn’t need any of that. It needs to be on when you message it. That’s it.
The VPS assumption carries enterprise requirements into a personal context. You end up with ops overhead designed for a team of three, managed by a team of one, serving an audience of two.
The Fix
Move the agent to local hardware. A Mac Mini on your desk, plugged into your home network, running the same Node.js process.
What you gain:
No monthly bill. The hardware is a one-time purchase. Power costs are negligible. The Mac Mini draws 10-15 watts idle.
No SSH. Problems are diagnosed on the machine in front of you, in a normal terminal, with normal tools. No key management, no port forwarding, no “was the firewall rule blocking port 3000 or 3001?”
Local Ollama for free. Apple Silicon runs local models well enough for simple agent tasks. You get a fallback LLM that costs zero per token and works offline.
Physical ownership of family data. If your agent handles family logistics — calendars, tasks, forwarded emails — that data lives on hardware in your house, not on a server in a data center you’ll never visit.
No framework. On a VPS, you need the framework because it handles process management, crash recovery, and upgrade paths. On local hardware with launchd, you don’t need the framework. Your code is 400 lines of Node.js that you wrote, understand, and can fix in 30 minutes.
What you keep:
launchd for process management. Auto-restart on crash. Start on boot. Log routing to files. The same reliability guarantee as a VPS, without the VPS — and it’s built into macOS, so there’s nothing to install.
<!-- ~/Library/LaunchAgents/com.your-agent.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.your-agent</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/node</string>
<string>/path/to/src/index.js</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/your-agent.log</string>
<key>StandardErrorPath</key>
<string>/tmp/your-agent.err</string>
</dict>
</plist>
launchctl load ~/Library/LaunchAgents/com.your-agent.plist
Auto-restart after power failure. In macOS System Settings, set the machine to restart automatically after a power failure. Plug it into a basic UPS if power reliability is a concern.
Discord (or any cloud transport) for remote access. The Mac Mini is on your home network but the agent is reachable through Discord, which handles the network traversal for you. No port forwarding, no dynamic DNS, no public IP.
The migration math:
VPS costs (annual):
Hosting: $480-840/year
Maintenance: ~100 hours/year (30 min × 2/week × 50 weeks)
Mac Mini costs (annual, after purchase):
Electricity: ~$15/year
Maintenance: ~10 hours/year (mostly "check launchd after macOS update")
The dollar savings are nice. The time savings are the real win.
Key Takeaway
The right hosting for a personal agent is the hosting that takes the least attention. For most people building agents for themselves or their family, that’s a machine on their desk — not a machine in someone else’s data center. Save the VPS for services that need to be on the public internet. Your agent just needs to be on your network.