letta-ai/letta-code is an agent harness for building assistants that retain memory, identity, and experience across interactions instead of treating each task as isolated. Developers use it through local, desktop, browser, or messaging interfaces for interactive or continuously running agents, and its catalogue entries configure the agents' skills, instructions, rules, and behavior.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/letta-ai/letta-code/self-configurationnpx skills add letta-ai/letta-code --skill self-configurationgit clone --depth 1 https://github.com/letta-ai/letta-codeWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/letta-ai/letta-code/self-configuration)<a href="https://agentmods.dev/skills/letta-ai/letta-code/self-configuration"><img src="https://agentmods.dev/badge/skills/letta-ai/letta-code/self-configuration.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00078 | $0.05756 |
| Opus 5 | $0.00039 | $0.02878 |
| Sonnet 5 | $0.00016 | $0.01151 |
| Haiku 4.5 | $0.00008 | $0.00576 |
Grade C, and why
self-configuration scanned grade C with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Recursive force deletehighDestructive command
rm -rf with a variable or a broad path is one typo away from removing the wrong tree.
"deny": ["Bash(rm -rf:*)"], Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
These helper scripts reduce accidental harm. They are not a security boundary against an agent with unrestricted Bash, raw curl/SDK access, API credentials, or filesystem access. `LETTA_API_KEY` and the installed CLI may How it starts
The opening of the file, as written. The whole thing — 478 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Self-Configuration
Use this skill when the user asks you to change yourself or the Letta Code runtime around you.
The important part is choosing the right layer. Do not smear a preference into deterministic config, and do not bury a deterministic safety rule in prose memory.
First choose the layer
| Layer | Use it for | How to change it |
|---|---|---|
| Memory and identity | Facts worth retaining, style preferences, persona changes, project knowledge, reusable skills | Edit $MEMORY_DIR files and sync the memory repo |
| Server agent fields | Default model, model settings, context limit, system prompt, compaction, agent name, description | Patch /v1/agents/{agent_id} |
| Server conversation fields | Temporary model/context experiments for one conversation | Patch /v1/conversations/{conversation_id} |
| Local settings | Permissions, environment variables, UI/runtime preferences, pinned agents, toolset overrides, reflection cadence | Edit ~/.letta/settings.json, ./.letta/settings.json, or ./.letta/settings.local.json |
| Mods | New deterministic tools, slash commands, providers, statusline behavior, or lightweight UI | Load creating-mods, customizing-commands, or customizing-statusline |
| Skills | Reusable procedural knowledge or bundled scripts | Load creating-skills or acquiring-skills |
| Channels | Slack/Discord/Telegram/WhatsApp/Signal accounts, pairing, routing, listener state | Use letta channels or channel commands |
| Schedules | Reminders and recurring prompts | Load scheduling-tasks and use letta cron |
| Agent secrets | Per-agent $NAME credential values for shell commands |
Use letta secret (or /secret in a session) |
Decision rule: if the model should remember and reason about it, use memory. If the runtime must enforce it or route it before the model decides anything, use settings, API fields, mods, channels, or schedules.
Safe workflow
- Identify scope: current conversation, current agent, project, or global user config.
- Inspect current state first and save the relevant safe fields as a rollback patch. Do not copy secrets or full compiled prompts into backups.
- Prefer a dry run for API patches and scripts.
- Apply the smallest change that satisfies the request.
- Verify the effective state after the write.
- Tell the user what changed and whether a restart/new conversation is needed.
What ships with it
8 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- LICENSE 1.0 KB
- references/api-patch-examples.md 4.9 KB
- references/compaction-prompt-patterns.md 8.1 KB
- references/model-settings.md 2.0 KB
- scripts/add_permission.py 6.5 KB runs code
- scripts/show_config.py 12 KB runs code
- scripts/update-agent-settings.ts 12 KB runs code
- scripts/update-compaction-prompt.ts 6.7 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago Changed · +2 lines · +4 tokens per session 73d4f633dbad
- 5d ago First seen · 476 lines · 74 tokens per session scan C 7060e28f38d2
self-configuration is a skill published in the GitHub repository letta-ai/letta-code (3,207 stars, last pushed today), licensed Apache-2.0. It adds 78 tokens to every session and 5,756 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it C with 2 findings (recursive force delete, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
memanto-companion
Inspect and manage the cross-session engineering memory that Memanto maintains for your Claude Code skills. Use when the user asks what Memanto remembers, wants to see their engineering profile, manually recall context for a skill, or store a decision. The automatic lifecycle hooks handle capture/injection on their…
memory-recall
Search and recall relevant memories from past sessions via memsearch. Use when the user's question could benefit from historical context, past decisions, debugging notes, previous conversations, or project knowledge -- especially questions like 'what did I decide about X', 'why did we do Y', or 'have I seen this…
system-monitor
Monitor system health: CPU, memory, disk, processes, and network. Alert on thresholds via any channel.
mnemon
Persistent memory CLI for LLM agents. Store facts, recall past knowledge, link related memories, manage lifecycle.
prep
Session wrap-up. Update memories, check plans, review git state, check inbox, flag loose ends. Use before closing a session or compacting context.
prolong
Recover and use durable coding-session history from PRO-LONG's local append-only log. Use on long-running coding tasks, after context compaction or session resume, when reconstructing prior decisions or tool results, or before repeating work that may already have been attempted.