CHROME EXTENSION
The extension brings ChainMemory into the web chats you already use. It saves AI responses as memories encrypted in your browser, injects the memories you choose into a new conversation, and injects your project's Brain — the overview, or everything needed for one task.
Installation
- Go to the Chrome Web Store
- Click "Add to Chrome"
- The ChainMemory icon appears in the extensions bar
- Click the icon and choose how to start: "Create your API key and wallet (free)", or "Paste your API key" if you already have one
- Activate your blind vault: "Generate my 12 words", write them on paper, and type them back to confirm. If you already have a phrase, choose "I already have 12 words"
- Claim free AIC at the faucet so you can save and inject
Your keys
The extension accepts three kinds of key:
| Prefix | What it is | Where it comes from |
|---|---|---|
aic_ | Personal key. Owns its wallet and pays its own fees | created by you, here or through the API |
aicm_ | Member key. Works inside an organization, under your member identity and role | issued by your organization's administrator |
aicp_ | Project key. Like a member key, restricted to one project | issued by your organization's administrator |
With an organization key, fees are paid from the organization's balance, everything you save is attributed to your member identity, and your role decides what you can do: a viewer can read and inject but not save, and the extension says so in plain words. See Organizations.
Save Memories
From any supported AI chat, the extension adds a Save bar under each of the model's responses. One click encrypts that response in your browser, with a key derived from your 12 words, and saves it as a memory. ChainMemory receives and anchors a blob it cannot read.
Found by meaning, without being read
Before the text is encrypted, the extension computes its search vector on your device, with ChainMemory's own search engine, and sends it along with the blob. That is what lets your sealed memories be found by meaning later. The search model is downloaded once from models.chainmemory.ai and checked against its SHA-256, which is anchored on ChainMemory's chain, every time it is loaded. If the vector cannot be computed, the memory is still saved sealed — never in plain text — and the extension tells you it will not appear in search.
What it costs, before you click
The bar shows the estimated cost before you save — for example Save · 0.0074 AIC — and the confirmation reports what was stored. Saving costs a 0.001 AIC protocol fee plus on-chain storage, which grows with length; see Costs.
Responses are saved in full. The ceiling is what fits in one network transaction: 20,000 bytes of encrypted content. That is about 20,000 characters of plain ASCII text, but fewer when the text uses accents, emoji or non-Latin scripts, since those take 2 to 4 bytes each. If a response does not fit, the extension tells you instead of cutting it.
Rescue your history
You don't have to start from zero. Open a past conversation in ChatGPT, Claude or Gemini, scroll so the older messages load, and the Save bar appears on each response just as it does on a live chat. Knowledge you accumulated before installing ChainMemory becomes portable memory from day one.
Organizing what you saved
The extension popup organizes your memories. From there you can filter by project, add or remove tags on individual memories, tag several at once, and archive what you no longer want to see. Archived memories stay on record and remain verifiable; they simply stop appearing in lists and injections.
Each saved memory receives:
- Cryptographic fingerprint — its
event_hash, computed in your browser from the text, so anyone can verify later that it was not altered without seeing its content. Do not confuse it with the Project State hash, which is SHA3-256 domain-separated withCM_PROJECT_STATE_V<schema_version> - Sequential number within your account (#1, #2, #3...) — your own numbering, not a global one
- Tags for organization, assigned by you or matched automatically against your projects' keywords
- Category (decision, learning, milestone, error, state, interaction, or custom — the default when none is given)
- Timestamp of the moment of saving
- On-chain anchoring of the encrypted content
Inject Context
Before starting a conversation with any AI, ChainMemory can inject the context you choose into the chat input, so the new conversation begins with what previous ones established.
How it works
- Click the floating "Inject memory" button on any supported platform
- The panel lists your memories, filterable by project, with an estimated token count each. Sealed memories are opened in your browser with your 12 words; the server never sees their text
- Select the ones you want and confirm
- The text is inserted at the top of the chat input. If the platform's input cannot be detected — rare, and it happens when a platform changes its HTML — the text is copied to your clipboard instead
Injection is optimistic: the text arrives immediately and the on-chain payment confirms in the background. It costs 0.1 AIC per injection, regardless of how many memories you selected, up to 50. If your balance is short, the panel offers to top up at the faucet before charging you.
quote_inject to see the exact cost, which ids exist and whether your balance covers it — at no charge — before paying for the injection.
Project Brain from the extension
One click injects your project's Brain into the chat: not a pile of memories, but the consolidated state built from them, written by ChainMemory's server by relevance and within the size of the chat's input box. Injecting it is free. At the top of the panel, choose what to inject:
- Overview: what changed, risks, priorities — what changed since the last time you injected that project, open risks (high first, with the priorities that mitigate them and the high risks nobody mitigates), active priorities, recent decisions and milestones, open questions, and each constraint as a one-line rule. The extension remembers, per project and only in this browser, which version you injected last
- One task — pick one of your active priorities and the extension injects everything needed to work on it: the priority in full with its completion criterion, the risks it mitigates, everything else in the Brain that mentions it, and every work rule and constraint
Both open with the Brain's on-chain anchor — block and anchor id — so the model receives the proof along with the content.
Safe to paste, by default
What the extension injects is public by default: addresses, ports, server paths and security rules are withheld and counted before the text reaches the chat, and how a project's AIC are safeguarded is never included.
With a personal aic_ key, an Include sensitive data box appears under the button. It is off every time the panel opens. When you tick it, the extension shows you exactly which lines would go out and to which site, and nothing is injected until you choose "Approve this time". ChainMemory logs every such request: a fingerprint of your key (never the key), the project, the version, the client and the number of sensitive lines. Member and project keys never see the box; the server refuses them that level.
Supported Platforms
The extension injects its buttons into these four platforms:
- ChatGPT — chatgpt.com and chat.openai.com
- Claude — claude.ai
- Gemini — gemini.google.com
- Perplexity — perplexity.ai (saving limited to the most recent response)
Permissions the extension requests, and why:
| Permission | What it is for |
|---|---|
storage | keep your API key, your vault and your settings |
clipboardWrite | fallback when a platform's input box cannot be detected |
offscreen | compute a memory's search vector in a hidden extension page, so the text can be encrypted before it leaves the browser and still be found |
| access to the four platforms | insert the Save bar and the memory panel into the page |
access to chainmemory.ai, api.chainmemory.ai, faucet.chainmemory.ai | talk to the API and open the faucet |
The search engine runs as WebAssembly built from code packaged in the extension, which is why its security policy allows wasm-unsafe-eval; no remote code is loaded. The search model is public data, downloaded without any extra permission.
Where your data lives
- Your 12 words and your PIN stay in this browser (
chrome.storage.local, not synced) and are never sent to ChainMemory - Your API key is stored in
chrome.storage.sync, which Chrome syncs across the browsers signed into your Google account - What is not encrypted, because search and organization need it: each memory's tags, project, category, platform, dates and length, and its search vector — numbers computed from the text that cannot be turned back into it, but that do reflect what it is about. See Blind Vault
No analytics, no telemetry, no ads.