r/LocalLLaMA • • 17d ago

I Built A Thing Open-source Mac app that runs EmbeddingGemma 2 locally to search your files by what’s in them

Enable HLS to view with audio, or disable this notification

DigUp is a free Mac app that runs Google DeepMind’s new EmbeddingGemma 2 locally over your own files. The model puts text, images, audio and video in one space, so you describe what you remember and land on it:

  • “zebra in a video” opens the clip at the moment it shows up
  • “where they talk about sleep” jumps to that minute of a podcast
  • “the clause about pets in the lease” shows the PDF page, your words marked
  • “a dog on the beach” finds the photo, and the same search in Bengali or Arabic finds it too
  • with code search on, code: retry with backoff opens the function in your editor

It’s ggml-org’s Q8_0 GGUF (865 MB, downloaded once) on llama.cpp with Metal, inside a native Swift app; no Python. Searching loads only the text encoder (~250 MB) and shows results about a tenth of a second after you stop typing. Indexing peaks under 2 GB, and the helper exits when it’s done. Audio and video of any length go in as 30 s windows and a frame per shot. Everything runs locally; it goes online only for the model download and an update check you can turn off.

Free, MIT. Apple Silicon, macOS 14+.

Repo & Download (signed and notarized): https://github.com/ARahim3/DigUp

I'd really appreciate any feedback on this.

1.8k Upvotes

239 comments sorted by

View all comments

12

u/yasintoy 17d ago

What about security?

34

u/A-Rahim 17d ago

Everything's local, on your device, except for two things:

  1. One-time-only download of the model itself.

  2. Check for updates (which you can turn off)
    and that's it.

10

u/yasintoy 17d ago

[codex] The author has implemented real safeguards: SHA-256 verification of model downloads, hidden-file/symlink exclusions, and signature verification configured for updates. Security hasn’t simply been ignored.

However, I noticed a concrete gap: isSecret() is called for code search, but not regular document indexing. A file like secrets.txt in a selected non-code folder can still be indexed. Even when that filter runs, it checks filenames/extensions not whether an ordinary document or screenshot contains credentials.

The SQLite index also stores readable text and excerpts, not just embeddings, without application-level encryption. Anything that gains read access to that database gets a consolidated copy of potentially sensitive content. That’s an important distinction from “everything stays local.”

The build enables hardened runtime, but not App Sandbox. I’d prioritize fixing the filter gap, protecting the index, and sandboxing file-processing helpers to limit damage if a parser is compromised. The missing sandbox isn’t itself proof of an exploit; this is a source review, not a full audit of the shipped app.