The Best VPS for a Full AI Agent Stack (2026)

Axel Grubba, October 18, 2026
Start selling digital products with Crevio
Crevio E-Commerce Platforms logo
Crevio
Sponsored
5.0
(1)
Free plan available
Crevio is AI that runs your small business: it builds your website, finds your customers, takes paymen... Learn more about Crevio
Get an AI summary of this post on:

Published minimums do not add up the way people assume. OpenClaw says 4GB. n8n says 4GB. Ollama says 8GB. Add them and you get 16GB, so a 16GB plan should be comfortable — and then the third install triggers the out-of-memory killer and something dies at 3am.

The arithmetic fails for three reasons, and understanding them is most of the job:

  • Published minimums are floors, not operating figures. Each is the number below which the software won’t start, not the number at which it works well under load.
  • Peaks don’t queue politely. An n8n build, an OpenClaw browser session and an Ollama request can all spike at once. You need headroom for the worst simultaneous case, not the average.
  • The model is resident forever. Ollama holding a 7–8B model doesn’t release that memory between requests. It’s a permanent deduction from everything else.

Realistically, OpenClaw + n8n + Ollama with a 7–8B model wants 24–32GB on one box. Which is why, for most people, the answer isn’t a bigger server.

Quick comparison

Provider Max practical RAM RAM value Best for
Hostinger 32GB Good Best overall, templates for each tool
DigitalOcean Very high Poor Split setups with private networking
Vultr Very high Fair GPU path for the Ollama half
Hetzner 192GB Excellent Best value for a big single box
Linode (Akamai) Very high Fair High-memory plan range
IONOS High Good Cheapest control node
Contabo Very high Best Most RAM per pound

What each component actually costs you

Operating figures, not floors:

Component Resident Peak Notes
OpenClaw, headless ~1.5–2GB 3GB Text-only agent
OpenClaw + browser ~4GB 6GB Chromium adds ~2GB
n8n, regular mode ~1–2GB 3GB Spikes during workflow runs
n8n, queue mode ~3–4GB 6GB Main process plus workers plus Redis
Ollama, 7–8B quantised ~8GB 10GB Model stays resident permanently
Ollama, 13B quantised ~16GB 18GB
PostgreSQL (shared) ~0.5–1GB 2GB One instance can serve several tools
Redis (shared) ~0.1–0.3GB 0.5GB
OS + Docker ~0.5GB 1GB

The two rows worth staring at are the Ollama ones. A local model is not one component among several — it’s larger than everything else combined, and it never gives the memory back.

What actually fits

Box Comfortably runs Don’t attempt
8GB OpenClaw (headless) + n8n regular + shared Postgres/Redis Any local model; browser automation alongside n8n
16GB OpenClaw + browser + n8n queue mode + Postgres + Redis + a vector DB Ollama at 7B on top of all that
32GB The above plus Ollama with a 7–8B model Ollama at 13B+ with everything else
64GB+ Larger models co-located, or several agents with browsers

The pattern: everything except local inference fits comfortably in 16GB. Add a local model and you need to roughly double. That single decision dominates the entire sizing exercise, which is why it’s worth settling first.

Share your infrastructure

One easy saving before buying anything: you do not need a Postgres instance per tool.

n8n wants Postgres. Supabase brings its own. Dify ships one. Left to their defaults, three tools mean three databases, each with its own memory overhead, doing very little work. Point them at one shared Postgres with separate databases inside it and you reclaim a gigabyte or more for nothing. The same goes for Redis — one instance, separate logical databases.

The exception is anything where you’d want independent failure or independent upgrades. For a personal stack that’s rarely worth a gigabyte.

Stop one service starving the others

The failure mode people hit isn’t “the server ran out of memory”. It’s “Ollama loaded a model and Linux killed n8n”. By default containers can consume whatever’s available, so the greediest service wins and the kernel picks a victim.

Docker’s memory limits fix this. Set a limit per service, sized from the table above with a little headroom, and a service that misbehaves gets constrained rather than taking down its neighbours. In Compose that’s a mem_limit (or a deploy.resources.limits.memory in newer syntax) on each service.

Two practical notes. Set limits on everything, not just the greedy one — an unlimited container will simply expand into whatever the limited ones gave up. And leave 10–15% of total RAM unallocated for the operating system and Docker itself; committing every byte to containers is how you get a system that can’t even run the commands you need to diagnose it.

Add swap as well. It won’t make anything fast, but it converts a hard kill into a slowdown, which is a much better failure to have at 3am.

The two-server split

Once local inference is in the picture, one big box is usually the wrong purchase.

Compare, roughly:

Approach Configuration Indicative monthly
One big box 32GB, everything co-located ~€25–50
Split 8GB agent node + inference elsewhere ~€9 + inference

