OpenRadar

Project · Go · Added June 12, 2026

cli-printing-press

CLI Printing Press reads API docs, absorbs every competitor CLI, and generates token-efficient Go CLIs with local SQLite and MCP servers for any API or website.

3,222 stars 334 forks View on GitHub

CLI Printing Press

Overview

CLI Printing Press is a Go-based CLI generator that does something no other tool attempts: it reads your API documentation, studies every popular community CLI and MCP server for that API, sniffs the web for unpublished endpoints (think Google Flights or Dominos), and then generates a token-efficient Go CLI plus an MCP server that absorbs every feature from every competing tool — then transcends them with compound commands only possible with local data. It hit 3,200 GitHub stars in under three months, driven by a single insight: in the age of AI agents, a well-designed CLI is muscle memory.

The project is built by Matt Van Horn, whose previous work includes the printing-press-library, a catalog of pre-printed CLIs for popular APIs like Linear, GitHub, HubSpot, and ESPN. The library alone has 1,500 stars and dozens of ready-to-install CLIs. But the real product is the generator itself — the machine that prints those CLIs.

The core problem it solves is deceptively simple: every API has endpoints, but endpoints aren’t commands. Most API wrappers stop at “wrap every endpoint, ship it, done.” Discord’s API has 300+ endpoints, but Peter Steinberger’s discrawl — which has 583 stars — ships just 11 commands: sync, search, sql, tail, mentions, members. Those 11 commands win because they embody a domain insight: conversations are institutional knowledge. The Printing Press automates that same intuition at scale — find the insight, absorb the ecosystem, print the CLI.

Why it matters

The developer tools space has been drowning in “wrap an API and call it a day” CLI generators for years. OpenAPI-to-CLI tools exist by the dozen, but they produce thin wrappers that don’t understand the domain. Meanwhile, AI coding agents like Claude Code, Codex, and Cursor are consuming CLIs as their primary interface to external services. A bad CLI wastes tokens. A great CLI — one with local SQLite caching, compound queries, and agent-native output flags — saves thousands of tokens per session.

This connects to a broader shift in how developers interact with APIs. The MCP (Model Context Protocol) ecosystem is exploding, with hundreds of MCP servers being published weekly. But most are thin HTTP wrappers with no local state, no offline mode, and no compound intelligence. The Printing Press generates both a Cobra CLI and an MCP server from the same spec, sharing the same client, store, and auth. Shell agents use the CLI. IDE agents use MCP. Zero code duplication.

The timing matters too. Anthropic’s Claude Code is now the most-used AI coding assistant, and Cursor has surpassed VS Code in developer mindshare. These tools need well-designed CLIs to function efficiently. The Printing Press isn’t just a developer convenience — it’s infrastructure for the agentic development workflow.

Key Features

Non-Obvious Insight Engine. Before generating anything, the Printing Press runs a research phase that identifies what it calls the “Non-Obvious Insight” (NOI) — a one-sentence reframe of what the API actually is versus what its creators think it is. Stripe isn’t just a payment processor; it’s a business health monitor. Linear isn’t just an issue tracker; it’s a team behavior observatory. This NOI becomes the creative DNA of the generated CLI, driving the compound commands that make it genuinely useful rather than just a wrapper.

Absorb and Transcend Architecture. The generator doesn’t just read the API spec. It catalogs every feature from every Claude Code plugin, MCP server, community skill, competing CLI, and automation script for that API. Every feature becomes a row in an absorb manifest — something the generated CLI must match and beat with offline support, agent-native output, and SQLite persistence. The system auto-suggests novel features it thinks are missing from the ecosystem before you approve the manifest.

Local-First SQLite Data Layer. High-gravity resources get domain-specific SQLite tables (not JSON blobs), FTS5 full-text search indexes, and incremental sync with cursor tracking. sync pulls data down. search finds it in milliseconds. sql lets power users query directly. All offline, all local. This enables compound commands like stale, health, bottleneck, and reconcile that join across resources and analyze history — commands a stateless API wrapper literally cannot do.

