Nicheloom

Market intelligence for builders — see what's gaining traction before it's crowded.

Crust

A CLI framework for TypeScript and Bun

Details

External ID
47408727
Source
HN
Company
—
Product
Crust
Website domain
github.com
Launched
March 17, 2026
Cohort
—
Upvotes
95
Upvotes percentile
0.9052890528905289
Tags
—
Fetched at
Sept. 7, 2026, 9:26 p.m.
Updated at
Sept. 7, 2026, 9:26 p.m.

Description

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.

Enrichment

Theme
browser automation and scraping for AI
Vertical
Horizontal
Function
Dev tools
Audience
Developer
AI stance
Not AI
Project type
Hobby / open-source project
Normalized one-liner
cli framework for typescript and bun
Manually corrected
False

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 — 231 launches clear the similarity bar, closest 8 shown.

Attention rank: #26 of 232 (itself plus its competitors, highest first — normalized so YC and Product Hunt are compared fairly).

Launched 138 days after the earliest competitor.

Other launches for this product

Same idea, different domain

Nobody's really built a dev tools tool for Sales yet.