0.12.1

letta-ai/letta0.12.1Oct 9, 2025by carenthomas

Full Release Notes

## Major Features

### New Agent Architecture: `letta_v1_agent`

The new recommended agent architecture with significant improvements over the legacy agent system.
What's Different:

* No `send_message` tool required
* Works with any chat model, including non-tool-calling models
* No heartbeat system
* Simpler base system prompt - agentic control loop understanding is baked into modern LLMs
* Follows standard tool calling patterns (auto mode) for broader compatibility

Provider Support:

* Compatible with all inference providers (OpenRouter, Azure, Together, Ollama, etc.).
* Works with non-tool-calling models.
* Supports OpenAI's [Responses API](https://platform.openai.com/docs/api-reference/responses) for drastically improved performance with GPT-5 models.

Trade-offs:

* No heartbeats: Agents won't independently trigger repeated execution. If you need sleep-time compute or periodic processing, implement this through your own prompting or scheduling.
* Tool rules on messaging: Cannot apply tool rules to agent messaging, i.e. you cannot require a particular tool to be followed by an assistant message.
* Reasoning visibility: Non-reasoning models (GPT-4.1, GPT-4o-mini) will no longer generate explicit reasoning output.
* Reasoning control: Less control over reasoning tokens, which are typically encrypted by providers and cannot be passed between different providers.

**Recommendation**: Create all new agents as `letta_v1_agent`. The expanded provider compatibility and simpler architecture make this the best choice for most use cases. Use legacy agents only if you specifically need heartbeats or tool rules on messaging.

### Human-in-the-Loop (HITL)

Tools can now require human approval before execution. Set approval requirements via API or in the ADE for greater control over agent actions.
šŸ“– [Documentation](https://docs.letta.com/guides/agents/human-in-the-loop)

### Parallel Tool Calling

Agents now execute multiple tool calls simultaneously when supported by the inference provider. Each tool runs in its own sandbox for true parallel execution. See the [Claude](https://docs.claude.com/en/docs/agents-and-tools/tool-use/implement-tool-use#parallel-tool-use) documentation for examples on parallel tool calling.

### Runs API

New tracking system providing substantially improved observability and debugging capabilities. Documentation coming soon.

### Enhanced Archival Memory (Letta Cloud only)

* **Hybrid search**: Combines full-text and semantic search
* **DateTime filtering**: Query memories by time range
* **Search API endpoint**: [Documentation](https://docs.letta.com/api-reference/agents/passages/search)

### Improved Pagination

Cursor-based pagination now available across many endpoints for handling large result sets.

## New Tools

### Memory Omni-Tool

Unified memory interface for more intuitive agent memory management.

šŸ“– [Blog post](https://www.letta.com/blog/introducing-sonnet-4-5-and-the-memory-omni-tool-in-letta) | [YouTube demo](https://youtu.be/0nfNDrRKSuU)

### `fetch_webpage` Tool

Utility tool for retrieving LLM-friendly webpage content.

## Agent Configuration

### Templates & Agentfiles

* **Template updates**: Templates can now be [updated via agentfiles](https://docs.letta.com/api-reference/templates/updatecurrenttemplatefromagentfile)
* **Agentfile v2 schema**: Now supports groups, folders, etc.

## Breaking Changes

### Deprecated APIs

* **`get_folder_by_name`**: Use `client.folders.list(name=...)` instead
* **`sources` routes**: All routes renamed to `folders`


## What's Changed
* fix: summarization_agent unknown attribute bug by @carenthomas in https://github.com/letta-ai/letta/pull/3028
* fix: open router invalid model id bug by @carenthomas in https://github.com/letta-ai/letta/pull/3028
* chore: bump version 0.12.1 by @carenthomas in https://github.com/letta-ai/letta/pull/3029


**Full Changelog**: https://github.com/letta-ai/letta/compare/0.12.0...0.12.1