Claude Code
Claude forgets everything when a session ends. The Recall plugin gives it a memory that lasts: tell it once that you prefer concise answers or that a project uses pytest, and a new session already knows. When something changes, the new value replaces the old one and the old one stays in the history.
The Polign marketplace on GitHub has two plugins:
recallremembers your preferences and project facts across sessions, using Recall.polignlets Claude search your own polign_db collections, and teaches it how to run the server and write code against it.
Both run on macOS and Linux and need Claude Code and the polign CLI (0.6.6 or later) installed first.
Recall: set up in one command
polign recall setup
Then restart Claude Code. The command:
- finds Claude Code and checks its version,
- starts a private database on your computer, on free local ports, with a generated key,
- checks that a memory read and the MCP tools work, without saving any sample memories,
- adds the Polign marketplace and installs
recall@polign.
You don't need to keep a server running in a terminal. When Claude connects, the plugin starts the local database if it is not already running, against the same data folder. It does not start at login.
To check a setup later, run polign recall doctor. It checks the same things
without starting anything or writing memories. Inside Claude, /mcp shows
whether the Recall connection is up.
Try it
Start a request with /recall:recall-memory, or just ask. Claude reads memory
before relying on saved context.
/recall:recall-memory Remember that I prefer concise answers.
In a new session:
/recall:recall-memory What answer style do I prefer?
| What you want to do | What to say |
|---|---|
| Save a preference | Remember that I use neovim. |
| Save a project detail | Remember that project "billing-api" uses pytest. |
| Look something up | Which test framework does billing-api use? |
| Change a preference | Remember that I now prefer detailed answers. |
| Look back | Show the history of my answer-style preference. |
| Forget something | Forget my preferred editor. |
Claude gets five tools: remember, recall, forget,
memory_history and list_predicates. Facts are typed. Each one is a
predicate from a fixed list (15 to start, such as prefers_test_framework or
project_constraint) with a value. A new value for a single-valued predicate
replaces the old one by rule, not by the model's judgment. Anything that fits no predicate
is kept as a note in your own words.
Forgetting removes a fact from current answers and keeps it in the history. It does not permanently delete the record.
Where the memories live
| Item | Location |
|---|---|
| Connection settings and launcher | ~/.config/polign/recall/ |
| Local database | ~/.config/polign/recall/data/ |
| Local server log | ~/.config/polign/recall/server.log |
These stay outside Claude's plugin folder, so updating or reinstalling the plugin does not
touch your memories. Settings and the local key are readable only by your user. Set
POLIGN_RECALL_HOME before both setup and Claude to use another folder.
Use a shared database
To share memory with other machines, other agents, or a team, point setup at a polign_db server instead of the local one:
export POLIGN_API_KEY=... # only if the server requires a key
polign recall setup -url https://memory.example.com -collection team_memory
A collection is a named group of memories. The default is
recall_lexical_v1. Later runs keep the saved connection; pass
-url and -collection again to change it, or -local to
go back to the local database. Changing the connection does not copy memories across.
Install by hand
If you'd rather run the server yourself, start it in one terminal:
polign-server -store "fs:$HOME/.local/share/recall/data"
Then run these two commands inside Claude, one at a time, and restart it:
/plugin marketplace add Polign/polign
/plugin install recall@polign
Without a saved setup, the plugin finds the polign CLI on your PATH or in the usual
install locations and connects to POLIGN_URL, POLIGN_COLLECTION and
POLIGN_API_KEY from the terminal that starts Claude. A saved setup takes
precedence over these variables.
The Polign plugin
The second plugin connects Claude to a polign_db server you already run, so it can search your collections while it works:
/plugin install polign@polign
Claude Code asks for these settings when you enable it:
| Setting | What it is |
|---|---|
| Server URL | Your server's address. Defaults to http://localhost:23000. |
| Default collection | Used when a request does not name one. Set it: a server started with -store does not let Claude list collection names. |
| API key | Sent as a bearer token. Leave it empty unless the server requires a key. |
| Allow writes | Off by default. A model that can write can also replace existing records by reusing their ids. |
It also adds two skills Claude loads when they apply: polign-server for
starting, configuring and debugging the server, and polign-client for code that
uses the Python SDK, the LangChain and LlamaIndex packages, or the HTTP and gRPC APIs. They
keep Claude from guessing flag names and API shapes.
Other MCP hosts
Both plugins run polign mcp, which works with any MCP host. For Recall, run
polign recall setup -no-plugin and give the host this command:
polign recall mcp
Or connect to a server directly with polign mcp -memory-only -write and the
POLIGN_* variables above. Leave out -write for a read-only
connection. polign mcp -h lists every option, including a custom predicate
file.
If something goes wrong
| What you see | What to do |
|---|---|
Recall failed to connect in /mcp | Run polign recall doctor, fix what it reports, then restart Claude. |
polign does not recognize recall or mcp | An older binary is first on your PATH. Check which -a polign and polign -version. |
bind: address already in use (manual install) | Another server has the port. Connect to it, or start a second one with -http 127.0.0.1:23100 -grpc 127.0.0.1:23101. |
| The marketplace address is rejected | Run /plugin marketplace add and /plugin install as two separate commands. |
Source & license
Both plugins are open source under the Apache License 2.0 and live in github.com/Polign/polign. Bug reports and pull requests go there.