Skip to content

Releases: RecallWorks/Recall

v0.5.1 — smooth-flow README + MCP Registry marker

30 Apr 07:29

Choose a tag to compare

Patch release: republishes the package with the v0.5.4 README rewrite (works for one, scales to many) and adds the mcp-name: io.github.recallworks/recall marker required for MCP Registry namespace verification.

No functional code changes from v0.5.0. 22 tools, all 6 coordination tools verified via real MCP wire smoke against the published wheel.

Install: pip install ai-recallworks[mcp]==0.5.1

v0.5.0 — multi-agent coordination wedge

30 Apr 06:40

Choose a tag to compare

Recall v0.5.0 — multi-agent coordination wedge

The single-agent memory problem (mem0, Letta, Zep) is well-served. The
multi-agent coordination problem isn't.
v0.5.0 ships six new MCP
primitives so parallel AI agents can share a brain and stay out of each
other's way.

What's new

Six coordination tools — every one a first in the MCP memory space:

Tool Purpose
claim(resource, agent, ttl, note) Soft-lock a file/URL/table with an auto-expiring TTL
release(resource, agent) Drop the lock (soft-archive — audit trail survives)
who_has(resource) "Is anyone editing this right now?"
claims() All active locks across all agents
handoff(to_agent, from_agent, intent, files, context) Explicit work transfer
pulse_others(self_agent, n, domain) Latest checkpoints from agents other than you

Total tools: 16 → 22. Claims are advisory (like git locks) — well-
behaved clients check before writing. TTLs prevent crashed agents from
freezing a resource forever.

How is this different from mem0 / Letta / Zep?

They're built for one agent across sessions ("remember what the user
said last week"). Recall is built for multiple agents in one session
("don't let agent B overwrite the function agent A is mid-refactoring").
Different problem. Different primitives. Use both — they don't conflict.

Install

pip install "ai-recallworks[mcp]"

Then add to your MCP client (Claude Desktop, VS Code, Cursor):

{
  "mcpServers": {
    "recall": { "command": "recall-mcp" }
  }
}

Zero config. Embeddings run fully offline (ChromaDB's bundled MiniLM).
Memory lives in ~/.recall/. No API keys required to start.

Numbers

  • 6 new MCP tools (440 LOC, single new module)
  • 15 new unit tests, full suite 117/117 green
  • End-to-end MCP-wire smoke (real recall-mcp.exe, clean venv install)
    PASSED on all 6 tools: claim → blocked → who_has → release →
    re-claim → handoff → claims-list
  • wheel 59 KB, sdist 77 KB, MIT license, zero new runtime deps

Compatibility

Backward-compatible with v0.4.0 — all existing 16 tools unchanged.
Storage layout unchanged. Existing ~/.recall/ stores work as-is.

Known debt

  • checkpoint() chunk_id hashes from timestamp only — collision risk on
    rapid same-microsecond writes. Harmless in single-agent flows;
    worth fixing before high-fanout multi-agent.
  • Coordination tools tested at 3 agents in one process. Not yet
    load-tested at 10+ concurrent OS processes against shared ChromaDB.

Full diff

v0.4.0...v0.5.0

Recall v0.1.0 - alpha public release

24 Apr 07:30

Choose a tag to compare

Initial public release of Recall, an open-source memory server for AI agents.

What's in the box

  • 13 memory tools: remember, recall, reflect, anti_pattern, checkpoint, pulse, session_close, index_file, reindex, snapshot_index, memory_stats, forget, maintenance.
  • Two transports: plain HTTP (POST /tool/{name}) and MCP over SSE.
  • BYO embedder (default Chroma / OpenAI / Ollama) and BYO summarizer (noop / OpenAI / Ollama).
  • Append-only artifacts + auto-snapshot. forget is soft-archive by design.
  • One Docker image: ghcr.io/recallworks/recall:0.1.0.

Install

docker run -d --name recall -p 8787:8787 -e API_KEY=changeme -v recall-data:/data ghcr.io/recallworks/recall:0.1.0

Provenance

Extracted from a hosted production memory server that has served thousands of agent sessions, then sanitized of org-specific paths, extensions, and tenant data.

Status

Alpha. Pin the image tag. Breaking changes possible before 1.0.

TypeScript SDK v0.2.0 — Real server contract

24 Apr 08:52
e75ea75

Choose a tag to compare

BREAKING CHANGE. 0.1.0 was published with a fictional API. This rewrite matches the real Recall server contract verified end-to-end against ghcr.io/recallworks/recall:0.1.0.

Install

npm install @recallworks/recall-client

Quick start

import { RecallClient } from ""@recallworks/recall-client"";

const c = new RecallClient({ baseUrl: ""http://localhost:8787"", apiKey: ""changeme"" });
await c.remember(""dark mode preferred"", { tags: ""pref,ui"" });
console.log((await c.recall(""preferences"", { n: 3 })).result);

What changed

  • Auth header: X-API-Key (was Authorization: Bearer)
  • Every tool returns ToolResponse { result, tool, by } — markdown, not structured Hits
  • recall(query, { n, type }) — uses n not limit
  • remember(content, { tags: 'a,b' }) — tags is COMMA-SEPARATED STRING
  • forget(source) takes a source label and soft-archives
  • All 13 server tools as typed methods + generic callTool() escape hatch
  • Sigstore provenance enabled

Migration

Replace hits[i].score / .content access with parsing of response.result (markdown).

See PR #15.

Python SDK v0.2.0 — Real server contract

24 Apr 08:52
e75ea75

Choose a tag to compare

BREAKING CHANGE. 0.1.0 was published with a fictional API. This rewrite matches the real Recall server contract verified end-to-end against ghcr.io/recallworks/recall:0.1.0.

Install

pip install --upgrade recall-client

Quick start

from recall_client import RecallClient

with RecallClient(""http://localhost:8787"", api_key=""changeme"") as c:
    c.remember(""dark mode preferred"", tags=""pref,ui"")
    print(c.recall(""preferences"", n=3).result)

What changed

  • Auth header: X-API-Key (was Authorization: Bearer)
  • Every tool returns ToolResponse(result, tool, by) — markdown, not structured Hits
  • recall(query, n=5, type='all') — uses n not limit
  • remember(content, source='agent-observation', tags='') — tags is COMMA-SEPARATED STRING
  • forget(source) takes a source label and soft-archives (no chunk-id deletes)
  • All 13 server tools have typed wrappers + generic call_tool() escape hatch
  • Killed fictional types: Hit, RememberResult

Migration

Replace hits[i].score / .content access with parsing of response.result (markdown).

See PR #15 for full details.