{"slug": "digup-search-files-on-mac-by-what-s-in-them-using-embeddinggemma-2", "title": "DigUp: Search files on Mac by what's in them, using EmbeddingGemma 2", "summary": "DigUp, an open-source Mac search app from developer ARahim3, launched with support for Google DeepMind's EmbeddingGemma 2, the multimodal embedding model released in October 2026, letting users search files by content description entirely on-device. EmbeddingGemma 2 places text, images, audio and video in one shared space across more than 100 languages, is licensed under Apache 2.0, and at 740M parameters runs locally; DigUp requires an Apple Silicon Mac with macOS 14 or later, downloads an 865 MB model once, and indexes only user-selected folders with no account or telemetry.", "body_md": "**Describe it. Dig it up.**\n\nSearch the files on your Mac by what's in them, with Google DeepMind's\n[EmbeddingGemma 2](https://huggingface.co/google/embeddinggemma-2).\n\n[**Download for Mac**](https://github.com/ARahim3/DigUp/releases/latest) · Apple Silicon,\nmacOS 14 or later · Free and open source\n\nEmbeddingGemma 2 is the multimodal embedding model Google DeepMind released in October 2026. It puts text, images, audio and video into one shared space: a photo of a dog on a beach lands next to the words \"a dog on the beach\", and a recording of someone talking about sleep lands next to \"where they talk about sleep\". It understands more than 100 languages, it's open (Apache 2.0), and at 740M parameters it's small enough to run comfortably on a laptop.\n\nDigUp brings that to the files on your Mac. Pick the folders to search, and it reads the pictures, PDFs, documents, recordings and videos in them. Then describe what you're looking for, in your own words, and it finds the match, whatever kind of file it is. All of it happens on your Mac.\n\n- \"zebra in a video\" opens the clip at the moment the zebra shows up\n- \"where they talk about sleep\" jumps to that minute of a podcast\n- \"the clause about pets in the lease\" shows the PDF page, with the words marked\n- \"a dog on the beach\" finds the photo, and \"payment declined error\" the screenshot\n- a search in English can find a note written in Bengali, Arabic or any of the model's 100+ languages, and the other way around\n- \"code: retry a failed call with backoff\" finds the function in your projects, if you turn on code search\n\nExact words count too. Invoice numbers, error codes and names are matched as written, in file names, document text and the text inside screenshots, so a search gets both the meaning and the exact string.\n\nNothing you index leaves your Mac. DigUp goes online only to download the model once and to check for updates once a day. The update check sends nothing about your files, and you can turn it off. No account, no telemetry.\n\n1. Download the DMG from [Releases](https://github.com/ARahim3/DigUp/releases) and drag DigUp to Applications, or use\nHomebrew:`brew install --cask arahim3/tap/digup` .\n2. Open it. While the model downloads (865 MB, once), pick the folders to search: whole folders, or only some of their subfolders. DigUp shows how long the first pass will take for each.\n3. Press **⇧⌘Space** in any app and describe what you're looking for.\n\nDigUp needs an Apple Silicon Mac with macOS 14 or later (it's tested on macOS 26), and it keeps itself up to date.\n\n| Key | What it does | \n|---|---|\n| ⇧⌘Space | Opens the search panel from any app (you can change it in Settings) | \n| ↓ ↑ | Moves through the results | \n| ↩ | Opens the result: videos and recordings at the moment, PDFs with your words in Preview's search, code in your editor at the line | \n| Space | Quick Look, at the page or moment (once you've moved to a result) | \n| ⌘↩ | Shows it in Finder | \n| ⌘C | Copies the file, to paste anywhere | \n| ⌘O | The same search in a bigger window, with a picture grid and filters | \n\nDigUp lives in the menu bar, where you can see how indexing is going, pause it, or open Settings. The first time a video opens at its moment, macOS asks whether DigUp may control QuickTime Player; that's how it jumps there.\n\nOnly the folders you choose:\n\n- pictures and screenshots (HEIC, JPEG, PNG, RAW, WebP and more), by what they show, and screenshots by their text too\n- PDFs, page by page, scans included. A long one gets its first 30 pages right away and the rest once everything else is in (up to 5,000 pages a file)\n- documents: txt, md, rtf, doc, docx, odt, html, long ones the same way. Text that's mostly numbers, like a data export, is matched by its exact text only\n- audio of any length: the model listens to 30 seconds at a time, so DigUp takes overlapping 30-second windows and a match points to its moment\n- video of any length: a frame every few seconds, one per shot, plus the soundtrack the same way as audio\n\nOutside the folders you pick for code search, it never reads code, and inside a code project (a folder with `.git`,\n`package.json` and the like) it reads only screenshots. It never reads keys, certificates, password files, hidden\nfolders like `~/.ssh`, app bundles or caches. It skips folders that look like datasets, and never downloads iCloud\nfiles that only live in the cloud. You can skip more folders or file types in Settings. DigUp only reads your files;\nit never changes, moves or uploads them.\n\nThe first pass takes a few minutes for a few hundred files and can take an hour for a big Downloads folder. That happens once, on battery too unless you tell it to wait for a charger, and it pauses in Low Power Mode. After that, a new file is searchable a second or two after it lands.\n\nEmbeddingGemma 2 reads code too, so DigUp can search your projects. Code search is off until you turn it on, in\nSettings → Code or during setup, for the folders you pick. Each repo shows how long reading it takes and how much room\nits index needs. Then start a search with `code:` and say what the code does, or type a name that's in it:\n\n- \"code: retry a failed call with backoff\" finds the function, whatever it's called\n- \"code: refreshAccessToken\" goes to the line that defines it, not the places that call it\n- \"code: plot how many examples each class has\" finds the notebook cell\n\nResults open in your editor at the line: Zed, VS Code, Cursor, Xcode, Sublime Text, JetBrains IDEs and a few more (pick one in Settings). Code has an index of its own and never shows up in other searches. DigUp reads source files, notebooks (without their outputs) and a repo's own docs. It skips what git ignores, vendored and generated code, data files, and anything that looks like a key or a password. While you're working on code, the index catches up a minute after things go quiet.\n\nReading code takes about 20 seconds for a small app, and about 20 minutes and 130 MB of index for all of llama.cpp.\n\n```\nyour folders ─► readers (ImageIO, PDFKit, AVFoundation, and Vision for the text in screenshots)\n             ─► EmbeddingGemma 2 on llama.cpp (Metal), in a helper process that quits when it's done\n             ─► one SQLite file: a vector for every picture, page, passage, video frame and 30 s of sound,\n                plus a keyword index (code search keeps a second one, for code)\nyour words   ─► the same model's text part (~250 MB, only while you search) ─► nearest vectors + exact words\n```\n\nDigUp runs ggml-org's 8-bit build of EmbeddingGemma 2 through [llama.cpp](https://github.com/ggml-org/llama.cpp) on\nthe Mac's GPU. Every vector lives in the same 768-dimensional space, which is why one query can rank a video frame\nagainst a PDF page. A search embeds your words in milliseconds and compares them with everything in the index.\nExact-word matches get a boost, because no embedding holds an invoice number exactly.\n\nThe index remembers which model version made its vectors. An update that leaves the vectors unchanged keeps your index, and a test checks every llama.cpp update against stored reference vectors before it ships.\n\nYou'll need Xcode 26, git, and CMake (or `uv`) for llama.cpp. If `xcode-select -p` shows the Command Line Tools,\nswitch to Xcode first (`sudo xcode-select -s /Applications/Xcode.app`): they lack the SwiftUI and Swift Testing\nmacros the build needs.\n\n```\ngit clone https://github.com/ARahim3/DigUp && cd DigUp\nscripts/build-llama.sh            # llama.cpp at a pinned tag, with a one-line patch (a few minutes)\nswift build -c release && swift test\n./build.sh                        # → build.noindex/DigUp.app\n```\n\nThere's also a command-line tool, `.build/release/digup`, that indexes, searches and runs the evals from the terminal\n(`digup --help`). `scripts/make-testbed.sh` builds a folder of test files to try it on (it needs ffmpeg), and `evals/`\nholds the queries ranking changes are measured with.\n\n**How is this different from Spotlight?** Spotlight finds files by their names, text and metadata. DigUp also finds\nthem by what they show or say, and takes you to the page or moment. The two work fine side by side.\n\n**Why is the download 865 MB?** That's the model: the text part (310 MB) and the image and audio encoders (555 MB).\nThe app itself is about 20 MB.\n\n**Will it slow my Mac down?** Only the first pass is heavy. After that it reads new files only. The model runs in a\nseparate process that quits when it's done, and the search side only loads while you're searching.\n\n**Which languages?** The model knows more than 100, and DigUp searches in all of them, across languages too. The evals\ncover only English, Bengali and Arabic because those are the languages of the files DigUp was tested on, and Google\nnotes that the model isn't equally strong in every language. Two limits apply to exact words, not to meaning: inside\nscreenshots they're read by Apple's text recognition, which knows about 25 languages, and languages written without\nspaces, like Chinese, Japanese and Thai, aren't split into words.\n\n**How do I remove it?** Quit it, then delete DigUp.app and `~/Library/Application Support/DigUp`, which holds the\nmodel and the indexes. Its settings are in `~/Library/Preferences/com.abdurrahim.DigUp.plist`. With Homebrew,\n`brew uninstall --cask --zap digup` removes all of it.\n\nDigUp is built on [EmbeddingGemma 2](https://huggingface.co/google/embeddinggemma-2) by Google DeepMind (Apache 2.0),\n[llama.cpp](https://github.com/ggml-org/llama.cpp) (MIT) and [Sparkle](https://sparkle-project.org) (MIT). Their\nlicense notices ship inside the app, in `DigUp.app/Contents/Resources/Acknowledgements.txt`.\n\nDigUp isn't affiliated with Google or Apple. Gemma is a trademark of Google LLC; Mac and Spotlight are trademarks of Apple Inc.\n\nMIT", "url": "https://wpnews.pro/news/digup-search-files-on-mac-by-what-s-in-them-using-embeddinggemma-2", "canonical_source": "https://github.com/ARahim3/DigUp", "published_at": "2026-10-10 18:13:47+00:00", "updated_at": "2026-10-10 18:47:03.626192+00:00", "lang": "en", "topics": ["ai-search", "ai-tools", "large-language-models", "generative-ai", "ai-products"], "entities": ["DigUp", "ARahim3", "Google DeepMind", "EmbeddingGemma 2", "Apple Silicon", "macOS 14", "Apache 2.0", "Homebrew"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/digup-search-files-on-mac-by-what-s-in-them-using-embeddinggemma-2", "markdown": "https://wpnews.pro/news/digup-search-files-on-mac-by-what-s-in-them-using-embeddinggemma-2.md", "text": "https://wpnews.pro/news/digup-search-files-on-mac-by-what-s-in-them-using-embeddinggemma-2.txt", "jsonld": "https://wpnews.pro/news/digup-search-files-on-mac-by-what-s-in-them-using-embeddinggemma-2.jsonld"}}