# Record
**Author:** @cameron.stream (`did:plc:gfrmhdmjvxn2sjedzboeudef`)

## `knowledge-building-with-letta-agents`
**Collection:** `site.standard.document`
**AT URI:** `at://did:plc:gfrmhdmjvxn2sjedzboeudef/site.standard.document/knowledge-building-with-letta-agents`

**Title:** Building with Letta Agents
**Published:** Wed, 12 Aug 2026 07:53:42 GMT
**Updated:** Wed, 12 Aug 2026 19:35:00 GMT
**Description:** A selective index of decision guides, memory architecture, Agent SDK patterns, and reliability practices for building persistent Letta agents.
**Publication:** `at://did:plc:gfrmhdmjvxn2sjedzboeudef/site.standard.publication/3mr4py6clps2f`
**Path:** /building-with-letta-agents
**Tags:** knowledge, map, ai, agents, letta, agent-sdk, memory, automation, reliability

**Content:**
```json
{
  "text": "Building with Letta agents is a selective index for people and agents working with [Letta](https://www.letta.com/)'s persistent-agent stack. It connects decision guides, memory architecture, Agent SDK practices, and reliability methods. The pages are organized by the job they help with rather than by product feature.\n\nEach page stands alone. Use this map when you know the problem but not the document name. For current commands, options, and product behavior, retrieve the [official Letta documentation](https://docs.letta.com/index.md) rather than treating this index as API reference.\n\n## Decide whether Letta fits\n\n[Why Letta?](https://cameron.stream/knowledge/why-letta) weighs the architectural case for switching against the cost of operating persistent state. Start there when the question is whether one persistent agent should own the work.\n\nThe surrounding reference pages separate the main public objects:\n\n- [Letta](https://cameron.stream/knowledge/letta) describes the research lab and software company.\n- [Letta Agent](https://cameron.stream/knowledge/letta-agent) describes the personalized stateful agent product.\n- [Letta Code](https://cameron.stream/knowledge/letta-code) describes the open agent harness used through the command line, desktop app, web, and messaging surfaces.\n- The [Letta Agent SDK](https://docs.letta.com/agent-sdk/index.md) is the application interface for creating and resuming stateful agents from code.\n\n## Understand the state model\n\nThe official [stateful-agent guide](https://docs.letta.com/concepts/stateful-agents/index.md) defines the agent as the persistent identity. Conversations are separate threads that share the agent's memory, while sessions are temporary runtime connections.\n\nThe [Agent Memory](https://cameron.stream/knowledge/agent-memory) map covers the harder design questions that begin after persistence works:\n\n- [Context Repositories](https://cameron.stream/knowledge/context-repositories) make long-lived context inspectable and versioned.\n- [Routing-Based Agent Memory](https://cameron.stream/knowledge/routing-based-agent-memory) selects which sources should enter a turn.\n- [Context Compaction](https://cameron.stream/knowledge/context-compaction) keeps a bounded working view of long histories.\n- [Strong Context References](https://cameron.stream/knowledge/strong-context-references) bind mutable sources to the exact version an agent observed.\n- [Public and Private Knowledge](https://cameron.stream/knowledge/public-and-private-knowledge) separates useful synthesis from privileged context that should not travel.\n\nUse these pages when an agent remembers the wrong thing, fails to retrieve something it already knows, or accumulates so much context that every fact competes with every other fact.\n\n## Build with the Agent SDK\n\nThe [Agent SDK quickstart](https://docs.letta.com/agent-sdk/quickstart/index.md) covers installation, creation, and the first streamed turn. [Your First Persistent Agent](https://cameron.stream/knowledge/first-persistent-agent) turns those mechanics into a complete application that saves IDs, resumes the same conversation, reattaches a client tool, asks for approval, and tests reconnect recovery.\n\n[Choosing an Agent Topology](https://cameron.stream/knowledge/choosing-an-agent-topology) explains when to use one agent, several conversations, per-user agents, role-specific agents, or shared memory. The distinction matters because conversations on one agent share memory.\n\n[Learning from Documentation with the Letta Agent SDK](https://cameron.stream/knowledge/learning-from-documentation-with-letta-agent-sdk) is a more specialized application pattern. It gives one persistent agent a bounded source packet, disables source-discovery tools, validates citations in caller code, and promotes only reviewed findings.\n\nAn application pattern belongs in this index only when another agent can recover its evidence boundary, state ownership, validation rules, and effect authority without access to the private conversation that produced it.\n\n## Bound authority\n\n[Agent Authority and Effects](https://cameron.stream/knowledge/agent-authority-and-effects) separates five boundaries: tool availability, invocation approval, business authority, effect identity, and provider receipts. Letta supplies tool and approval controls. The host application still owns domain policy and external reconciliation.\n\nUse this page before giving an agent write-capable client or MCP tools. An approval callback is useful, but it is not a substitute for tenant checks, idempotency, or provider readback.\n\n## Make automation recoverable\n\nPersistence makes longer work possible, but it does not prove that an external effect occurred. These pages cover the reliability layer:\n\n- [Recoverable Agent Execution](https://cameron.stream/knowledge/recoverable-agent-execution) models work as resumable state transitions rather than one long prompt.\n- [Agent Trajectory Observability](https://cameron.stream/knowledge/agent-trajectory-observability) connects selected context, model runs, tool calls, and effects.\n- [Structured Outputs](https://cameron.stream/knowledge/structured-outputs) makes generated data machine-checkable without pretending that schema validity proves truth.\n- [Spec-Driven Development for AI Coding Agents](https://cameron.stream/knowledge/spec-driven-development-for-ai-coding-agents) preserves intent and verification evidence when implementation is delegated.\n\nFor write-capable or recurring automation, establish effect identity, idempotency, bounded concurrency, provider readback, and delivery receipts before adding autonomy. An agent's statement that it completed a task is useful output. The external system's readback is the receipt.\n\n## Choose a reading path\n\nUse the following paths as starting points:\n\n1. **Evaluating Letta:** [Why Letta?](https://cameron.stream/knowledge/why-letta) → [Stateful agents](https://docs.letta.com/concepts/stateful-agents/index.md) → [Deployment options](https://docs.letta.com/agent-sdk/deployment/index.md).\n2. **Building an SDK application:** [SDK quickstart](https://docs.letta.com/agent-sdk/quickstart/index.md) → [Your First Persistent Agent](https://cameron.stream/knowledge/first-persistent-agent) → [Choosing an Agent Topology](https://cameron.stream/knowledge/choosing-an-agent-topology).\n3. **Adding write-capable tools:** [Agent Authority and Effects](https://cameron.stream/knowledge/agent-authority-and-effects) → [Recoverable Agent Execution](https://cameron.stream/knowledge/recoverable-agent-execution) → [Agent Trajectory Observability](https://cameron.stream/knowledge/agent-trajectory-observability).\n4. **Repairing memory:** [Agent Memory](https://cameron.stream/knowledge/agent-memory) → [Routing-Based Agent Memory](https://cameron.stream/knowledge/routing-based-agent-memory) → [Context Compaction](https://cameron.stream/knowledge/context-compaction).\n5. **Building a source-grounded learner:** [Documentation-learning pattern](https://cameron.stream/knowledge/learning-from-documentation-with-letta-agent-sdk) → [Structured Outputs](https://cameron.stream/knowledge/structured-outputs).\n\nThe broader [Knowledge map](https://cameron.stream/knowledge/overview) covers subjects outside Letta and agent infrastructure.\n\n## Sources\n\n- [Letta documentation](<https://docs.letta.com/index.md>)\n- [Letta Agent SDK overview](<https://docs.letta.com/agent-sdk/index.md>)\n- [The Letta Handbook](<https://docs.letta.com/handbook/index.md>)\n- [Letta Code source](<https://github.com/letta-ai/letta-code>)",
  "$type": "site.standard.content.markdown",
  "version": "1.0"
}
```

---
*Fetched from https://enoki.us-east.host.bsky.network via `com.atproto.repo.getRecord`*