Privacy and limits
A memory bank is only worth having if you can see everything in it and stop anything reading it. Here is exactly what is stored, where it goes, and what the free caps are.
What is stored
| Data | Why |
|---|---|
| Your email and a password hash | Signing in to the web app, and sending you a reset link if you forget the password |
| Each memory: the sentence, its tags, its source, who wrote it, and a 768-number vector | The memory itself, and searching it by meaning |
| Recall count and last recalled time, per memory | Ordering your profile by what actually gets used |
| An activity row per operation: action, surface, client name, outcome, result count, duration | The Activity page, and the usage caps |
| API keys and OAuth tokens, stored as SHA-256 hashes | Authentication. The plaintext of a key is shown once and never again |
Memories belong to a bank. Your personal bank is yours alone — no other account can read it. A team bank is readable by its members and nobody else, and an assistant that can write to one is unable to read your personal bank at all, so nothing private can cross into a shared bank. Somebody can be given read-only membership of a team bank: they see everything in it and no assistant they connect can add to it.
Where memory text goes
Two services, and nowhere else:
- Google Gemini turns each memory and each search query into a vector so search works by meaning.
- TypeSafe AI's Jev classifier is shown a new memory and the handful of existing ones closest to it, and answers whether the new one duplicates or replaces them. It only sees memories close enough to be candidates.
Everything else — storage, search, the web app — happens inside GuardianMemory's own database. The one other message that ever leaves is a password reset email, sent to the address you signed up with; it carries a link and says nothing about your memories.
Do not store secrets. Assistants are told this in their instructions, but it is worth repeating: passwords, keys and card numbers do not belong in a memory bank. GuardianMemory is a place for durable facts, not a vault.
Control you actually have
- Read everything. Every memory is a sentence on one page, searchable, with the assistant that saved it.
- Fix anything. Edit a memory and the new wording is re-embedded. Pin it, or delete it outright.
- See who did what. The Activity page lists every search and save, which assistant made it, and when.
- Revoke in one click. Disconnect an app on Connected apps and its tokens stop working immediately. Revoke an API key on the keys page. Removing somebody from a team bank, or leaving one, ends their access that second; making somebody a reader ends their writing to it just as fast.
- Leave.
GET /api/memoriesexports everything as JSON. - Get back in. Forgotten your password? A reset link goes to your email. It works once, for an hour, and asking again retires the old one. Ten wrong passwords lock login for fifteen minutes — for whoever is guessing — and the link lifts that for you.
Usage caps
GuardianMemory is free while we learn what people need. Every create and every search costs one embedding call, so the caps are what keeps that sustainable.
| Cap | Default |
|---|---|
| Stored memories per bank, personal or team | 5,000 |
| Creates and searches per account, per 24 hours | 2,000 |
Reading your profile is free and counts against neither. When a cap is reached, MCP tools return a readable message the assistant can pass on, and the REST API answers 429. Attempts that were refused are logged but never counted against the cap. Your standing is shown on the memories page and in GET /api/me.
Running your own
GuardianMemory is a small PHP application with no framework and no dependencies beyond PostgreSQL with pgvector. If you would rather the data sat on your own infrastructure, the repository's README covers running it with Docker locally and deploying it for real. The caps, the admin usage report and the invite-only mode are all configuration.