Corrective memory for AI agents
to make informed decisions.
A correction, step by step
A chat agent approves a refund exception, a voice agent reads it, and a lead revokes it. Every question below has one answer, set by the rule for that fact.
Sep 12 remember customer-4812 refund_exception = approved # chat agent Sep 20 recall customer-4812 refund_exception # voice agent sees approved Oct 2 remember customer-4812 refund_exception = revoked # replaces approved recall now -> revoked, replaced approved from Sep 12 recall as of Sep 20 -> approved, with the chat message it came from history -> approved on Sep 12, revoked on Oct 2
Try it in a minute
One pip install brings the client and the database. No model or embedding API key needed. The quick start walks through history, as-of reads, and connecting your agent.
# pip install polign-recall from polign_recall import Client with Client(local_dir="./recall-data") as memory: memory.remember("user", "prefers_editor", "vim") memory.remember("user", "prefers_editor", "neovim") memory.recall("user", "prefers_editor")[0].value # neovim memory.history("user", "prefers_editor") # vim, then neovim
Typed memory
A memory is a subject, a predicate, and a typed value. Fifteen built-in predicates cover preferences, identity, and project facts, and you can define more. Agents write only declared kinds, so one cannot invent a second name for a fact that already exists.
Corrections by rule
A predicate declares whether it holds one value or many. A new value replaces the old one when only one is allowed, and is added alongside when several are. Restating what is already believed writes nothing. No model is asked which value to keep.
History you can query
Forgetting records a withdrawal instead of deleting. Ask what is believed now, what was believed at any earlier moment, or the full history of a fact. Nothing is edited in place.
Shared across agents
Agents in different processes and on different machines use the same memory. A correction one agent writes is returned by later reads from the others. Recall adds no transactions of its own, so read timing follows the storage backend.
Replayable audit
Export a versioned bundle of the events and rules behind a memory query result. A standalone verifier reproduces that result offline, without a database or an embedding model. It covers what memory returned, not the agent's reasoning.
Your storage
Runs on polign_db against your own S3, GCS, or Azure bucket. API keys bound to a namespace are the isolation boundary between teams and agents. No embedding service is needed to start; bring your own model for semantic search.
Resume after a crash
An agent can record its working state and turns to Recall as it works. When its pod dies or its image is upgraded, the next process picks up from those records instead of a snapshot. Read how it works, or use it with LangGraph.
Become a design partner
Give us your agent and we will wire Polign Recall into it.
- You bring an agent that is in or near production, and a real memory problem
- We do the integration work, architecture help, a polign_db deployment in your cloud, and migration from your current memory store
- The commitment is one engineer on your side who owns it, and one 30-minute engineering call a week for the first 4 to 6 weeks
- Done means success criteria we write down together before day one, for one production-like agent writing memory into Polign
- Your infrastructure stays in your account and on your bill
- No charge for 90 days, with written success criteria agreed up front. Meet them and it converts to $12k for the next 12 months. See pricing
What it is, and what it is not yet
Recall is early and has no production deployments yet. The list below is what ships today; the second column is what it does not do, stated plainly.
- Go library with no dependencies outside the standard library
- Python client on PyPI as polign-recall
- MCP server through the polign CLI, read-only or read-write
- Claude Code plugin for memory across sessions
- LangGraph package for agents that resume after a crash
- LiveKit Agents package for voice agents that remember the caller
- Vapi adapter for caller memory through authenticated webhooks
- Fifteen built-in predicates, extendable per application
- As-of reads that answer what was believed at an earlier time
- Audit bundles with an offline verifier
- Word-overlap search built in; model embeddings optional
- Not an extractor: your agent proposes facts, Recall validates them and applies the rules
- Evidence links: a fact proposed from text keeps the exact words it came from
- Forget is a withdrawal, not permanent deletion; delete the records in polign_db for that
- No hosted version; it runs where you run it
Give your agents one memory.
Open source, on a database in your own bucket.