Fast local file indexing and search for macOS, Windows, and Linux (Everything-style), built with Go.
Platform status: GoEverything officially supports macOS, Windows, and Linux. Windows scans use an NTFS metadata backend when available and automatically fall back to a portable filesystem walk. Linux uses a portable filesystem walk and discovers accessible mounts while excluding virtual filesystems.
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 | bashLinux
curl -fsSL https://raw.githubusercontent.com/andre-carbajal/GoEverything/main/scripts/install.sh | bashLinux packages (.deb and .rpm) are also published with each release. The optional desktop actions use xdg-open
or gio; moving files to the trash uses gio or trash-put from trash-cli.
Windows (PowerShell)
iwr https://raw.githubusercontent.com/andre-carbajal/GoEverything/main/scripts/install.ps1 -UseB | iexYou can also install a specific version:
- macOS:
bash -s -- v0.1.0 - Windows:
.\install.ps1 -Version v0.1.0
mkdir -p ./bin
go build -o ./bin/ge ./cmd/ge
mv ./bin/ge /usr/local/bin/ge
ge --helpHomebrew
brew tap andre-carbajal/tap
brew install goeverythingScoop
scoop bucket add andre-carbajal https://github.com/andre-carbajal/scoop-bucket
scoop install andre-carbajal/goeverythinggeThe TUI opens a location picker first. The input is focused immediately: choose Home, System, a mounted volume/drive, or type a folder path. Suggestions are completed one directory level at a time. After confirming, the selected location is scanned and the progress panel is shown before search opens. The selected location is not persisted. If the scan fails or is canceled, the picker is shown again.
Useful shortcuts:
↑/↓move through search results- In the location picker,
↑/↓select suggestions andTab/→accept completion - In the location picker,
Enterscans the selected root/path andEsccancels Enteropen selected resultCtrl+Uopen the disk-usage view;Enter/→opens files or drills into directories andh/←goes backCtrl+D/Deleteremove selected result- Click select, double-click open, right-click delete
Ctrl+Gscan nowCtrl+Xstop scanCtrl+Qquit
ge rootsge scan --root "$HOME"Windows PowerShell:
ge scan --root $env:USERPROFILEge search -q safari
ge search -q "*report*" --format jsonge scan --root "$HOME"Windows PowerShell:
ge scan --root $env:USERPROFILE# By name/query
ge search -q invoice
# By extension
ge search -q report --ext pdf
# 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"Windows supports foreground watch:
ge watch --root $env:USERPROFILEThe watcher stays in the foreground. If a persistent watcher is needed, manage it with the native service tooling for the target operating system.
ge reindexPortable data paths:
- Config and database are stored below
os.UserConfigDir()/gefor the current platform. - Existing legacy files under
~/.config/ge(and the previous Windows locations) are migrated on load.
Example ~/.config/ge/config.json:
{
"db_path": "~/.config/ge/goeverything.db",
"theme": "tokyonight",
"delete_mode": "trash",
"last_search": "report",
"excludes": [
".git",
"node_modules",
"Library/Caches/*"
]
}Notes:
db_path: SQLite database location- Scan location: selected per TUI execution and never persisted as a default
last_search: last non-empty TUI query, displayed as the next search suggestiondelete_mode:trashorpermanentfor deletes from the TUIexcludes: 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 platform permissions.
- Start with folders you own (
$HOME) and expand gradually. - On Linux, check Unix permissions, ACLs, and mount options when a directory is inaccessible. Virtual filesystems are excluded automatically when scanning the system root.
- On Windows, the NTFS backend may require an elevated terminal for full-volume scans. In
--backend automode, GoEverything falls back to the portable walker if NTFS metadata access is unavailable.
- Tune workers and batch size:
ge scan --root "$HOME" --workers 16 --batch 3000- Add excludes for heavy folders (
node_modules, caches, build outputs). - On Windows, use
--backend ntfsto require NTFS metadata scanning,--backend walkto force the portable scanner, or the default--backend autoto try NTFS first and fall back automatically.
--workers: concurrent index workers--batch: DB upsert batch size (default: 2000)--exclude: skip names or root-relative globs--all-roots: scan default platform roots (/, Linux data mounts,/Volumes/*, or Windows drive roots likeC:\)
Example:
ge scan \
--all-roots \
--workers 16 \
--batch 3000 \
--exclude .git \
--exclude node_modules \
--exclude "Library/Caches/*"ge db status
ge db versionMigrations run automatically when the database is opened. Existing databases using the compatible
goose_db_version table are resumed without destructive resets; rollback is not supported.
For full command details:
ge --help
ge <command> --helpExamples:
ge scan --help
ge search --help
ge watch --help