A memory for your AI assistant that keeps what matters, forgets what doesn't, and returns the right thing at the right moment.
Send conversations. MemoryAgent keeps the facts that last, drops the rest, and hands them back when they are relevant — from a private space that belongs to you alone.
No card required
conversation → memory
workspace: acme-prod
user
We deploy the billing service on Railway, and Priya approves every release to production.
assistant
Noted — I'll keep the Railway deployment and Priya's approval step in mind.
extracted
Billing service is deployed on Railway.
infrastructure · durable
Priya approves every production release.
process · durable
- “Sounds good, thanks” — filler is discarded.
The problem
Assistants forget, and people pay for it in repetition.
Every session starts from nothing.
You re-explain the shape of the codebase, which service owns billing, that staging is not a copy of production, and who has to approve a release. Then you do it again tomorrow.
Preferences and customers go the same way.
A team's conventions, a client's contract terms, the reason a decision was made last quarter — stated once, then gone. The cost is not one bad answer; it is the hour a week spent restating context that was already true.
Raw transcripts are not memory.
A transcript records what was said, not what is still the case. It grows without bound, repeats itself, and contradicts itself. Searching it returns a moment in a conversation when what you needed was a fact.
How it works
Three steps, and only the middle one is ours
Send the conversation
Your assistant posts a transcript to the HTTP API, or runs the CLI after a session. Nothing is required of the transcript beyond being text.
pfmem add --mode chat --user-id u_42 --messages '[…]'
We keep what lasts
We pull out the facts that will still be true tomorrow, check them against what you already hold so the same thing is never kept twice, and file them by subject. Chatter is dropped.
job 4f21 · queued → ready
Hand it back on request
Before the next task the assistant asks what is relevant to it. It receives a short set of current facts — not a transcript, and not everything you have ever said.
pfmem search --memory-type user --user-id u_42 --query "billing deploy"
Separation
Your memories live in a space of your own.
Most services keep every customer's information in one big list and tell the two apart with a label. That works right up until one request forgets to check the label.
MemoryAgent gives every customer a space of their own instead. There is no label to forget, because there is nothing else in the space to confuse yours with — a connection opened for one workspace has no name it could use to reach another.
- An API key resolves to exactly one workspace before we look anything up.
- Deleting a workspace removes everything in it outright — not hidden, not flagged, not left for a filter to miss.
- An export reads one workspace, so it cannot pick up a neighbour's entries.
MemoryAgent
one workspace per customer
mk_live_9f2…
acme-prod
memories
people
jobs
exports
mk_live_c71…
acme-staging
memories
people
jobs
exports
mk_live_4b8…
globex
memories
people
jobs
exports
A workspace is one boundary: per customer, per environment, or per project. Crossing between two of them is not a permission we withhold — there is no request that can reach across.
The usual approach
| customer | fact |
|---|---|
| acme_prod | Billing service is deployed on Railway. |
| globex | Renewal date is 14 March. |
| acme_stg | Staging seeds are reset nightly. |
| globex | Invoices go to ap@globex.example. |
Everybody's entries in one list, held apart by a label. The separation is only as good as the last check anyone remembered to write.
What MemoryAgent does
your key → your workspacefind: "billing deploy"— everything returned is already yours— no other workspace is within reachEach customer's records exist once, inside a space of their own. There is no filter to forget, because there is nothing else in reach to filter out.
Install
One line to install. Your assistant drives the rest.
pfmem is a CLI that Claude Code and similar assistants call directly. The same operations are available over plain HTTP.
curl -fsSL https://pfmem-api.packagefactory.dk/install.sh | sh- macOS and Linux
- checksum verified
- no sudo required
Who it's for
Written for developers, answerable to the people who sign off
Developers with an AI coding assistant
The assistant knows the language. What it does not know is your architecture, your conventions, and the two things that break if it guesses. Store those once and the first ten minutes of every session go back to you.
pfmem search before a task
Teams putting an assistant in their product
Give every customer a workspace of their own and the question of where their memories live is answered. You are not designing extraction, de-duplication or separation yourself.
one workspace per customer
Whoever answers for where data lives
Each customer has a named workspace. Export returns everything held in it. Deleting it removes what is inside for good, and we say so plainly everywhere it appears.
export · delete · audit
Give your assistant something worth remembering
Create a workspace, store your first conversation, and read back what was kept. Export or delete it afterwards if it was not for you.