Duplex and Letta,
side by side.
Letta builds stateful agents around persistent memory and learned skills. Duplex pairs your AI with a second intelligence, an ACI model: together they learn from every result, plan, simulate, decide and act 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 | Your AI and an ACI model, working as one: runtime intelligence that learns, plans, simulates, decides 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 |
| Planning, simulating, 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, or your own cloud account: self-hosted, or run by Vareon for you | Cloud, and a self-hosted app server |
| 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, plan, simulate, decide and 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.