Guides / Use cases

Coding agents

For developers who want Claude Code, Codex or an agent of their own to remember how they work, what a repository's rules are and what was decided last month. Install an integration in a few minutes, or add memory to your own agent with the SDK.

What memory adds

Without memory, every coding session starts from the same blank page and you repeat your preferences in each one. With it, the agent starts where the last session ended:

Without memoryWith Recall
Monday, a new sessionThe agent runs npm install and you correct it, again.It already knows you use pnpm, want small commits and write the test first.
A task that needs a schema changeIt edits the generated migration by hand.It starts with the repository rule: migrations are generated, never edited.
"Why is refund_reason nullable?"Nobody remembers; someone searches chat history.It answers from the session where that was decided: the backfill comes later.

Recall is memory, not the agent. It does not read your repository, index files or run tools; it stores what you and the agent said and learns from it. Code search stays with your agent.

How to model it

The integrations below set this up for you. When you build your own agent, map it like this:

In your setupIn RecallWhy
A team or organisationWorkspace, e.g. acme-engThe team's memory stays together and apart from everything else. Working for several clients? One workspace per client.
Each developerPeer dev-4821Recall learns how this person works from their prompts. Their peer card holds the stable preferences.
The agentPeer coding-agent with observeMe: falseIts replies stay in the history, but facts are learned about the developer, not from the agent's own statements. They also cost less.
A coding sessionSession, e.g. cs-20261010-7f2cOne conversation, with its summary and recent turns.
A repositoryScope billing-apiAsk what was decided across every session in that repository, and nothing from other repositories.
The repository's rulesConclusions on a peer for the repository, repo-billing-apiRules you state outright hold from the first session, for every developer, without waiting to come up in conversation.

Build it

Claude Code, Codex and other agents

Each integration recalls (adds your peer card and the facts Recall learned about you to the agent's context), records (stores your prompts and the agent's final replies) and, where the agent supports it, adds Recall's MCP tools so the agent can look things up and correct memory. The agent is a peer Recall does not observe (claude, codex), so facts are learned about you.

AgentConnects throughMemory is added
Claude CodePlugin: hooks and MCPat session start, resume and compaction
CodexPlugin or installer: hooks and MCPat session start, and after /clear or a compaction
OpenClawPluginbefore each turn
Hermes AgentMemory providerbefore each turn
Agent SkillA SKILL.md the agent readswhen the agent decides to look
Cursor, VS Code, any MCP clientMCP serverwhen the model calls a tool

