Sutrana
Local-first ambient memory for Mac: continuously captures what you see, indexes it on-device, exposes it as an MCP server for Claude/Cursor, and surfaces open loops in a Shram-style menu-bar inbox.
Status: Early public preview (
v0.1). Capture → SQLite/FTS → MCP → menu-bar open tasks works on Apple Silicon with full Xcode. Not a signed App Store build yet.
What it does
- Menu bar app — open tasks stream, settings, permissions, kill switch
- Screen capture + OCR — ScreenCaptureKit + Vision, local SQLite + FTS5
- MCP tools —
search_memory,get_timeline,list_open_tasks,suggest_followups,list_day_summaries,embed_recent_memory - Optional hybrid search — local Ollama embeddings (off until you run Ollama)
All data lives under ~/Library/Application Support/Sutrana/. No cloud by default.
Quick start
1. Memory + MCP (Node)
git clone https://github.com/sdntsng/sutrana.git
cd sutrana
npm install
npm run build
npm run mcp
2. Mac menu bar app
Requires full Xcode (Command Line Tools alone are not enough).
cd apps/mac
./Scripts/build-app.sh
open Sutrana.app
Grant Screen Recording (and optionally Accessibility) when prompted — or use the Permissions tab.
3. Connect Claude Desktop / Cursor
See docs/claude-desktop.md and docs/cursor.md.
Privacy
- Local-only storage and embeddings by default
- Private-apps denylist in Settings
- Pause capture anytime from the menu bar
- Microphone / accessibility scrapers are opt-in later; mic is not used in v0
See SECURITY.md to report issues.
Repo layout
apps/mac/ Swift menu-bar capture agent
packages/memory/ SQLite FTS + open tasks + day summaries + Ollama embeddings
packages/mcp/ MCP stdio server
docs/ client config examples
Development
- Default contribution branch:
dev(staging) mainis production / releasesnpm run build·npm run typecheck·npm test
See CONTRIBUTING.md.
Roadmap (post-v0.1)
- Signed
.dmgdistribution - Stronger open-task heuristics / LLM drafts
- Accessibility messaging scrapers (opt-in)
- Optional remote embeddings with explicit consent
License
MIT