Why you eventually have to move a local AI agent to the cloud
You built an agent on your laptop. It scrapes a few sites, calls an LLM, writes results to a file, maybe opens a pull request. It works. Then you close the lid to go to lunch and the whole thing stops mid-task.
That is the moment most people decide to move a local AI agent to the cloud. A laptop is a workstation, not a server. It sleeps, it drops off Wi-Fi, macOS suspends background processes to save battery, and your agent's long-running loop dies with them. If the agent is supposed to watch an inbox, poll a queue, or run overnight, a machine that sleeps is the wrong home for it.
Moving to the cloud fixes the obvious problem (uptime) and a few you have not hit yet: a stable outbound IP, real secrets management, logs you can read after the fact, and a way to restart the thing without SSHing into your own computer.
What actually breaks when an agent runs on a laptop
Before the how, it helps to name what you are escaping:
Sleep and lid-close.
caffeinateon macOS or disabling sleep on Linux buys you a few hours, not a reliable service.IP churn. Your home IP rotates and sits behind NAT. Any webhook that needs to reach the agent cannot find it.
Secrets in plaintext. A
.envfile next to your source is fine for a demo and a liability the moment the agent touches real accounts.No restart story. When the process crashes at 3am, nobody restarts it.
One machine, one agent. You cannot run two copies, and you cannot let a teammate touch it without handing over your login.
Every one of these has a boring, solved answer once the code lives on a server instead of a personal device.
The three ways to move a local AI agent to the cloud
There is a spectrum here, from most manual to most managed. Pick based on how much infrastructure you want to own.
| Approach | Setup effort | You maintain | Good fit |
|---|---|---|---|
| Raw VPS + systemd | Medium | OS, updates, restarts, logs | One agent, full control |
| Container on a PaaS | Low | The image, a config file | A couple of agents, no ops team |
| Managed agent platform | Lowest | Just the agent code | Fleets, teams, private access controls |
Option 1: a $5 VPS and a systemd unit
The cheapest honest answer is a small virtual private server. A $4 to $6 per
month instance from DigitalOcean, Hetzner, or Vultr has more than enough headroom
for an agent that mostly waits on network calls. You copy your code up, install
your runtime, and let systemd keep it alive.
A minimal unit file looks like this:
[Unit]
Description=My AI agent
After=network-online.target
[Service]
WorkingDirectory=/opt/agent
ExecStart=/usr/bin/node /opt/agent/index.js
Restart=always
RestartSec=5
EnvironmentFile=/opt/agent/.env
[Install]
WantedBy=multi-user.target[Unit]
Description=My AI agent
After=network-online.target
[Service]
WorkingDirectory=/opt/agent
ExecStart=/usr/bin/node /opt/agent/index.js
Restart=always
RestartSec=5
EnvironmentFile=/opt/agent/.env
[Install]
WantedBy=multi-user.targetsudo systemctl enable --now my-agent
journalctl -u my-agent -fsudo systemctl enable --now my-agent
journalctl -u my-agent -fRestart=always is the line that matters. It turns a script that dies on the
first unhandled exception into a service that comes back. The
systemd.service manual
documents the restart policies if you want backoff instead of a fixed delay.
The tradeoff: you now own a Linux box. Security updates, disk filling with logs, and the 2am reboot are yours. For one agent that is fine. For five, it gets old.
Option 2: containerize it and push to a PaaS
The next step up is to put the agent in a container so the environment travels with the code. This kills the "works on my machine" class of bugs, because the image pins your runtime, your system libraries, and your dependencies together. We wrote a full walkthrough in how to containerize an AI agent with Docker, but the short version is a Dockerfile plus a deploy to a platform like Fly.io, Railway, or Render.
Once the agent is an image, moving it is a push, not a migration. That same image runs on your laptop, on a PaaS, or on Kubernetes without edits.
Option 3: a managed agent platform
If the agent is going to matter, and especially if a team will touch it, the raw-VPS and PaaS routes start to show their seams. You want per-agent secrets, an audit log, a way to give a teammate access without your password, and a public endpoint that is not your home router. That is the gap a managed platform fills. Sokko runs each agent as an isolated workload on secure, always-on infrastructure we manage, hands it persistent storage so its state survives restarts, and keeps it private so only you and the people you invite can reach it. You bring the agent code; the uptime, secrets, and networking are handled. The deploying your first agent walkthrough shows the full flow from your first launch to a running agent.
A concrete migration checklist
Whichever option you choose, the move itself follows the same steps:
Externalize config. Move every secret out of source and into environment variables. Nothing hardcoded, nothing committed.
Make the agent restart-safe. Assume it can be killed at any point. Write progress to durable storage, not to memory, so a restart resumes instead of redoing work.
Pick a storage home. If the agent writes files, it needs a volume that outlives the process. A container's local filesystem is wiped on restart.
Add health and logs. Log to stdout, not to a file only you can see. A crash you cannot read is a crash you cannot fix.
Test the failure path. Kill the process on purpose. Confirm it comes back and picks up where it left off.
Step 2 is the one people skip and regret. An agent that keeps its whole task in memory loses everything on a restart. Persisting state is what separates a script from a service. For coding agents specifically, that state includes context about your codebase, which is why persistent memory for AI coding agents is worth a read before you move one.
What it costs
The honest cost picture, from cheapest to most hands-off:
VPS: roughly $4 to $12 per month for a small instance, plus your time as the sysadmin.
PaaS: a free tier for hobby use, then usually $5 to $20 per month per service once you outgrow it.
Managed platform: priced per running agent or per seat, in exchange for not owning any of the plumbing.
We broke the numbers down in detail in AI agent pricing and covered the genuinely free options in free AI agent hosting. The short guidance: if you are moving one hobby agent, a VPS or a free tier is right. If the agent is on the path to production or a team, the managed route saves you the ops tax.
What to verify after the move
Getting the agent running in the cloud is not the finish line. Confirm these four things before you trust it:
It survives a reboot. Reboot the host (or redeploy the container) and check the agent comes back on its own. If it needs you to start it, the restart story is not done.
Its outbound IP is stable. Many APIs and webhooks care about the source IP. Run
curl ifconfig.mefrom the agent's host twice, an hour apart, and confirm it does not change. If it does, you need a static IP or a NAT gateway.Logs are reachable. You should be able to read what the agent did last night without SSHing in. If your only window into it is a live terminal, a crash at 3am is invisible until morning.
Secrets are injected, not committed. Grep the deployed image and repo for your keys. If any secret is in a file rather than an injected environment variable, fix it before the agent touches a real account.
Run through that list once and you have caught the failures that otherwise show up as a silent, dead agent a week later.
Common migration mistakes
The moves that go wrong tend to fail the same handful of ways:
Treating an ephemeral disk as permanent. Containers wipe their local filesystem on restart. An agent that writes state to its own container loses it. Mount a volume and write there instead.
Copying the whole dev environment up. You do not need your editor, your shell history, or your local caches on the server. Ship the code and its dependencies, nothing else. A container image enforces this cleanly.
No spend limit on the model. A loop that goes wrong on your laptop is annoying. The same loop running 24/7 in the cloud is a bill. Set a budget alert on your model provider before you walk away.
Exposing the agent with no auth. A public endpoint with no authentication is an open door. Put the agent behind an auth policy or keep it on a private network reachable only by the systems that need it.
Each of these is cheap to avoid up front and expensive to discover in production.
Do not over-build the first move
The trap is jumping straight to a Kubernetes cluster you configure by hand for a single agent. You do not need that on day one. Move the agent somewhere that does not sleep, get the secrets and restarts right, and watch it run for a week. Scale the infrastructure when the agent earns it, not before. The whole reason to move a local AI agent to the cloud is to stop babysitting it, so pick the option that lets you close your laptop and walk away. With Sokko you can move a local setup (keys, memory, and files) in one command; see migrate a local agent.