Claude Code. Install the plugin, and enter your API key when Claude Code asks for it (it is kept in your system's credential store):

/plugin marketplace add recallmem/recall-plugin
/plugin install recall-memory@recall

Set the workspace and your peer id under /plugin → recall-memory → Configure, or with RECALL_WORKSPACE_ID and RECALL_PEER_ID. Then run /recall-memory:status to check the connection. Each Claude session is recorded in a Recall session named cc-<session id>.

Codex. codex plugin marketplace add recallmem/recall-plugin and codex plugin add recall-memory@recall, or the installer; pick one, because both together handle every turn twice. Codex skips new hooks until you trust them, so run /hooks once. The key comes from RECALL_API_KEY or ~/.recall/config.json (see connect to your server).

A team on the integrations. Everyone uses the same workspace and their own stable peer id. Each developer's memory is their own; rules they ask the agent to remember are saved as facts about them. For rules the whole team shares, write them to a repository peer as shown below.

Any MCP client. Point it at https://api.recallmem.dev/mcp. Cursor, VS Code and Claude Code (claude mcp add --transport http recall https://api.recallmem.dev/mcp, then /mcp → Authenticate) sign in with your email; no key is copied. Through MCP the model decides when to look things up. With Remember automatically on (the default for a connected app; change it under API keys → Connected apps) it also saves lasting facts you share without being asked. See Add Recall as a connector.

What the plugins send: your prompts and the agent's final replies, each cut to 24,000 characters, to the Recall server you configured. Tool calls and their output, including the files the agent reads, are not sent. RECALL_RECORD=false stops recording and keeps lookup; RECALL_ENABLED=false under env in a project's .claude/settings.json switches Recall off for that project.

Your own agent

Install the SDK (npm install @recall-memory/sdk or pip install recall-mem) and set RECALL_API_KEY. Create the peers and a session per coding session. Set observeMe: false before the agent's first message is stored.

import { Recall } from "@recall-memory/sdk";

const recall = new Recall({ workspaceId: "acme-eng" });

const dev = recall.peer("dev-4821");
// Recall learns about the developer, not from the agent's own replies.
const agent = recall.peer("coding-agent");
await agent.setConfiguration({ observeMe: false });
// The repository's rules live on a peer of their own. Nobody speaks as it.
const repo = recall.peer("repo-billing-api");
await repo.setConfiguration({ observeMe: false });

// One session per coding session, filed under the repository's scope.
const session = recall.session("cs-20261010-7f2c", {
  peers: [dev, agent],
  scopes: ["billing-api"],
});

Rules you know for sure: write them. Conclusions are facts you state directly. They are searchable at once, without waiting for background learning, and every developer's agent reads the same ones.

// Rules the team states outright: write them as facts, so they hold from the first session.
await repo.conclusions.create([
  "Migrations are generated with `pnpm db:generate`; never edit them by hand.",
  "billing-api runs on Node 22 and uses pnpm, not npm.",
  "Money amounts are integers in cents; never floats.",
]);

Session start: read, focused on the task. searchQuery pulls the facts that matter for this task into the prompt instead of the most frequent ones. Both are reads, not questions: no answer is generated, so they are fast and included in the price. Run them in parallel.

// At session start: what is known about the developer and the rules that touch the task.
// Two reads: no answer is generated, so they are fast and included in the price.
const task = "Add a refund_reason column to the payments table";
const [ctx, rules] = await Promise.all([
  session.context({ peerTarget: dev, searchQuery: task, tokens: 1500 }),
  repo.context({ searchQuery: task }),
]);
const messages = [
  { role: "system", content: `Rules of this repository:\n${rules.representation ?? ""}` },
  ...ctx.toOpenAI(agent),
];

After each turn: record the conversation, not the work. The developer's prompt and the agent's final answer are what Recall learns from. Build logs, diffs and file contents cost tokens and teach it nothing about the developer, and they are where secrets hide.

// After each turn: the developer's prompt and the agent's final answer. No tool output, no file
// contents, no secrets (this pattern is crude: run your own secret scanner too).
const redact = (text: string) =>
  text.replace(/\b(?:sk|pk|ghp|xox[bp])[-_][\w-]{16,}/g, "[redacted]").slice(0, 24_000);
const prompt = "Add refund_reason to payments. Nullable for now, we backfill next sprint.";
// Your model wrote this answer from `messages`.
const answer = "Added a nullable refund_reason column and generated migration 0042.";
await session.addMessages([dev.message(redact(prompt)), agent.message(redact(answer))]);

Past decisions: ask the repository. A question with scope reads only the sessions filed under that repository. It is one model call of a few seconds, so ask when the agent needs it, not on every turn.

// Weeks later, from any session: what was decided in this repository? Only sessions in its
// scope are read. (waitForIdle is for this demo; an agent rarely blocks on learning.)
await recall.waitForIdle();
const decided = await recall.chat("Is refund_reason nullable, and why?", {
  scope: "billing-api",
  reasoningLevel: "low",
});

Rules change, people leave.

// A rule that changed: delete the old fact and write the new one.
const stale: string[] = [];
for await (const rule of await repo.conclusions.list()) {
  if (rule.content.includes("Node 22")) stale.push(rule.id);
}
for (const id of stale) await repo.conclusions.delete(id);
await repo.conclusions.create("billing-api runs on Node 24 and uses pnpm, not npm.");
// A developer who leaves: erase them and everything learned from or about them.
await dev.delete();

Settings that matter

SettingUse
observeMe: false on the agentFacts come from the developer, not from the agent's own claims. The replies are still read as context, at a lower price.
searchQuery on the context readThe task in one line. Without it you get the most frequent facts, which may not touch the task.
tokensThe memory budget. 1,500 (the integrations' default) leaves room for code; with Codex keep RECALL_CONTEXT_TOKENS at or below about 2,500, its hook output limit.
scopes on the sessionFiles the session under a repository, so recall.chat(..., { scope }) answers from that repository only.
RECALL_LOOKUP=promptPlugins also look up facts related to each prompt, not only at session start.
RECALL_SESSION_STRATEGY=per-directoryPlugins record every session in a project directory into one Recall session instead of one per agent session.
reasoningLevellow (the default) for most questions. high for questions that need many sessions; it is slower. See Reasoning levels and models.

Cost and speed

Measured from Europe against the hosted API (Frankfurt), October 2026: a context read took 0.3 to 0.7 seconds, so memory at session start adds well under a second. A question at low took 2 to 4.5 seconds. Learning runs in the background and never holds up a turn.

Context, search and storage are included. You pay for learning, $1.75 per million message tokens with every message counting as at least 50, and for questions. A developer who works 20 days a month, with 30 prompts a day of about 100 tokens, the agent's 30 replies (long, but read only as context, at most 200 tokens each), and 40 questions about past decisions:

ItemPer month
Prompts: 600 × 100 tokens × $1.75 / 1M$0.105
Agent replies, read but not learned from: 600 × 200 tokens × $1.75 / 1M$0.210
Questions at low: 40 × $0.005$0.200
Context at session startincluded
Totalabout $0.52 per developer, or $13 for a team of 25

A pasted stack trace counts at its length: 2,000 tokens cost $0.0035. More in Cost and speed.

Privacy and forgetting

Prompts carry more than preferences: pasted errors with connection strings, customer data from a bug report, code under NDA. Tell your team what the agent records, switch recording off for repositories that must not leave your machines, and never record tool output or file contents from your own agent. Recall stores data in Frankfurt; text is processed by AI model providers in the US through OpenRouter, restricted to providers that do not collect it, and is never used to train models. If you work on client code, check that your contract allows a processor; see the DPA.

To remove one wrong or outdated fact, ask the agent to forget it (the MCP tools include delete_conclusion) or delete it by id. When a developer leaves, dev.delete() erases their messages and every fact about them or from their view; facts about other peers that merely mention them stay. See Forget a person, Export your data and Privacy, consent and forgetting.

Pitfalls

Next: Multi-agent systems · Reasoning levels and models