Crust
A CLI framework for TypeScript and Bun
Get picks like this daily. Today's launch numbers, the top launches, AI and tech news, and a daily opportunity pick, straight to your inbox.
Want to reach these readers? Sponsor an issue.
We've been building Crust (https://crustjs.com/), a TypeScript-first, Bun-native CLI framework with zero dependencies. It's been powering our core product internally for a while, and we're now open-sourcing it.The problem we kept running into: existing CLI frameworks in the JS ecosystem are either minimal arg parsers where you wire everything yourself, or heavyweight frameworks with large dependency trees and Node-era assumptions. We wanted something in between.What Crust does differently:- Full type inference from definitions — args and flags are inferred automatically. No manual type annotations, no generics to wrangle. You define a flag as type: "string" and it flows through to your handler.- Compile-time validation — catches flag alias collisions and variadic arg mistakes before your code runs, not at runtime.- Zero runtime dependencies — @crustjs/core is ~3.6kB gzipped (21kB install). For comparison: yargs is 509kB, oclif is 411kB.- Composable modules — core, plugins, prompts, styling, validation, and build tooling are all separate packages. Install only what you need.- Plugin system — middleware-based with lifecycle hooks (preRun/postRun). Official plugins for help, version, and shell autocompletion.- Built for Bun — no Node compatibility layers, no legacy baggage.Quick example: import { Crust } from "@crustjs/core"; import { helpPlugin, versionPlugin } from "@crustjs/plugins"; const main = new Crust("greet") .args([{ name: "name", type: "string", default: "world" }]) .flags({ shout: { type: "boolean", short: "s" } }) .use(helpPlugin()) .use(versionPlugin("1.0.0")) .run(({ args, flags }) => { const msg = `Hello, ${args.name}!`; console.log(flags.shout ? msg.toUpperCase() : msg); }); await main.execute(); Scaffold a new project: bun create crust my-cli Site: https://crustjs.com GitHub: https://github.com/chenxin-yan/crustHappy to answer any questions about the design decisions or internals.
HN · launched Mar 17, 2026 · 95 upvotes (top 9%) · 0 views
Niche: software development frameworks · 154 launches, 2 in the last 7 days ▼ -89% · Explore this niche →
Category and tags
- Horizontal
- Dev tools
- Developer
- Not AI
- Hobby / open-source project
Visit website ↗ Source listing ↗
More like this: all 154 launches in software development frameworks →
Could you build this?
Yes A zero-dependency TypeScript CLI argument parsing and command framework is a standard software utility easily built with AI assistance.
Discussion
20 comments analyzed.
Competitors mentioned: Go CLI with cobra, Deno std library, script.js, Node + commander setup
Concerns raised: Binary size too large compared to Go CLIs (58-109MB vs ~10MB), Help plugin spacing formatting issues, Unclear comparison with existing CLI frameworks, Requires Bun bundled with CLI for distribution
Feature requests: Color support for help plugin, Node.js support in addition to Bun, More detailed documentation/comparison with alternatives
Competitors
Other products that read as similar to this one : 490 launches clear the similarity bar, closest 8 shown.
Attention rank: #54 of 491 (itself plus its competitors, highest first, normalized so YC and Product Hunt are compared fairly).
Launched 138 days after the earliest competitor.
- SharpTS · hn · 2026-01-09 · 6 upvotes · similarity 0.53
- GrainJS · hn · 2025-12-26 · 5 upvotes · similarity 0.51
- Titan · hn · 2025-12-11 · 49 upvotes · similarity 0.51
- Nub · hn · 2026-06-24 · 277 upvotes · similarity 0.49
- Belgie · hn · 2026-07-06 · 5 upvotes · similarity 0.48
- Suites · hn · 2025-11-04 · 19 upvotes · similarity 0.47
- ts-polyglot · ph · 2026-10-27 · 5 upvotes · similarity 0.47
- Shifu · hn · 2026-03-30 · 7 upvotes · similarity 0.47
The niche, labels, vibe code rating and competitor comparison on this page are analysis by Nicheloom. If you use them, please credit nicheloom.com. How you may use our data.