Skip to main content

Use project memory

Project memory keeps the conversations of your project and learns from them. Your agents and your apps then use what it learned.

Chat calls of your appskept when memory is on
Conversationsa title and a summary each
Memoriesfacts, decisions, procedures, and a knowledge page
Used byyour agents over MCP or the API, and your apps with recall
You use memory fromWithTo
The consoleYour sign-inTurn memory on, review and pin memories, erase an end user
An MCP client, such as Claude CodeYour sign-inLet an agent read and save memories. See Connect an MCP client
Your codeA virtual keyRead, save and erase memories with the /v1/memory API
Each chat callA virtual keyAdd the matching memories to the call with a header

1. Turn memory on​

warning

Memory needs every prompt and answer. When you turn memory on, Proxium sets Stored prompts and answers to all. You cannot narrow it while memory is on.

  1. In the console, open Memory. While memory is off, the screen shows only its settings.
  2. Set Memory to on. Proxium saves it at once.
  3. Optional: in Only these senders, type the apps to remember, separated by commas. Empty means every app.
  4. Optional: in Keep conversations for, type a number of days. Empty means keep everything.
  5. Select Save.

Any member of the project can do this. The Memory screen then shows the Knowledge page, the Memories and the Recent conversations.

If you turn memory off later, Stored prompts and answers stays at all. To store less, change What to store in Settings › Stored prompts and answers.

What Proxium remembers​

Proxium remembers a call when all of these are true:

ConditionExample
The route is /v1/chat/completions, /v1/messages or /v1/responsesNot /v1/embeddings
The call succeededA 502 is not remembered
The app is in Only these senders, or that field is emptyx-proxium-source: support-bot
The call does not send x-proxium-memory: off

A call without x-proxium-source is remembered only when Only these senders is empty.

When a conversation has no new turn for 10 minutes, Proxium reads it. It writes a title, a summary and the memories that it finds.

2. Choose what each call does​

Send the x-proxium-memory header on a call:

ValueWhat Proxium does
write (default)Remembers the call
recallRemembers the call, and first adds the matching memories to it. Only on chat and Messages calls
offDoes not remember the call

Example: a support bot that knows the earlier tickets of the user.

Terminal
curl https://proxium.tech/v1/chat/completions \
-H "Authorization: Bearer $PROXIUM_KEY" \
-H "Content-Type: application/json" \
-H "x-proxium-source: support-bot" \
-H "x-proxium-memory: recall" \
-H "x-proxium-memory-subject: user-1234" \
-d "{\"model\": \"$PROXIUM_MODEL\", \"messages\": [{\"role\": \"user\", \"content\": \"Which plan am I on?\"}]}"

With recall, Proxium searches the memories for the last user message. It adds at most 8 of them as one system message, after your own system messages. If the search is slow or fails, the call continues without memories.

On /v1/responses, recall acts as write. Any other value gets 400 invalid_memory_mode.

3. Name the end user​

A memory can be about one end user of your app. Proxium calls that end user the subject. It reads the subject from:

  1. The x-proxium-memory-subject header.
  2. If there is no header, the user field of the body. On /v1/messages, metadata.user_id.
CallReads the memories of
With subject user-1234user-1234, and the memories of the whole project
Without a subjectThe whole project, and the memories of every end user
warning

Send the subject on each recall call that is about one end user. Without it, the call can get the memories of other end users.

Use an opaque id, not an email address. A subject has at most 256 characters, and no control characters. Else a remembered call gets 400 invalid_memory_subject.

4. Give your agents the memory​

An agent with an MCP client uses the MCP server. Your own code uses the memory API with a virtual key, at https://proxium.tech/v1:

TaskRequestReference
Read the memory at the start of a taskPOST /v1/memory/wake-upWake-up
Search conversations and memoriesPOST /v1/memory/searchSearch
Read one conversationGET /v1/memory/episodes/{id}Episode
Save a memoryPOST /v1/memory/itemsRemember
Correct a memoryPATCH /v1/memory/items/{id}Correct
Rate a memoryPOST /v1/memory/items/{id}/ratingRate
Remove a memoryDELETE /v1/memory/items/{id}Forget
Read the knowledge graphPOST /v1/memory/graphGraph

Start a task with wake-up​

The answer holds at most 20 pinned and trusted memories, the newest conversation summaries and the knowledge page. A subject adds the memories of that end user.

Terminal
curl https://proxium.tech/v1/memory/wake-up \
-H "Authorization: Bearer $PROXIUM_KEY" \
-H "Content-Type: application/json" \
-d '{"subject": "user-1234"}'

Save a memory​

Save one statement in each memory. kind is fact (default), preference, decision, event or procedure. importance is 0 to 5, default 3. Leave out subject for a memory of the whole project.

Terminal
curl https://proxium.tech/v1/memory/items \
-H "Authorization: Bearer $PROXIUM_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Refunds over 100 EUR need a second approval.", "kind": "procedure", "importance": 4}'

Rate a memory after you use it​

Terminal
curl https://proxium.tech/v1/memory/items/$MEMORY_ID/rating \
-H "Authorization: Bearer $PROXIUM_KEY" \
-H "Content-Type: application/json" \
-d '{"rating": "useful"}'

A memory rated wrong two times leaves the recall, until a person selects Confirm on the Memory screen.

What a virtual key may change​

ActionAllowedIf not
Save a memoryWhen memory is on409 memory_off
Pin a memoryNever. Only a person can pin, in the console403 forbidden
Correct or remove a memory of an agentYes
Correct or remove a memory that a person wroteNo403 forbidden

A text has at most 4,000 characters. Proxium refuses a text that looks like a prompt injection (403), and it replaces a credential in the text with a placeholder. A correction keeps the old memory in the history.

Review what agents saved​

Open the Memory screen. The Memories list shows to review first: the memories of agents that no person confirmed. For each one, select Confirm, Pin, Edit or Remove. To add a memory yourself, fill in New memory, Kind and User, and select Save.

Erase one end user​

warning

You cannot undo an erasure.

With the API, with any virtual key of the project
Terminal
curl -X DELETE https://proxium.tech/v1/memory/subjects/user-1234 \
-H "Authorization: Bearer $PROXIUM_KEY"
In the console, as an owner of the project
  1. Open Memory. The section Erase one user is at the bottom of the screen.
  2. Type the subject in User id.
  3. Select Erase permanently, and confirm.

Proxium deletes the memories, the profile and the conversations of the subject, in one transaction. It also deletes the stored prompts and answers of the calls that memory kept for that subject. The audit record keeps a SHA-256 hash of the subject. Data handling says what stays.

Delete old conversations​

Set Keep conversations for at the top of the Memory screen. Once a day, Proxium deletes the conversations whose last turn is older than that number of days. It also deletes the memories that were corrected or removed before that time. Live memories stay.

What memory costs​

The summaries, the memories, the pages and the embeddings come from model calls. Proxium sends them through the routing of your project, and records them as your spend, with the application proxium-memory. The top of the Memory screen shows the memory cost of this month.

Proxium uses the first tier of each row that has a chain in your project:

JobTiers, in order
Conversation summariesmemory-summary, then trivial
Memories from a conversationmemory-extract, then trivial
Merges, graph facts and pagesmemory-consolidate, then memory-extract, then trivial
Embeddingsmemory-embed, then embed

To set a chain for a tier, see Route requests to models.