Fast native workspace navigation for PowerShell 7 on Windows.
English | Español
DevNav is a native workspace navigator for developers who live in PowerShell and work across multiple repositories. Fuzzy-find a project, jump into it, and launch the agent or command you need without breaking terminal flow.
Working across many repositories creates friction beyond typing cd: remembering paths, switching context, finding the right workspace, and repeating setup before real work starts.
DevNav turns that overhead into a fast, repeatable workflow:
- Find and jump instantly — fuzzy-search projects instead of navigating directory trees or remembering paths.
- Reduce context switching — favorites, aliases, and custom commands keep frequent work one action away.
- Start ready to work — launch coding agents or commands directly in the selected repository, already in the right context.
- Stay fast and lightweight — the core is native Rust, designed for a responsive terminal workflow with no extra runtime required after installation.
Real captures from the native DevNav executable: the navigator, the F1 help panel, and the centered F3 custom-command manager.
Choose the tool you already use. Every bootstrap installs the same native DevNav release for Windows x64 or ARM64.
bunx --bun @jacoboptimiza/devnav installnpx --yes @jacoboptimiza/devnav installpnx @jacoboptimiza/devnav installyarn dlx -p @jacoboptimiza/devnav devnav installThese are verified bootstrap channels, not JavaScript installations of DevNav.
They have no postinstall script or runtime dependencies: the bootstrap selects
the official x64 or ARM64 installer, verifies its SHA-256 against
release-manifest.json, installs it, and validates the installed version.
For npm, pnpm, and Yarn, the bootstrap package declares Node.js >=22. CI
validates that package on Node 22, 24, and 26; Node 24 is the release baseline
and Node 26 is the forward-compatibility lane. Bun runs this bootstrap with its
own runtime. None of these runtimes is required after DevNav is installed.
After installation, update DevNav with dev update—not with npm, Bun, pnpm, or
Yarn. The package runner is a discovery and bootstrap channel; it does not own
the installed application.
How package-runner installation works
The npm package contains the installers published by the canonical GitHub
Release. Running install detects Windows and the current architecture, checks
the selected installer against the release inventory, invokes the silent
per-user Inno Setup installer, and confirms that dev.exe --version matches the
package version. The runner exits after setup and is not required at runtime.
Add the official DevNav bucket:
scoop bucket add jacoboptimiza https://github.com/JacobOptimiza/scoop-bucketThen install DevNav:
scoop install jacoboptimiza/devnavScoop installs the portable native build and owns the installed files. It does not use the Inno Setup installer.
Update Scoop-managed installations with:
scoop update devnavNo Node.js or package manager is required. Run the official installer from PowerShell 7:
irm https://raw.githubusercontent.com/JacobOptimiza/dev-nav/main/install.ps1 | iexTo inspect the script before executing it:
$installer=Join-Path$env:TEMP'devnav-install.ps1'Invoke-WebRequest https://raw.githubusercontent.com/JacobOptimiza/dev-nav/main/install.ps1 -OutFile $installerGet-Content$installer&$installerThe same per-user x64 and ARM64 installers are also available from the latest GitHub Release.
| Channel | Status |
|---|---|
| GitHub installer | Available |
| npm, Bun, pnpm and Yarn | Available |
| Scoop | Available — official JacobOptimiza/scoop-bucket |
| WinGet | Pending Microsoft approval of JacobOptimiza.DevNav |
Open a new PowerShell 7 session:
devContinue with First run to choose the folder DevNav opens by default.
- Windows 10 or 11 on x64 or ARM64.
- PowerShell 7 or newer (
pwsh). - Windows Terminal recommended.
Published binaries do not require Rust or Visual Studio. A package runner is required only when you choose its bootstrap command. Windows PowerShell 5.1, 32-bit Windows, Linux, and macOS are not supported.
- Starts directly in your chosen workspace.
- Keeps every favorite available while you navigate across drives.
- Opens coding agents or runs commands in the highlighted repository.
- Returns directory changes to the current PowerShell session correctly.
- Runs as a native, keyboard-first Windows application with no telemetry.
The startup directory is the folder containing your repositories, or any folder you want DevNav to show on launch.
- Run
dev. On the first interactive launch only, choose whether DevNav may silently check for new releases at startup; this never installs without asking. - A fresh installation opens at
$HOME. Navigate with↑,↓, and→. Presspto enter any absolute path or drive. - Highlight the directory you want to use as your startup directory.
- Press
Ctrl+S. - Verify the full path and press
Enter; pressEscto cancel.
For scripts and coding agents, the equivalent command is:
Set-DevRoot$HOMEGet-DevRootFor existing setups, DEV_HOME remains a fallback until a saved startup
directory exists; a directory saved with Ctrl+S or Set-DevRoot takes
precedence.
Press f on a directory to add or remove it from global favorites. Every saved
favorite stays at the top while you navigate, including the favorite matching
the current directory.
Global favorite shortcuts are visible by default. Press Shift+F to hide or
show them. DevNav persists this preference between sessions; hiding shortcuts
does not delete favorites or hide real child directories.
Favorites, aliases, startup directory, and UI preferences live outside the
repository in %LOCALAPPDATA%\DevNav\config.tsv. Updates do not overwrite it.
Press F1 at any time for the complete, scrollable help panel.
| Shortcut | Action |
|---|---|
↑ / ↓ or j / k | Move the selection |
Enter | Select the directory and return to PowerShell |
→ / l | Enter the highlighted directory |
← / h / Backspace | Go to the parent directory |
/ | Start incremental fuzzy filtering |
p | Open any absolute path or drive |
. | Select the directory currently shown |
g | Return to the startup directory |
Ctrl+S | Save the highlighted directory as startup directory, with confirmation |
f | Add or remove a global favorite |
Shift+F | Show or hide global favorite shortcuts |
a | Create or edit an alias |
| Shortcut | Action |
|---|---|
c | Codex: new session in the highlighted repository |
r | Codex: resume the repository's last session |
d / Shift+D | Claude Code: new / last session |
o / Shift+O | OpenCode: new / last session |
i / Shift+I | Kimi: new / last session |
e | Enter and run a command in the highlighted directory |
u | Refresh the current directory |
Ctrl+U | Enable or disable update checks at startup |
Shift+U | Check for and install a DevNav update |
F1 | Open or close the shortcuts panel |
F2 | Switch between English and Español |
F3 | Open the custom-command manager |
q / Esc | Exit or cancel |
: remains available as a Vim-style alias for e.
Bind commands to Shift+1–9 and run them in the highlighted project:
Press F3 to open the centered manager. It has nine Shift+1–9 slots; use
↑ / ↓ to move or 1–9 to select a slot directly. Enter adds or edits,
and Delete asks for removal confirmation. In the editor, Tab switches
between Alias and Command, Enter saves, and Esc cancels. F2 changes the
language without losing the manager state or editor draft. Shift+1–9 execute
their commands only from the normal navigator, never while managing slots.
dev shortcut 1"Dev""bun run dev"
dev shortcut 2"Tests""cargo test"Use Set-DevShortcut for scripts, overwrite a slot by using the same index, or
remove one with Remove-DevShortcut -Index 1 (or dev shortcut 1). Bindings
persist locally and appear in the F1 help panel.
You can also select a repository and pass an optional agent or shell command from PowerShell:
dev codex
dev "git status"The agent CLIs are optional. DevNav returns the command to PowerShell, so the
CLI you choose must be installed and available on PATH.
On the first interactive launch, DevNav detects the first supported language in
your Windows UI language preference list (es-* or en-*). It shows a bilingual
confirmation before asking about startup update checks. The confirmed choice is
stored as es-ES or en-US, so the prompt appears only once.
Use F2 at any time to switch language without losing the current folder,
selection, mode, scroll position or input. From PowerShell:
dev language
dev language en
dev language esThe equivalent module commands are Get-DevLanguage and Set-DevLanguage.
From PowerShell:
dev updateOr press Shift+U inside the TUI. DevNav compares the installed semantic
version with the latest release, downloads only when needed, verifies checksums,
and reports the result. The updater replaces only application files and preserves
the separate local configuration.
Installs bootstrapped through npm, Bun, pnpm, Yarn, PowerShell, or the GitHub
installer use dev update; the bootstrap tool does not own future updates.
Scoop-managed installations use scoop update devnav. Their
.devnav-managed-by-scoop marker tells dev update to detect Scoop ownership,
skip self-updating, and show the Scoop command instead.
On the first interactive launch, DevNav asks once whether it may check GitHub for
new releases at startup. This check never downloads or installs anything without
an explicit confirmation. It stays silent when DevNav is current or the network
is unavailable, and it is skipped in non-interactive sessions. Change the saved
preference with Ctrl+U or from PowerShell:
Set-DevUpdateCheck$true# enableSet-DevUpdateCheck$false# disable- Rust 2024 with direct Win32 integration through
windows-sys. - Native keyboard input through
ReadConsoleInputW. - Custom VT renderer with row buffering and differential updates.
- Event-driven loop with no polling or idle rendering.
- Separate result channel so PowerShell can persist directory changes.
- One direct dependency and no TUI framework.
- No telemetry. Network access is limited to installation, the optional consented release check, and explicit updates.
- Release binaries and the PowerShell module are verified with SHA-256.
- Local configuration is excluded from the repository and preserved on updates.
- GitHub Actions use minimal permissions and commit-pinned actions.
- npm releases use OIDC Trusted Publishing; no
NPM_TOKENis stored. - Security reports use GitHub Private Vulnerability Reporting; use the issue or pull-request templates for non-sensitive work.
See SECURITY.md, CONTRIBUTING.md, and the troubleshooting guide.
Requires stable Rust and the MSVC Build Tools:
git clone https://github.com/JacobOptimiza/dev-nav.git
Set-Location dev-nav
.\install.ps1 -BuildFromSourceDevelopment checks:
cargo fmt --all ----check
cargo check --workspace --all-targets
cargo test --workspace
cargo clippy --workspace --all-targets ---D warnings
cargo deny check
./scripts/validate-powershell.ps1
Invoke-Pester-Path ./tests/powershellThe MSRV is Rust 1.97; CI pins Rust 1.97.1 with rustfmt and clippy.
PowerShell quality gates use the native parser, PSScriptAnalyzer 1.25.0 and
Pester 6.1.0. Dependency licenses, advisories, registries and duplicate versions are checked by
cargo-deny using deny.toml. CI runs all of these checks.
See the public roadmap for planned distribution work.
MIT. See LICENSE.



