javascript-today

Why I Use so many CLI and TUI tools

If you have spent any time looking at my tool lists or watching me work, you have probably noticed that I lean heavily on CLI (Command Line Interface) and TUI (Terminal User Interface) tools rather than traditional GUI apps. This is not just habit or nostalgia — there are real, practical reasons why I keep coming back to the terminal for most of my daily work.


Speed

This is the big one. CLI and TUI tools are fast in a way that GUI apps simply cannot match.

When you open a GUI app, the system has to load a rendering engine, draw widgets, handle fonts, manage window decorations, and a whole lot more before you can do anything useful. A CLI tool skips all of that. It starts, does its job, and gets out of the way. Tools like fd, rg (ripgrep), and fzf are so fast that they feel almost instant even on large codebases.

TUI tools like btop, lazygit, and yazi are the same story. They render in a terminal, which is already open, with no extra overhead. Navigation with keyboard shortcuts is faster than reaching for a mouse, clicking through menus, and waiting for animations to finish.

For repetitive tasks, the speed advantage compounds. A shell one-liner or a quick script can replace minutes of clicking around in a GUI.


Cross-Platform Availability

This is probably the advantage that gets overlooked the most. Most of the CLI and TUI tools I use are written in Go or Rust and are easy to install on any modern OS.

Compare that to GUI apps, which often have a native version for one platform and a half-maintained port for others — or just do not exist on your OS at all. I work across Linux, WSL on Windows, and occasionally macOS. Having a consistent set of tools that behave the same everywhere is genuinely valuable. I do not have to relearn workflows when I change machines.


Low Resource Usage

CLI and TUI tools are lightweight by design. They do not load Electron, Chromium, or a full widget toolkit just to show you some text. On a server, a low-end machine, or inside a container, this matters a lot.

Running htop or btop to check system resources is a lot friendlier to those resources than opening a full GUI monitoring dashboard. This is especially true when you are SSH’d into a remote machine where a GUI is not even an option.


SSH and Remote Work

Speaking of SSH — CLI and TUI tools work seamlessly over a remote connection. You can SSH into a server and have the exact same workflow you use locally. Lazygit works over SSH. Yazi works over SSH. Your entire toolkit travels with you.

GUI apps require either a remote desktop setup, VNC, X forwarding, or some cloud-based alternative. All of those add complexity, latency, and often cost. A terminal connection is simple, fast, and universally available.


Composability

One of the most powerful things about CLI tools is that they are designed to work together. The Unix philosophy of small tools that do one thing well and pass data between them via pipes is still one of the best ideas in software.

fd -e md | xargs rg "TODO" | fzf

That one line finds all markdown files, searches them for TODOs, and lets you interactively filter the results. There is no GUI equivalent that is as flexible or as fast to assemble on the fly.


Keyboard-Driven Workflows

Most good TUI tools have vim-style or at least thoughtful keybindings. Once you learn them, navigating with the keyboard is dramatically faster than switching between keyboard and mouse. This is why I also use Neovim as my editor — the same philosophy applies.

Tools like lazygit, yazi, posting, and gh-dash are all built around the idea that your hands stay on the keyboard. The mouse becomes optional rather than required.


Stability and Longevity

CLI tools tend to be stable. grep, sed, awk, and curl have been around for decades and still work exactly as documented. GUI apps get redesigned, rebranded, require subscriptions, or get discontinued. The terminal has been remarkably consistent.

Newer tools like ripgrep and fzf are also stable and well-maintained. Because they are small and focused, there is less surface area for things to break between updates.


The Honest Trade-off

GUI apps are not bad. For things like video editing, image manipulation, or complex spreadsheets, a well-designed GUI is genuinely the better tool. If you are new to a task and do not know the commands, a GUI with menus and buttons is easier to explore.

But for development workflows, file management, system monitoring, git operations, API testing, and most of the work I do day to day, CLI and TUI tools are faster, lighter, more portable, and more composable. Once you build up a solid set of tools and muscle memory for them, it is hard to go back.

That is why my tool list keeps growing.


Some of the CLI/TUI Tools I Use Regularly

  • lazygit — git TUI, the best git interface I have used
  • yazi — blazing fast terminal file manager
  • fzf — fuzzy finder for everything
  • ripgrep — the fastest code search tool
  • btop — beautiful system monitor
  • posting — API testing in the terminal
  • zoxide — smarter directory jumping
  • trippy — visual traceroute TUI
  • gh-dash — GitHub notifications and PRs in the terminal

If you want the full lists, check out my CLI tools and TUI tools pages.