ARahim3/DigUp

Search your computer by what's in your files: photos, PDFs, documents, recordings, videos and code. On-device on Mac, Windows and Linux, built on Google DeepMind's EmbeddingGemma 2.

DigUp – AI‑powered semantic search for your Mac files

What it does
DigUp lets you search the contents of files on an Apple‑silicon Mac using natural language. It runs Google DeepMind’s open‑source multimodal model EmbeddingGemma 2 locally (via llama.cpp) to embed text, images, audio and video into a single vector space. After you pick folders to index, the app extracts embeddings for each picture, PDF page, document paragraph, 30‑second audio chunk and video frame, stores them in a SQLite vector store, and then matches your query embeddings (plus exact‑word boosts) against that index. The result opens the file at the exact spot – a video frame, a podcast timestamp, a PDF page, or a line of code.

Why it matters

  • Multimodal search: unlike Spotlight, you can find a “zebra in a video” or “the clause about pets in the lease” without knowing the file name.
  • On‑device privacy: all indexing and inference run locally; the only network traffic is the one‑time model download and optional daily update check.
  • Cross‑language: the model supports 100+ languages, so an English query can locate a Bengali note, etc.
  • Code‑aware (optional): turn on code search to query functions by description (code: retry a failed call with backoff).

How to get started

  1. Download the DMG (or install via Homebrew cask) and drag DigUp to Applications.
  2. On first launch the 865 MB EmbeddingGemma 2 model is downloaded, then you select which folders to index. The UI shows an estimated indexing time.
  3. Press ⇧⌘Space from any app, type a natural‑language description, and navigate the results with arrow keys. Press ↩ to open the match at the precise location.

Technical highlights

  • Model: EmbeddingGemma 2 (740 M parameters, 768‑dimensional embeddings) run with ggml‑org’s 8‑bit build in llama.cpp using Metal for GPU acceleration.
  • Index: One SQLite file holds vectors for each media chunk plus a keyword index for exact‑match boosting; a second SQLite index is used for code when enabled.
  • File support: images (HEIC, JPEG, PNG, RAW, WebP…), PDFs (including scanned pages via Vision OCR), text docs (txt, md, rtf, docx, html…), audio (any length, processed in overlapping 30 s windows), video (key‑frame extraction + audio). Code search reads source files, notebooks (without outputs) and repo docs, respecting .gitignore and skipping secrets.
  • Performance: Initial indexing takes minutes to an hour depending on volume; incremental updates happen within seconds of a new file appearing. Searches embed the query in milliseconds and perform a nearest‑neighbor lookup against the stored vectors.
  • Privacy & safety: No telemetry, no cloud upload of your files, optional update checks, and the app never modifies indexed files.
  • Extensibility: The repo includes a command‑line tool (digup) for scripting, test‑bed generation scripts, and evaluation suites to measure ranking quality.

Who should use it

  • Professionals who need to locate specific moments in media (e.g., journalists, podcasters, designers).
  • Developers who want fast semantic code search across local repos.
  • Anyone who values privacy‑first AI tools that run entirely on their Mac.

License
MIT – the app bundles Apache‑2.0 (EmbeddingGemma 2) and MIT‑licensed dependencies (llama.cpp, Sparkle).

Written about in

Related

  • Project
  • Project
  • Project
  • Project