Skip to content
Letta Platform Letta Platform Letta Docs
Sign up
Letta Code SDK

Letta Code SDK quickstart

Get started with the Letta Code SDK

Terminal window
npm install @letta-ai/letta-code-sdk
import { prompt } from "@letta-ai/letta-code-sdk";
const result = await prompt("What is 2 + 2?");
console.log(result.result);
import { createAgent, resumeSession } from "@letta-ai/letta-code-sdk";
const agentId = await createAgent();
await using session = resumeSession(agentId);
await session.send("What is 5 + 3?");
for await (const msg of session.stream()) {
if (msg.type === "assistant") console.log(msg.content);
}
  • Agent (agentId): A persistent entity with memory.
  • Conversation (conversationId): A message thread within an agent.
  • Session: A single execution/connection.
  • Default conversation: Always exists after createAgent(); use resumeSession(agentId).
createSession(agentId, {
systemPrompt: { type: "preset", preset: "letta-claude" },
});
createSession(agentId, {
systemPrompt: { type: "preset", preset: "letta-claude", append: "Always respond in Spanish." },
});
createSession(agentId, {
systemPrompt: "You are a helpful Python expert.",
});

Presets:

  • default / letta-claude
  • letta-codex
  • letta-gemini
  • claude, codex, gemini (minimal prompts)
createSession(agentId, {
memory: ["project", "persona"],
});
createSession(agentId, {
memory: [
{ label: "context", value: "API docs for Acme Corp..." },
{ label: "rules", value: "Always use TypeScript." },
],
});
createSession(agentId, {
allowedTools: ["Glob", "Bash"],
permissionMode: "bypassPermissions",
cwd: "/path/to/project",
});
FunctionDescription
createAgent()Create a new agent with a default conversation
createSession()New conversation on default agent
createSession(agentId)New conversation on specified agent
resumeSession(id)Resume session (pass agent-xxx or conv-xxx)
prompt(message)One-shot query with default agent
prompt(message, agentId)One-shot query with specific agent
Property/MethodDescription
send(message)Send user message
stream()Async generator yielding messages
close()Close the session
agentIdAgent ID
sessionIdCurrent session ID
conversationIdConversation ID
interface SessionOptions {
model?: string;
systemPrompt?: string | { type: "preset"; preset: string; append?: string };
memory?: Array<string | CreateBlock | { blockId: string }>;
persona?: string;
human?: string;
project?: string;
cwd?: string;
allowedTools?: string[];
permissionMode?: "default" | "acceptEdits" | "bypassPermissions";
canUseTool?: (toolName: string, toolInput: object) => Promise<CanUseToolResponse>;
maxTurns?: number;
}