Duplex and Letta,
side by side.
Letta builds stateful agents around persistent memory and learned skills. Duplex is a second intelligence beside your AI: it learns from every result and acts on it at runtime, within your rules, whichever model you use.
Comparison current as of 16 October 2026.
Every capability: Duplex and Letta.
What each one does, group by group, from what it is to what it costs.
- Native
- Built into how the product works at its core.
- External
- You provide it, or assemble it, separately.
- Not native
- The product’s documentation doesn’t list it as a built-in feature. A custom build may still be possible.
| Capability | Duplex | Letta |
|---|---|---|
| What each one is | ||
| What it is | A runtime intelligence beside your AI: it learns and acts for your agents and assistants, within your rules | A stateful agent platform built around persistent memory and token-space learning |
| What it carries forward | Context, decisions, outcomes, rules, tasks, skills and what it has learned | Agent memory, conversations, files and skills |
| What gets better with experience | Its next decisions: confidence, routing, recommendations, tool use and reusable knowledge | The agent’s future behaviour, through updated memory and learned skills |
| Knowing what happened, and learning from it | NativeIt knows what happened, and learns what to change next | Both are there, mainly through token-space memory and skills |
| Learning | ||
| Continual learning without retraining | NativeIt keeps learning, outside your model’s weights | NativeToken-space and skill learning |
| Turn-by-turn adaptation | NativeEach new result can change the next decision at once | Agent-managed memory can change continuously; skill learning follows finished experience |
| Learning from corrections | NativeA correction changes what Duplex does next | Corrections can update memory or feed learned skills |
| Learning from outcomes | NativeSuccess and failure feed straight back into what it learns | Possible through reflection on trajectories and agent-managed updates |
| Learning from rewards | NativeA reward strengthens what worked and corrects what didn’t | Rewards aren’t its main way of learning |
| Credit for the steps behind a result | NativeIt works out which earlier actions led to a later result | Letta doesn’t offer this natively at runtime |
| How actions move the work | NativeIt learns how each action moves the work from one state to the next | The agent can infer this from context |
| Predicting what an action will do | NativeFrom what it observes, it predicts what an action will do, tries alternatives and plans | The model reasons over memory |
| Better choices of action | NativeOutcomes improve which action it picks next | Behaviour improves through memory and skills |
| Reusable skills | NativeExperience becomes skills that are tested before use, and can be paused, brought back or withdrawn | NativeTrajectories can become lasting skills that work with any model |
| Testing and managing skills | A skill is tested before it is relied on, and can be paused, brought back, withdrawn or removed for good | Skills are files you can inspect, manage and version |
| Generalising to related cases | It carries what it learned to related cases and new wording, and into skills it can reuse | Token-space skills generalise procedures across tasks |
| Deciding and acting | ||
| Knowing how sure it is | NativeBefore every decision, it knows how familiar the case is and how sure it is | Mainly the model’s judgement and how relevant memory is |
| Answer, hand over or decline | NativeDuplex answers itself, calls your model, uses a tool or declines, within your rules | The agent usually carries on through model reasoning |
| Answering familiar work itself | NativeIt makes familiar decisions itself, without another frontier-model call | The model still interprets memory or skills |
| Handing over what is new or uncertain | New, uncertain or sensitive work goes to the right model, tool or person | The agent and model decide when more help is needed |
| Planning, simulation and recommendations | NativeIt predicts what happens next, tries alternatives, builds plans and recommends actions | Mainly through model reasoning and agent tools |
| Many agents, working together | It sends work to the right agent, splits it within your rules, keeps each agent to its scope and brings the results together | Agents, subagents and shared memory are available |
| Learning which tools work | It learns which tools work, when to use them and what each one leads to | Skills and memory can improve tool use |
| Tool actions within your rules | Tools run only through your rules and permissions | Agent permissions and tool configuration |
| Streaming | It streams model and tool output, with every step still within your rules | Available through agent and model interfaces |
| Work that carries on | ||
| Learning from every step, automatically | Every step, through MCP + hooks or the plugins, feeds one shared learning loop | The Letta runtime stores agent conversations and actions |
| Context across sessions | NativeWork, decisions, tasks and the context that matters carry on across sessions | NativePersistent agents keep memory across conversations |
| Long-running work | NativeLong work stays open across sessions and agents, with safe points to go back to, until it is finished or forgotten | Persistent agents can carry on work, its lifecycle set by the agent and the app |
| Across models | NativeWhat it learns and your context stay outside the model, and follow the work across providers | Strong: token-space memory and skills can survive a change of model |
| Across apps and agents | The same work carries on across Claude, Codex, Cursor, Hermes and your own agents | Stateful agents are reachable through SDKs and hosted MCP |
| Handing work to another agent | A task and its context pass to another agent you allow, ready to continue | Shared agents and repositories can support a handoff |
| Keeping context compact | Context stays compact, focused on the rules, tasks and decisions that matter | Memory organisation, summaries and file-style context management |
| Learning from images, audio, video and PDFs | It learns from images, audio, video and PDFs, as it does from text | Depends on the connected model and agent tools |
| Across media | A question in words can draw on what was learned from images, audio and video, and media can shape later decisions | Depends on the model and how memory is built |
| People, teams and sharing | ||
| For each person | NativeEach person gets their own private context, preferences and learning | Native memory per agent and per user |
| For each team | NativeTeams share approved learning, and private work stays private | Shared memory repositories and skills |
| Across the organisation | NativeWhat works can move from one person to the team and the organisation, under your rules | Skills and memory can be shared across the organisation |
| Sharing between people, under control | You choose what is shared and with whom, and can withdraw it; anything shared shows who it came from | Shared repositories and collaboration permissions |
| Protection for shared content | What someone shares arrives as information, never as instructions, so it can’t steer another person’s agent | Relies on agent context and permissions |
| Control and trust | ||
| Your rules | Your rules are part of how Duplex works: they allow, decline or limit real actions | Instructions and permissions shape agent behaviour |
| Rules applied before each action | NativeThe hooks check each action against your rules before it runs | Depends on the Letta runtime, permissions and tool host |
| People in the loop | A person confirms the actions you choose, and what Duplex learns can be reviewed and undone | Users can inspect and manage memory and skills |
| A history you can check | A history of every decision, where it came from and what came of it, that can’t be quietly changed | Persistent conversations, memory and agent state |
| Receipts you can verify | Decisions, skills and deletions can come with receipts you can verify | Versioned memories and skills |
| Undoing what was learned, exactly | NativeOne learned change can be undone exactly, without retraining anything | Skills and memories can be edited or rolled back through versions |
| Forgetting that reaches everything built on it | Removing something also removes what came from it: context, anything shared from it and related learning | Memory and skills are cleaned up through files and versions |
| Keeping customers apart | Every user, team, organisation and customer is kept apart, in every integration and in everything it shares | Permissions in the cloud and when self-hosted |
| Where everything learned came from | For everything it learned, you can see its source, its scope and how far it can be trusted | Memory and skills stay inspectable |
| Where it runs and connects | ||
| Any model provider | One intelligence across OpenAI, Anthropic, Google, AWS and compatible models | An agent harness that works with any model |
| MCP | NativeThrough MCP + hooks, Duplex joins every step your agents take | Hosted MCP lets other agents create and message stateful Letta agents |
| Hooks and plugins | NativePlugins for Claude, Codex, Cursor and Hermes, and hooks that bring Duplex in at each step and check sensitive tool actions | SDK, CLI and agent-runtime integration |
| Your cloud, or self-hosted | Vareon Cloud, your cloud or no cloud: private cloud, your own account, self-hosted or air-gapped | Cloud, and a self-hosted app server |
| No cloud: air-gapped | Built for deployments where nothing may leave, with local models, local dependencies and your own identity provider | Possible with a self-hosted stack and local dependencies |
| Cost, speed and fit | ||
| How it lowers model cost | Duplex answers familiar work itself, with no repeated frontier-model call | Better context and skills improve results, but the model still runs |
| How it lowers latency | Decisions it is sure of come back fast; uncertain work still goes to your frontier model | Better-organised context can cut wasted reasoning |
| Survives a model upgrade | YesLearning, context, tasks and rules stay outside any one model | YesMemory and skills are deliberately independent of the model |
| Fine-tuning needed | NoFine-tuning becomes an optional step up | No |
| Best for | Organisations that need their AI agents to learn, act within rules, carry work forward and improve across models, as one system | Teams building persistent, self-improving agents around token-space memory and skills |
The other comparisons.
- Duplex and CopilotKit CLiFReal workflows, turned into skills
- Duplex and Deeplake HivemindShared memory for coding agents
- Duplex and memory platformsMem0, Zep, AgentCore Memory, Supermemory
- Duplex and fine-tuningFine-tuning and reinforcement fine-tuning
- Duplex and AI gatewaysPortkey, LiteLLM and similar
- The full comparisonDuplex beside all six, side by side
See Duplex on your own work.
Compare it where it counts: a pilot puts Duplex on your own work, with the measures agreed before it begins.