A fast, powerful, cross-platform desktop GUI for searching and replacing text across large codebases.
Modern IDEs bundle a "find in files" panel, and terminal tools like ripgrep are blazing fast — but neither is a great fit when you need to search and edit across an entire project:
- IDE search panels are slow to start, tied to one project window, and offer a single engine with limited filtering.
- Terminal search tools are fast but text-only: no result preview, no safe multi-file replace workflow, no way to save or revisit a search.
- Bulk find-and-replace across dozens of files is risky without a diff preview and an undo path.
Osprey wraps industry-standard search engines (ripgrep, grep) in a purpose-built GUI so you get terminal-grade speed with an editor-grade workflow:
- Search multiple folders at once with glob or regex include/exclude filters, refined instantly with a fuzzy result filter.
- Preview every match — file or line — in a live preview pane, and open it directly in your own editor.
- Replace at line, file, or project level with an inline diff preview before anything is written to disk.
- Save, reload, and revisit search queries, results, and filter rule sets instead of retyping them every time.
Search across several folders in one pass. Include/exclude filters support both glob (*.py, src/**) and regex patterns, and a fuzzy filter box narrows the visible result set as you type — no re-running the search.
Results are grouped by file and expand to matched lines with line numbers. Selecting any file or line opens it in the built-in preview pane with the match highlighted in context.
Right-click a result or a preview line to open the file — at the matched line, when available — in an external editor. Editors (VS Code, Notepad++, or any command-line tool) are configured once in Preferences and then appear as one-click context menu entries.
Preview replacements as an inline diff — added and removed text is color-coded per match — before committing anything. Apply a single change, an entire file, or all matches at once, with an optional pre-replace backup.
Search options (.opq), full result snapshots (.opr), and include/exclude rule sets can each be saved to disk and reloaded later — useful for recurring audits or handing a prepared search off to a teammate.
The Recent menu keeps the last 20 search query profiles and the last 20 saved result snapshots, so you can jump back into a prior investigation in one click.
The search field keeps a dropdown of your last 20 search terms, letting you re-run or tweak a recent pattern without retyping it.
Osprey drives your search through ripgrep or grep, auto-detecting what is available on the system and letting you switch engines from a dropdown.
Download the single-file executable for your platform from the Releases page and run it — no Python, no installer, no admin rights required.
# Windows example
osprey.exe .Requires Python 3.12+ and uv.
uv sync
uv pip install .
ospreyosprey # launch GUI, search dir defaults to the current directory
osprey /path/to/project # launch GUI, pre-fill the search directory
osprey search.opq # launch GUI, load a saved search query profile
osprey results.opr # launch GUI, load a saved result snapshot
osprey --pattern "TODO" --path . # pre-fill pattern and path
osprey --pattern "TODO" --headless # headless mode: print results to stdout, no GUI
osprey --pattern "TODO" --headless --json # headless mode with JSON outputRun osprey --help for the full list of options.
Osprey follows a dual-license model:
- Free for Non-Commercial Use: LICENSE.txt
- Commercial Use Requires a License: COMMERCIAL_LICENSE.txt
If you need commercial usage guidance for your deployment scenario, contact the maintainer at petercaica@hotmail.com.
If Osprey saves you time, consider supporting its development:
- Support me: https://paypal.me/petercaica
- Sponsor on GitHub: https://github.com/sponsors/petercai
Bug reports and feature requests are welcome via GitHub Issues.
See CHANGELOG.md for release history.







