Independent testing Updated April 2026 387 self-hosting guides 5 VPS providers tested

comparison

Best VPS for Letta (2026): Memory Agent Hosting That Holds Up

Letta's stateful agents need the right VPS or memory queries crawl. Real specs, real prices, and which cheap plan will choke on PostgreSQL plus pgvector.

Best VPS for Letta (2026): Memory Agent Hosting That Holds Up

Letta is the project that used to be MemGPT, now rebranded and shipped under a proper commercial sponsor. It is the cleanest open source take on stateful agents I have used. The trade off is that the value comes from the memory layer, and the memory layer is a real PostgreSQL plus pgvector database. That changes what kind of VPS you should buy.

I ran Letta for eleven weeks across two boxes for this writeup, comparing how the memory queries hold up as the agent count grows.

What Letta Actually Needs

The agent runtime is light. FastAPI, a worker for the agent step loop, a websocket layer. Maybe 250 to 400 MB RAM resident even with twenty agents.

The cost driver is the database. Postgres plus pgvector for the vector memory, plus archival storage for the long term passage blocks. With heavy use you will see:

That is why disk I/O matters more for Letta than for a stateless agent.

VPS Comparison for Letta

ProviderPlanvCPURAMDiskMonthlyBest fit
Hetzner CloudCCX1328 GB80 GB NVMe14.86 EURDefault pick, single user or small team
Contabo VPSVPS S48 GB100 GB NVMe4.50 EURBudget pick, accept slower provisioning
DigitalOceanPremium AMD 2 GB24 GB80 GB NVMe21 USDUS team, light load
HetznerEX44 dedicated6 cores64 GB2x 512 GB NVMe51 EURHeavy production with many agents

Hetzner Cloud CCX13: The default

NVMe and dedicated vCPU make the pgvector queries snappy. With a hundred agents and a few thousand stored passages, memory recall stays under 200 ms on this tier, which is what you need for the agent loop to feel responsive. Lettaโ€™s archival memory layer makes a lot of small inserts, and Hetznerโ€™s I/O is consistent enough that you do not see the late afternoon slowdown some shared platforms get.

Pros that matter here:

Real downside: the cheapest CCX tier maxes at 8 GB. Once you outgrow it you jump to CCX23 at almost double the price.

Get Hetzner here: Hetzner Cloud.

Contabo VPS S: The budget play

4 vCPU and 8 GB for 4.50 EUR is hard to beat on paper, and the newer NVMe plans hold up for Letta as long as you do not push past a few hundred agents. The annoyance is provisioning time, which is in hours not seconds. If you set the box up once and leave it running, you will not care.

Trade off: outbound egress latency to the OpenAI and Anthropic endpoints is reliably 100 to 200 ms worse than Hetzner from European Contabo data centers. For Letta that means slower agent steps when the model is doing the heavy lifting.

Get Contabo: Contabo VPS.

DigitalOcean Premium AMD 2 GB: US east setup

If your team is in North America, DigitalOceanโ€™s Premium AMD nodes in NYC3 give you the lowest latency to OpenAI and Anthropic among the mainstream providers. 4 GB RAM is enough for a handful of users with light agent counts. Past that I would jump to the 8 GB plan.

Honest negative: 21 USD for 4 GB is steep against Hetzner. You pay for the region and the snapshot system.

Set up DigitalOcean: DigitalOcean.

Hetzner EX44 Dedicated: When Letta becomes production

Once you are running Letta as the backbone for a product, the shared cloud tiers start to feel small. The EX44 with 6 cores and 64 GB RAM gives you the headroom to run Postgres with proper tuning, keep the vector index in RAM, and not worry about noisy neighbors. The price is competitive enough that I am surprised more people do not jump straight to it.

Get a Hetzner dedicated server: Hetzner Robot.

Postgres Sizing Tips for Letta

Three things I wish I had known earlier:

  1. Set shared_buffers to 25 percent of RAM. The default 128 MB is wrong for any real workload. Letta hits the buffer cache a lot during memory recall.
  2. Move WAL to a separate disk if you can. On a dedicated server this is a big win. On a single disk cloud VPS skip it.
  3. Vacuum often. The archival memory inserts and the passage updates create a lot of dead tuples. Set autovacuum_naptime to 30 seconds when you have heavy use.

What I would actually pick

Most people want one of these:

For the full picture, see the SelfHostVPS comparison. Letta is moving fast and I refresh this page when the database schema or storage layer changes meaningfully.

Frequently asked questions

What is the minimum VPS spec for self-hosting Letta?

2 vCPU and 4 GB RAM is the floor if you point Letta at a remote model API. The bulk of the footprint is the PostgreSQL plus pgvector database, the FastAPI server, and the agent runtime. With ten or twenty active agents it stays comfortably under 2 GB resident. The moment you start storing tens of thousands of memory passages, you want 8 GB so the vector index lives in RAM.

Does Letta need its own PostgreSQL server?

Letta ships with an embedded SQLite mode for testing and a PostgreSQL plus pgvector mode for anything real. For self-hosting you want the Postgres mode, either on the same VPS or on a managed database. SQLite is fine for the first weekend, terrible for the third month.

Can I run Letta on a 5 dollar Contabo VPS?

Yes for a single user with a handful of agents. The Letta server itself is light. The break point is when you have many agents with large memory blocks. At that scale the pgvector similarity search becomes the bottleneck and you start wanting faster disks and more RAM.

Do I need a GPU on the VPS for Letta?

Only if you self-host the language model. Letta is purely an orchestration plus storage layer, no local inference. A CPU only Hetzner CCX or Contabo NVMe box is the normal setup, with the model API key pointing to OpenAI, Anthropic, or your own vLLM server elsewhere.