TypeScript MCP OpenAPI OAuth 2.0 Release automation

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.

Read the docs
beltline.yaml
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
terminal
$ 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
The problem

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.

The solution

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.

01

TypeScript CLI

Commands, flags, help text, shell completion, JSON output mode, and error formatting — all generated and ready to ship.

02

MCP Server

Every command becomes a tool call. Your CLI is AI-native from day one — no second codebase, no divergence.

03

Webhook / Zapier Adapter

Expose your commands as webhook endpoints or Zapier actions. Same manifest, same auth, same validation.

How it works

Write once. Generate everywhere.

Auth flow
$ 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
OpenAPI import
$ 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" }
]
MCP export
$ beltline mcp start
 MCP stdio server running
→ Tools exposed: deploy, rollback,
       status, deployments.list…

# Claude desktop config
mcpServers:
  acme:
    command: acme-cli mcp start
Release
$ 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)
Use cases

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.

Pricing

Buy the foundation once.
Use the generated code forever.

Launch pricing for the first 50 customers while we build the case-study cohort.

Solo
$199 $249
one-time · 1 developer
  • TypeScript CLI starter kit
  • YAML manifest
  • CLI generation
  • Auth scaffolding
  • OpenAPI import
  • MCP stdio export
  • 12 months of updates
  • Community support
Most popular
Team
$549 $699
one-time · up to 5 developers
  • Everything in Solo
  • Up to 5 developers
  • Unlimited company projects
  • Zapier / webhook adapter pack
  • Private examples
  • Priority support
  • 12 months of updates
Company
$1,499 $1,999
one-time · unlimited seats
  • Everything in Team
  • Unlimited seats, one company
  • All premium connector packs
  • Private support channel
  • Security review docs
  • Implementation review
  • 24 months of updates
Enterprise Support
$7,500 /year
from · custom scope
Contact us
  • 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.

Comparison

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

What exactly is Beltline?

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.

Is Beltline a framework or a generator?

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.

What does "use the generated code forever" mean?

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.

Can I use Beltline for a public-facing CLI?

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.

Does the MCP server replace my CLI?

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.

What happens after 12 months of updates?

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.

See all plans