← Back to all projects

Letta

Agents with a managed memory hierarchy, from the MemGPT research

OfficialApache-2.0
Stars
24.3k
Forks
2.6k
Open issues
43
Last commit
14 Aug 2026

Overview

Treats the context window like RAM and everything else like disk, with the agent itself deciding what to page in and out. That framing makes indefinitely long-running agents tractable. It is a more opinionated commitment than bolting a memory library onto an existing stack.

What can you do with Letta?

  • Run an agent with memory locallynpm install -g @letta-ai/letta-code then letta launches an agent with memory on your own computer (Node.js 22.19+) that can code and do other tasks there; agents can also be run via the desktop app or channels like Slack.
  • Embed stateful agents in your appThe TypeScript Agent SDK creates one with createAgent, passing a model string such as anthropic/claude-opus-4-8 plus human and persona, then streams the reply through resumeSession and session.stream().
  • Switch backends with one fieldThe same SDK code runs against Constellation, Letta's agent cloud, against a self-hosted App Server, or with backend set to local, which spawns Letta Code on your machine as a subprocess.
  • Keep an existing V1 integration runningThe previous-generation V1 SDKs — @letta-ai/letta-client for TypeScript and letta-client for Python — still target the Letta API directly; the README points new projects at the Agent SDK instead.
  • Start from letta-code, not this repoThis repository is the legacy server behind the Letta V1 API; active development moved to letta-ai/letta-code, and self-hosting an API server is now done through the App Server.

Documentation

Reproduced from the letta-ai/letta README, published under Apache-2.0. Read the original ↗

Letta (formerly MemGPT)

Build AI with advanced memory that can learn and self-improve over time.

  • Letta Agent: run agents locally in your terminal, via the desktop app, or via channels like Slack
  • Letta Agent SDK: build agents into your applications

[!NOTE] This repository contains the legacy Letta server (the API server behind the Letta V1 API and SDKs). Active development has moved to the Letta Agent repo, and self-hosting an API server is now done via the App Server. See AGENTS.md for details.

Get started in the CLI

Requires Node.js 22.19+

  1. Install the Letta Code CLI tool: npm install -g @letta-ai/letta-code
  2. Run letta in your terminal to launch an agent with memory running on your local computer

When running the CLI tool, your agent can help you code and do any task you can do on your computer.

Letta Code supports skills and subagents, and bundles pre-built skills/subagents for advanced memory and continual learning. Letta is fully model-agnostic, though we recommend the latest Anthropic, OpenAI, and zAI models for best performance (see our model leaderboard for our rankings).

Get started with the Letta Agent SDK

Use the Letta Agent SDK (TypeScript) to build stateful agents into your own applications. The SDK can run agents on Constellation (Letta’s agent cloud), fully locally on your machine, or against a self-hosted App Server.

Installation

npm install @letta-ai/letta-agent-sdk

Hello World example

Below is a quick example of creating a stateful agent and streaming a conversation with it (requires a Letta API key). See the full quickstart guide for complete documentation.

import { LettaAgentClient } from "@letta-ai/letta-agent-sdk";

const client = new LettaAgentClient({
  backend: "cloud",
  apiKey: process.env.LETTA_API_KEY,
});

// Create your agent
const agentId = await client.createAgent({
  model: "anthropic/claude-opus-4-8",
  human:
    "Name: Timber. Status: dog. Occupation: building Letta, infrastructure to democratize self-improving superintelligence",
  persona:
    "I am a self-improving superintelligence. Timber is my best friend and collaborator.",
});

console.log("Agent created with ID:", agentId);

// Send your agent a message and stream the response
await using session = client.resumeSession(agentId);

await session.send("What do you know about me?");
for await (const message of session.stream()) {
  if (message.type === "assistant") console.log(message.content);
}

To run the same agent fully locally (the SDK spawns Letta Code on your machine as a subprocess), swap out the client:

const client = new LettaAgentClient({ backend: "local" });

Letta V1 SDK

The previous-generation V1 SDKs (@letta-ai/letta-client for TypeScript, letta-client for Python) target the Letta API directly and are still available (see the client SDKs). We recommend the Agent SDK for new projects.