The split wins for three reasons beyond price. Inference is bursty — a GPU or larger box rented by the hour costs far less than one idling 24/7. Isolation — a runaway model load can’t kill your automation. And independent scaling — you upgrade whichever half actually needs it.

Concretely: a small always-on node runs OpenClaw, n8n, Postgres and Redis in about 8GB. Inference goes either to a hosted API (cheapest for most personal use) or to a GPU instance rented by the hour when needed. Most people find the API route removes the problem entirely — at which point 8GB runs the whole stack and this article’s sizing tables stop mattering.

The 7 best VPS providers for an agent stack

1. Hostinger — best overall

Hostinger VPS hosting page showing AMD EPYC processors, NVMe storage and free weekly backups

Hostinger is the strongest single-box option because the plan ladder reaches 32GB — the tier a full co-located stack with local inference actually needs — and its Docker template library covers the individual pieces, so assembly is faster than a from-scratch Compose file.

For the far more common case of a stack without local inference, the 8GB tier runs OpenClaw, n8n, Postgres and Redis with room to spare, and stepping up is a plan change rather than a migration. That upgrade path matters here more than on single-tool deployments, because stacks grow by accretion — you add one more tool, then another.

NVMe helps across the board: every component in this stack does small frequent I/O.

Pros: ladder reaches 32GB; templates for the individual tools; NVMe; KVM with dedicated resources; free weekly backups; easy vertical scaling.

Cons: no GPU, so local inference is CPU-only and slow; promotional pricing needs a long prepay term.

Who it’s for: most stacks, whether you’re starting at 8GB or going straight to a co-located 32GB box.

Check Hostinger’s current VPS pricing →

2. DigitalOcean — best for split architectures

DigitalOcean Droplets page showing a 99.99% uptime SLA and predictable monthly pricing

If you take the two-server advice above, DigitalOcean makes it clean. Private networking between Droplets means the agent node talks to the inference node without crossing the public internet, GPU Droplets cover the inference half, and the whole arrangement is describable in code.

Its managed databases are also relevant: pointing your shared Postgres at a managed instance removes the component with the worst failure modes from your own server, and takes its memory footprint with it.

It’s the poorest RAM value here, which for a memory-bound stack is a real cost. You’re buying the architecture, not the gigabytes.

Pros: private networking for split setups; GPU Droplets on the same platform; managed Postgres; excellent documentation and API; 99.99% SLA.

Cons: worst RAM value for a memory-bound stack; backups add ~20%; no money-back guarantee.

Who it’s for: anyone running the split architecture, especially with managed components.

Check DigitalOcean’s current pricing →

3. Vultr — best when inference stays in-house

Vultr covers both halves: cheap CPU instances for the agent node and GPU instances for inference, on one platform with a wide region list. If you’re committed to running the model yourself rather than calling an API, that combination avoids splitting across providers.

High Frequency instances also make CPU inference marginally less painful if you’re determined to co-locate a small model.

No templates, no money-back guarantee, and the console assumes you know what you want.

Pros: CPU and GPU instances on one platform; wide regions; High Frequency option; good scaling range.

Cons: no templates; no money-back guarantee; utilitarian tooling.

Who it’s for: self-hosted inference where both halves should live with one provider.

4. Hetzner — best value for a big single box

Hetzner Cloud page showing its price calculator and GDPR-compliant German data centres

If you’ve decided on one large co-located server, Hetzner is usually where that’s cheapest — though by a narrower margin than it used to be, after its June 2026 repricing and with the cheap CX tier currently showing as unavailable. Its range goes far beyond what this stack needs, and the mid-range plans that suit a 32GB co-located deployment cost a fraction of the equivalent elsewhere.

It’s equally good for the split, because two Hetzner instances with private networking between them still undercut one mid-tier box at most providers. Attachable volumes handle the storage growth that vector databases and model files bring.

No GPU plans at all, so local inference is CPU-only. No templates, backups extra, no published SLA.

Pros: by far the best RAM per pound at the tiers this stack needs; cheap enough for two nodes; private networking; volumes; spend cap.

Cons: no GPU; no templates; backups extra; no published SLA; signup verification friction.

Who it’s for: cost-focused deployments, whether one big box or two smaller ones.

Check Hetzner’s current pricing →

5. Linode (Akamai) — best high-memory range

Linode’s high-memory plans are the relevant feature: if you’re co-locating a 13B model with a full agent stack and need 64GB, the range goes there without drama, and the platform is mature and pleasant to operate.

GPU instances are available for the inference half, and the CLI and API are good enough for a reproducible two-node setup.

Pricing sits well above the value options, which stings on a workload defined by how much memory you’re buying.

Pros: high-memory plans; GPU instances; mature tooling and API; strong network.

