Skip to content
a private workspace for every customer

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.

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.

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

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

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

  1. 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 '[…]'

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

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

customerfact
acme_prodBilling service is deployed on Railway.
globexRenewal date is 14 March.
acme_stgStaging seeds are reset nightly.
globexInvoices 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 reach

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