Fast local file indexing and search for macOS (Everything-style), built with Go.
Platform status: GoEverything is currently macOS-only (official support).
GoEverything (ge) helps you quickly find files and folders using a local SQLite + FTS5 index.
Use it when you want to:
- Find files by name or partial text
- Filter by extension or root path
- Keep results updated with a watcher
- Use an interactive TUI for day-to-day search
macOS
curl -fsSL https://raw.githubusercontent.com/andre-carbajal/GoEverything/main/scripts/install.sh | bashYou can also install a specific version:
- macOS:
bash -s -- v0.1.0
go build -o ge ./cmd/ge
mv ./ge /usr/local/bin/ge
ge --helpHomebrew
brew tap andre-carbajal/tap
brew install goeverythinggeUseful shortcuts:
/focus search inputCtrl+Ptoggle path filteringCtrl+Gscan nowCtrl+Xstop scanqquit
ge rootsge scan --root "$HOME"ge search -q safari
ge search -q "*report*" --format jsonge scan --root "$HOME"# By name/query
ge search -q invoice
# By extension
ge search -q report --ext pdf
# Path-aware search
ge search -q project --in-path
# Wildcard path filter (implies --in-path)
ge search -q go --path-query "*projects/go*"
# Only files or only directories
ge search -q docs --only-files
ge search -q src --only-dirs# One-shot watch on a root
ge watch --root "$HOME"
# install/start persistent launchd watcher
ge watch install --root "$HOME"
ge watch startge reindexDefault paths:
- Config:
~/.config/ge/config.json - Database:
~/.config/ge/goeverything.db
Example ~/.config/ge/config.json:
{
"default_scan_path": "~",
"auto_scan_on_start": false,
"theme": "tokyonight",
"excludes": [".git", "node_modules", "Library/Caches/*"]
}Notes:
default_scan_path: default root when you do not pass--rootauto_scan_on_start: scan automatically on app startexcludes: ignore names or root-relative glob patterns
- Re-run scan on expected root:
ge scan --root "$HOME" - Search with broader query:
ge search -q a --limit 200 - Confirm DB path if using custom
--db
- Some directories require extra macOS permissions.
- Start with folders you own (
$HOME) and expand gradually.
- Tune workers and batch size:
ge scan --root "$HOME" --workers 16 --batch 3000- Add excludes for heavy folders (
node_modules, caches, build outputs).
--workers: concurrent index workers--batch: DB upsert batch size (default: 2000)--exclude: skip names or root-relative globs--all-roots: scan default roots (/,/Volumes/*)
Example:
ge scan \
--all-roots \
--workers 16 \
--batch 3000 \
--exclude .git \
--exclude node_modules \
--exclude "Library/Caches/*"ge db migrate
ge db status
ge db versionFor full command details:
ge --help
ge <command> --helpExamples:
ge scan --help
ge search --help
ge watch --help