mrkeyoor.com_
Thu 01 Oct 19:39 UTC
Dev Toolsevaluationupdated 26 Aug 2026

cli-printing-press review

CLI Printing Press researches an API or website, then generates a Go command-line client, a matching MCP server, local SQLite storage, agent instructions, and verification artifacts. It aims to produce task-oriented commands rather than stopping at one wrapper command per endpoint.

+19stars / 7d
Verdict

Our CLI Printing Press build passed after 176 seconds, but the 614-second test run finished with 22 packages passing and 2 failing. Its factory can save serious work for teams that repeatedly build agent-facing API tools, provided every live probe and generated artifact is reviewed in isolation. Use a conventional OpenAPI generator when you need dependable bindings rather than a research agent with a publishing pipeline.

We ran it

Lab card: what happened when we ran cli-printing-pressScreenshot of cli-printing-press (github.com/mvanhorn/cli-printing-press)
Install✓ · 40s101 packages
Build✓ · 176s
Tests✗ · 614s22 passed · 2 failed of 24 (go test)
Repo3840 files~410,265 lines of source · 161.5 MB · 10 CI workflows

Answers from our run

Does cli-printing-press build from source?

Dependencies installed in 40 seconds (101 packages), and the build succeeded in 176 seconds. We cloned commit bd9fab0 into a clean Debian container with 3 CPUs and no project-specific setup.

Do cli-printing-press's tests pass?

Not all of them: 22 of 24 passed and 2 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use cli-printing-press?

Anyone expecting a small OpenAPI code generator: the repository spans research, browser traffic capture, generation, scoring, dogfooding, publishing, and a public CLI library.

What are the alternatives to cli-printing-press?

OpenAPI Generator, Kiota, oapi-codegen. Our CLI Printing Press build passed after 176 seconds, but the 614-second test run finished with 22 packages passing and 2 failing.

Setup2/5Build took 176 seconds; full tests ran 614 seconds and failed
Docs4/5Very detailed, though claims and workflows are hard to scan
Community5/54,548 stars and same-day issue and pull request work
Maturity3/5v4.31.1 ships often, but current safety reports need review

Discussed on

  1. hnCLI Printing Press – create go CLI tool from any API7 points

Who it’s for

Agent-tool builders who repeatedly turn APIs into Go CLIs and MCP servers.
Teams willing to inspect generated code, proofs, and live behavior before publishing.
Claude Code users who want the project's best-tested skill-driven workflow.
API operators who value local SQLite sync, offline search, and compound domain commands.

Who it’s NOT for

Anyone expecting a small OpenAPI code generator: the repository spans research, browser traffic capture, generation, scoring, dogfooding, publishing, and a public CLI library.
Teams that cannot let an agent inspect live browser traffic or external tools: the README treats browser sniffing and competitor research as normal inputs.
Operators running dogfood checks against production hardware: issue 4355 says documentation examples were executed and left folders on a real NAS.
Security-sensitive users who cannot audit generated shell guidance: issue 4358 reports user-controlled question text entering shell command templates.
Codex-only teams expecting equal support: the README says Claude Code is the default and best-tested experience.

Setup reality

Our sandbox install succeeded in 40 seconds and added 101 Go packages. The build took 176 seconds and passed. Tests ran for 614 seconds, then exited 1 with 22 packages passing and 2 failing out of 24; the supplied log tail ends at FAIL without naming the two causes.

The main install expects Go 1.26.6 or newer, Node/npm for npx, and Claude Code or another skills-capable agent. Research and generation may also need API credentials, browser access, Codex CLI, or live target access depending on the job.

The binary and skills are separate installs, and the agent session must be restarted after skill refreshes. Generated work lives under ~/printing-press, while live dogfood and browser-sniff steps deserve isolated accounts and disposable targets.

Printing Press generates a product around an API, not just bindings

Most API generators take an OpenAPI document and emit methods. CLI Printing Press adds research before generation and verification after it. The agent studies official docs, existing CLIs, MCP servers, and browser traffic, then writes a Go CLI and matching MCP server. Generated tools can add SQLite sync, full-text search, offline queries, domain commands, compact JSON, typed exit codes, and dry-run behavior. The ambition is much closer to a tool factory than a template engine.

Each run produces 2 binaries, research notes, verification proofs, discovery artifacts, and a score. The documented workflow has phases for resolving a target, researching it, absorbing competing features, capturing browser traffic where needed, generating code, and adding task-specific commands. Active output, published CLIs, and archived manuscripts use separate directories under ~/printing-press. That structure helps review, but it also means buyers inherit a stateful agent pipeline rather than one deterministic compile step.

The default workflow is built around Claude Code

