Dernière vérification:
Letta est le projet qui s’appelait autrefois MemGPT, désormais rebaptisé et distribué sous un vrai sponsor commercial. C’est l’approche open source la plus propre des agents à état que j’aie utilisée. Le revers de la médaille : la valeur vient de la couche mémoire, et cette couche mémoire est une vraie base de données PostgreSQL plus pgvector. Cela change le type de VPS à choisir.
Pour cet article, j’ai fait tourner Letta pendant onze semaines sur deux machines, en comparant la tenue des requêtes mémoire à mesure que le nombre d’agents augmente.
Ce dont Letta a vraiment besoin
Le runtime de l’agent est léger : FastAPI, un worker pour la boucle de steps de l’agent, une couche websocket. Peut-être 250 à 400 Mo de RAM résidente même avec vingt agents.
Le poste de coût, c’est la base de données. Postgres plus pgvector pour la mémoire vectorielle, plus un stockage d’archivage pour les blocs de passages long terme. Sous forte charge, on observe :
- Quelques centaines de Mo de working set dans Postgres pour les index
- Un usage disque qui croît régulièrement à mesure que les conversations et les passages insérés s’accumulent
- Des pics de CPU quand une nouvelle conversation déclenche une requête de rappel sur tous les blocs
C’est pourquoi l’I/O disque compte davantage pour Letta que pour un agent sans état.
Comparatif de VPS pour Letta
| Fournisseur | Offre | vCPU | RAM | Disque | Mensuel | Idéal pour |
|---|---|---|---|---|---|---|
| Hetzner Cloud | CCX13 | 2 | 8 GB | 80 GB NVMe | 42,99 EUR | Choix par défaut, utilisateur unique ou petite équipe |
| Contabo VPS | VPS S | 4 | 8 GB | 100 GB NVMe | 4,50 EUR | Choix économique, provisioning plus lent à accepter |
| DigitalOcean | Premium AMD 2 GB | 2 | 4 GB | 80 GB NVMe | 21 USD | Équipe US, charge légère |
| Hetzner | EX44 dedicated | 6 cores | 64 GB | 2x 512 GB NVMe | 51 EUR | Production intensive avec de nombreux agents |
Hetzner Cloud CCX13 : le choix par défaut
Le NVMe et le vCPU dédié rendent les requêtes pgvector rapides. Avec une centaine d’agents et quelques milliers de passages stockés, le rappel mémoire reste sous 200 ms à ce niveau, ce qu’il faut pour que la boucle de l’agent paraisse réactive. La couche de mémoire d’archivage de Letta génère beaucoup de petites insertions, et l’I/O de Hetzner est assez régulière pour éviter le ralentissement de fin d’après-midi que connaissent certaines plateformes mutualisées.
Les atouts qui comptent ici :
- Le NVMe encaisse le pattern d’écriture de pgvector sans broncher
- La région de Falkenstein tourne sous 80 ms vers Anthropic et OpenAI
- L’API plus Terraform permet de reconstruire rapidement à partir d’un snapshot
Le vrai bémol : le palier CCX le moins cher plafonne à 8 Go. Une fois qu’on le dépasse, il faut sauter au CCX23, à un prix presque doublé.
Obtenir Hetzner ici : Hetzner Cloud.
Contabo VPS S : le choix économique
4 vCPU et 8 Go pour 4,50 EUR, difficile à battre sur le papier, et les nouvelles offres NVMe tiennent bien la charge pour Letta tant qu’on ne dépasse pas quelques centaines d’agents. Le point agaçant, c’est le temps de provisioning, qui se compte en heures et non en secondes. Si l’on configure la machine une fois puis qu’on la laisse tourner, cela ne pose pas de problème.
Le compromis : la latence de sortie vers les endpoints OpenAI et Anthropic est systématiquement 100 à 200 ms plus mauvaise que chez Hetzner depuis les data centers européens de Contabo. Pour Letta, cela se traduit par des steps d’agent plus lents quand le modèle fait le gros du travail.
Obtenir Contabo : Contabo VPS.
DigitalOcean Premium AMD 2 Go : la configuration côte est US
Si l’équipe est basée en Amérique du Nord, les nœuds Premium AMD de DigitalOcean à NYC3 offrent la latence la plus faible vers OpenAI et Anthropic parmi les fournisseurs grand public. 4 Go de RAM suffisent pour une poignée d’utilisateurs avec peu d’agents. Au-delà, je passerais directement au plan 8 Go.
Point négatif honnête : 21 USD pour 4 Go, c’est cher comparé à Hetzner. On paie pour la région et le système de snapshots.
Configurer DigitalOcean : DigitalOcean.
Hetzner EX44 dédié : quand Letta passe en production
Une fois que Letta devient l’épine dorsale d’un produit, les niveaux de cloud mutualisé commencent à sembler étroits. L’EX44 avec 6 cœurs et 64 Go de RAM donne la marge nécessaire pour tuner Postgres correctement, garder l’index vectoriel en RAM, et ne plus se soucier des voisins bruyants. Le prix est assez compétitif pour que je sois surpris que peu de gens sautent directement dessus.
Obtenir un serveur dédié Hetzner : Hetzner Robot.
Conseils de dimensionnement Postgres pour Letta
Trois choses que j’aurais aimé savoir plus tôt :
- Réglez shared_buffers sur 25 % de la RAM. La valeur par défaut de 128 Mo est inadaptée à toute charge réelle. Letta sollicite beaucoup le buffer cache pendant le rappel mémoire.
- Déplacez le WAL sur un disque séparé si possible. Sur un serveur dédié, c’est un vrai gain. Sur un VPS cloud à disque unique, passez cette étape.
- Faites du vacuum souvent. Les insertions de mémoire d’archivage et les mises à jour de passages créent beaucoup de tuples morts. Réglez autovacuum_naptime sur 30 secondes en cas d’usage intensif.
Ce que je choisirais réellement
La plupart des gens veulent l’une de ces options :
- UE, usage quotidien par défaut : Hetzner CCX13
- UE, dépense minimale, machine longue durée : Contabo VPS S
- Équipe US : DigitalOcean Premium AMD 4 Go ou 8 Go
- Production avec de nombreux utilisateurs : Hetzner EX44 dédié
Pour la vue d’ensemble, voir le comparatif SelfHostVPS. Letta évolue vite et je mets cette page à jour dès que le schéma de base de données ou la couche de stockage change significativement.
Frequently asked questions
Quelle est la configuration VPS minimale pour auto-héberger Letta ?
2 vCPU et 4 Go de RAM constituent le plancher si Letta pointe vers une API de modèle distante. L'essentiel de l'empreinte vient de la base PostgreSQL plus pgvector, du serveur FastAPI et du runtime de l'agent. Avec dix ou vingt agents actifs, on reste confortablement sous 2 Go résidents. Dès que l'on stocke des dizaines de milliers de passages mémoire, il faut viser 8 Go pour que l'index vectoriel tienne en RAM.
Letta a-t-il besoin de son propre serveur PostgreSQL ?
Letta propose un mode SQLite embarqué pour les tests et un mode PostgreSQL plus pgvector pour tout usage réel. Pour l'auto-hébergement, mieux vaut choisir le mode Postgres, sur le même VPS ou sur une base de données managée. SQLite convient pour le premier week-end, mais devient intenable au troisième mois.
Peut-on faire tourner Letta sur un VPS Contabo à 5 dollars ?
Oui, pour un utilisateur unique avec quelques agents. Le serveur Letta lui-même est léger. Le point de rupture arrive avec de nombreux agents dotés de gros blocs mémoire. À cette échelle, la recherche de similarité pgvector devient le goulot d'étranglement, et il faut des disques plus rapides et plus de RAM.
Faut-il un GPU sur le VPS pour Letta ?
Seulement si l'on auto-héberge le modèle de langage. Letta n'est qu'une couche d'orchestration et de stockage, sans inférence locale. Une machine uniquement CPU, comme un Hetzner CCX ou une instance Contabo NVMe, est la configuration habituelle, avec la clé API du modèle pointant vers OpenAI, Anthropic ou son propre serveur vLLM ailleurs.