cmdfound #
27 Oct 2026
The fragmentation of Linux installers is one of its strengths and one of its weaknesses: a garden to try new ideas, and at the same time a lot of duplicated work. The reality is that there is probably a way to install the program you are looking for, but it is hidden behind one or several wrappers, containers, distros, etc. Before AI, and even now, it is hard to keep track of all those channels and to put them together.
cmdfound is an attempt at that, packed into one POSIX sh file. No daemon, no package manager of its own, nothing extra: just upstream, minus the friction.
Get it, and hook it to your shell:
$ wget -qO ~/.local/bin/cmdfound https://raw.githubusercontent.com/javier-lopez/cmdfound/master/cmdfound
$ chmod +x ~/.local/bin/cmdfound
$ echo 'eval "$(cmdfound --hook bash)"' >> ~/.bashrc
From then on a missing command goes through it.
cmdfound tries to answer one question: what is the shortest path, in time and in network, to run that missing command, given all the software that already exists for Linux. And it tries to answer it with as little code as possible.
Although the code was written by agents, every function went through a careful human review, and that is where code-freeze came from.
Every route, priced
A name usually lives in more than one place. nmap is a native binary in pkgx
and nix, and a package in every distro. -n shows them all without installing
anything, cheapest first:
Native beats a container, then fewer bytes, then less time.
Name the channel
When you know where it lives, say it, eg: github:owner/repo:
Distros as catalogs
fdfind is what Ubuntu calls fd. No native channel knows that name, so
cmdfound reads Ubuntu’s own command index, installs the package in an ubuntu
image and runs it there:
Eleven catalogs are read this way: alpine, ubuntu, fedora, etc. The images run under docker when it is there, and under udocker, rootless, when it is not.
Leave no trace
-e runs the program from a throwaway root that is gone when it exits. -l
lists what is installed and what each channel keeps; -p removes the
leftovers.
How far it reaches
Not every distro made it in, and not every catalog either; most of them are redundant. With the current ones it reaches:
- ~133,000 distinct commands.
- ~93% of the commands tldr-pages documents for linux.
- 7 native channels (github, aqua, pkgx, nix, AppImages, Rust crates and conda-forge) and 11 distro catalogs, run under 2 container runtimes.
- 78 of 100 random tldr commands, run from an empty home, just ran; most of the rest are names that mean more than one program, and it asks which.
Some more numbers
Built between September 14 and October 27, 2026, pairing with Claude Code:
- 82 sessions and subagents, ~14,500 model responses.
- 8.9 million output tokens; 96 million written to the prompt cache and 4.56 billion read back from it (the same context, reused turn after turn); 39,000 of fresh input. These count whole sessions that touched cmdfound, so they are an upper bound.
cmdfound.in: 5,298 lines, 201 functions. 27 channel, format and row files, 6,409 lines. Built into one 541 KB file.- 3,205 lines of tests over 44 fake channels and tools; 33 sources ruled out, each with the measurement that ruled it out.
That’s it, happy hacking! 😊