Where to Launch a CLI Tool: Package Managers, Terminal Directories and Show HN
A command-line tool is launched by making it installable with one command, so start with the package manager your users already have: Homebrew for macOS and Linux tools, crates.io for Rust, npm for JavaScript. Then list it in a terminal-focused directory such as Terminal Trove and post it to Show HN. Homebrew’s core repository wants public interest first: its policy sets star, fork or watcher thresholds, and higher ones for a tool you wrote yourself.
Why is the install command the real launch for a CLI?
A web app is judged on its landing page. A CLI is judged on the first thirty seconds of the install: if brew install yourtool or cargo install yourtool works, people try it; if the README starts with “clone, install a toolchain, build”, most close the tab. So the places that matter first are registries and package managers, and communities come second.
| If your users are | Put the tool in | What it asks of you (read 13 November 2026) |
|---|---|---|
| macOS and Linux developers | Homebrew formula | Open source, stable releases, checksummed sources, a livecheck and public interest |
| Rust developers | crates.io | An account, a verified email, a unique crate name; publishing is generally permanent |
| JavaScript developers | npm public registry | An npm user account; unscoped public packages are always public |
| Python developers | PyPI | A built distribution and an account; TestPyPI exists for dry runs |
Which registries and directories carry a command-line tool?
Entries one to three are where people install from. The rest are where people discover that a tool exists.
01 Homebrew (homebrew/core)
The default package manager on many developers’ Macs, whose core repository accepts open-source command-line software as formulae.
- Notability
- At least 30 forks, 30 watchers or 75 stars; at least 90, 90 or 225 for a self-submission by the repository owner
- Age
- A repository less than 30 days old is normally not eligible
- Also needed
- A working livecheck, a stable release, an immutable source archive verified with SHA-256
- Not accepted
- Discontinued or unmaintained software; self-updating software unless disabled
The self-submission threshold is the one that matters for a launch: your own tool needs 225 stars, 90 forks or 90 watchers on its canonical repository before core takes it. Until then, a personal tap, a repository Homebrew users can add, lets people install with one extra command. The acceptable-formulae page also says alternatives unsuitable for core belong in a third-party tap.
Use brew create URL to generate a starting formula from your release archive, then compare it with a current formula in the same language. The generated file is a template, not a finished package.
02 crates.io
The Rust package registry, reached with cargo publish.
- Account
- A crates.io account with a verified email address
- Names
- First come, first served, so claim yours early
- Permanence
- Publishing a version is generally permanent
Fill in the license, description and repository fields in your manifest before the first publish, since the registry page is built from them. A dry run catches missing metadata before you upload.
Because a published version generally cannot be removed, do not publish a half-finished 0.1.0 just to reserve the name. Publish when you would be comfortable with a stranger installing it.
03 npm public registry
The registry for JavaScript and Node-based tools, where users run them through the package manager.
- Account
- An npm user account is required before publishing
- Scopes
- Unscoped packages are always public; scoped packages have their own access setting
- Security
- npm documents two-factor authentication and provenance statements for publishing
Pick a short, typeable name, because people will type it hundreds of times. If the plain name is taken, a scope under your own username keeps the command honest.
Provenance, generated when you publish from GitHub Actions, lets a user see which repository and workflow built the package. It costs a few lines in your release workflow and builds trust a README cannot.
04 Terminal Trove
A site that collects terminal tools by category, including TUI, CLI, Git, DevOps and databases.
- Route
- A Submit a Tool link in its main menu
- Our check
- Its submit page refused an automated fetch; read its terms and what it asks before you send anything
- Sponsors
- Its homepage shows a sponsor and an Advertise link, so separate editorial listings from ads
The audience is people who browse for new terminal tools on purpose, which is the narrowest and best fit for a CLI. Its categories tell you how to describe the tool: choose the one a user would search.
Include a short demo recording, since terminal tools are understood by watching them run. A static screenshot of help output explains little.
05 Console (console.dev)
A free weekly newsletter that reviews developer tools.
- Suggest
- Email the details; it features 2–3 tools an issue
- Power-user questions
- Does it have an API or CLI, keyboard shortcuts and accessible output?
Its published criteria ask whether the tool is fast, runs on several platforms and is easy to install and deploy. A CLI with one-line installs on three systems answers most of that before the editor opens the repository.
Pre-1.0 releases count as betas there, so an early version can still be considered.
06 Show HN
Hacker News’s section for things you made that readers can try.
- Fits
- A CLI that does one thing readers can run in a minute
- Warning
- The guidelines discourage quickly generated one-offs
Lead with the install command and a three-line example of input and output. Readers will run it, so test the install on a clean machine first.
Say what the tool does that grep, jq or whatever the obvious alternative is does not. Honest comparisons draw better discussion than superlatives.
07 Post your build ideas (our board)
A free launch board: no account, one emailed link, no queue.
- Role
- A permanent, linkable page for the project, with comments
- Limit
- Small audience, so it complements the places above
Put the install command in the description so someone can try the tool from the page without opening a repository. The outbound link to your site or repository is a normal followed link.
Browse developer tool ideas if you are still choosing what to build; many terminal-shaped gaps are listed there.
What is a sensible launch sequence for a CLI?
Publish to the language registry and add a personal Homebrew tap first, so installing takes one line on each system. Record a short demo, put it at the top of the README and publish a launch page. Then submit to Terminal Trove and post a Show HN. Revisit core Homebrew only after the repository has the public interest its policy asks for. The CLI tool launch playbook has the dated plan, and the open source launch checklist covers repository hygiene. If the tool is written in Python, the Python package places to launch differ in useful ways, and the developer tool places to launch cover audiences beyond the terminal.
Frequently asked questions
How many GitHub stars does Homebrew require?
Homebrew’s acceptance policy says a GitHub project normally needs at least 30 forks, 30 watchers or 75 stars, and at least 90 forks, 90 watchers or 225 stars when the repository owner submits it. Equivalent public evidence can be considered, and the repository must usually be more than 30 days old. Read the policy page for exceptions.
Can I distribute a CLI through Homebrew without those numbers?
Yes, through your own tap. A tap is a repository of formulae that users add with one command, and Homebrew’s own page says formulae unsuitable for core belong in a third-party tap. It gives you control and costs nothing, though discovery depends on your README and posts, since it is not in core’s search.
Should a CLI be on npm, crates.io or PyPI?
Use the registry of the language your users already work in, because they have its package manager installed. A Rust tool belongs on crates.io, a Node tool on npm and a Python tool on PyPI. A compiled binary can also ship as a release archive with a Homebrew formula for people outside any language ecosystem.
Post your build ideas publishes this page and runs a free launch board that competes with some of the sites it names. Facts about other sites came from their own pages on the date shown above; terms, queues and prices change, so confirm on their sites before you decide. About the publisher.