Fast, local-first directory navigation for Zsh, Bash, Fish, PowerShell, and Windows.
9
stars
27
commits
Rust
primary language
Sep 9, 2026
updated
|
💚 Support Dirgo If Dirgo saves you time, star it on GitHub, share feedback, or contribute a fix. Support development with BTC or USDT TRC20 → |
Go anywhere. Instantly.
A fast, local-first directory navigator and command companion for the terminal.
Install · Quick start · Picker · Commands · Configuration · Support · Security · Roadmap
Dirgo indexes your filesystem, finds directories you have never visited, and uses local history to improve ranking over time.
| ⚡ 55 ms | 🗂️ 1M directories | 🔒 Zero telemetry | 🐚 Four shells |
|---|---|---|---|
| First picker paint¹ | Tested index size | Local data only | Zsh · Bash · Fish · PowerShell |
Type a fragment. See live matches. Press Enter. You are there.
Search the indexed filesystem by a fragment instead of remembering a full path. Dirgo can discover directories you have never visited; local history improves ranking over time without becoming the only source of results.
dgo punk # jump by directory name
dgo . api # search below the current directory
dgo repo web # search project roots
dgo recent # browse navigation history
Exact paths, bookmarks, and clear matches resolve immediately. Close or ambiguous matches open the picker instead of sending you to the wrong project. This conservative default is designed to work without spending time tuning aggressive jump heuristics.
The responsive picker streams candidates, filters while you type, previews directory contents, and restores the terminal cleanly when it closes.
Ctrl-J / Ctrl-K or arrow keys move the selection.Enter navigates; Esc or Ctrl-C cancels.Tab toggles the directory preview.Ctrl-O, Ctrl-Y, and Ctrl-E open, copy, or launch the configured editor.NO_COLOR=1, --no-unicode, and TERM=dumb provide compatible fallbacks.Bookmarks, recents, project roots, and per-shell back/forward history cover both repeat navigation and discovery:
dgo +work # bookmark the current directory
dgo @work # jump to it
dgo back # move back in this shell session
dgo forward # move forward again
Action flags can appear before or after the query. Dirgo passes paths as data, never as executable shell fragments.
dgo --open # open the current directory
dgo --open "/full/path/to/folder"
dgo --open "$HOME\Project" # PowerShell / Windows
dgo --finder "project name"
dgo "project name" --finder
dgo api --open
dgo api --code
dgo api --copy
dgo api --print
The interactive dgo picker also accepts an existing absolute or relative
directory path, even when that directory is not in Dirgo's index.
Local, opt-in suggestions combine directories, filesystem entries, executables, known subcommands and options, navigation history, and optional filtered command history. Selection inserts text only; Dirgo never submits or executes it.
dgo suggestions enable
Tab insertion.Tab completion.Ctrl+F inserts the best result and Shift+Tab
opens the explicit source-labelled picker.Command history remains off until separately enabled. Likely credentials and unsafe terminal text are rejected before storage. Private tools can be described with bounded, data-only TOML metadata; Dirgo does not run the tool or its completion scripts while you type.
Dirgo now adds commands declared by the project you are inside and marks them as
PROJ. It understands:
package.json;
Real Zsh session · several scenes · every Tab inserts text and runs nothing.
Manifest files are parsed as bounded data in a background refresh. Dirgo never invokes a package manager, Cargo, Make, Just, Docker, or a completion script to build this list. The private cache is atomic, isolated per project, and capped at 64 projects.
When command history is explicitly enabled, Dirgo learns from completed commands locally. It keeps projects separate, prefers commands that worked in the current project and directory, and treats imported 0.5 history as neutral when outcome information is unavailable.
dgo suggestions history enable
dgo suggestions history status
dgo suggestions history list --project .
dgo suggestions history inspect 42
dgo suggestions history export --project . --output ./dirgo-history.jsonl
Commands containing likely credentials or a shell-native leading-space privacy
marker are not recorded at all. Exports omit cwd and project paths unless
--include-paths is supplied, refuse symlink destinations, and require
--force to replace a file. Before intentionally downgrading to Dirgo 0.5,
export or clear the opt-in history because 0.5 does not understand schema v2.
Dirgo has no account, cloud service, telemetry, or network request during normal navigation. Its index is local, bounded, rebuildable, and published atomically. Shell integration is previewed before installation, backed up, and removable.
One dgo binary; no runtime dependency on fd, fzf, zoxide, or eza.
Homebrew is a first-class install and update path:
brew install rudysource/tap/dirgo
dgo setup
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/RudySource/Dirgo/releases/latest/download/dirgo-installer.sh | sh
The installer detects the platform, verifies SHA-256, installs to
~/.local/bin, then asks before connecting the shell.
irm https://github.com/RudySource/Dirgo/releases/latest/download/dirgo-installer.ps1 | iex
The installer verifies SHA-256, installs dgo.exe with its predictor, and asks
before changing the user PATH. Open PowerShell 7+ and run dgo setup.
scoop bucket add rudysource https://github.com/RudySource/scoop-bucket
scoop install rudysource/dirgo
Windows support targets PowerShell 7+ and Windows Terminal. Legacy Windows
PowerShell 5.1 and cmd.exe are not supported.
dgo setup previews one managed block for Zsh, Bash, Fish, or PowerShell. On
approval it creates a timestamped backup and updates the profile atomically.
dgo setup --dry-run # preview only
dgo setup # connect or repair
dgo setup --remove # remove only Dirgo's managed block
It never uses sudo or silently edits a non-interactive shell. Automation must
opt in with dgo setup --yes.
Download the archive and SHA256SUMS from the latest GitHub Release.
# Linux
sha256sum --check SHA256SUMS
# macOS
shasum -a 256 -c SHA256SUMS
On Windows, compare Get-FileHash -Algorithm SHA256 <archive> with
SHA256SUMS. Release assets also include GitHub attestations:
gh attestation verify <archive> --repo RudySource/Dirgo.
Build from source with Rust 1.89 or newer:
git clone https://github.com/RudySource/Dirgo.git
cd Dirgo
cargo build --release --locked
install -m 755 target/release/dgo ~/.local/bin/dgo
dgo setup
dgo refresh # index your configured roots
dgo punk # jump by directory name
dgo # browse everything
dgo . api # search only below the current directory
dgo ? api # always ask when names collide
dgo +work # bookmark the current directory
dgo @work # jump to the bookmark
dgo repo punk # search project roots
dgo recent # browse Dirgo history
dgo back # move back in this shell session
The first search creates the index. Run dgo refresh after filesystem changes.
dgo [QUERY]... resolve or choose a directory
dgo setup connect or repair shell integration
dgo refresh rebuild the filesystem index
dgo query <QUERY> [--json] resolve without navigating
dgo explain <QUERY> show candidates and score components
dgo root print the nearest project root
dgo repo [QUERY] search indexed project roots
dgo recent [QUERY] search Dirgo navigation history
dgo back | forward navigate this shell session
dgo bookmarks list bookmarks
dgo bookmark add NAME create or repair a bookmark
dgo bookmark rename OLD NEW rename a bookmark
dgo bookmark remove NAME remove a bookmark
dgo import zoxide import validated local zoxide scores
dgo config path | show inspect configuration
dgo doctor diagnose the installation
dgo stats show local index statistics
dgo support show support and security guidance
dgo suggestions enable enable local shell suggestions
dgo suggestions status inspect suggestion privacy settings
dgo suggestions history enable opt in to filtered command history
dgo suggestions history status inspect schema and local row counts
dgo suggestions history list list current-project command aggregates
dgo suggestions history inspect EVENT_ID inspect one completed command
dgo suggestions history clear erase all history, or select a scope
dgo suggestions history export export versioned, path-redacted JSONL
dgo --update install the latest stable release
dgo update-notifications off disable new-version notices
dgo update-notifications on enable new-version notices
Run dgo --help or dgo <command> --help for the complete interface.
Dirgo reads ${XDG_CONFIG_HOME:-~/.config}/dirgo/config.toml.
schema_version = 1
roots = ["~/Developer", "~/Projects"]
ignore = [".git", "node_modules", "Library", ".cache", "target", "dist"]
respect_gitignore = true
follow_symlinks = false
[ranking]
frequency = 1.0
recency = 0.85
proximity = 0.55
bookmarks = 1.25
projects = 0.30
[ui]
preview = true
accent = "cyan"
icons = "auto"
height_percent = 70
[actions]
editor = "auto"
[suggestions]
enabled = false
command_history = false
live_panel = true
native_completions = true
debounce_ms = 30
native_timeout_ms = 80
max_results = 8
retention_entries = 10000
retention_days = 180
deny_patterns = []
The rebuildable index lives below XDG_CACHE_HOME; bookmarks and history stay
below XDG_STATE_HOME. Persistent state is bounded and pruned.
| Key | Action |
|---|---|
↑ / ↓, Ctrl-K / Ctrl-J | Move the selection |
Home / End, PageUp / PageDown | Move through long lists |
Enter | Go to the selected directory |
Tab | Toggle the directory preview |
Shift-↑ / Shift-↓ | Scroll directory contents without moving the selection |
Ctrl-R | Rebuild the index atomically |
Ctrl-O / Ctrl-Y / Ctrl-E | Open, copy, or launch the configured editor |
Esc / Ctrl-C | Close without navigating |
| Platform | Distribution | Navigation support |
|---|---|---|
| macOS Apple Silicon | Homebrew, installer, archive | Zsh, Bash, Fish |
| macOS Intel | Installer, archive | Zsh, Bash, Fish |
| Linux x86_64 GNU | Installer, archive; glibc 2.35+ | Zsh, Bash, Fish |
| Windows x86_64 MSVC | PowerShell installer, Scoop, archive | PowerShell 7+; native predictor on 7.4.x |
WSL uses its Zsh, Bash, or Fish adapter.
Apple Silicon macOS, optimized build, three-sample PTY run:
| Indexed directories | First picker paint | First useful result |
|---|---|---|
| 100,000 | 52.628 ms | 35.154 ms |
| 500,000 | 53.529 ms | 35.209 ms |
| 1,000,000 | 55.180 ms | 35.236 ms |
¹ Reproducible local measurements, not universal guarantees. The 1M release
budget is 100 ms for both metrics. Run dgo bench --query punk --samples 5
against your own index.
--force.[!WARNING] The local index contains filesystem paths. Remove personal paths from logs and screenshots.
Report vulnerabilities privately through SECURITY.md.
| Version | Status | User-visible scope |
|---|---|---|
| 0.5.1 | Current stable release | Project-scoped PROJ commands from bounded local manifests, background cache refresh, and project-first ranking. |
| 0.6 | Release candidate in this branch | Opt-in completed-command context, schema v2 migration, project/success-aware ranking, scoped inspection, clearing, and privacy-preserving export. |
The 0.6 release is published only after the cross-platform release gate, installer/package inspection, and final documentation review pass. Later features stay proposals until they have an implementation, regression coverage, and a real user-facing demo.
Dirgo is free and open source. Voluntary donations help fund maintenance, release infrastructure, platform support, and future improvements.
|
₿ Bitcoin Network: Bitcoin · Asset: BTC Wallet address
|
|
₮ USDT Network: TRON · Token standard: TRC20 · Asset: USDT Wallet address
|
[!IMPORTANT] Verify the complete address and network before sending. Cryptocurrency transfers are irreversible. Donations are voluntary and do not purchase priority support, roadmap influence, or service guarantees.
You can also star the repository, report a focused issue, or contribute.
| Symptom | Fix |
|---|---|
dgo prints a path but does not change directory | Run dgo setup, open a new terminal, and confirm type dgo reports a function. |
| A terminal starts slowly or closes | Run command dgo doctor, then command dgo setup --remove if needed. |
| A new or moved directory is missing | Run dgo refresh. |
| Configuration is invalid | Run dgo config path, repair the file, then run dgo doctor. |
| A query is ambiguous in a pipe or CI | Use dgo query <query> --json and handle exit codes 3 and 4. |
| The picker is unreadable | Try NO_COLOR=1, --no-unicode, or TERM=dumb. |
For environment-safe support information, run dgo support or read SUPPORT.md.
cargo build --locked
cargo test --all-features --locked
See CONTRIBUTING.md for development checks and pull-request expectations.
Dirgo is available under the MIT license or Apache License 2.0.
27 commits
Rust
88.6%
Shell
4.8%
TypeScript
3.8%
PowerShell
1.4%
C#
1.4%
Fast, local-first directory navigation for Zsh, Bash, Fish, PowerShell, and Windows.
9
stars
27
commits
Rust
primary language
Sep 9, 2026
updated
|
💚 Support Dirgo If Dirgo saves you time, star it on GitHub, share feedback, or contribute a fix. Support development with BTC or USDT TRC20 → |
Go anywhere. Instantly.
A fast, local-first directory navigator and command companion for the terminal.
Install · Quick start · Picker · Commands · Configuration · Support · Security · Roadmap
Dirgo indexes your filesystem, finds directories you have never visited, and uses local history to improve ranking over time.
| ⚡ 55 ms | 🗂️ 1M directories | 🔒 Zero telemetry | 🐚 Four shells |
|---|---|---|---|
| First picker paint¹ | Tested index size | Local data only | Zsh · Bash · Fish · PowerShell |
Type a fragment. See live matches. Press Enter. You are there.
Search the indexed filesystem by a fragment instead of remembering a full path. Dirgo can discover directories you have never visited; local history improves ranking over time without becoming the only source of results.
dgo punk # jump by directory name
dgo . api # search below the current directory
dgo repo web # search project roots
dgo recent # browse navigation history
Exact paths, bookmarks, and clear matches resolve immediately. Close or ambiguous matches open the picker instead of sending you to the wrong project. This conservative default is designed to work without spending time tuning aggressive jump heuristics.
The responsive picker streams candidates, filters while you type, previews directory contents, and restores the terminal cleanly when it closes.
Ctrl-J / Ctrl-K or arrow keys move the selection.Enter navigates; Esc or Ctrl-C cancels.Tab toggles the directory preview.Ctrl-O, Ctrl-Y, and Ctrl-E open, copy, or launch the configured editor.NO_COLOR=1, --no-unicode, and TERM=dumb provide compatible fallbacks.Bookmarks, recents, project roots, and per-shell back/forward history cover both repeat navigation and discovery:
dgo +work # bookmark the current directory
dgo @work # jump to it
dgo back # move back in this shell session
dgo forward # move forward again
Action flags can appear before or after the query. Dirgo passes paths as data, never as executable shell fragments.
dgo --open # open the current directory
dgo --open "/full/path/to/folder"
dgo --open "$HOME\Project" # PowerShell / Windows
dgo --finder "project name"
dgo "project name" --finder
dgo api --open
dgo api --code
dgo api --copy
dgo api --print
The interactive dgo picker also accepts an existing absolute or relative
directory path, even when that directory is not in Dirgo's index.
Local, opt-in suggestions combine directories, filesystem entries, executables, known subcommands and options, navigation history, and optional filtered command history. Selection inserts text only; Dirgo never submits or executes it.
dgo suggestions enable
Tab insertion.Tab completion.Ctrl+F inserts the best result and Shift+Tab
opens the explicit source-labelled picker.Command history remains off until separately enabled. Likely credentials and unsafe terminal text are rejected before storage. Private tools can be described with bounded, data-only TOML metadata; Dirgo does not run the tool or its completion scripts while you type.
Dirgo now adds commands declared by the project you are inside and marks them as
PROJ. It understands:
package.json;
Real Zsh session · several scenes · every Tab inserts text and runs nothing.
Manifest files are parsed as bounded data in a background refresh. Dirgo never invokes a package manager, Cargo, Make, Just, Docker, or a completion script to build this list. The private cache is atomic, isolated per project, and capped at 64 projects.
When command history is explicitly enabled, Dirgo learns from completed commands locally. It keeps projects separate, prefers commands that worked in the current project and directory, and treats imported 0.5 history as neutral when outcome information is unavailable.
dgo suggestions history enable
dgo suggestions history status
dgo suggestions history list --project .
dgo suggestions history inspect 42
dgo suggestions history export --project . --output ./dirgo-history.jsonl
Commands containing likely credentials or a shell-native leading-space privacy
marker are not recorded at all. Exports omit cwd and project paths unless
--include-paths is supplied, refuse symlink destinations, and require
--force to replace a file. Before intentionally downgrading to Dirgo 0.5,
export or clear the opt-in history because 0.5 does not understand schema v2.
Dirgo has no account, cloud service, telemetry, or network request during normal navigation. Its index is local, bounded, rebuildable, and published atomically. Shell integration is previewed before installation, backed up, and removable.
One dgo binary; no runtime dependency on fd, fzf, zoxide, or eza.
Homebrew is a first-class install and update path:
brew install rudysource/tap/dirgo
dgo setup
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/RudySource/Dirgo/releases/latest/download/dirgo-installer.sh | sh
The installer detects the platform, verifies SHA-256, installs to
~/.local/bin, then asks before connecting the shell.
irm https://github.com/RudySource/Dirgo/releases/latest/download/dirgo-installer.ps1 | iex
The installer verifies SHA-256, installs dgo.exe with its predictor, and asks
before changing the user PATH. Open PowerShell 7+ and run dgo setup.
scoop bucket add rudysource https://github.com/RudySource/scoop-bucket
scoop install rudysource/dirgo
Windows support targets PowerShell 7+ and Windows Terminal. Legacy Windows
PowerShell 5.1 and cmd.exe are not supported.
dgo setup previews one managed block for Zsh, Bash, Fish, or PowerShell. On
approval it creates a timestamped backup and updates the profile atomically.
dgo setup --dry-run # preview only
dgo setup # connect or repair
dgo setup --remove # remove only Dirgo's managed block
It never uses sudo or silently edits a non-interactive shell. Automation must
opt in with dgo setup --yes.
Download the archive and SHA256SUMS from the latest GitHub Release.
# Linux
sha256sum --check SHA256SUMS
# macOS
shasum -a 256 -c SHA256SUMS
On Windows, compare Get-FileHash -Algorithm SHA256 <archive> with
SHA256SUMS. Release assets also include GitHub attestations:
gh attestation verify <archive> --repo RudySource/Dirgo.
Build from source with Rust 1.89 or newer:
git clone https://github.com/RudySource/Dirgo.git
cd Dirgo
cargo build --release --locked
install -m 755 target/release/dgo ~/.local/bin/dgo
dgo setup
dgo refresh # index your configured roots
dgo punk # jump by directory name
dgo # browse everything
dgo . api # search only below the current directory
dgo ? api # always ask when names collide
dgo +work # bookmark the current directory
dgo @work # jump to the bookmark
dgo repo punk # search project roots
dgo recent # browse Dirgo history
dgo back # move back in this shell session
The first search creates the index. Run dgo refresh after filesystem changes.
dgo [QUERY]... resolve or choose a directory
dgo setup connect or repair shell integration
dgo refresh rebuild the filesystem index
dgo query <QUERY> [--json] resolve without navigating
dgo explain <QUERY> show candidates and score components
dgo root print the nearest project root
dgo repo [QUERY] search indexed project roots
dgo recent [QUERY] search Dirgo navigation history
dgo back | forward navigate this shell session
dgo bookmarks list bookmarks
dgo bookmark add NAME create or repair a bookmark
dgo bookmark rename OLD NEW rename a bookmark
dgo bookmark remove NAME remove a bookmark
dgo import zoxide import validated local zoxide scores
dgo config path | show inspect configuration
dgo doctor diagnose the installation
dgo stats show local index statistics
dgo support show support and security guidance
dgo suggestions enable enable local shell suggestions
dgo suggestions status inspect suggestion privacy settings
dgo suggestions history enable opt in to filtered command history
dgo suggestions history status inspect schema and local row counts
dgo suggestions history list list current-project command aggregates
dgo suggestions history inspect EVENT_ID inspect one completed command
dgo suggestions history clear erase all history, or select a scope
dgo suggestions history export export versioned, path-redacted JSONL
dgo --update install the latest stable release
dgo update-notifications off disable new-version notices
dgo update-notifications on enable new-version notices
Run dgo --help or dgo <command> --help for the complete interface.
Dirgo reads ${XDG_CONFIG_HOME:-~/.config}/dirgo/config.toml.
schema_version = 1
roots = ["~/Developer", "~/Projects"]
ignore = [".git", "node_modules", "Library", ".cache", "target", "dist"]
respect_gitignore = true
follow_symlinks = false
[ranking]
frequency = 1.0
recency = 0.85
proximity = 0.55
bookmarks = 1.25
projects = 0.30
[ui]
preview = true
accent = "cyan"
icons = "auto"
height_percent = 70
[actions]
editor = "auto"
[suggestions]
enabled = false
command_history = false
live_panel = true
native_completions = true
debounce_ms = 30
native_timeout_ms = 80
max_results = 8
retention_entries = 10000
retention_days = 180
deny_patterns = []
The rebuildable index lives below XDG_CACHE_HOME; bookmarks and history stay
below XDG_STATE_HOME. Persistent state is bounded and pruned.
| Key | Action |
|---|---|
↑ / ↓, Ctrl-K / Ctrl-J | Move the selection |
Home / End, PageUp / PageDown | Move through long lists |
Enter | Go to the selected directory |
Tab | Toggle the directory preview |
Shift-↑ / Shift-↓ | Scroll directory contents without moving the selection |
Ctrl-R | Rebuild the index atomically |
Ctrl-O / Ctrl-Y / Ctrl-E | Open, copy, or launch the configured editor |
Esc / Ctrl-C | Close without navigating |
| Platform | Distribution | Navigation support |
|---|---|---|
| macOS Apple Silicon | Homebrew, installer, archive | Zsh, Bash, Fish |
| macOS Intel | Installer, archive | Zsh, Bash, Fish |
| Linux x86_64 GNU | Installer, archive; glibc 2.35+ | Zsh, Bash, Fish |
| Windows x86_64 MSVC | PowerShell installer, Scoop, archive | PowerShell 7+; native predictor on 7.4.x |
WSL uses its Zsh, Bash, or Fish adapter.
Apple Silicon macOS, optimized build, three-sample PTY run:
| Indexed directories | First picker paint | First useful result |
|---|---|---|
| 100,000 | 52.628 ms | 35.154 ms |
| 500,000 | 53.529 ms | 35.209 ms |
| 1,000,000 | 55.180 ms | 35.236 ms |
¹ Reproducible local measurements, not universal guarantees. The 1M release
budget is 100 ms for both metrics. Run dgo bench --query punk --samples 5
against your own index.
--force.[!WARNING] The local index contains filesystem paths. Remove personal paths from logs and screenshots.
Report vulnerabilities privately through SECURITY.md.
| Version | Status | User-visible scope |
|---|---|---|
| 0.5.1 | Current stable release | Project-scoped PROJ commands from bounded local manifests, background cache refresh, and project-first ranking. |
| 0.6 | Release candidate in this branch | Opt-in completed-command context, schema v2 migration, project/success-aware ranking, scoped inspection, clearing, and privacy-preserving export. |
The 0.6 release is published only after the cross-platform release gate, installer/package inspection, and final documentation review pass. Later features stay proposals until they have an implementation, regression coverage, and a real user-facing demo.
Dirgo is free and open source. Voluntary donations help fund maintenance, release infrastructure, platform support, and future improvements.
|
₿ Bitcoin Network: Bitcoin · Asset: BTC Wallet address
|
|
₮ USDT Network: TRON · Token standard: TRC20 · Asset: USDT Wallet address
|
[!IMPORTANT] Verify the complete address and network before sending. Cryptocurrency transfers are irreversible. Donations are voluntary and do not purchase priority support, roadmap influence, or service guarantees.
You can also star the repository, report a focused issue, or contribute.
| Symptom | Fix |
|---|---|
dgo prints a path but does not change directory | Run dgo setup, open a new terminal, and confirm type dgo reports a function. |
| A terminal starts slowly or closes | Run command dgo doctor, then command dgo setup --remove if needed. |
| A new or moved directory is missing | Run dgo refresh. |
| Configuration is invalid | Run dgo config path, repair the file, then run dgo doctor. |
| A query is ambiguous in a pipe or CI | Use dgo query <query> --json and handle exit codes 3 and 4. |
| The picker is unreadable | Try NO_COLOR=1, --no-unicode, or TERM=dumb. |
For environment-safe support information, run dgo support or read SUPPORT.md.
cargo build --locked
cargo test --all-features --locked
See CONTRIBUTING.md for development checks and pull-request expectations.
Dirgo is available under the MIT license or Apache License 2.0.
27 commits
Rust
88.6%
Shell
4.8%
TypeScript
3.8%
PowerShell
1.4%
C#
1.4%