behave

Record how any CLI behaves. Prove your rewrite behaves the same.

Developer Tools Live Listed November 12, 2026
Visit site ↗

I built behave to test command-line tools as black boxes. It reads a tool's --help and man page, generates hundreds of test cases (every flag, flag pairs, listed values, edge-case stdin, bad values, missing files), records stdout, stderr and exit codes, and replays them against another implementation. I use it to compare GNU coreutils with the Rust rewrite uutils, where it has led to 30 upstream bug reports and 37 fix PRs, many of them merged. Useful when porting a tool to Rust or Go, or refactoring a CLI and wanting a quick regression net. It also runs as an MCP server. Early v0.1.

I built behave to make it practical to compare command-line tools as black boxes. When porting or refactoring a CLI, I wanted a quick regression net that records real outputs and exit codes so I can verify a rewrite behaves like the original.

CategoryDeveloper Tools
StageLive
ListedNovember 12, 2026

More launches on the runway

If you're building it, it belongs here. Free to list. Free forever.

← Browse the runway