June 1, 2026 · ~8 min read

Why I Built 262 CLI Tools
(With Zero Dependencies)

The story behind a Python CLI toolbox that fits in one pip install, works everywhere Python runs, and solves the "I just need a tool right now" problem.

CLI Python DevTools Open Source

The Setup

You're on a fresh machine. No jq. No fzf. No bat. Maybe not even curl.

You just need to quickly look at a JSON file, check what ports are open, hash a password, or figure out disk usage. The "right" way is to install each tool individually — but that's a dozen brew install/apt install/npm i -g commands, each pulling in its own dependency tree. Sometimes you're on a machine where you don't have sudo. Sometimes you just don't want to wait.

This scenario happens often enough that I started wondering: what if one command gave you 90% of the CLI tools a developer actually uses day-to-day?

The Constraint

I had one hard rule: zero external dependencies.

Every CLI tool had to run on Python's standard library alone — json, csv, http.client, hashlib, socket, struct, html.parser, and the rest of what ships with CPython 3.8+.

Why?

This constraint forced creativity. Want to render a TUI? That's ANSI escape sequences and shutil.get_terminal_size(). Want a CSV parser? That's csv from stdlib. Want HTTP? urllib.request. Want an async event loop for network scanning? selectors + socket.

The standard library is more capable than most people realize.

The Approach

I didn't build 262 tools in a weekend. The project grew organically: I'd need a tool, check if it existed, and if the existing solution required installing a heavy dependency tree, I'd write a zero-dependency version.

Over time, patterns emerged. Many tools share the same infrastructure:

These shared modules became evolver_tools.shared — the "standard library" of the toolbox itself. Each tool imports only what it needs, keeping individual tools readable and self-contained.

What's Inside

262 tools organized into domains:

CSV & Data (30+ tools)

From csv-concat (merge multiple CSVs) to csv-validate (check schema compliance). csv-stats produces descriptive statistics with histograms and frequency tables. csv-dedup finds and removes duplicates by key columns.

JSON & Data Formats (25+ tools)

json-query for jq-like key extraction. json-diff for recursive comparison. json-schema-infer that analyzes a JSON array and generates a JSON Schema draft. json-flatten turns nested JSON into flat key-value rows.

Text Processing (35+ tools)

Base64 encode/decode, ROT13, slugify, ansi-strip, word-wrap, padding, reversing, slicing — the Unix text processing classics, portable.

Network (20+ tools)

httpie-style simple-curl with colored output. port-scanner with concurrent scanning. whois-lookup, dns-resolve, ssl-check, latency-test. siege-lite for HTTP load testing with percentile latency reporting.

System & Monitoring (15+ tools)

sysmon — a curses-based real-time system monitor (CPU/memory/disk/network/processes). disk-usage, port-check, process-info, battery-status.

Security & Crypto (15+ tools)

hash (SHA256/512, MD5), hmac, otp, keygen, entropy check, password-strength analyzer.

Dev Tools (20+ tools)

smellfinder — a Python AST-based linter that detects long functions, too many parameters, missing docstrings, and 11 other code smells. project-doctor — scans a project directory and produces a health score with improvement suggestions. license-gen generates MIT/GPL/Apache/BSD/MPL licenses.

Creative & Fun (15+ tools)

ANSI banner generator, rainbow text, Unicode art charts, colorized CSV previews, figlet-style ASCII banners.

Why Not Just Use BusyBox / Rust Utils?

Fair question. BusyBox is great — if you're on Linux and have root. Rust CLI tools (fd, bat, ripgrep) are faster — if you're on a platform that has binary releases.

evolver-tools fills a different niche:

Scenario Best Tool
Embedded Linux / containers BusyBox ✓
Performance-critical pipelines Rust CLI tools ✓
Windows dev machine, no sudo evolver-tools ✓
CI runner with just Python evolver-tools ✓
"I need this tool in 5 seconds" evolver-tools ✓
Locked-down corporate laptop evolver-tools ✓

It's not a replacement for specialized tools. It's a complement — a portable base layer you install once and forget about, until you need it in an environment where installing anything else is a hassle.

The 9 Flagships

Among the 262 tools, 9 stand out as "flagships" — tools with full UIs or advanced capabilities:

What I Learned

Building 262 zero-dependency CLI tools taught me a few things I didn't expect:

1. The standard library is underrated. Most Python developers install packages for things the stdlib handles fine — especially for CLI work. You don't need requests for a simple API call. You don't need rich for colored output. The stdlib is verbose but capable.

2. "Zero dependencies" is a product feature, not just a technical choice. Users don't care about your architecture. They care about pip install being fast and never breaking their existing setup. Zero deps is the simplest promise you can make.

3. CLI tools are still valuable. In an era of web dashboards and AI assistants, the terminal remains the most composable, scriptable, and universal interface — if you have the right tools installed.

4. Building is the easy part. The hard part is getting people to know it exists. But that's a problem for another post.

Try It

One command. 262 tools. Zero dependencies.

pip install evolver-tools

GitHub  ·  Cookbook (100 recipes)  ·  Use Cases  ·  Support the Project

What's Next

A few things I'm thinking about:

If you try it and something's broken, missing, or confusing — open an issue. I actually read them all.


evolver-tools is an open-source project. If you find it useful, consider supporting it — every contribution keeps the tools free and maintained.