Why We Rewrote Our Python CLI in Go (and What We Gained) The article explains why the developers of TestSmith rewrote their CLI tool from Python to Go, citing distribution friction as the primary motivation. By moving to Go, they achieved a single static binary with no runtime dependencies, simplified cross-platform builds, and leveraged native concurrency for parallel test generation. The rewrite also improved the command interface with proper subcommands and introduced a plugin architecture for easier language support. TestSmith v1 was a Python CLI. It worked. Users could pip install testsmith , point it at a source file, and get a test scaffold back. But every team that tried to wire it into CI hit the same wall: Python environments. The problem wasn't Python itself — it was distribution. A static analysis tool that requires a matching Python version, a virtual environment, and a pinned dependency tree is a hard sell for a step that runs on every push. We were shipping a tool, not a library. Tools should be frictionless. We rewrote TestSmith v2 in Go. The goal was a single static binary with no runtime dependencies — something you could drop into any CI runner, any Docker image, any developer's PATH, and it would just work. Go was the right choice for three reasons: Single binary. go build produces one self-contained executable. No pip, no venv, no requirements.txt . Users download a binary or brew install it and they're done. Cross-platform with one build. The v1 CI matrix was a headache — different Python versions across Ubuntu, macOS, and Windows, with slightly different behavior on each. Go's cross-compilation gave us linux/amd64 , darwin/amd64 , darwin/arm64 , and windows/amd64 from a single build step. Native concurrency. Test generation is embarrassingly parallel — each file is independent. Go's goroutines and channels made the fan-out generation and the debounced file watcher straightforward to implement without pulling in async libraries. The command surface was cleaned up in the same pass. v1 used flags for everything: testsmith