cd /news/ai-agents/show-hn-typed-agent-memory-with-corr… · home topics ai-agents article
[ARTICLE · art-129487] src=github.com ↗ pub= topic=ai-agents verified=true sentiment=· neutral

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.

read4 min views1 publishedSep 14, 2026
Show HN: Typed agent memory with corrections and history
Image: Michielbdejong (auto-discovered)

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 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 .
Go Run go get github.com/Polign/recall and follow theGo client guide .
MCP Connect an agent to tools for remembering, recalling, and forgetting facts.

The Claude Code plugin is a ready-made MCP integration for memory across coding sessions.

You'll need Python 3.10+ and Polign v0.6.4 or later, 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 - <<'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 - <<'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")])
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 or Go session example.

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 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. 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 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.

Path Contents
recall.go , doc.go Public Go API at github.com/Polign/recall
internal/engine/ Memory implementation and unit tests
polign/ Go backend adapter
python/ Python package and tests
cmd/ Command-line tools, including recall-audit
examples/ Runnable Go and Python examples
docs/ Guides and API reference
testdata/ Shared audit fixtures

See the development guide for the implementation map and test commands.

Developer reference · Caching memory reads · Exporting and replaying history

── more in #ai-agents 4 stories · sorted by recency
── more on @polign 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/show-hn-typed-agent-…] indexed:0 read:4min 2026-09-14 ·