首次使用需下载 865 MB 的模型(文本 310 MB + 图像音频编码器 555 MB),期间才能选索引文件夹;Windows 安装包未签名,需点“更多信息→仍要运行”;Linux 包名为 dig-up,因 Debian 已有无关的 digup;Wayland 下 GNOME/KDE 需在系统键盘设置里改快捷键。

DigUp
ARahim3MIT活跃维护用 EmbeddingGemma 2 在本地对照片、PDF、文档、录音、视频和代码做语义搜索,跨 Mac、Windows、Linux 的桌面文件检索工具。
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.
brew install --cask arahim3/tap/digup
sudo apt install ./DigUp_x.y.z_amd64.debMac 需 Apple Silicon 且 macOS 14 及以上;Windows 需 64 位 Windows 10/11;Linux 为 64 位 Intel/AMD,支持 Ubuntu 22.04、Debian 12、Mint 21 及更新版本。README 未说明显存或内存要求。
用 EmbeddingGemma 2 在本地按内容搜索电脑里的图片、PDF、音视频和代码
用 EmbeddingGemma 2 在本地对照片、PDF、文档、录音、视频和代码做语义搜索,跨 Mac、Windows、Linux 的桌面文件检索工具。
核心能力
- 用 EmbeddingGemma 2 把文本、图像、音频、视频映射到同一向量空间
- 按语义描述检索文件,并直接跳到 PDF 页码或音视频时间点
- 同时匹配发票号、错误码等精确字符串与文件名文本
- 支持 100 多种语言跨语言检索,英文查询可命中孟加拉语笔记
- 索引与模型全部在本地运行,仅下载模型和检查更新时联网
容易踩的坑
- v0.7.0-beta.3DigUp 0.7.0-beta.3 for Windows and Linuxpre-release2026-10-22 · 2026-10-22 10:45 UTC
查看更新说明
The fixes that went into the Mac's 0.6.2, now for Windows and Linux, with a few of this beta's own, and spreadsheets and presentations as a new kind of file.
Fixed:
- Linux: the search process exits after ten idle minutes instead of staying in memory; the next search starts it again, which takes a moment longer. Measured here, that takes the 145 MiB an idle DigUp kept to zero. (#134, @milan483)
- Linux: on a desktop without a system tray (Hyprland without a bar, for one), DigUp no longer redraws its tray icon every few seconds and fills the log with GTK warnings. (#92, @vcTaz)
- Settings → Folders says why files aren't searchable: "N not read" next to each folder, with a "why" that lists the reasons (inside code projects, in folders that look like datasets, types DigUp doesn't read). (#105)
- A folder you chose is read whole, whatever it holds. A home folder with its dotfiles in git, or a repository of notes and pictures, used to count as a code project and keep only its screenshots. (#105)
- Setup says what the folders step does before it runs, its button reads "Start indexing", and nothing is looked at until you've left the first page: the code folders found in your home folder used to be estimated the moment the window opened. (#128, @szpak)
- "Checking folders…" shows while DigUp walks your folders, before indexing begins, instead of nothing. (#90, #91 by @danieladr)
- Removing the last folder in Settings takes its files out of the results; they used to stay searchable. (#82 by @siraben)
- A folder of phone photos named by date and time (Samsung's
20261021_143022.jpg) no longer counts as a dataset and gets indexed. (#141, @utkarshraj11) - Pictures in a folder named Screenshots count as screenshots, whatever they're called; GNOME, Spectacle and Windows save there. (#63, @anmolxlight)
- The progress bar no longer starts over when new files arrive mid-pass. (#52, from #53 by @dr0pd34d)
- Keyword search is faster on big indexes: the database is memory-mapped, 18–20% on a 29,000-vector index. (#93, #94 by @Hevarh1, with @Bondyboy2001's measurements)
- Tiny stub files (
DEBUG=true, a two-line .gitignore) no longer top generic searches like "config" or "test". (#139, diagnosed by @Irohoho) - Checking that a folder can be read no longer lists it, which took a while on network folders at every scan. (#124, @Arul-)
- Copy-protected songs (.m4p) are skipped instead of failing one by one. (#108, #109 by @afalk42)
- Paired writes to the index happen in one transaction, and a zero-sized image no longer ends the indexing helper. (#45, @dowjames)
New:
- Spreadsheets and presentations: xlsx, pptx, ods and odp are read for their text, each sheet's name and rows, each slide's text and speaker notes. (#75, #86 by @njeanselme)
- Typst files (.typ) are indexed as documents. (#127, @martin0pl)
- Folders with a CACHEDIR.TAG (pip, cargo and ccache caches) stay out of both indexes. (#80 by @siraben)
Also: source builds verify the vendored downloads against pinned checksums. (#81 by @siraben)
Download:
- Windows:
DigUp_0.7.0-beta.3_x64-setup.exe, for 64-bit Windows 10 or 11. It installs for you only, with no admin rights. The installer isn't signed yet, so Windows may say it doesn't recognize the app: choose More info, then Run anyway. - Linux:
DigUp_0.7.0-beta.3_amd64.debfor Ubuntu 22.04, Debian 12, Mint 21 and newer (sudo apt install ./DigUp_0.7.0-beta.3_amd64.deb; the package is calleddig-up), or the AppImage for other distributions. Both are for 64-bit Intel and AMD processors.
If you have beta.1 or beta.2, the Windows installer and the AppImage update themselves; with the .deb, install the new one over it.
The Mac app isn't part of this release; it stays at 0.6.2, which has these fixes apart from the camera-photos one, coming in 0.6.3.
Thanks to @danieladr, @siraben, @njeanselme, @dr0pd34d, @Hevarh1 and @afalk42 for the fixes and additions that went in, and to @milan483, @vcTaz, @szpak, @utkarshraj11, @anmolxlight, @Bondy
- v0.6.2DigUp 0.6.2最新正式版2026-10-21 · 2026-10-21 18:32 UTC
Fixes for the ten days since 0.6.1, with a lot of them from people who sent pull requests, and spreadsheets and presentations as a new kind of file.
Fixed:
- Battery drain after the first pass. Two causes: a folder where something rewrites files all the time (a database, logs, a build) made DigUp re-scan every folder every few seconds, and iCloud Drive or Google Drive folders made every scan take minutes. Changes that couldn't matter are ignored now, and the crawl no longer asks the cloud about each file. (#68, #101 by @astelmach20; #106, #107 by @afalk42)
- A folder you chose is read whole, whatever it holds. A home folder with its dotfiles in git, or a repo of notes and pictures, used to count as a code project and keep only its screenshots. (#105)
- Settings → Folders says why files aren't searchable: "N not read" next to each folder opens the reasons (inside code projects, only in the cloud, types DigUp doesn't read, a Photos library). (#105, #43)
- The progress bar no longer starts over when new files arrive mid-pass. (#52, from #53 by @dr0pd34d)
- Resume right after Pause starts indexing again; it used to stay stopped until the next change. (#50, from #51 by @dr0pd34d)
- The search panel opens over a fullscreen app while a DigUp window is open or minimized, instead of switching Spaces. (#73, #131 by @TLXyloph)
- A PDF with broken metadata no longer crashes indexing. (#41, #42 by @dr0pd34d)
- Copy-protected songs (.m4p) are skipped instead of failing one by one. (#108, #109 by @afalk42)
- The "Open code in" picker follows what you choose. (#83, #74 by @maniksundar)
- Keyword search is faster on big indexes: the database is memory-mapped, 18–20% on a 29,000-vector index here. (#93, #94 by @Hevarh1, with @Bondyboy2001's measurements)
- Tiny stub files (
DEBUG=true, a two-line .gitignore) no longer top generic searches like "config" or "test". (#139, diagnosed by @Irohoho) - Checking that a folder can be read no longer lists it, which took a while on cloud folders at every scan. (#124, @Arul-)
- A .ts file that's only in the cloud is no longer downloaded to check whether it's a video. (#61)
- Code search no longer runs a repository's own configured git programs (a security fix; details in the advisory). (#78 by @siraben)
- Paired writes to the index happen in one transaction, and two crashes on odd inputs (an empty audio buffer, a zero-sized image) are guarded. (#45, @dowjames)
New:
- Spreadsheets and presentations: xlsx, pptx, ods and odp are read for their text, each sheet's name and rows, each slide's text and speaker notes. (#75, #86 by @njeanselme)
- Typst files (.typ) are indexed as documents. (#127, @martin0pl)
- Skip a Folder… on the Code tab, as on the Folders tab. (#129, @cloudlesssmarthome)
- Folders with a CACHEDIR.TAG (pip, cargo and ccache caches) stay out of both indexes. (#80 by @siraben)
- The Welcome screen says what the folders step does before it runs, and its button says Start Indexing. (#128, @szpak and @cloudlesssmarthome)
- Pictures in a folder named Screenshots count as screenshots, whatever they're called.
- The menu bar icon is the logo.
Also: source builds verify the vendored downloads against pinned checksums (#81 by @siraben). The shared fixes above come to Windows and Linux with the next beta.
Thanks to @astelmach20, @afalk42, @dr0pd34d, @TLXyloph, @maniksundar, @Hevarh1, @siraben and @njeanselme for the fixes and additions that went in, and to @Bondyboy2001, @Irohoho, @Arul-, @martin0pl, @cloudlesssmarthome, @szpak, @dowjames, @Cyboghostginx, @drale2k and @jiaxu0715 for the measurements, diagnoses and reports behind them.
To update, use DigUp → Check for Updates…, or download
DigUp-0.6.2.dmgbelow. DigUp needs an Apple Silicon Mac with macOS 14 or later. - v0.7.0-beta.2DigUp 0.7.0-beta.2 for Windows and Linuxpre-release2026-10-18 · 2026-10-18 05:26 UTC
查看更新说明
Fixes for what people ran into in the first beta, on Linux and Windows, and three security fixes.
Fixed:
- Windows: a file between 2 and 4 GB in a chosen folder stopped indexing before it started, so nothing in that folder or the folders after it was ever indexed. (#87, from #100 by @zilingzhang)
- Linux: the search panel in the AppImage no longer stops responding when a recording comes up first in the results. The AppImage was missing the GStreamer plugins WebKit needs. (#64 by @07rjain)
- Linux: on some distributions (Debian 13 and Ubuntu 26.04 among them), the model download stopped after each file it finished, and DigUp had to be opened again to go on. It now finishes in one go, and if a download ends without a word, DigUp checks the files once more before calling it failed. (#64, #92)
- Linux: the indexing helper never exited after finishing, and stayed in the background until DigUp quit. (#63)
- Linux: DigUp started from an extracted AppImage wrote a login entry that crashed at login. The entry now runs AppRun. (#125)
- The preview no longer marks "in", "at" and other words search ignores, and opens the passage at the words that matched. (#104)
- A malformed RTF file or a damaged HEIF photo could end the indexing helper instead of being skipped. (#95, #96)
New:
- Settings → General → "Run the model on the processor", for a computer whose graphics card gives empty or wrong results. (#97)
Security:
- Code search no longer lets a repository's own git configuration run a program while DigUp lists its files. A project folder that arrived unzipped or copied could carry such a configuration; cloned repositories were never affected, and code search is off unless you turned it on. (from #78 by @siraben; reported privately, the advisory follows)
- A crafted HEIF photo, or a document with a zip entry claiming gigabytes, could stop the indexing helper on Linux and Windows. (reported privately, the advisories follow)
Download:
- Windows:
DigUp_0.7.0-beta.2_x64-setup.exe, for 64-bit Windows 10 or 11. It installs for you only, with no admin rights. The installer isn't signed yet, so Windows may say it doesn't recognize the app: choose More info, then Run anyway. - Linux:
DigUp_0.7.0-beta.2_amd64.debfor Ubuntu 22.04, Debian 12, Mint 21 and newer (sudo apt install ./DigUp_0.7.0-beta.2_amd64.deb; the package is calleddig-up), or the AppImage for other distributions. Both are for 64-bit Intel and AMD processors.
If you have beta.1, the Windows installer and the AppImage update themselves; with the .deb, install the new one over it. From this version on, Windows and Linux get their updates separately, so a fix for one of them no longer means a download for the other.
The Mac app isn't part of this release; it stays at 0.6.1, and its next release carries the code-search fix.
Thanks to @zilingzhang, @07rjain, @siraben and @Eotel, whose fixes are in this release, and to everyone who reported.
- v0.7.0-beta.1DigUp 0.7.0-beta.1 for Windows and Linuxpre-release2026-10-14 · 2026-10-14 17:22 UTC
查看更新说明
DigUp now runs on Windows and Linux. It's the same search as on the Mac: EmbeddingGemma 2 puts your pictures, PDFs, documents, recordings and videos in one space, and you find any of them by describing what you remember. This is a beta. It works, but it has had far less use than the Mac app, so expect some rough edges. (#1)
Download:
- Windows:
DigUp_0.7.0-beta.1_x64-setup.exe, for 64-bit Windows 10 or 11. It installs for you only, with no admin rights. The installer isn't signed yet, so Windows may say it doesn't recognize the app: choose More info, then Run anyway. - Linux:
DigUp_0.7.0-beta.1_amd64.debfor Ubuntu 22.04, Debian 12, Mint 21 and newer (sudo apt install ./DigUp_0.7.0-beta.1_amd64.deb; the package is calleddig-up), or the AppImage for other distributions. Both are for 64-bit Intel and AMD processors.
The Mac app isn't part of this release; it stays at 0.6.1.
What to expect:
- On first launch DigUp downloads the model (865 MB) while you pick the folders to search, and shows how long the first pass will take on your computer.
- Ctrl+Shift+Space opens the search from any app. On GNOME and KDE under Wayland, DigUp adds it to the desktop's own keyboard shortcuts during setup; on other Wayland desktops, Settings shows the command to bind to a shortcut.
- DigUp runs the model on your graphics card when a quick check finds it faster than the processor and giving the same results, and on the processor otherwise. On a processor alone a picture takes a few seconds, so a large photo library takes a while the first time. After that, only new files are read.
- Not in this version yet: the text inside screenshots isn't read (a screenshot is found by what it shows, not by a code typed into the search), and old Word .doc files, RAW photos and SVG pictures are skipped.
- From here on, the Windows installer and the AppImage update themselves. With the .deb, DigUp tells you when there's a new version.
If you try it, two things help most: an issue for anything that doesn't work, and, if you have a graphics card, whether DigUp used it. The last line of
speed.logsays"device": "gpu"or"cpu". It's in%LOCALAPPDATA%\com.abdurrahim.DigUp\logson Windows and in~/.local/share/com.abdurrahim.DigUp/logson Linux. - Windows:
- v0.6.1DigUp 0.6.12026-10-12 · 2026-10-12 16:20 UTC
查看更新说明
Fixes for what people ran into in the first week, and a few additions.
Fixed:
- Typing with an input method that composes text (Korean, Japanese, Chinese) no longer breaks into loose letters in the search field. (#13, from #15 by @eliottchoi)
- A word that's in your files only as the start of a longer one ("Grok" in "Grok4") stays found after you stop typing. It used to show while you typed, then disappear. (#40)
- A chosen folder with accents, Korean or Japanese in its name (Google Drive's "내 드라이브", for one) no longer stops indexing for every folder. (#14, from #16 by @eliottchoi)
- Indexing keeps going while your folders keep changing. Before, a slow scan of a big folder could start over and over without reading a single file. (#23)
- DigUp's helpers quit with DigUp. A folder estimate could keep running at full speed after quitting, even after uninstalling. (#22)
- If reading one file runs away (a PDF did, using tens of gigabytes of memory), DigUp now stops it, skips that file and goes on. Quit and Pause stop indexing even when it's stuck on a file. (#3)
- Indexing long text documents no longer slowly grows the helper's memory (about 30 KB a chunk of text). (#3)
- Settings scrolls when you have many folders, instead of growing past the bottom of the screen. (#17)
- Code folders show their files right away, and Settings says they're read after your other folders. They used to show "0 of 0". (#21)
- Scanned PDF pages are read with text recognition too, as screenshots are, so an invoice or order number on a scan is found when you type it. (#32, from #33 by @markoblogo)
- SVG pictures (diagrams, logos) are read too. They used to be skipped.
New:
- Index only at set hours, in Settings → Folders: indexing waits for those hours (1:00 to 7:00 by default) and search works all day. (#26, from #27 by @MichaelC001)
- If your network blocks the model download, download the two files somewhere else and pick them with Use Files… in Settings → Storage. DigUp checks them before it uses them. (#25)
- Time estimates fit your Mac. DigUp learns how long each kind of file takes on it, and starts from a quick speed check.
- The search panel fades in and out. (#19, based on #20 by @sdraeger)
Also: the
DIGUP_WORKER_DIRtest switch only works in development runs (#9), source builds pin llama.cpp to an exact commit (#11), and the Homebrew cask is only updated to a DMG signed and notarized as DigUp (#12).Thanks to @eliottchoi, @huaiwen, @MichaelC001, @sdraeger, @markoblogo and @stozo04 for fixes, designs and diagnoses that went into this release, and to @jiaxu0715, @astelmach20, @MuhAssar, @ddh0, @ytsav, @ianchanning and @bakaburg1 for their reports.
To update, use DigUp → Check for Updates…, or download
DigUp-0.6.1.dmgbelow. DigUp needs an Apple Silicon Mac with macOS 14 or later.
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
EmbeddingGemma 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 on a laptop.
DigUp brings that to the files on your computer, on a Mac, on Windows or on Linux. 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.
What you can find
- "zebra in a video" opens the clip at the moment the zebra 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
- "a dog on the beach" finds the photo, and "payment declined error" the screenshot
- 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
- "code: retry a failed call with backoff" finds the function in your projects, if you turn on code search
Exact words count too. Invoice numbers, error codes and names are matched as written, in file names and document text, so a search gets both the meaning and the exact string. On a Mac that includes the text inside screenshots.
Private
Nothing you index leaves your computer. 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.
Install
[!NOTE] DigUp is published only here, on this repository's Releases page, and at digup.arahim.dev. Other sites offering DigUp aren't the project's; don't download from them.
Mac. Download the DMG from Releases and drag DigUp to
Applications, or use Homebrew: brew install --cask arahim3/tap/digup. It needs an Apple Silicon Mac with macOS 14 or
later.
Windows. Download DigUp_x.y.z_x64-setup.exe from the
beta release and run it. It installs for you only, with
no admin rights. Windows may say it doesn't recognize the app, because the installer isn't signed yet: choose More
info, then Run anyway. It needs 64-bit Windows 10 or 11.
Linux. On Ubuntu, Debian, Mint and the like, download the .deb and install it:
sudo apt install ./DigUp_x.y.z_amd64.deb
The package is called dig-up, because Debian already has an unrelated digup. Anywhere else, download the
AppImage, make it executable and run it. Both are for 64-bit Intel and AMD processors and work on Ubuntu 22.04,
Debian 12, Mint 21 and newer.
Then, on any of them:
- Open DigUp. 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, measured on your computer.
- Press the shortcut in any app and describe what you're looking for: ⇧⌘Space on a Mac, Ctrl+Shift+Space on Windows and Linux.
DigUp keeps itself up to date: the Mac app, the Windows installer and the AppImage install updates with one click. With the .deb, DigUp tells you when there's a new version and opens its release page.
Using it
| Mac | Windows and Linux | What it does |
|---|---|---|
| ⇧⌘Space | Ctrl+Shift+Space | Opens the search panel from any app (you can change it) |
| ↓ ↑ | ↓ ↑ | Moves through the results |
| ↩ | Enter | Opens the result: PDFs at the page, recordings and videos at the moment, code in your editor at the line |
| Space | Space | A big preview, at the page or moment (once you've moved to a result) |
| ⌘↩ | Ctrl+Enter | Shows it in Finder, Explorer or your file manager |
| ⌘C | Ctrl+C (in the window) | Copies the file, to paste anywhere |
| ⌘O | Ctrl+O | The same search in a bigger window, with a picture grid and filters |
DigUp lives in the menu bar on a Mac and in the tray on Windows and Linux, where you can see how indexing is going, pause it, or open Settings. Opening it from the Start menu or your app list shows the search window.
A few things differ by system:
- On a Mac, a video opens at its moment in QuickTime Player (macOS asks once whether DigUp may control it) or IINA, and a PDF opens in Preview with your words in its search. On Windows and Linux, PDFs open at the page in your PDF viewer if it's one that can be told a page (Edge, Chrome, Firefox, Acrobat, SumatraPDF, Evince, Okular), and recordings and videos at the moment in VLC, mpv or MPC-HC. Other apps open the file from the start; the big preview plays it from the moment either way.
- On GNOME and KDE under Wayland, which don't let apps set their own shortcuts, DigUp adds Ctrl+Shift+Space to the desktop's keyboard settings during setup, and you change it there. On other Wayland desktops, Settings shows the command to give a shortcut of your own.
- On GNOME, the tray icon needs the AppIndicator extension, which Ubuntu includes. Without it, the window's ⋯ menu has the same items.
What it reads
Only the folders you choose:
- pictures and screenshots (JPEG, PNG, HEIC, WebP and more), by what they show, and on a Mac screenshots by their text too
- 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)
- documents: txt, md, typ, rtf, docx, odt, html, and on a Mac doc, long ones the same way. Text that's mostly numbers, like a data export, is matched by its exact text only
- spreadsheets and presentations: xlsx, ods, pptx and odp, read for their text: each sheet's name and rows, each slide's text and speaker notes
- 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
- video of any length: a frame every few seconds, one per shot, plus the soundtrack the same way as audio
Outside the folders you pick for code search, it never reads code, and inside a code project (a folder with .git,
package.json and the like) it reads only screenshots. It never reads keys, certificates, password files, hidden
folders like .ssh, apps or caches. It skips folders that look like datasets, and never downloads files that only
live in the cloud (iCloud on a Mac, OneDrive on Windows). You can skip more folders or file types in Settings. DigUp
only reads your files; it never changes, moves or uploads them.
The first pass happens once. On a Mac it takes a few minutes for a few hundred files and can take an hour for a big Downloads folder. On Windows and Linux, DigUp runs the model on the graphics card where that's faster and on the processor otherwise; on a processor alone a picture takes a few seconds (about five on a 2017 laptop's Core i5), so a large photo library can take hours, which is why setup shows the time first. After that, a new file is searchable a few seconds after it lands.
Code
EmbeddingGemma 2 reads code too, so DigUp can search your projects. Code search is off until you turn it on, in
Settings → Code or during setup, for the folders you pick. Each repo shows how long reading it takes and how much room
its index needs. Then start a search with code: and say what the code does, or type a name that's in it:
- "code: retry a failed call with backoff" finds the function, whatever it's called
- "code: refreshAccessToken" goes to the line that defines it, not the places that call it
- "code: plot how many examples each class has" finds the notebook cell
Results open in your editor at the line: Zed, VS Code, Cursor, Sublime Text, JetBrains IDEs and a few more, Xcode on a Mac and Notepad++ on Windows (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.
On a Mac, reading code takes about 20 seconds for a small app, and about 20 minutes and 130 MB of index for all of llama.cpp.
How it works
your folders ─► readers that turn files into pictures, text and sound
─► EmbeddingGemma 2 on llama.cpp, in a helper process that quits when it's done
─► one SQLite file: a vector for every picture, page, passage, video frame and 30 s of sound,
plus a keyword index (code search keeps a second one, for code)
your words ─► the same model's text part (~250 MB, only while you search) ─► nearest vectors + exact words
DigUp runs ggml-org's 8-bit build of EmbeddingGemma 2 through llama.cpp: on the Mac's GPU with Metal, and on Windows and Linux on the GPU with Vulkan when a quick check at setup finds it faster than the processor and getting the same results. Every vector lives in the same 768-dimensional space, which is why one query can rank a video frame against a PDF page. A search embeds your words in milliseconds and compares them with everything in the index. Exact-word matches get a boost, because no embedding holds an invoice number exactly.
The search engine is the same Swift code on every system. On a Mac it reads files with macOS's own frameworks (ImageIO, PDFKit, AVFoundation, and Vision for the text in screenshots) and the app is SwiftUI. On Windows and Linux it reads them with PDFium, ffmpeg, stb and miniz, and the app around it is built with Tauri.
The 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.
Build from source
On a Mac you'll need Xcode 26, git, and CMake (or uv) for llama.cpp. If xcode-select -p shows the Command Line
Tools, switch to Xcode first (sudo xcode-select -s /Applications/Xcode.app): they lack the SwiftUI and Swift Testing
macros the build needs.
git clone https://github.com/ARahim3/DigUp && cd DigUp
scripts/build-llama.sh # llama.cpp at a pinned tag, with a one-line patch (a few minutes)
swift build -c release && swift test
./build.sh # → build.noindex/DigUp.app
On Windows and Linux you'll need Swift 6.4, Rust and Node; on Windows also Visual Studio's C++ build tools, with the
commands run in Git for Windows' bash. scripts/fetch-vendor.sh and scripts/build-llama.sh get the libraries, then
scripts/package-linux.sh makes the .deb and the AppImage, and scripts/package-windows.sh the installer.
The packages workflow has every step, down to the packages each system needs.
There's also a command-line tool, .build/release/digup, that indexes, searches and runs the evals from the terminal
(digup --help). scripts/make-testbed.sh builds a folder of test files to try it on on a Mac (it needs ffmpeg), and
evals/ holds the queries ranking changes are measured with.
FAQ
How is this different from Spotlight or Windows Search? They find files by their names, text and metadata. DigUp also finds them by what they show or say, and takes you to the page or moment. They work fine side by side.
What's different on Windows and Linux? The search is the same: the same model, the same results. Two things are missing for now. The text inside screenshots isn't read yet, so a screenshot is found by what it shows rather than by an exact code typed into the search. And doc files from old Word versions, RAW photos and SVG pictures are only read on a Mac.
Why is the download 865 MB? That's the model: the text part (310 MB) and the image and audio encoders (555 MB). The app itself is about 20 MB on a Mac, and on Windows and Linux 40 to 140 MB depending on the package, since those carry their own PDF, video and image readers.
Will it slow my computer down? Only the first pass is heavy. After that it reads new files only. The model runs in a separate process that quits when it's done, and the search side only loads while you're searching.
Which languages? The model knows more than 100, and DigUp searches in all of them, across languages too. The evals cover only English, Bengali and Arabic because those are the languages of the files DigUp was tested on, and Google notes that the model isn't equally strong in every language. Two limits apply to exact words, not to meaning: the text inside screenshots is read only on a Mac, by Apple's text recognition, which knows about 25 languages, and languages written without spaces, like Chinese, Japanese and Thai, aren't split into words.
How do I remove it?
On a Mac, quit it, then delete DigUp.app and ~/Library/Application Support/DigUp, which holds the model and the
indexes. Its settings are in ~/Library/Preferences/com.abdurrahim.DigUp.plist. With Homebrew, brew uninstall --cask --zap digup removes all of it.
On Windows, uninstall it in Settings → Apps; tick "Delete the application data" to remove the model and the index too.
On Linux, sudo apt remove dig-up (or delete the AppImage), then delete ~/.local/share/digup (the model and the
index), ~/.config/com.abdurrahim.DigUp, ~/.local/share/com.abdurrahim.DigUp and, if it opened at login,
~/.config/autostart/DigUp.desktop. On GNOME, also remove its shortcut in Settings → Keyboard.
Support
DigUp is free and open source, and it stays that way. If it helps you and you'd like to support it, you can buy me a coffee.
Thanks
DigUp is built on EmbeddingGemma 2 by Google DeepMind (Apache 2.0) and llama.cpp (MIT). The Mac app uses Sparkle (MIT) for updates. The Windows and Linux app is built with Tauri (MIT or Apache 2.0) and reads files with PDFium (BSD), FFmpeg (LGPL), stb (public domain) and miniz (MIT). Their license notices ship with the app.
DigUp isn't affiliated with Google, Apple or Microsoft. Gemma is a trademark of Google LLC; Mac and Spotlight are trademarks of Apple Inc.; Windows is a trademark of Microsoft Corporation.
License
MIT