All your screenshots.
Screenshot 2024年01月15日 at 10.32.41.png
Screenshot 2024年01月15日 at 10.33.02.png
Screenshot 2024年01月14日 at 09.15.33.png
...4,844 more
Now you can.
$ ssm find "that stripe error" Found 1 result · 34ms 1. Screenshot 2024年01月15日 at 10.32.41.png · 89% "Error: Your card was declined. Insufficient funds." 2 weeks ago
A CLI that searches your screenshots by what's in them. Text, images, anything.
- OCR extracts text from screenshots
- AI vision describes photos (local, runs on your machine)
- Semantic search finds things by meaning, not just keywords using memvid
No cloud. No API keys. Everything runs locally.
git clone https://github.com/memvid/screenshot-memory.git
cd screenshot-memory
./setup.shThe setup script handles everything - Bun, Ollama, the AI model, all of it.
To uninstall:
./setup.sh --remove
We included sample screenshots to test with:
# Index the examples ssm index ./examples # Search for stuff ssm find "connection error" ssm find "stripe" ssm find "404"
# Index your screenshots once ssm index ~/Screenshots # Find stuff ssm find "kubernetes error" ssm find "that figma mockup" ssm find "slack conversation with john" # Photos work too ssm find "red car" ssm find "sunset at the beach" # Watch for new screenshots ssm watch
If you want to search photos by what's in them (not just text), you need Ollama running locally:
brew install ollama ollama pull llava-phi3 ollama serve
First search takes ~6 seconds (model loading). After that it's ~1 second.
| Command | What it does |
|---|---|
ssm index <dir> |
Index screenshots from a directory |
ssm find <query> |
Search for screenshots |
ssm watch |
Auto-index new screenshots |
ssm stats |
Show index info |
ssm ocr <image> |
Test OCR on an image |
ssm caption <image> |
Test AI description on an image |
ssm index ~/Screenshots --force # Re-index everything ssm index ~/Screenshots -w 8 # More OCR workers = faster ssm find "error" --mode lex # Exact text match ssm find "error" --mode sem # Semantic/meaning match ssm find "error" -k 10 # More results ssm find "error" --open # Open first result ssm find "error" --json # JSON output
| What | Time |
|---|---|
| Index 1 screenshot | ~2s |
| Index 1 photo (with AI) | ~1s (warm) / ~6s (cold) |
| Search | <100ms |
"Cold" = first run after starting Ollama. Keep it warm with OLLAMA_KEEP_ALIVE=3600.
Screenshot → OCR → Text ────────────┐
├→ Embeddings → Index
Photo → AI Vision → Description ────┘
↓
Query → Search → Results
All stored in a single .mv2 file. Powered by memvid.
Lives at ~/.config/screenshot-memory/config.json:
{
"directories": ["~/Screenshots"],
"ocr": { "workers": 4 },
"search": { "defaultMode": "auto", "defaultLimit": 5 }
}"No screenshots indexed" → Run ssm index ~/Screenshots first
OCR is slow → Use more workers: ssm index -w 8
No image preview → brew install chafa
Photos not being described → Make sure Ollama is running: ollama serve
MIT
Built on memvid