Letta
Build stateful agents with advanced memory that can learn and improve over time.
- Source repo
- letta-ai/letta
- Stars
- ★ 25k
- Last updated
- 18d ago
- License
- Apache-2.0
- FA score
- 47/100 · Major gaps
At a glance
- How it runs
- Works with
- Universal · cross-platform
- Cost
- Free software; you pay for model usage
- Setup effort
- Low · running in minutes
- You'll need
- Typical use
- A TypeScript application developer who needs an agent whose state can be resumed by agentId can create and resume it with LettaAgentClient.
- Not a fit if
- Teams that need to build on this repo long-term: active development moved to letta-code
- Source review
- 47/100 · Major gaps
What does this agent do, and when should you use it?
Letta, formerly MemGPT, is a platform for stateful agents with advanced memory. This repository contains the legacy Letta Server behind the Letta V1 API and SDKs; active development has moved to the Letta Agent repository. For new builds, the TypeScript Letta Agent SDK can run agents on Letta’s Constellation cloud, locally, or against a self-hosted App Server. Letta Code provides a terminal entry point for running a memory-enabled local agent, with desktop and Slack-channel options also named. The SDK exposes agent creation, session resumption, message sending, and streamed assistant responses.
A developer installs @letta-ai/letta-agent-sdk and creates a LettaAgentClient. client.createAgent({ model, human, persona }) creates a stateful agent with a model, human description, and persona, returning an agentId; client.resumeSession(agentId) opens its session, session.send(...) submits input, and for await (const message of session.stream()) reads streamed messages whose type is assistant. backend: "cloud" connects through a Letta API key, while backend: "local" launches Letta Code as a subprocess on the local machine. Terminal users can instead install @letta-ai/letta-code globally and run letta to launch a local memory-enabled agent.
- A TypeScript application developer who needs an agent whose state can be resumed by agentId can create and resume it with LettaAgentClient.
- An individual developer who wants a memory-enabled assistant in a local terminal can install Letta Code and run letta.
- A team deciding between cloud, local execution, and a self-hosted API boundary can select the appropriate Agent SDK backend.
- A developer building a streaming chat interface can consume assistant output incrementally through session.stream().
- A maintainer already using the Letta V1 API can retain a V1 SDK while using the Agent SDK for new projects.
How do you install or deploy this agent?
Node.js 22.19+ is required. For the local CLI: npm install -g @letta-ai/letta-code. For the TypeScript SDK: npm install @letta-ai/letta-agent-sdk. Cloud SDK use requires a Letta API key, supplied as LETTA_API_KEY.
How do you use this agent?
The first CLI invocation is: letta. For cloud SDK use, create new LettaAgentClient({ backend: "cloud", apiKey: process.env.LETTA_API_KEY }), call await client.createAgent({ model, human, persona }), then use await using session = client.resumeSession(agentId), await session.send("What do you know about me?"), and session.stream() to receive output. To run through the local SDK backend, use new LettaAgentClient({ backend: "local" }); it starts Letta Code as a subprocess.
What are this agent's strengths and limitations?
- The SDK documents a complete path for creating an agent, resuming a prior session, and consuming streamed responses.
- One Agent SDK explicitly supports cloud, local, and self-hosted App Server execution boundaries.
- The local backend starts Letta Code as a subprocess, avoiding separate subprocess setup in the application.
- CLI, desktop, and Slack channels provide multiple documented interaction surfaces for memory-enabled agents.
- This is the legacy Letta Server repository; active development has moved to letta-ai/letta-code, creating a migration consideration for adopters of this repository itself.
- The CLI requires Node.js 22.19+, and local SDK execution depends on Letta Code being launched.
- The cloud example requires a Letta API key, so that path depends on credentials and network access.
- The supplied material names App Server for self-hosting but does not provide its installation commands, infrastructure requirements, or operational configuration.
How does this agent compare with similar options?
For new projects, the README recommends the Letta Agent SDK. Previous-generation V1 SDKs—@letta-ai/letta-client for TypeScript and letta-client for Python—remain available for direct use with the Letta API.
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| Letta This agent | 47 · Major gaps | CLIFree + model costs | ★ 25k | 18d ago | — | — |
| Letta Code | 45 · Major gaps | CLIFreemium | ★ 3.8k | today | TypeScript | ChatGPT · OpenAI API · Claude API |
| PenguinHarness | 52 · Major gaps | Desktop appFree + model costs | ★ 3.2k | today | TypeScript | OpenAI API · Claude API |
| Acontext | 44 · Major gaps | Library / SDKFreemium | ★ 3.7k | 13d ago | JavaScript | OpenAI API · Claude API |
How does FollowAgents rate this agent?
Why each dimension lost points
Evidence shows a security policy and error handling tests, but no explicit implementation of least privilege, user confirmation, data flow transparency, sensitive data handling, dependency security, external effects, rollback, or source attribution. Deductions: lack of concrete evidence for these aspects.
Tests cover error conversion, but dependencies are numerous and availability not verified. Deductions: dependency availability unproven, failure messages tested but not executed.
README describes multiple use cases, but capability boundaries and trigger precision are not explicit. Deductions: capability boundaries and trigger precision lack documentation.
Has README, LICENSE, pyproject.toml, but lacks changelog and known limitations. Deductions: versioning and known limitations not documented.
Output usability has examples, marginal value is clear, but cost-benefit not quantified. Deductions: cost-benefit lacks data.
Claims are supported by tests, but independent verification not possible. Deductions: claim traceability insufficient, cross-source corroboration limited.
- Numerous dependencies with unverified availability may affect reliability.
- Lack of changelog and known limitations makes risk assessment difficult.
- Permissions and data handling details are unclear; use with caution.
Recent releases
Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.
-
0.16.8 v0.16.8
Release notes excerpt
What's Changed * fix: workflows update by @cpacker in https://github.com/letta-ai/letta/pull/3292 * fix(security): use JSON instead of pickle for sandbox->server tool result transport by @kianjones9 in https://github.com/letta-ai/letta/pull/3343 Full Changelog: https://github.com/letta-ai/letta/compare/0.16.7...0.16.8View on GitHub ↗ -
0.16.7 v0.16.7
Release notes excerpt
Letta Server 0.16.7 Release Notes 173 commits since 0.16.6 | Released March 31, 2026 Highlights Self-hosted users: this is a big upgrade. The default global context window is raised from 32k to 128k, the context window reset bug (LET-7991) is fixed, and compaction has been overhauled. If you've been running curl commands to patch your config after every ADE load, most of that pain should be gone. Breaking Changes …View on GitHub ↗ -
0.16.6 v0.16.6
Release notes excerpt
Highlights - Expanded Conversations API support for default conversation / agent-direct mode. - New conversations now initialize with a compiled system message at creation time. - Fixed model_settings.max_output_tokens default behavior so it does not silently override existing max_tokens unless explicitly set. Conversations API updates - Added support for conversation_id="default" + agent_id across conversation endpoints (send/list/cancel/compact/stream retrieve). - Kept backwards compatibility for conversation_id=agent-* (deprecated path). …View on GitHub ↗