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 |
| Each memory: the sentence, its tags, its source, 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 are scoped to your account. No other account can read them, and there is no shared pool.
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.
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.
- Leave.
GET /api/memoriesexports everything as JSON.
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 account | 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.