Seed CLISeed CLI

Introduction

Seed CLI is a batteries-included, modular, TypeScript-first CLI framework powered by Bun.

Seed CLI is a modern, batteries-included CLI framework for building powerful command-line tools with TypeScript and Bun. It provides a modular architecture where every feature is opt-in, fully typed, and designed for developer productivity.

Why Seed CLI?

  • TypeScript-first — Full end-to-end type safety from arg parsing to command execution
  • Bun-powered — Built for Bun's speed with native APIs where possible
  • Batteries included — 15+ modules covering everything from prompts to HTTP clients
  • Modular — Import only what you need; every module is a separate package
  • Plugin system — Extend your CLI with reusable plugins and extensions

Quick Look

commands/greet.ts
import { command, arg, flag } from '@seedcli/core'

export default command({
  name: 'greet',
  description: 'Say hello',
  args: {
    name: arg({ type: 'string', required: true, description: 'Who to greet' }),
  },
  flags: {
    loud: flag({ type: 'boolean', alias: 'l', description: 'Shout it' }),
  },
  run: async (seed) => {
    const greeting = `Hello, ${seed.args.name}!`
    if (seed.flags.loud) {
      seed.print.success(greeting.toUpperCase())
    } else {
      seed.print.info(greeting)
    }
  },
})

Packages

Seed CLI is organized as a monorepo with individual packages you can install as needed:

PackageDescription
@seedcli/coreRuntime, builder, command router, arg parser
@seedcli/printColored logging, spinner, table, box, figlet, tree, progress
@seedcli/promptInteractive prompts with type inference
@seedcli/filesystemFile operations, path helpers, finding files
@seedcli/systemShell commands, system info, executable discovery
@seedcli/templateEta template engine for code generation
@seedcli/configConfig file loading via c12
@seedcli/httpHTTP client + OpenAPI typed client
@seedcli/package-managerPackage manager detection and operations
@seedcli/semverSemantic versioning utilities
@seedcli/stringsString manipulation and case conversion
@seedcli/patchingFile modification (patch, append, prepend)
@seedcli/completionsShell completion generation
@seedcli/uiHigher-level UI components
@seedcli/testingCLI testing utilities

Umbrella Package

If you want everything in one import, use the umbrella package:

bun add @seedcli/seed
import { build, command, arg, flag, print, colors, spin } from '@seedcli/seed'

@seedcli/seed re-exports all modules with sensible naming. HTTP methods are prefixed (httpGet, httpPost), package manager functions are prefixed (detectPackageManager, installPackages), and filesystem functions use direct names (read, write, copy).

The umbrella package is convenient for getting started. For production CLIs, import from individual packages to minimize bundle size.

Requirements

  • Bun 1.3 or later
  • TypeScript 5.0+

Next Steps

On this page