Show HN: Typed agent memory with corrections and history Polign released Recall, a shared typed memory system that lets AI agents store, correct, and read back facts, preferences, and project context across processes and sessions. Recall is available through Go, Python, and MCP integrations, uses Polign v0.6.4 or later as its storage backend, and ships with a Claude Code plugin for memory across coding sessions. The system preserves earlier statements when a value is corrected, so agents can read current values, inspect history, or query what was known at an earlier time, and forgetting records a withdrawal rather than permanently deleting the record. Shared, typed memory for agents. Recall lets agents share facts, preferences, and project context across processes and sessions. One agent can record a preference, another can update it, and both can read the current value and its history. Use it through Go , Python , or MCP , with Polign https://github.com/Polign/polign as the storage backend. Go applications can also supply their own backend. | Integration | Get started | |---|---| | Python | Follow the quickstart below, then see the client guide https://github.com/Polign/recall/blob/main/python/README.md . | | Go | Run go get github.com/Polign/recall and follow the Go client guide https://github.com/Polign/recall/blob/main/docs/reference.md context-aware-client . | | MCP | Connect an agent https://github.com/Polign/recall/blob/main/docs/mcp.md to tools for remembering, recalling, and forgetting facts. | The Claude Code plugin https://github.com/Polign/polign/tree/main/plugins/recall is a ready-made MCP integration for memory across coding sessions. You'll need Python 3.10+ and Polign v0.6.4 or later https://github.com/Polign/polign install , with both polign and polign-server on your PATH . The Python client launches a local polign mcp process that connects to your database. This example needs no model or embedding API key. Start the database in a terminal and leave it running: polign-server -store "fs:$HOME/.local/share/recall/data" In another terminal, from a checkout of this repository, install the Python client and select a collection for the example: python3 -m venv .venv source .venv/bin/activate python -m pip install ./python export POLIGN URL=http://127.0.0.1:23000 export POLIGN COLLECTION=recall demo One process saves an editor preference and then changes it: python python - <<'PY' from polign recall import Client with Client as memory: memory.remember "user", "prefers editor", "vim" memory.remember "user", "prefers editor", "neovim" PY Run a second process in the same terminal. It reads the saved preference and the earlier statements: python python - <<'PY' from polign recall import Client with Client as memory: current = memory.recall "user", "prefers editor" print current 0 .value neovim print event.value for event in memory.history "user", "prefers editor" On a fresh collection: 'vim', 'neovim' PY Each process closes its client when it exits; the memories remain in the database. Agents on other machines can use the same server URL and collection, with POLIGN API KEY set when authentication is required. For examples covering historical reads and forgetting, see the Python session example https://github.com/Polign/recall/blob/main/examples/python/sessions.py or Go session example https://github.com/Polign/recall/blob/main/examples/sessions . A memory has a subject , a predicate , and a typed value : | Subject | Predicate | Value | |---|---|---| | user | prefers editor | neovim | | recall-demo | prefers test framework | pytest | | recall-demo | uses technology | Go | The registry defines which predicates an application accepts, their value types, and whether they hold one value or several. Recall includes 15 predicates for preferences, identity, and project facts. You can extend the registry https://github.com/Polign/recall/blob/main/docs/reference.md the-registry for your application. For a single-valued predicate such as prefers editor , a new assertion replaces the current value. A multi-valued predicate such as uses technology can hold both Python and Go. Corrections preserve earlier statements, so you can read current values, inspect their history, or query what was known at an earlier time. Forgetting records a withdrawal and removes the affected fact from current answers. It does not permanently delete the record. An agent can also propose facts from text https://github.com/Polign/recall/blob/main/docs/reference.md free-text-without-a-second-model . Recall validates those proposals against the registry before writing them. Recall provides memory rules, validation, and history; the backend provides persistence and access to the data. Agents share memory by using the same backend, collection, and namespace, with compatible Recall versions and memory definitions. Search also requires compatible embedding methods. Concurrent reads and writes follow the backend's consistency guarantees. Recall does not add transaction isolation or replication. Go applications can implement the Put , List , and Search backend contract https://github.com/Polign/recall/blob/main/docs/reference.md complete-histories to use another storage system. The Go library has no external module dependencies. Its built-in lexical embedder supports word-overlap search; applications can supply a model-based embedder for semantic search. See the embedding guide https://github.com/Polign/recall/blob/main/docs/reference.md embeddings . | Path | Contents | |---|---| | recall.go https://github.com/Polign/recall/blob/main/recall.go , doc.go https://github.com/Polign/recall/blob/main/doc.go | Public Go API at github.com/Polign/recall | | internal/engine/ https://github.com/Polign/recall/blob/main/internal/engine | Memory implementation and unit tests | | polign/ https://github.com/Polign/recall/blob/main/polign | Go backend adapter | | python/ https://github.com/Polign/recall/blob/main/python | Python package and tests | | cmd/ https://github.com/Polign/recall/blob/main/cmd | Command-line tools, including recall-audit | | examples/ https://github.com/Polign/recall/blob/main/examples | Runnable Go and Python examples | | docs/ https://github.com/Polign/recall/blob/main/docs | Guides and API reference | | testdata/ https://github.com/Polign/recall/blob/main/testdata | Shared audit fixtures | See the development guide https://github.com/Polign/recall/blob/main/docs/development.md for the implementation map and test commands. Developer reference https://github.com/Polign/recall/blob/main/docs/reference.md · Caching memory reads https://github.com/Polign/recall/blob/main/docs/materialization.md · Exporting and replaying history https://github.com/Polign/recall/blob/main/docs/audit.md