Ship production CLIs
your team actually uses.
One YAML manifest generates a full TypeScript CLI, MCP server, and automation adapter — with auth, OpenAPI import, profiles, and release-ready defaults baked in.
name: acme-cli
version: 1.0.0
auth:
provider: oauth2
token_store: keychain
commands:
- name: deploy
description: "Deploy to production"
flags:
- name: env
type: string
default: production
- name: status
description: "Show cluster status"
openapi:
source: https://api.acme.com/openapi.json
filter: tag:platform
mcp:
export: true
$ beltline generate
✓ Scaffold → src/commands/deploy.ts
✓ Scaffold → src/commands/status.ts
✓ OpenAPI import → 14 routes mapped
✓ Auth → OAuth 2.0 + keychain storage
✓ MCP server → stdio transport ready
✓ Release config → npm + homebrew tap
$ acme-cli deploy --env staging
→ Authenticating…
✓ Logged in as jane@acme.com
→ Deploying to staging…
✓ Deploy complete in 4.2s
Every internal CLI starts the same way.
Then slowly falls apart.
Auth is always an afterthought
Token files in home directories. Hardcoded secrets. OAuth flows cobbled together from Stack Overflow at midnight.
API changes break everything
Your backend team updates the OpenAPI spec. Your CLI is 6 months out of date. Rewriting wrappers is nobody's job.
AI agents can't use your tools
MCP is table stakes for 2025 tooling. Retrofitting it onto an ad-hoc CLI takes a week and breaks the existing UX.
Distribution is a graveyard
Slack-shared shell scripts. A private npm package nobody remembers to update. Homebrew taps that broke last quarter.
One manifest. Three surfaces. Zero boilerplate.
Describe your tool once in YAML. Beltline generates a production-ready CLI, an MCP server, and a webhook adapter from the same source of truth.
TypeScript CLI
Commands, flags, help text, shell completion, JSON output mode, and error formatting — all generated and ready to ship.
MCP Server
Every command becomes a tool call. Your CLI is AI-native from day one — no second codebase, no divergence.
Webhook / Zapier Adapter
Expose your commands as webhook endpoints or Zapier actions. Same manifest, same auth, same validation.
Everything a production CLI needs.
Internal CLI Framework
Command routing, flag parsing, help text, and completion — without the boilerplate.
CLI Auth
OAuth 2.0 device flow, keychain storage, token refresh, and multi-profile support.
OpenAPI → CLI
Import an OpenAPI spec and generate typed commands for every endpoint automatically.
MCP Server Generator
Generate an MCP-compliant stdio server from your manifest. AI-native from day one.
YAML Manifest
One declarative manifest drives code generation, docs, and release config.
Profiles, Config & Secrets
Named profiles, layered config, keychain integration, and env-var overrides.
Distribution & Releases
npm publish, Homebrew tap, binary builds via pkg, and GitHub release automation.
JSON Output & Errors
Machine-readable output flag, structured error codes, and exit code conventions.
Write once. Generate everywhere.
$ acme-cli auth login
→ Opening browser for OAuth…
✓ Token stored in keychain
✓ Logged in as jane@acme.com
$ acme-cli auth status
account jane@acme.com
profile production
expires in 47 minutes
$ beltline import openapi
→ Fetching https://api.acme.com/openapi.json…
✓ 14 endpoints matched tag:platform
✓ Generated deploy.ts, rollback.ts…
✓ Types inlined from $ref schemas
$ acme-cli deployments list --json
[
{ "id": "d-1", "status": "live" }
]
$ beltline mcp start
✓ MCP stdio server running
→ Tools exposed: deploy, rollback,
status, deployments.list…
# Claude desktop config
mcpServers:
acme:
command: acme-cli mcp start
$ beltline release patch
→ Bumping 1.0.0 → 1.0.1…
✓ CHANGELOG.md updated
✓ npm publish → acme-cli@1.0.1
✓ Homebrew formula updated
✓ GitHub release created
✓ Binaries uploaded (macOS, Linux)
Built for platform and product teams.
Platform engineering CLIs
Internal deploy tools, cluster management, secrets rotation — all standardized on one CLI framework and distribution channel.
API companion CLIs
Ship a first-class CLI alongside your public API. Import from your OpenAPI spec and keep them in sync automatically.
AI agent tooling
Expose your internal systems to Claude, GPT, and other agents via MCP — without building a separate server or maintaining two codebases.
Automation & integration
Turn CLI commands into Zapier actions or webhook endpoints for no-code workflows. Same auth, same logic, no extra glue code.
Buy the foundation once.
Use the generated code forever.
Launch pricing for the first 50 customers while we build the case-study cohort.
- ✓ TypeScript CLI starter kit
- ✓ YAML manifest
- ✓ CLI generation
- ✓ Auth scaffolding
- ✓ OpenAPI import
- ✓ MCP stdio export
- ✓ 12 months of updates
- ✓ Community support
- ✓ Everything in Solo
- ✓ Up to 5 developers
- ✓ Unlimited company projects
- ✓ Zapier / webhook adapter pack
- ✓ Private examples
- ✓ Priority support
- ✓ 12 months of updates
- ✓ Everything in Team
- ✓ Unlimited seats, one company
- ✓ All premium connector packs
- ✓ Private support channel
- ✓ Security review docs
- ✓ Implementation review
- ✓ 24 months of updates
- ✓ Onboarding
- ✓ Procurement help
- ✓ Support SLA
- ✓ Private registry guidance
- ✓ Roadmap call
- ✓ SSO review
Generated code is yours. Do not resell or redistribute Beltline itself. Update renewals available at 40% of the current plan price.
How Beltline compares.
| Capability | Beltline | oclif | Commander.js | DIY |
|---|---|---|---|---|
| Auth (OAuth 2.0 + keychain) | ✓ | — | — | weeks |
| OpenAPI → commands | ✓ | — | — | — |
| MCP server export | ✓ | — | — | — |
| YAML manifest + codegen | ✓ | — | — | — |
| Named profiles | ✓ | — | — | manual |
| Release automation | ✓ | ✓ | — | — |
| Shell completion | ✓ | ✓ | ✓ | — |
| Plugin system | planned | ✓ | — | — |
Frequently asked questions
Beltline is a TypeScript CLI starter kit. You describe your tool in a YAML manifest and Beltline generates the full project: commands, auth, OpenAPI-mapped routes, MCP server, config management, and release tooling. You own the generated code — it's a starting point, not a runtime dependency.
Both. Beltline generates TypeScript source that uses a thin internal framework (routing, flag parsing, output formatting). The framework ships as part of your project — you can read, modify, and extend it. There's no black-box runtime you're locked into.
You own everything Beltline generates. You can ship it, modify it, and keep using it indefinitely — even after your update window ends. The only restriction is redistributing or reselling Beltline itself.
Yes. Beltline works equally well for public API companion CLIs. The OpenAPI import feature is specifically designed for teams that want to keep a CLI in sync with their public API spec.
No. The MCP server is generated alongside the CLI from the same manifest. Humans use the CLI; AI agents use the MCP server. Both stay in sync automatically because they share one source of truth.
You keep the code forever. Renew updates at 40% of the current plan price when you want new templates, connector packs, and framework fixes.
Stop reinventing the CLI wheel.
Get the full foundation in an afternoon. Auth, OpenAPI sync, MCP export, and release automation — done before you'd finish setting up a bare project.