search your code.
without waiting.

content search by default, like rg — plus fuzzy filename search and a process monitor, all in one small binary. respects .gitignore, groups matches by file, zero network calls.

$ curl -fsSL https://aysdog.com/install-dig.sh | sh
requires Rust · Manual downloads
bash — dig
aysdog
~/Projects/dig
main
content search by default
run dig with no flags and it searches file contents, like rg — not filenames. matches are grouped under one file header instead of repeating the path on every line.
src/main.rs
  42: fn run() { // TODO handle this }
  88: // TODO add caching
 
Showing matches 1-2 of 2
typos are fine
dig -f finds files by fuzzy filename match — anrban still finds Anirban_Resume.pdf. add -c for exact, case-sensitive matching instead.
ranked by match quality -c for exact match
single binary
no runtime to install, no config to write before it works. copy it to any machine and run it.
2.6 MB
Linux · macOS · Windows
process monitor built in
dig -p shows running processes grouped by category, sorted by memory. the list refreshes itself every couple of seconds — a killed process disappears on its own.
grouped: System · Development · Browser · Media · Other
sorted by memory within each group
refreshes automatically, every ~2s
kill blocked for PID 1, self, and essential system processes
zero telemetry
no network calls, ever — not for search, not for updates, not in the background. nothing to opt out of.
no analytics no phoning home
open source
MIT licensed. built on the same ignore crate ripgrep itself uses for .gitignore-aware search.
MIT licensed 7 dependencies
content search (default)
dig TODO
search file contents for "TODO" in the current directory
dig TODO ~/work
search file contents inside a specific directory
dig -a TODO
search the whole computer instead of the current directory
dig -c TODO
case-sensitive text search — default is case-insensitive
dig -e '\d{3,}'
search using a real regex instead of a literal string
filename search
dig -f resume
fuzzy filename search — typos are fine
dig -f -c resume
exact, case-sensitive filename search
process monitor
dig -p
show running processes, grouped by category, refreshed automatically
config
dig -config
set your default code editor and file manager
how it's built
no shell injection
opening a match in your editor or revealing it in a file manager uses Command::new with explicit arguments — no shell interpolation, ever.
Command::new(editor).arg("--goto").arg(format!("{path}:{line}"))
network calls
zero. dig has no networking code at all — nothing to call out, nothing to fail open or closed.
config file
stores only your editor and file manager preference in plain text at ~/.config/dig/config — no tokens, no secrets, nothing that needs locking down.
kill guardrail
the process monitor refuses to kill PID 1, itself, its parent shell, or a list of essential system processes — regardless of what's selected.
MIT licensed
open source. fork it, break it, ship your own version.