A privacy-first Chrome extension that builds a centralized, vectorized memory of your interests to automatically provide context to all your LLM chats.
Tired of re-explaining your preferences, projects, and personal context to different AI models? Aether solves this by acting as a personal "memory" that learns about you from your prompts.
It runs 100% locally, using your browser's built-in AI (Summarizer API) to understand your chats. It then stores these insights in a private, on-device vector database. When you start a new chat, Aether intelligently injects the most relevant memories, giving the LLM the context it needs to provide truly personalized and helpful responses.
- Automatic Memory Creation: Automatically captures and analyzes your prompts in the background as you send them.
- On-Device AI: Uses Chrome's built-in
SummarizerAPI to extract preferences, hobbies, and goals. No data ever leaves your computer. - Smart Context Injection: A bubble button appears in the chat input. Click it to find the most relevant memories (using vector similarity search) and inject them into your prompt.
- Privacy-First: All memories, prompts, and vector data are stored locally in your browser's storage. Nothing is ever sent to a server.
- Memory Management: A simple popup UI to view and delete all stored memories.
- Wide Support: Works across major LLM platforms.
- Gemini
- ChatGPT
- Claude.ai
- Perplexity.ai
This project is built using the Plasmo framework.
- Node.js (v18 or newer)
- npm (or
pnpm/yarn) - Google Chrome 140 or newer (for the built-in
SummarizerAPI).
-
Clone the repository:
git clone https://github.com/sakkshm/aether.git cd aether -
Install dependencies:
npm install
-
Run the development server:
npm run dev
This will create a
build/chrome-mv3-devdirectory and watch for file changes. -
Load the extension in your browser:
- Open Google Chrome and navigate to
chrome://extensions. - Enable "Developer mode" (usually a toggle in the top-right corner).
- Click the "Load unpacked" button.
- Select the
build/chrome-mv3-devfolder from the project directory.
- Open Google Chrome and navigate to
-
Test it!
- Go to a supported site (like gemini.google.com).
- You should see the Aether bubble icon appear in the text area.
- Try writing a prompt like, "I'm looking for a new laptop. I prefer 16-inch screens and I am a TypeScript developer."
- Submit the prompt.
- Click the extension icon in the toolbar to open the popup. You should see new memories like "User is a TypeScript developer" or "User prefers 16-inch screens."
- In a new chat, type "What laptop should I get?" and click the Aether bubble. It will inject your preferences!
- Prompt Capture (
content.ts): A content script securely listens for 'send' button clicks or 'Enter' presses on supported sites. - Local Inference (
summarizer.ts): The captured prompt is sent to Chrome's nativeSummarizerAPI with a custom prompt, forcing it to extract user preferences, hobbies, etc., as structured JSON. - Vector Storage (
background.ts): The extracted memories (e.g., "User enjoys classical music") are vectorized using@xenova/transformers(running locally) and stored in an on-device vector DB (@babycommando/entity-db). The background script also handles deduplication and conflict resolution (e.g., "user likes" vs. "user dislikes"). - Context Injection (
bubbleButton.tsx): The UI button queries the vector DB with the current text in the prompt box. The top K-nearest (most relevant) memories are retrieved and formatted for injection.
- Framework: Plasmo
- Language: TypeScript
- UI: React
- Vector DB: @babycommando/entity-db
- Embeddings: @xenova/transformers.js (
all-MiniLM-L6-v2) - Inference: Chrome Built-in
SummarizerAPI - State: @plasmohq/storage
This project is licensed under the MIT License.

