Navigate, preview, and copy file paths fast. Built for developers who live in the terminal and need quick file discovery during CLI and IDE sessions.
- Lazy file tree — directories load on expand; large workspaces stay snappy.
- Background workspace index — full-workspace file index built in the background, so the filter input and Cmd+P quick search find every file (not just what's expanded).
- Three filter toggles —
Hide .(dotfiles),Dirs only(no files at root),Repos only(top-level dirs that contain a.gitchild). All persisted across sessions. - Multi-tab Monaco editor — the same editor that powers VS Code. Edit and save with
Cmd+S. Dirty tabs are marked with a●; closing one prompts before discarding. Files >2 MB stay read-only. - Live external-change detection — open files are watched. Clean tabs reload silently when the file changes on disk; dirty tabs prompt with Reload / Keep mine. Self-events from your own saves are suppressed.
- Right-click actions — Reveal in Finder / Explorer / file manager (platform-aware) and Open in
$EDITOR(configurable in Settings; falls back to$VISUAL/$EDITOR/code). - Tab navigation —
Cmd+1..8jump to tab N,Cmd+9jumps to last,Cmd+Wcloses (with dirty guard),Cmd+Shift+[/Cmd+Shift+]cycle prev/next. - Resizable splitter — drag the divider between tree and viewer; width persists.
- Auto window resize — window snaps to half-width when no tab is open, restores to your wide width when you open a file.
- Quick file search —
Cmd+Psearches the full workspace index by name and relative path. - Text content search —
Cmd+Shift+Fruns a Rust-side recursive grep across.ts/.tsx/.md(toggle which extensions). Case-insensitive substring match. - Path clipboard — multi-select files, then
Enter(relative paths) orShift+Enter(absolute) to copy. Toast confirms what was copied. - Persistent state — workspace, recent picker, splitter width, window width, filter toggles, and external-editor command all survive restarts (
@tauri-apps/plugin-store). - Settings panel — gear icon in the toolbar opens a modal: custom ignore patterns (gitignore syntax), text-search extension list, external editor command, and updates.
- Auto-update — built-in updater checks GitHub Releases for signed builds and installs in-place (see Releases & signing).
- Popup mode (Mode B) — frameless overlay summoned anywhere with
Cmd+Option+Space. Type to fuzzy-find a file in the workspace,Entercopies the relative path and dismisses;Shift+Entercopies the absolute path. - TUI mode (Mode C) —
fpath-tuiGo binary built with Bubble Tea. Vim-style keys (j/k,/,Space,y/Y), workspace-wide filter, multi-select clipboard, pluseto open the highlighted file in$EDITOR. See apps/tui/README.md. - MCP server (Mode D) —
@fpath/mcpexposes the workspace tools (list_directory,find_files,search_text,read_file) over MCP/stdio. Drop the binary into Claude Code, Claude Desktop, or any MCP client. See apps/mcp/README.md.
| Mode | Name | Technology | Status |
|---|---|---|---|
| A | Desktop | Tauri v2 + React 19 | Active |
| B | Popup | Frameless overlay (Cmd+Option+Space) |
Active |
| C | TUI | Go + Bubble Tea (fpath-tui) |
Active — see apps/tui/README.md |
| D | MCP server | Node + @modelcontextprotocol/sdk |
Active — see apps/mcp/README.md |
Download the latest .dmg from releases, open, and drag fpath to /Applications.
On first launch, right-click → Open to bypass Gatekeeper (or xattr -d com.apple.quarantine /Applications/fpath.app).
Prerequisites
- Rust —
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - Node ≥ 24 —
brew install nodeor via nvm - pnpm ≥ 9 —
corepack enable && corepack prepare pnpm@latest --activate - Xcode Command Line Tools —
xcode-select --install
git clone https://github.com/blueforge-studio/fpath.git
cd fpath
pnpm install
pnpm build:desktop
cd apps/desktop
pnpm tauri build # produces .app in src-tauri/target/release/bundle/macos/
cp -r src-tauri/target/release/bundle/macos/fpath.app /Applications/pnpm install
cd apps/desktop && pnpm tauri devVite hot-reloads the React side; Cargo rebuilds the Rust side on src-tauri/ changes.
| Action | Shortcut |
|---|---|
| Toggle Popup mode (global) | Cmd+Option+Space |
| Quick file search | Cmd+P |
| Text content search | Cmd+Shift+F |
| Focus tree filter input | Cmd+F |
| Save active tab | Cmd+S |
| Close active tab (dirty-guarded) | Cmd+W |
| Jump to tab N (1..8) / last (9) | Cmd+1..9 |
| Previous / next tab (cyclical) | Cmd+Shift+[ / Cmd+Shift+] |
| Copy selected paths (relative) | Enter |
| Copy selected paths (absolute) | Shift+Enter |
| Select-only on a folder (no expand) | Shift+Click |
| Toggle directory expand | Click the row |
| Toggle file selection | Click the checkbox |
| Right-click an entry | Reveal in Finder / Open in editor |
fpath/
├── apps/
│ ├── desktop/ # Tauri v2 + React 19 + Vite + Monaco
│ │ ├── src/ # React frontend
│ │ └── src-tauri/ # Rust backend (search_text, list_directory, reveal_in_file_manager, open_in_editor, ...)
│ ├── marketing/ # Next.js landing page
│ ├── mcp/ # @fpath/mcp — MCP server (Node + stdio)
│ └── tui/ # Go + Bubble Tea TUI (fpath-tui)
├── packages/
│ └── shared/ # @fpath/shared — types, tree logic, ignore, tests
├── package.json
├── pnpm-workspace.yaml
├── turbo.json
└── tsconfig.base.json
pnpm dev:desktop # Start desktop dev server (Vite + Tauri)
pnpm dev:marketing # Start marketing site dev server
pnpm build # Build all packages
pnpm typecheck # Type-check all packages
pnpm test # Run all test suites (vitest in @fpath/shared, @fpath/desktop, @fpath/mcp)
pnpm lint # Lint all packages- Desktop shell: Tauri v2 (Rust)
- Frontend: React 19, Vite 6, TypeScript 5, Monaco Editor, Tailwind via plain CSS
- Plugins:
plugin-fs,plugin-dialog,plugin-clipboard-manager,plugin-store - Marketing site: Next.js 16, Tailwind 4
- Monorepo: pnpm workspaces, Turborepo
- Tests: Vitest across
@fpath/shared(tree/ignore),@fpath/desktop(lang-map, file editor states, file watchers, tab keybindings —jsdom+@testing-library/react), and@fpath/mcp(per-tool tests against tmp workspaces) - TUI: Go 1.24, Bubble Tea, Lipgloss, atotto/clipboard (chroma syntax-highlight planned)
- Usage guide — keyboard shortcuts, filters, search modes, tips.
MIT — see LICENSE.