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:
- A few hundred MB of working set in Postgres for indexes
- Disk usage that grows steadily as conversations and inserted passages accumulate
- Spiky CPU when a new conversation triggers a recall query across all blocks
That is why disk I/O matters more for Letta than for a stateless agent.
VPS Comparison for Letta
| Provider | Plan | vCPU | RAM | Disk | Monthly | Best fit |
|---|---|---|---|---|---|---|
| Hetzner Cloud | CCX13 | 2 | 8 GB | 80 GB NVMe | 14.86 EUR | Default pick, single user or small team |
| Contabo VPS | VPS S | 4 | 8 GB | 100 GB NVMe | 4.50 EUR | Budget pick, accept slower provisioning |
| DigitalOcean | Premium AMD 2 GB | 2 | 4 GB | 80 GB NVMe | 21 USD | US team, light load |
| Hetzner | EX44 dedicated | 6 cores | 64 GB | 2x 512 GB NVMe | 51 EUR | Heavy 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:
- NVMe handles the pgvector write pattern without complaints
- Falkenstein region runs sub 80 ms to Anthropic and OpenAI
- API plus Terraform means you can rebuild on a snapshot quickly
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:
- 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.
- 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.
- 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:
- EU, default daily use: Hetzner CCX13
- EU, lowest spend, long lived box: Contabo VPS S
- US team: DigitalOcean Premium AMD 4 GB or 8 GB
- Production with many users: Hetzner EX44 dedicated
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.