A high-performance, multi-threaded real-time CLI dashboard wrapper for the Sherlock OSINT tool. It replaces Sherlock's raw CLI output with a premium, live-updating terminal interface featuring a progress bar, elapsed timer, rotating spinner, and clean results stream.
- ⚡ True Real-time Rendering: Employs a multi-threaded architecture (UI rendering at 12.5 FPS, subprocess streaming in the background) to prevent terminal freezing.
- 🟢 Clean Matches Only: Positive account hits are permanently locked onto your screen, while "Not Found" checks and connection errors update the progress bar and are immediately discarded.
- 📊 Dynamic Progress Metrics: Shows real-time statistics including elapsed time (down to the millisecond), total sites searched, and a smooth block progress bar (
▰▰▰▱▱). - 🔍 Database Auto-Inspection: Automatically locates and reads Sherlock's local database (
data.json) to estimate the exact total platform count, or scales down dynamically for targeted--sitescans. - ⚙️ Transparent Passthrough: Standard flags like
--help,--version, or malformed queries bypass the UI and map straight to the original Sherlock CLI.
Ensure you have the standard Sherlock OSINT tool installed via Homebrew or source:
brew install sherlockClone this repository and save the wrapper script to your local binaries folder (e.g., ~/.local/bin):
# Create local bin directory if it doesn't exist
mkdir -p ~/.local/bin
# Copy the script
cp sherlock ~/.local/bin/sherlock
# Make it executable
chmod +x ~/.local/bin/sherlockMake sure your Zsh configuration prioritizes local binaries over global Homebrew packages. Open ~/.zshrc and ensure this line is present at the top:
export PATH="$HOME/.local/bin:$PATH"Then reload your shell:
source ~/.zshrcSimply run it exactly as you would normally run sherlock! The wrapper intercepts your call and loads the dashboard automatically.
# Scan a username across all platforms
sherlock john
# Scan a username across specific platforms
sherlock john --site github --site gitlab --site twitter
# Pass standard sherlock options
sherlock john --timeout 3- Subprocess Streaming: The wrapper executes the real Sherlock binary in a background process using Python's
subprocess.PopenwithPYTHONUNBUFFERED=1and--print-allenabled. - ConcurrentNode Processing: A dedicated background thread reads Sherlock's standard output stream in real-time, parsing positive hits (
[+]) and negative checks ([-]). - Cursor-Movement UI: The main thread uses ANSI escape sequences (
\033[Ato move up,\033[Kto clear lines) to redraw the progress panel in-place at the bottom of your screen, while writing permanent findings to the terminal history above.
Distributed under the Creative Commons Attribution-ShareAlike 4.0 International License (CC BY-SA 4.0). See LICENSE for more information.