After a few years on macOS, I’ve accumulated a sizable collection of CLI tools. Some are daily essentials, others are occasional lifesavers. This post is both a roundup and a personal cheat sheet.
File & Search
ripgrep (rg)
If I could only keep one search tool, it’d be rg. Much faster than grep, respects .gitignore by default, supports regex, and ships with colorized output.
rg "TODO" src/rg -l "function main" # Only output filenameslsd
A modern replacement for ls with icons, colors, and tree view.
lsd -lalsd --tree --depth 2I added alias ls='lsd' in .zshrc for a seamless swap.
Development & Git
gh
GitHub’s official CLI. Create PRs, manage issues, and publish releases — all from the terminal, no browser needed.
gh pr create --fillgh issue list --label buggh release create v1.0.0hyperfine
Command-line benchmarking tool. When optimizing, it’s far more reliable than manual timing.
hyperfine 'ports' 'lsof -i -P'hyperfine --warmup 3 './target/release/ports'Claude Code
Anthropic’s AI coding assistant CLI. Write, edit, and run code through a conversational interface right in the terminal.
claude "Help me build an HTTP server"It’s become indispensable in my daily workflow.
Ports & Networking
Port Whisperer (ports-rs)
A tool I wrote myself — check port usage, kill processes, view logs, and verify port availability, all in one place.
ports # Scan dev portsports 3000 # Port detailsports check 3000 # Pre-launch checkports kill 3000 # Kill occupantSee my intro post for more.
cloudflared
Cloudflare Tunnel client. Expose local services to the public internet securely — no open ports, no firewall config.
cloudflared tunnel --url http://localhost:3000Perfect for sharing local demos.
System Info
fastfetch
A faster alternative to neofetch. Instant system info in the terminal with ASCII art.
fastfetchEssential for desktop screenshot flexing.
Multimedia
ffmpeg
The swiss-army knife of audio/video processing. Convert formats, trim, merge, extract frames — if you can think of it, ffmpeg can probably do it.
ffmpeg -i input.mov output.mp4ffmpeg -i video.mp4 -vn -acodec copy audio.aacffmpeg -ss 00:01:30 -i video.mp4 -t 10 -c copy clip.mp4tesseract
Open-source OCR engine. Extract text from images.
tesseract screenshot.png outputGreat for automation pipelines — pair it with ffmpeg frame extraction for video subtitle workflows.
ncmdump
Convert NetEase Cloud Music .ncm files to mp3/flac. One command to unlock.
gifgrep
Search text inside GIF animations — sounds niche, but genuinely useful when working with product screenshot recordings.
Daily Utilities
himalaya
Terminal email client. Supports SMTP/IMAP, can send/receive mail, manage folders, and even PGP.
himalaya listhimalaya read 42himalaya sendimsg
Send and receive iMessage and SMS from the terminal. Handy for scripted notifications or when you’re too lazy to switch to Messages.
imsg send +1234567890 "Deploy done"imsg readremindctl
Manage Apple Reminders from the terminal. Add, list, and complete tasks without opening Reminders.app.
remindctl add "Review PR #42"remindctl listremindctl complete 1sag
ElevenLabs’ command-line TTS tool. Similar usage to macOS say, but with much better voice quality.
sag "Build passed, ship it"sag --model eleven_flash_v2_5 "Quick heads up"autossh
Auto-reconnecting SSH. Keeps remote sessions alive when the network is flaky.
autossh -M 0 -o "ServerAliveInterval 30" user@hostpeekaboo
macOS window management CLI. Script window positions and sizes.
obsidian-cli
Operate Obsidian notes from the terminal — search, create, move, delete. Fits nicely into automation scripts.
goplaces
Command-line wrapper for Google Places API. Search and parse location info.
summarize
Summarize web pages or YouTube videos, output directly in the terminal.
summarize https://www.youtube.com/watch?v=xxxeightctl
Terminal control for Eight Sleep smart mattresses. Adjust temperature, check status. Yes, even the mattress can be terminal-controlled.
clawhub
ClawHub CLI client. Manage AI agent configs and workflows.
Containers & Deployment
docker & kubectl
Standard setup. Local containers and K8s cluster management.
Language Runtimes
- Go 1.26 — Primary language for CLI tools
- Rust — Port Whisperer is written in it
- Python 3.12 — Scripts and data processing
- Node.js 25 — Frontend projects and Claude Code dependency
Final Thoughts
Most of these tools install with a single brew install. But what really changes your workflow isn’t the tools themselves — it’s the habit of using them instead of leaving the terminal. When you realize 90% of what you need can be done in one window, the productivity gain is real.
Got a CLI tool I should know about? Share it in the comments.