Skip to main content

Pikku CLI

The Pikku CLI is a type generation and build-time optimization tool that scans your codebase, analyzes your functions and wirings, and generates type-safe clients, entry points, and optimized bundles.

Quick Start

Run Pikku to generate all necessary files:

npx pikku

This scans your src/ directory (or directories specified in pikku.config.json), analyzes your functions and wirings, and generates:

  • Type-safe clients (HTTP, WebSocket, Queue, RPC)
  • Type definitions and schemas
  • Optimized entry points with tree-shaking
  • OpenAPI specifications (if configured)

Commands

pikku (default)

Generates all files once and exits.

npx pikku

pikku watch

Runs in watch mode, regenerating files when source code changes.

npx pikku watch

Perfect for development - your generated types stay in sync as you write code.

pikku console

Launches the Pikku Console — a visual control plane for exploring your functions, wirings, workflows, agents, and configuration.

npx pikku console

See The Console for full documentation.

pikku all

Alias for the default pikku command.

npx pikku all

Common Flags

--silent

Suppresses all output except errors.

npx pikku --silent

Useful in CI/CD pipelines where you only want to see failures.

--tags

Filter functions by tags. Only generate code for functions with matching tags.

npx pikku --tags public,api

--types

Filter by wiring types. Only include specific protocols.

npx pikku --types http,rpc

Available types: http, channel, queue, scheduler, rpc, mcp, cli, workflow

--http-routes

Filter HTTP functions by route pattern.

npx pikku --http-routes /api

Only includes HTTP routes starting with /api.

--names

Filter functions by name pattern (supports wildcards).

npx pikku --names 'user*,auth*'

--exclude-tags

Exclude functions with specific tags.

npx pikku --exclude-tags internal,deprecated

Common Workflows

Development

Run in watch mode for live updates:

npx pikku watch

Production Build

Generate optimized code for production:

npx pikku --silent

Filter by Environment

Generate different bundles for different deployments:

# Public API only
npx pikku --tags public --types http

# Admin service
npx pikku --tags admin --http-routes /admin

# Background workers
npx pikku --types queue,scheduler

Monorepo with Shared SDK

Generate shared clients in a separate package:

npx pikku

With pikku.config.json:

{
"fetchFile": "packages/sdk/.pikku/pikku-fetch.gen.ts",
"websocketFile": "packages/sdk/.pikku/pikku-websocket.gen.ts",
"packageMappings": {
"packages/sdk": "@my-app/sdk"
}
}

Next Steps