Best of · AI Agents / Rust
Best terminal tools (2026)
Stack Gems reviews 24 terminal tools: 24 free or open source. These are the top 10, each with its verdict and the Catch we would want to know before installing it.
Order: free and open source first, then hosted products with a real free tier, then paid-led; catalog order inside each group, with quiet or archived repos last. Not a score, and no tool pays for its place.
24 reviewed · 10 shown in full
Free / OSS · OSS/MIT · 35.8k GitHub stars
VerdictMIT Rust terminal workspace. Free forever; layouts over tmux nostalgia.
CatchRust terminal workspace/layouts/plugins — agent terminal lane; not tmux-clone marketing. Plugin ecosystem younger than tmux. Some SSH/remote habits still assume tmux/screen.
Free / OSS · Unlicense · 69.2k GitHub stars
VerdictUnlicense/MIT grep replacement. Free forever; the search tool every terminal should alias.
CatchVs grep (POSIX baseline) and ag/The Silver Searcher (predecessor): ripgrep is the modern default, not a POSIX drop-in. If your workflow depends on GNU grep flags exactly, `rg` is similar but not identical. No built-in fuzzy matching — pair with fzf for interactive filtering.
Free / OSS · Apache-2.0 · 60.8k GitHub stars
VerdictMIT/Apache-2.0 cat clone. Free forever; alias cat=bat and never look at monochrome output again.
CatchVs cat (POSIX baseline): bat is heavier — startup and memory cost for highlighting. Not a POSIX cat drop-in for scripts expecting raw byte streams. Large files or binary content should still use plain cat. Theme configuration is optional but becomes a rabbit hole.
Free / OSS · Apache-2.0 · 44.8k GitHub stars
VerdictMIT/Apache-2.0 filename finder. Free forever; alias find habits here when you care about names and ignores.
CatchVs ripgrep (content search) and fzf (fuzzy UI): fd finds *names*, not file contents, and it is not an interactive fuzzy picker. Not a POSIX find drop-in for every `-exec`/`-printf` edge case. Large trees still need sensible roots; it is not a content indexer.
Free / OSS · OSS/MIT · 24.5k GitHub stars
VerdictMIT shell UX toolkit. Free forever; use when a script needs a real prompt, not another echo menu.
CatchVs Starship (prompt *theme*): gum is scriptable interaction widgets, not your PS1 theme. Adds a Charm binary dependency to scripts that used to be pure POSIX. Non-interactive CI still needs flags/`--` paths that skip the TUI.
Free / OSS · OSS/MIT · 27.7k GitHub stars
VerdictMIT Markdown TUI. Free forever; open the README in-terminal instead of leaving the SSH session.
CatchVs bat (generic syntax highlight cat): glow is Markdown-*first* presentation, not a drop-in for every source file. Heavier than bat for one-off file peeks. Stash/cloud-adjacent features are optional — local files are the core job.
Free / OSS · Apache-2.0 · 29.1k GitHub stars
VerdictMIT/Apache-2.0 CLI bench. Free forever; replace anecdotal `time` with numbers you can paste into a PR.
CatchIt benchmarks *process wall time*, not flamegraphs or allocator profiles — pair with a profiler when the hot path is inside one long process. Shell overhead and cold caches still skew naive runs; read the warmup flags. Not a load-test / HTTP soak tool.
Free / OSS · OSS/MIT · 32.5k GitHub stars
VerdictMIT git diff pager. Free forever; set it once in gitconfig and every diff gets readable.
CatchVs bat (file viewer) and lazygit (TUI Git client): delta is the *diff pager*, not a file cat and not a staging UI. Config lives in gitconfig — wrong pager nesting with less can surprise. Huge binary diffs still want `--stat` or path filters first.
Free / OSS · OSS/MIT · 42.9k GitHub stars
VerdictMIT terminal FM. Free forever; pick it when browsing files needs previews, not another fuzzy one-liner.
CatchVs fzf (fuzzy finder) and zoxide (directory jumper): Yazi is a full *file manager*, not a one-shot picker or frecency cd. Preview depends on terminal image protocols and optional external tools. Learning the keymap is real onboarding versus plain ls/cd.
Free / OSS · Apache-2.0 · 7.2k GitHub stars
VerdictApache-2.0 file watcher. Free forever; fill the entr-shaped hole when Tilt is overkill.
CatchVs Tilt (K8s microservice *dev control plane*): watchexec is the entr-class local file watcher, not a cluster live-update UI. Not a build system and not a process supervisor for multi-service graphs. You still write the command and filter extensions yourself.
Also reviewed (14)
- btop — Apache-2.0 local host resource TUI (CPU/mem/disk/net/GPU)
- tokei — MIT/Apache-2.0 fast LOC and code stats by language
- dust — Apache-2.0 intuitive du tree — see what eats the disk
- navi — Apache-2.0 interactive cheatsheet runner for the shell
- jless — MIT interactive JSON pager — explore, do not filter
- xh — MIT HTTPie-compatible HTTP client as a Rust single binary
- procs — MIT modern ps — colors, tree, and JSON
- ast-grep — MIT structural AST search and rewrite (sg)
- Difftastic — MIT structural/AST diff that understands syntax
- Ghostty — MIT GPU-accelerated native terminal emulator
- cmux — Native macOS terminal for parallel coding agents
- tuios — MIT terminal window manager that shows which of your coding agents is working, waiting or done
- Uniterm — Apache-2.0 terminal for 30+ protocols with an AI agent
- sd — MIT intentional sed subset — search & displace
FAQ
- What is the top free pick among terminal tools?
- Zellij leads the Stack Gems list for terminal tools. Verdict: MIT Rust terminal workspace. Free forever; layouts over tmux nostalgia.
- How many terminal tools does Stack Gems review?
- 24: 24 free or open source. Each review has a verdict and an honest Catch; no tool pays for its spot.
- Which terminal tools can I self-host for free?
- Zellij, ripgrep, bat, fd, gum, glow, hyperfine, delta and 16 more.
- Which terminal tools have the most GitHub stars?
- ripgrep (69.2k), Ghostty (62.4k), bat (60.8k), per GitHub on 2026-10-19. Stars measure attention, not fit; read the Catch.
- What is the catch with Zellij?
- Rust terminal workspace/layouts/plugins — agent terminal lane; not tmux-clone marketing.
Alternatives
Tags in this list
Related lists
JSON: /api/gems?subcategory=terminal · MCP: best_for on /api/mcp