The SDK for stateful agents: create an agent once, then resume it from anywhere. Each agent has its own identity and long-term memory, and keeps both across conversations, models, and the computers it runs on.
Read the documentation for guides and the full API reference.
npm install @letta-ai/letta-agent-sdkimport { LettaAgentClient } from "@letta-ai/letta-agent-sdk";
const client = new LettaAgentClient({ backend: "cloud" });
// Create the agent once...
const agentId = await client.createAgent({
systemPrompt: "You are Nora, a research analyst who tracks our competitors.",
memfs: true,
});
// ...then resume it, from anywhere, for as long as it lives.
await using session = client.resumeSession(agentId);
await session.send("What changed since last week?");
for await (const message of session.stream()) {
if (message.type === "assistant") process.stdout.write(message.content);
}Set LETTA_API_KEY for the cloud backend. See the quickstart for the local and self-hosted paths.
One interface, three backends:
| Backend | Agent state | Tools execute |
|---|---|---|
"cloud" |
Hosted by Letta | A managed sandbox, or a computer you connect |
"local" |
On this machine* | On this machine* |
"remote" |
Your App Server | On your App Server machine |
* "this machine" refers to the machine that the SDK code itself is running on
Browser, Expo, and React Native applications import from @letta-ai/letta-agent-sdk/client, which does not require Node and supports the cloud and remote backends. See Deployment.
Runnable applications live in examples/. Start with the examples guide, which orders the demos by concept and lists their setup and side effects. See the React chat template for a more complete custom UI.
Development conventions for this repository are in AGENTS.md.
Made with 💜 in San Francisco
