Your OpenAI API key and notes are never sent to any server other than OpenAIβs. This app runs fully locally on your Mac:
~/Library/Application Support/SemanticSearch/
.We value your trust. If you have concerns, please check the source code or raise issues in GitHub Issues.
A macOS menu bar application that provides semantic search for Apple Notes using local embeddings and OpenAI's text-embedding-3-small
model.
First run (not notarized): after dragging the app to Applications, rightβclick SemanticSearch.app
β Open β Open once.
app/
)SemanticSearchMenuBar/
)# Create virtual environment
python3.11 -m venv venv_notes
source venv_notes/bin/activate
pip install -U pip
pip install -r requirements.txt
# .env at repo root
OPENAI_API_KEY=your_openai_api_key
SemanticSearchMenuBar/SemanticSearch.xcodeproj
in Xcode# Interactive CLI
python3 app/cli.py
# Commands available:
# sync - Scan and index notes
# sync all - Full re-index
# watch - Auto-sync on file changes
# list - List indexed notes
# open <id> - Open specific note
# refresh-meta all - Refresh metadata
python3 -u "/Users/siddharthasehgal/Documents/Work/SearchNotes/SemanticSearchMenuBar/SemanticSearch/Resources/bridge.py" sync --days 3650 --full | tail -n 1
# Ensure venv is up-to-date
python3.11 -m venv venv_notes
venv_notes/bin/pip install -U pip
venv_notes/bin/pip install -r requirements.txt
# OpenAI API key
export OPENAI_API_KEY=your_openai_api_key
# or create a .env at repo root with: OPENAI_API_KEY=...
/bin/bash SemanticSearchMenuBar/Scripts/package.sh | cat
export NOTARIZE=1
export NOTARY_PROFILE=your_keychain_profile
bash SemanticSearchMenuBar/Scripts/package.sh
bash SemanticSearchMenuBar/Scripts/install_launch_agent.sh
SemanticSearch.dmg
and drag SemanticSearch.app
into Applications
.SemanticSearch
disk after copying./Applications
.OPENAI_API_KEY
is configured in your shell environment or placed in ~/Library/Application Support/SemanticSearch/.env
.~/Library/Application Support/SemanticSearch/
state.json
- Last sync timestamp and metadataembeddings.jsonl
- Note embeddingsvector_store/
- Vector search index.env
- Optional local API key override# Reset Apple Events permissions for the app (bundle id)
tccutil reset AppleEvents okaysidd.SemanticSearch
# Then quit and relaunch the app; the next Notes action will prompt again
Notes:
SemanticSearch
to control other apps.SearchNotes/
βββ app/ # Python backend
β βββ notes.py # Core sync/search logic
β βββ vector_store.py # Vector storage
β βββ cli.py # Command-line interface
β βββ watcher.py # File system monitoring
βββ SemanticSearchMenuBar/ # SwiftUI app
β βββ SemanticSearch.xcodeproj # Xcode project
β βββ Bridge/ # Swift-Python bridge
β βββ Views/ # SwiftUI views
β βββ Scripts/ # Build and packaging scripts
βββ requirements.txt # Python dependencies
This project is for personal use. Please ensure you have appropriate OpenAI API access and comply with Apple's developer guidelines for distribution.