Cons: expensive per gigabyte; no templates; no money-back guarantee.

Who it’s for: large co-located stacks that need serious memory in one place.

6. IONOS — cheapest control node

IONOS VPS hosting page showing entry pricing, unlimited traffic and 24/7 support

IONOS earns its place in the split architecture specifically. If your plan is a small always-on node running OpenClaw, n8n and shared services while inference happens elsewhere, that node is unglamorous infrastructure and IONOS is the cheapest credible way to keep it running.

Unlimited traffic is useful for an agent node making a lot of outbound API calls, and the European data centres cover residency requirements for the orchestration layer.

Small entry plans, no GPU, backups extra. Not the choice for a co-located box.

Pros: cheapest credible always-on node; unlimited traffic; European data centres; approachable panel; 30-day money-back guarantee.

Cons: entry tiers too small for co-location; no GPU; backups extra.

Who it’s for: the agent half of a split setup, on a budget.

Check IONOS’s current pricing →

7. Contabo — most RAM per pound

Contabo’s whole proposition is memory volume at low prices, which is precisely the constraint this article is about. For a co-located stack that genuinely needs 32GB or more, nothing here is cheaper per gigabyte.

The caveat is CPU. Contabo’s shared cores can throttle under sustained load, and a co-located stack with several services doing work simultaneously is exactly the profile that runs into it. Memory volume without consistent CPU is a trade, not a free win.

Support is thinner than the majors, provisioning can be slow, and there’s no GPU.

Pros: the most RAM per pound available; large storage allocations; makes 32GB+ co-location affordable.

Cons: shared CPU throttling under exactly this kind of sustained multi-service load; thinner support; slow provisioning; no GPU.

Who it’s for: memory-hungry co-located stacks where budget dominates and CPU contention is tolerable.

How we picked

We ranked on what a multi-service stack actually needs: available memory at each realistic tier, RAM value (because this workload is memory-bound above all), whether the provider supports a split architecture with private networking, GPU availability for the inference half, and how easily you can scale vertically without migrating.

The component figures are operating estimates — resident and peak — rather than the published floors each project quotes, because the whole point of this article is that published floors mislead when you add them together. They’re guidance for budgeting, not benchmarks. Three of the seven providers here earn us nothing.

How to choose

  1. Are you running a local model? This is the whole decision. No means 8–16GB covers everything. Yes means 32GB co-located, or a split.
  2. Add operating figures, not minimums, and include the worst simultaneous peak.
  3. Share Postgres and Redis across tools before buying more memory.
  4. Set per-container memory limits so one service can’t kill the rest.
  5. Price the split before the big box. Small node plus hourly inference usually wins on cost and always wins on isolation.

For most people it’s Hostinger — the ladder reaches the tier a co-located stack needs and the templates speed up assembly. Hetzner or Contabo if you’re buying a big box on a budget, DigitalOcean or Vultr if you’re splitting with GPU inference, Linode for very large single boxes, and IONOS for a cheap control node.

FAQ

Can I run OpenClaw, n8n and Ollama on the same VPS?

Yes, but not on the 16GB you’d get from adding their published minimums. Operating figures put that combination at roughly 24–32GB once you include a browser for OpenClaw, queue mode for n8n, a resident 7–8B model, shared Postgres and Redis, and headroom for simultaneous peaks. Without local inference, the same stack fits comfortably in 8–16GB.

How much RAM do I need to self-host an AI stack?

8GB runs a headless agent plus n8n and shared services. 16GB adds browser automation, queue mode and a vector database. 32GB is where a local 7–8B model fits alongside all of that. The local model is the dividing line — it’s larger than everything else combined and holds its memory permanently.

Should I run everything on one server or split it?

Split, in most cases. A small always-on node handles the agents and automation in about 8GB, while inference goes to a hosted API or an hourly GPU instance. That’s usually cheaper than one large box, and it isolates the components — a runaway model load can’t take down your automation. One box makes sense when everything must stay on your own hardware.

How do I stop one service from killing the others?

Set per-container memory limits in Docker, sized from realistic operating figures with a little headroom, and apply them to every service rather than just the greedy one — an unlimited container will expand into whatever the limited ones released. Leave 10–15% of total RAM unallocated for the OS and Docker, and configure swap so a spike becomes a slowdown instead of a kill.

Founder & Software Review Editor
Axel Grubba is the founder of Findstack, a B2B software comparison platform, with his background spanning management consulting and venture capital where he invested in software. Recently, Axel has developed a passion for coding and enjoys traveling when he is not building and improving Findstack.
Business Software Reviews SaaS Product Evaluation CRM Software
Subscribe, get software deals straight to your inbox.
Join 8,900+ other entrepreneurs staying up-to-date on all the latest deals.
Zero spam. Unsubscribe at any time.