Introduction

Polign Recall is memory for AI agents. When a fact changes, the new value replaces the old one by a declared rule, the old value stays on record, and every agent reads the same memory from a bucket you own.

Most agent memory is text the model searches. That works until a fact changes. Then the search finds the old value and the new one, the model has to guess which is true, and nobody can say later what the agent believed when it acted. Recall stores facts with a type, so the answer comes from a rule.

In one sentence

Memory where a correction follows a rule, nothing is erased, and you can ask what was believed at any moment.

A memory is a typed fact

Each memory has a subject (who or what it describes), a predicate (the kind of fact), and a value:

SubjectPredicateValue
userprefers_editorneovim
billing-apiprefers_test_frameworkpytest
billing-apiuses_technologyGo

A registry lists the predicates your application accepts. Recall ships with fifteen, covering preferences, identity, and project facts, and you can add your own. Agents can write only declared kinds, so one agent cannot invent a second name for a fact that already exists. A statement that fits no predicate is kept as a note instead of being dropped.

Corrections follow a rule

No model is asked which value to keep. Your agent proposes facts; Recall checks them against the registry and applies the rule.

Nothing is erased

Every statement is kept in order. A correction adds a new statement, and forgetting adds a withdrawal. From that record you can ask three things:

Forgetting removes a fact from current answers. It is not permanent deletion; delete the records in polign_db for that.

One memory for many agents

Agents in different processes and on different machines read and write the same memory. A correction one agent writes is returned by later reads from the others. API keys bound to a namespace keep one team's or customer's memory apart from another's.

What it runs on

Recall stores its records in polign_db, Polign's engine, which keeps everything in your own S3, GCS, or Azure bucket. On one machine, the Python client starts a local server in a folder for you. To share memory across machines, you run polign_db against your bucket.

What it is not, yet

Next steps