{"id":18866,"library":"trpc-cli","title":"trpc-cli","description":"trpc-cli transforms a tRPC (or oRPC) router into a type-safe, documented CLI with zero boilerplate. Current stable version is 0.14.0, released frequently (multiple releases per month). It automatically generates positional arguments, options, help text, and shell completions from Zod/Valibot/Arktype schemas. Unlike general-purpose CLI frameworks like Commander or yargs, trpc-cli leverages tRPC's type system for end-to-end type safety and reuse of router logic across CLI, HTTP server, and programmatic APIs. It depends only on Commander as a runtime dependency (peer deps for validation libraries). Supports tRPC v10/v11, oRPC, and experimental standalone mode. ESM-only since v0.12.0.","status":"active","version":"0.14.0","language":"javascript","source_language":"en","source_url":"https://github.com/mmkal/trpc-cli","tags":["javascript","tprc","cli","typescript"],"install":[{"cmd":"npm install trpc-cli","lang":"bash","label":"npm"},{"cmd":"yarn add trpc-cli","lang":"bash","label":"yarn"},{"cmd":"pnpm add trpc-cli","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Runtime dependency for CLI argument parsing and help generation.","package":"commander","optional":false},{"reason":"Peer dependency if using tRPC routers (v10.45.2+ or v11.0.1+).","package":"@trpc/server","optional":true},{"reason":"Peer dependency for input validation (v3.24.0+ or v4.0.0+).","package":"zod","optional":true}],"imports":[{"note":"ESM-only since v0.12.0; CommonJS require will fail. Use ESM or dynamic import.","wrong":"const { cli } = require('trpc-cli')","symbol":"cli","correct":"import { cli } from 'trpc-cli'"},{"note":"Utility to parse a tRPC router into a serializable structure; available since v0.12.3.","symbol":"parseRouter","correct":"import { parseRouter } from 'trpc-cli'"},{"note":"Experimental helper to create CLI for a remote tRPC server. Added in v0.12.1.","symbol":"proxify","correct":"import { proxify } from 'trpc-cli'"}],"quickstart":{"code":"import { initTRPC } from '@trpc/server';\nimport { z } from 'zod';\nimport { cli } from 'trpc-cli';\n\nconst t = initTRPC.create();\nconst appRouter = t.router({\n  greet: t.procedure\n    .input(z.object({ name: z.string(), greeting: z.string().default('Hello') }))\n    .query(({ input }) => `${input.greeting}, ${input.name}!`),\n});\n\nconst program = cli({ router: appRouter });\nprogram.parse(process.argv);\n// Usage: node greet.js greet --name World\n// Output: Hello, World!","lang":"typescript","description":"Creates a tRPC router with a 'greet' procedure and maps it to a CLI using trpc-cli. Run with 'node cli.js greet --name World' to see output."},"warnings":[{"fix":"Convert your project to ESM (type: 'module' in package.json) or use dynamic import: const { cli } = await import('trpc-cli').","message":"trpc-cli v0.12.0 switched to ESM-only. CommonJS require() will throw.","severity":"breaking","affected_versions":">=0.12.0"},{"fix":"Install peer dependencies: @trpc/server, @valibot/to-json-schema, effect, valibot, zod as needed.","message":"v0.11.0 introduced peer dependencies for all packages except commander. Missing peer deps will cause runtime errors.","severity":"breaking","affected_versions":">=0.11.0"},{"fix":"Avoid relying on standalone mode for production; use with @trpc/server or @orpc/server.","message":"Standalone mode (norpc) is experimental and may be removed in future versions.","severity":"deprecated","affected_versions":">=0.13.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Switch to ESM (type: 'module' in package.json) or use dynamic import: const { cli } = await import('trpc-cli').","cause":"trpc-cli is ESM-only since v0.12.0, but the project uses CommonJS require.","error":"Error [ERR_REQUIRE_ESM]: require() of ES Module .../node_modules/trpc-cli/index.js not supported."},{"fix":"Run 'npm install @trpc/server' (v10.45.2+ or v11.0.1+).","cause":"Missing peer dependency @trpc/server.","error":"Cannot find module '@trpc/server' or its corresponding type declarations."},{"fix":"Use named import: import { cli } from 'trpc-cli'.","cause":"Default import used incorrectly (import cli from 'trpc-cli') instead of named import.","error":"TypeError: cli is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}