icaoberg / awesome-cli-apps: A Curated List Worth Containerizing

Created Thu, 30 Apr 2026 00:00:00 +0000 Modified Thu, 30 Apr 2026 00:00:00 +0000

If you spend any meaningful time on the command line, chances are you have discovered awesome-cli-apps — a community-maintained list with nearly 20,000 stars that catalogs hundreds of terminal tools organized by category. From fuzzy finders and file managers to HTTP clients and AI interfaces, it is one of the best starting points for modernizing a shell workflow.

Why CLI Apps Still Matter

Graphical interfaces come and go, but the command line endures. CLI tools are:

  • Composable — they follow the Unix philosophy and chain together cleanly via pipes and shell scripts.
  • Scriptable — they fit naturally into automation, cron jobs, and CI/CD pipelines.
  • Lightweight — they run with minimal overhead on remote servers, cloud VMs, and HPC login nodes.
  • Reproducible — behavior is determined by flags and config files, not hidden GUI state.

For researchers and engineers working on high-performance computing (HPC) clusters, this last point is especially important. Reproducibility is not a nice-to-have — it is a scientific requirement.

A Few Highlights from the List

The awesome-cli-apps repository covers an impressive breadth of use cases:

Tool What it does
bat cat with syntax highlighting and Git integration
fzf General-purpose command-line fuzzy finder
ripgrep Fast regex search across directories
lazygit Simple TUI for Git commands
jq Lightweight JSON processor
rclone Sync files to/from cloud storage providers
HTTPie User-friendly HTTP client
tldr Community-driven simplified man pages
ranger Console file manager with VI keybindings
zoxide Smarter cd that learns your habits

This is just a fraction of what the list covers. There are sections for productivity, entertainment, development, data manipulation, and even AI/LLM interaction — all from the terminal.

From CLI Apps to Singularity Containers

On shared HPC systems like Bridges-2, users cannot install software system-wide, and dependency conflicts between tools are a constant headache. Singularity containers solve both problems elegantly:

  1. No root required at runtime — unlike Docker, Singularity containers run as the invoking user, which is a hard requirement on most HPC clusters.
  2. Frozen dependencies — the exact version of the tool and all its libraries are baked into the .sif image, eliminating “it worked last week” failures.
  3. Drop-in replacements — a thin wrapper script lets users call bat instead of singularity exec bat.sif bat, so the experience is transparent.
  4. Module system integration — Singularity containers fit naturally into Lmod/Environment Modules, making them first-class citizens alongside traditionally compiled software.

A minimal Singularity definition file for a tool like bat looks like this:

Bootstrap: docker
From: ubuntu:22.04

%post
    apt-get update && apt-get install -y bat

%runscript
    exec bat "$@"

Build it once, distribute the .sif file, and any user on any cluster with Singularity installed gets the same binary.

What We Have Been Building at PSC

Over the past few years, the Biomedical Applications Group at PSC has been containerizing CLI tools — many of which appear on the awesome-cli-apps list — and deploying them as modules on Bridges-2. Tools like bat, dust, rclone, visidata, and lazygit are all available as Singularity containers with corresponding module files.

The awesome-cli-apps repository serves as a useful roadmap for identifying which tools are worth packaging next. If a tool is popular enough to be curated there, it is probably useful enough to deploy on a shared system.

Getting Started

If you want to explore the list yourself:

The terminal is not going anywhere. With Singularity, neither is reproducibility.