Skip to content

Capture, tag, and search images locally with OSS models.

License

Notifications You must be signed in to change notification settings

tisu19021997/snipai

Repository files navigation

SnipAI

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.

Youtube Demo below Demo Video

Graph View Graph View

Features

  • 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 accurate
    • qwen2:1.5b for image tagging - super fast and good at structured outputs
  • Search images by natural language using binary vector embeddings
  • Interactive graph view to explore similar screenshots (work in progress)

Installation

Prerequisites

  1. 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
  1. Install Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  1. Install LLVM 14:
brew install llvm@14
  1. Install Poetry
curl -sSL https://install.python-poetry.org | python3 -
  1. Configure Poetry to use Python 3.11.10:
poetry env use 3.11.10

poetry run python --version  # Should output: Python 3.11.10
  1. Download ollama for MacOS

Setting up snipai

  1. Clone the repository:
git clone [email protected]:tisu19021997/snipai.git
cd snipai
  1. Install dependencies using Poetry:
poetry install
  1. 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
  1. Activate the Poetry environment:
poetry shell
  1. Run SnipAI:
python -m snipai.app

Roadmap

  • 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