I uninstalled ten GUI apps this year. These are the terminal tools that made them unnecessary.
Every year I audit what is actually running on my machine. This year I noticed something: half the GUI apps I used to rely on had not been opened in months. Not because I stopped doing the work — because I found CLI tools that do it faster, with less friction, and without the Electron tax on my RAM.
This is not a "command line good, GUI bad" argument. Some GUIs are irreplaceable. But these ten tools genuinely replaced GUI apps that I was paying for, updating, and alt-tabbing to every day. Each entry includes what it replaced, why the CLI version wins, and how to install it.
What it is: A terminal UI for Git. Full staging, branching, rebasing, cherry-picking, conflict resolution, and interactive log — all in a keyboard-driven TUI that runs inside your terminal.
What it replaced: GitKraken ($60/year for pro features) and SourceTree (free, but heavy and crash-prone on Windows).
Why it wins: GitKraken takes 4-6 seconds to open on a large repo. lazygit opens in under a second. Staging individual hunks, amending commits, and interactive rebasing are all faster with keyboard shortcuts than point-and-click. And it has no account system, no login screen, no upsells.
The killer feature is the diff view during staging. You see exactly what is going into the commit, hunk by hunk, without switching between panels. Once you internalize the keybindings (takes about a day), you will never go back.
# macOS
brew install lazygit
# Windows
winget install JesseDuffield.lazygit
# Linux
sudo apt install lazygit # or your distro's package manager
What it is: A resource monitor that shows CPU, memory, disk, network, and process information in a beautiful terminal UI.
What it replaced: Activity Monitor on macOS and Task Manager on Windows. Also replaced htop, which btop improves on in every way.
Why it wins: Activity Monitor shows you a list of processes sorted by CPU. btop shows you CPU usage per core over time, memory breakdown, disk I/O, network throughput, and a sortable process list — all on one screen, updating in real time. It is the single best "what is happening on this machine" tool I have used.
On remote servers, this is especially valuable. You cannot open Activity Monitor on an EC2 instance, but you can SSH in and run btop. Same tool, same muscle memory, local or remote.
# macOS
brew install btop
# Windows (via scoop)
scoop install btop
# Linux
sudo apt install btop # Ubuntu 22.04+
sudo dnf install btop # Fedora
What it is: A terminal UI for managing Kubernetes clusters. Navigate namespaces, pods, deployments, services, logs, and shell into containers — all without writing kubectl commands.
What it replaced: Lens (now owned by Mirantis, requires an account and phone-home) and the Kubernetes Dashboard (a pain to set up and secure).
Why it wins: Lens loads slowly, uses a lot of memory (it is Electron), and since the Mirantis acquisition requires a login to use. k9s starts instantly, reads your kubeconfig, and you are looking at your pods in under a second. Press l to tail logs, s to shell into a container, d to describe a resource. No mouse needed.
The real advantage is during incidents. When a pod is crash-looping at 2 AM, you do not want to wait for Lens to load and sync. You want k9s, arrow to the pod, press l, and read the logs. Five seconds from terminal to diagnosis.
# macOS
brew install derailed/k9s/k9s
# Windows
winget install Derailed.k9s
# Linux
curl -sS https://webinstall.dev/k9s | bash
What it is: A line-oriented search tool that recursively searches directories for a regex pattern. Think grep -r but orders of magnitude faster.
What it replaced: The "Find in Files" dialog in VS Code, IntelliJ, and Sublime Text. Also replaced grep and ag (The Silver Searcher).
Why it wins: Speed. ripgrep searches a large monorepo in 200ms where grep takes 8 seconds. It automatically respects .gitignore files, skips binary files, and handles Unicode correctly. The output is clean, colorized, and immediately useful.
I still use VS Code for editing, but when I need to find where something is used across a codebase, I switch to the terminal and run rg. It is faster than waiting for VS Code's indexer, and it works identically across every project, every language, every machine.
# macOS
brew install ripgrep
# Windows
winget install BurntSushi.ripgrep
# Linux
sudo apt install ripgrep
# Usage examples
rg "TODO" --type py # search Python files only
rg "handleAuth" -l # list files containing match
rg "import.*React" --glob "*.tsx" # search with glob filter
What it is: A terminal UI for Docker. View running containers, images, volumes, and networks. Tail logs, inspect containers, and manage the Docker daemon — all keyboard-driven.
What it replaced: Docker Desktop, which requires a paid subscription for companies with more than 250 employees or $10M+ revenue.
Why it wins: Docker Desktop uses 1-2 GB of RAM just sitting in the background. lazydocker uses almost nothing when you are not looking at it, and shows you more information when you are. Container logs, environment variables, port mappings, resource usage — all visible without clicking through tabs.
To be clear: lazydocker replaces the Docker Desktop GUI, not the Docker engine. You still need the Docker daemon running (via colima on macOS, or the Docker engine on Linux). But the GUI wrapper that Docker Inc. charges for? lazydocker does everything it does and more.
# macOS
brew install lazydocker
# Windows
scoop install lazydocker
# Linux
curl https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh | bash
What it is: A command-line HTTP client designed for humans. Intuitive syntax, colorized output, JSON support by default, and built-in sessions for API testing.
What it replaced: Postman, which has become a bloated Electron app with workspaces, teams, cloud sync, AI features, and a login wall.
Why it wins: Postman asks you to create an account before you can send a single request. httpie just works. The syntax is readable without documentation:
# GET request
http GET api.example.com/users
# POST with JSON body
http POST api.example.com/users name=Jeff email=jeff@example.com
# With auth header
http GET api.example.com/me Authorization:"Bearer token123"
# Download a file
http --download https://example.com/file.zip
The output is auto-formatted and syntax-highlighted. JSON responses are pretty-printed. Headers are shown separately from the body. For quick API testing and debugging, it is faster than opening Postman, finding the right collection, and clicking Send.
For complex API workflows with saved environments and test scripts, Postman still has an edge. But for the 90% of API calls that are "send this request and look at what comes back," httpie is better in every way.
# macOS
brew install httpie
# Windows
winget install HTTPie.HTTPie
# Linux
sudo apt install httpie
What it is: A general-purpose fuzzy finder. It takes any list as input and lets you interactively filter it with fuzzy matching.
What it replaced: Spotlight/Alfred file search, Ctrl+P in VS Code, and the "Open Recent" dialog in every app that has one.
Why it wins: fzf is composable. Pipe anything into it and it becomes searchable. Files, git branches, processes, command history, Kubernetes pods, SSH hosts — anything that is a list becomes interactively filterable.
# Find and open a file
vim $(fzf)
# Search git branches and switch
git checkout $(git branch | fzf)
# Kill a process by name
kill $(ps aux | fzf | awk '{print $2}')
# Search command history (replaces Ctrl+R)
# fzf installs a Ctrl+R binding automatically
The Ctrl+R replacement alone is worth the install. Default reverse history search shows you one match at a time. fzf shows you all matches, ranked by relevance, and you fuzzy-filter as you type. Once you use it for a week, the default Ctrl+R feels broken.
# macOS
brew install fzf && $(brew --prefix)/opt/fzf/install
# Windows
winget install junegunn.fzf
# Linux
sudo apt install fzf
What it is: A syntax-highlighting pager for Git diffs, blame, and grep output. It makes git diff look as good as (or better than) any GUI diff viewer.
What it replaced: Kaleidoscope ($70), Beyond Compare ($60), and the VS Code diff viewer for quick comparisons.
Why it wins: Standard git diff output is functional but ugly. delta adds syntax highlighting, line numbers, side-by-side mode, and word-level diff highlighting. It plugs directly into Git — once configured, every git diff, git log -p, and git show uses it automatically.
# Install
brew install git-delta # macOS
winget install dandavison.delta # Windows
# Configure Git to use delta
git config --global core.pager delta
git config --global interactive.diffFilter "delta --color-only"
git config --global delta.navigate true
git config --global delta.side-by-side true
The side-by-side mode is what made me uninstall Kaleidoscope. Same information, same visual clarity, but it is right there in the terminal where I am already working. No app switching, no dragging files into a diff window.
What it is: An AI coding assistant that runs in your terminal. It reads your codebase, writes code, runs commands, manages git, and handles multi-file refactors — all through a conversational interface.
What it replaced: GitHub Copilot in VS Code and JetBrains AI Assistant. Not entirely — inline autocomplete in the editor is still useful. But for anything beyond single-line completion, the terminal is the better interface.
Why it wins: IDE-based AI assistants are constrained by the editor's UI. They can suggest code in the current file, but they struggle with multi-file changes, running tests, debugging build errors, and understanding project-wide context. Claude Code operates at the project level. It reads files, makes changes, runs your test suite, and iterates until things work.
The terminal also means it works with any editor. vim, Emacs, VS Code, IntelliJ — it does not matter. The AI runs in the terminal, the editor handles editing. Clean separation.
# Install
npm install -g @anthropic-ai/claude-code
# Use
claude
We covered Claude Code, Codex, and Gemini CLI in depth in our AI CLI tools guide if you want the full comparison.
What it is: A terminal with SSH connection management, database clients, and AI built in. One app instead of three or four.
What it replaced: This one is a combination. I was using Windows Terminal for the shell, MobaXterm for SSH, DBeaver for databases, and switching between all three constantly. yaw collapsed all of those into one window.
Why it wins: The issue was never that each individual tool was bad. MobaXterm is solid for SSH. DBeaver is excellent for databases. But running three Electron apps (or two Electron apps and a native app) to do work that could happen in one place is a death-by-a-thousand-tabs situation.
With yaw, SSH connections are saved and organized in a sidebar. Click one and you are connected — no digging through ~/.ssh/config or remembering hostnames. Database connections work the same way: save the connection once, click to open a query session against Postgres, MySQL, SQL Server, MongoDB, or Redis. And the AI assistant is right there in the terminal for when you need it.
This is the one entry on the list where I am obviously biased — we built it. But the reason we built it is that we had the same app sprawl problem and nobody was solving it. We wrote about the full story in The Terminal I Wished Existed, So I Built It.
# Windows
winget install YawLabs.yaw
# macOS
brew install --cask yaw
Looking at this list, the theme is not "CLI tools are better." The theme is that GUI apps keep accumulating overhead — accounts, subscriptions, telemetry, Electron bloat, cloud sync you did not ask for — and CLI tools keep getting more usable. lazygit is not git with a steep learning curve. It is a polished TUI that is genuinely easier to use than the GUI it replaced.
The best CLI tools in 2026 are not spartan by choice. They are fast, visual, keyboard-driven, and designed to stay out of your way. If you have not revisited the terminal tool ecosystem recently, it has changed more than you think.
Published by Yaw Labs.
Try yaw — a modern terminal with SSH, databases, and AI built in.
winget install YawLabs.yaw
Interested in AI tools and developer workflows? Token Limit News is our weekly newsletter.