## Inspiration You become a stranger every time you switch AI tools. ChatGPT, Claude, Cursor, Notion — each keeps its own memory of you, in its own silo, on someone else's servers, with no way to see or control what it stored. We thought the premise was backwards:
Your memory should belong to you, not to the model you happen to use today.
So we built Memory Pod: a local-first, inspectable context layer that works across any AI — Own your Pod. Dock it anywhere. Share only what you choose.
## What it does Memory Pod keeps a private, vectorized memory of you on your own machine and uses it to turn a vague prompt into a personalized, context-rich one you paste into any AI. It proves four claims, live:
- Own — your notes (
memory.md, journals, docs) are ingested into a private Base Pod that never leaves your computer. - Carry — anyone can package a playbook or task lens as a transparent Shared
Pod (
.mpodfile) — no embeddings, no private paths — and share it like any document. - Dock — you activate a private Base Pod plus an optional Shared Pod for a task.
- Selective — it retrieves only relevant context (an unrelated task injects zero Shared Pod context — no mega-prompt), shows every snippet with a similarity score, and lets you deselect anything before it's used.
It ships three surfaces over one engine: a CLI, a macOS Pod Dock popup (with a first-run onboarding wizard), and a global Option+Enter hotkey that furnishes the text right in your AI's input box — and never auto-submits.
## How we built it
The architecture centers on one stable augment() seam, so every surface shares
the same core and the team could build in parallel.
- Local memory engine: ingest
.md/.txt→ chunk → embed withsentence-transformers(all-MiniLM-L6-v2) → store as per-Pod JSONL → top-k cosine retrieval in NumPy → assemble a "[Hidden Context]" block that puts private user facts above advisory Shared Pod context. - Portable Pods: each Pod is a folder (manifest + records);
.mpodexport strips vectors and absolute paths so sharing leaks nothing private; imports are read-only and re-embedded locally. - Interaction: a Tkinter popup and a
pynput/pyperclipglobal-hotkey loop. Optional local prompt-polishing via Ollama (llama3.2) turns the furnished prompt into clean copy and degrades gracefully when Ollama isn't running. A small shared "active dock" file lets the popup repoint the running hotkey to a new Pod without a restart. - Starter Shared Pods: six reusable task-lens playbooks (legal issue-spotting, accounting checklist, personal-finance planning, structured problem-solving, go-to-market, people operations), each framed as general best-practices — not licensed advice.
- Privacy by construction: store, embeddings, retrieval, and polishing all stay on-device; context only leaves when you paste the prompt — and we say so plainly.
## Challenges we ran into
- The embedder-mismatch trap: a Pod ingested with one embedder but queried with another returns silent garbage. We stamp every record with its embedder identity and re-embed on the fly so the demo can't mysteriously break.
- macOS OS-automation: global hotkeys and synthetic keystrokes need Accessibility permission, clipboard propagation is racy, and headless-launched Tkinter windows wouldn't take clicks until we force-activated the app.
- Honesty in framing: we resisted calling Shared Pods "experts." A Shared Pod carries written principles and checklists — not identity, licensure, or judgment — so we name them by the task lens they provide, not the person they imitate.
## What we learned Local-first isn't a limitation — it's the feature. The same prompt produces different output because the system remembers the person, on their own machine. And the trustworthy version of memory is the inspectable one: see it, approve it, then send it.
## What's next Real Shared-Pod libraries, multi-Pod stacks, and richer intent-aware prompt assembly — all without ever breaking the local-first promise.
Log in or sign up for Devpost to join the conversation.