No Spec? No Problem. Don’t have an OpenAPI spec? Point the press at a website. It launches a browser, captures traffic, reverse-engineers the API, and generates the spec for you. ESPN, Postman Explore, internal tools — if you can click through it, the press can build a CLI for it. This is how the ESPN CLI was built: sniffed, with no official API. One command returns tonight’s NBA playoff games with live scores, series state, each team’s leading scorer’s stat line, and injury news from the last 24 hours.

Agent-Native by Default. Every generated CLI is designed for AI agent consumption first. Human-friendly tables when you’re in a terminal. Auto-JSON when piped, no --json flag needed. --compact drops to high-gravity fields only (60-80% fewer tokens). Typed exit codes (0/2/3/4/5/7) let agents self-correct without parsing error text. --dry-run for safe exploration. Every flag exists because an AI agent will call it thousands of times a day.

Dual Interface from One Spec. Every API gets a Cobra CLI (<api>-pp-cli) and an MCP server (<api>-pp-mcp). Same client, same store, same auth. Shell agents use the CLI. IDE agents use MCP. Zero code duplication. This is the most practical approach to the MCP ecosystem I’ve seen — instead of building MCP servers separately, you generate them alongside the CLI.

Verified, Not Vibes. Four mechanical checks — scorecard, dogfood, proof-of-behavior, live API smoke test — catch hallucinated paths, dead flags, auth mismatches, and broken data pipelines before you ship. The Codex mode offloads code generation to Codex CLI while Claude stays the brain for research, planning, scoring, and review. Same quality, 60% fewer Opus tokens.

Use Cases

Pros and Cons

Pros:

Cons:

Getting Started

# Install the binary and Claude Code skills
curl -fsSL https://raw.githubusercontent.com/mvanhorn/cli-printing-press/main/scripts/install.sh | bash

# Verify installation
cli-printing-press --version

# Start Claude Code and print a CLI
claude
/printing-press Linear

# Or install a pre-printed CLI from the library
printing-press install linear-pp-cli

The library catalog at printingpress.dev has ready-to-install CLIs for Linear, GitHub, HubSpot, ESPN, Slack, Notion, and more. Each comes with both a Cobra CLI and an MCP server.

Alternatives

OpenAPI Generator — The standard tool for generating API clients and server stubs from OpenAPI specs. It supports 40+ languages and produces clean, well-documented code. But it generates pure endpoint wrappers with no domain intelligence, no local data layer, and no compound commands. Choose it when you need a typed client library, not an agent-facing CLI.

Speakeasy — An API developer platform that generates SDKs, docs, and Terraform providers from OpenAPI specs. Speakeasy’s generated SDKs are polished and production-ready, but they’re client libraries, not CLIs. Better choice when you’re building an SDK for other developers to consume in their code, not when you need a terminal tool for agents.

Stainless — Generates type-safe SDKs from OpenAPI specs, used by OpenAI and Anthropic. Like Speakeasy, it focuses on client libraries rather than CLIs. The generated code is excellent for programmatic use, but it doesn’t address the agent-CLI interface problem that the Printing Press solves.

Verdict

CLI Printing Press is the most interesting developer tool I’ve seen come out of the AI agent ecosystem in 2026. The core insight — that every API has a secret identity and the best CLIs are built around that identity, not around endpoints — is the kind of thing that sounds obvious in retrospect but nobody was doing. The absorb-and-transcend architecture means you’re not just getting another API wrapper; you’re getting a tool that studied the entire ecosystem and built something better. At 3,200 stars with daily commits, it’s clearly resonating with developers who are building agentic workflows. If you’re a fullstack developer working with APIs — and if you’re reading this, you are — this is worth installing today, even if only for the pre-printed CLIs in the library.

Related

Shared tags