cli.do
Build Production-Grade CLIs in TypeScript
Command-line tools with automatic help generation, type-safe argument parsing, and interactive UI. Ship CLIs with autocomplete, progress bars, and prompts quickly.
import { CLI } from 'cli.do' // Deploy with progress trackingcli.command({ name: 'deploy', args: { path: 'string' }, async run($) { const progress = $.UI.create.ProgressBar({ total: 2 }) progress.update('Building app') await $.Build.run({ path: $.args.path }) progress.update('Deploying to edge') const deploy = await $.Deploy.to.Edge({ env: 'production' }) $.UI.print.Success(`Deployed to ${deploy.url}`) }})
One of 48 primitives
cli.do sits in Build: ship from code, cli or mcp. Every .do shares one grammar, Business-as-Code, and one SDK.
Data
Records, vocabulary and search
Insight
Measure, test and trace
Build
Ship from code, CLI or MCP
- SDK
- CLI
- MCP
- Integrations
- Devs
- Studio
- Worker
- esbuild
Frequently asked questions
First-class TypeScript support with Node.js 18+, Bun, and Deno, generating standalone binaries for Linux, macOS, and Windows.
Real-time structured logging, distributed tracing via OpenTelemetry, time-travel debugging, and built-in --verbose/--debug flags with zero manual instrumentation.
Yes, with hot reload, instant rebuilds (<100ms), production parity, mock arguments, and integration with Jest/Vitest test frameworks.
Auto-generate installers for npm, Homebrew, apt, yum, and standalone binaries with built-in update notifications and shell completions for Bash/Zsh/Fish.
Rich terminal UI with Ink-powered components including spinners, progress bars, tables, forms, and interactive menus with type-safe validation and screen reader support.