Installation needs Go 1.26.6 or newer, Node/npm for npx, and a skills-capable agent. The installer obtains the generator binary and refreshes all project skills. The binary can research, generate, verify, and score by itself, yet the README calls skills the primary interface and tells users to restart their agent session after installation. Claude Code is the default, tested target; Codex has a separate --agent codex path and supporting guide.

The codex generation mode delegates phase 3 code tasks to Codex CLI while Claude retains research, planning, scoring, and review. The README claims a 60 percent reduction in Opus tokens for that arrangement, but our lab did not measure model-token use or compare generated quality, so we do not adopt that claim as a finding. Teams should price and evaluate the exact agents they run. The required accounts, models, browser sessions, and API credentials depend on the target being printed.

What happened when we ran it

Our sandbox installed commit bd9fab0 in 40 seconds, adding 101 Go packages. The repository checkout was 161.5 MB with 3,840 files and roughly 410,265 lines of source. A full build succeeded, but it took 176 seconds on 3 CPUs with 8 GB of RAM. That is acceptable for a large generator during evaluation, though it is far beyond the feedback loop of a small Go CLI project.

The test command ran for 614 seconds and exited with status 1. Go reported 22 packages passing and 2 failing out of 24. The supplied tail lists successful internal packages, one package with no test files, and a final FAIL; it does not identify the two failing packages or print their assertions. We therefore cannot attribute the failure to networking, environment, timing, or code. The checkout had 10 CI workflows, no Dockerfile, and no top-level tests directory.

Live verification can change the system it examines

The project's central promise depends on dogfooding generated commands and proving live behavior. Open issue 4355 documents why that deserves a hard boundary. The dogfood harness executed Example: strings against a real Synology NAS, created several folders, accepted a cleanup command's success status, and left those folders behind. The report recommends separating human documentation examples from executable fixtures and verifying cleanup by reading the resource back. That is a specific production-safety failure, not a theoretical concern.

A safe evaluation should use a disposable tenant, test account, sandbox API, or isolated device. The 614-second suite result does not cover what a generated tool will do against a third-party service. Generated write commands need explicit fixtures, bounded namespaces, teardown, and post-teardown reads. Browser sniffing also captures traffic that may contain session or account data, so stored manuscripts and research artifacts need the same access rules as credentials.

Generated shell guidance has an open trust-boundary report

Issue 4358 describes another boundary: learning-loop templates place user-controlled questions into shell command lines. The reporter found unsafe forms in generated SKILL.md, AGENTS.md, a runtime protocol constant, and command examples, and recommends writing the text with a non-shell tool before reading it as data. The issue was filed publicly because the repository had no SECURITY.md and private vulnerability reporting was disabled, according to the report.

That finding matters because both generated CLIs and MCP servers will be called by agents. A 101-package install can pass while emitted instructions still teach unsafe command construction. Reviewers should inspect generator templates, generated runtime guidance, and example execution paths, then try hostile and ordinary strings containing quotes or delimiter lines. Never auto-run printed code or skills against valuable accounts merely because the scorecard says a build or smoke test passed.

Same-day development does not make every generated CLI safe

GitHub showed 4,548 stars, 138 open issues and pull requests combined, and a last push on August 26, 2026. Release v4.31.1 arrived August 19 with fixes for response bodies, sync failures, query parameters, and a Go dependency advisory. Current issue activity contains detailed retrospectives and narrowly scoped pull requests, which suggests the project is being exercised heavily. It also shows that the generator's output contracts are still being corrected.

CLI Printing Press is worth studying if API-tool creation is recurring work and your team can supply strong review and isolation. The 176-second successful build proves the large checkout compiles in our environment; 2 failed packages and the live-side-effect reports stop us from recommending unattended use. A conventional OpenAPI generator is duller and easier to constrain. Choose the press only when its research, SQLite layer, compound commands, MCP output, and agent instructions justify the larger trust surface.

Alternatives

ProjectWhat it isPick it when
OpenAPI Generator gh↗A mature generator for clients, servers, and documentation from OpenAPI documents.pick this instead when a known OpenAPI contract and predictable generated SDK are the whole job.
KiotaMicrosoft's OpenAPI client generator with several language targets and a focused CLI.pick this instead when typed API clients matter more than agent skills, SQLite, or MCP output.
oapi-codegen gh↗A Go generator for OpenAPI client and server types and bindings.pick this instead when you want Go-native bindings without an autonomous research and publishing pipeline.

What people are saying

  1. [github-trending] mvanhorn/cli-printing-press

Sources

  1. CLI Printing Press repository and README
  2. CLI Printing Press v4.31.1 release
  3. Dogfood harness side-effect report
  4. Generated shell guidance report
  5. Generated help and exit-code defects

More dev tools reviews

nyaterm · yoinks · tilelang · vintage-latex · NavierStokesAndEuler · UMR · the whole board →