SnipAI is your screenshot companion that runs entirely on your MacOS machine.
Take screenshots, let local AI describe and tag them, then find them instantly through semantic search - all without sending your data anywhere.
- Take, organize, and search for screenshots in a PyQt application
- All local small language models
- Use
ollama
for all generation tasks:moondream
for generating description from images - super fast and accurateqwen2:1.5b
for image tagging - super fast and good at structured outputs
- Search images by natural language using binary vector embeddings
mxbai-embed-large
for text embedding - with binary quantization to minize storage and speed up retrieval- use sqlite-vec for retrieval
- Interactive graph view to explore similar screenshots (work in progress)
- Install Python 3.11.10 using pyenv (recommended):
brew install pyenv
pyenv install 3.11.10
# Set Python 3.11.10 as your global version (optional)
pyenv global 3.11.10
- Install Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- Install LLVM 14:
brew install llvm@14
- Install Poetry
curl -sSL https://install.python-poetry.org | python3 -
- Configure Poetry to use Python 3.11.10:
poetry env use 3.11.10
poetry run python --version # Should output: Python 3.11.10
- Download ollama for MacOS
- Clone the repository:
git clone [email protected]:tisu19021997/snipai.git
cd snipai
- Install dependencies using Poetry:
poetry install
- Download required AI models using Ollama (or snipai will when app starts):
ollama pull moondream
ollama pull qwen2:1.5b
ollama pull mxbai-embed-large
- Activate the Poetry environment:
poetry shell
- Run SnipAI:
python -m snipai.app
- Graph view improvements
- UX
- Switch to image embeddings from text descriptions
- Native OS metadata integration - file over app
- Sync tags to file system
- Obsidian integration development