init

pipecat init — the single starting point for building a Pipecat app.

pipecat init initializes a new Pipecat project, then routes you to a build method:

  • AGENTS.md — the coding-agent guide (read natively by most coding agents).

  • CLAUDE.md — a one-line @AGENTS.md import so Claude Code loads it too.

  • GETTING_STARTED.md — for the developer: how to drive the agent well (MCP setup, how to write the first prompt, what to expect in a session). Deliberately not in CLAUDE.md/AGENTS.md — those cost agent context every session, and this guidance is for the human. Written only on the coding-agent path: it’s onboarding for commissioning a build, so it doesn’t fit a project that’s already been scaffolded (where the README is the start-here).

init is also the scaffolder. After writing AGENTS.md + CLAUDE.md it either:

  • builds the project from flags or a config file when any scaffold option is given (pipecat init . --bot-type web -t daily ) — the non-interactive path coding agents and automation use;

  • or, interactively, asks how you want to build: hand off to a coding agent, or scaffold a runnable bot right now (the wizard, in-place in the same directory).

pipecat init quickstart skips the question and scaffolds the canned quickstart bot in-place — the coding-agent guide and a runnable bot in one step. The scaffolding itself lives in pipecat.cli.scaffold.

Editing policy for the bundled guide: keep API specifics (signatures, imports, parameter names) out of AGENTS.md — it is a static snapshot, so anything that churns belongs in the live sources the guide’s §3 points agents at.

pipecat.cli.commands.init.init_command(ctx: Context, target: str | None = <typer.models.ArgumentInfo object>, overwrite_guide: bool = <typer.models.OptionInfo object>, name: str | None = <typer.models.OptionInfo object>, bot_type: str | None = <typer.models.OptionInfo object>, transport: list[str] | None = <typer.models.OptionInfo object>, mode: str | None = <typer.models.OptionInfo object>, stt: str | None = <typer.models.OptionInfo object>, llm: str | None = <typer.models.OptionInfo object>, tts: str | None = <typer.models.OptionInfo object>, realtime: str | None = <typer.models.OptionInfo object>, video: str | None = <typer.models.OptionInfo object>, client_framework: str | None = <typer.models.OptionInfo object>, client_server: str | None = <typer.models.OptionInfo object>, daily_pstn_mode: str | None = <typer.models.OptionInfo object>, twilio_daily_sip_mode: str | None = <typer.models.OptionInfo object>, config: Path | None = <typer.models.OptionInfo object>, recording: bool = <typer.models.OptionInfo object>, transcription: bool = <typer.models.OptionInfo object>, video_input: bool = <typer.models.OptionInfo object>, video_output: bool = <typer.models.OptionInfo object>, deploy_to_cloud: bool = <typer.models.OptionInfo object>, enable_krisp: bool = <typer.models.OptionInfo object>, observability: bool = <typer.models.OptionInfo object>, enable_eval: bool = <typer.models.OptionInfo object>, dry_run: bool = <typer.models.OptionInfo object>, list_options: bool = <typer.models.OptionInfo object>)[source]

Initialize a new Pipecat project — and optionally scaffold it.

Writes the coding-agent guide (AGENTS.md, CLAUDE.md). Pass scaffold options (or --config) to also build a runnable bot in place; with none, init asks how you want to build.

Examples:

pipecat init                # prompt for a directory, then choose how to build
pipecat init my-bot         # set up ./my-bot
pipecat init quickstart     # canned quickstart bot in ./pipecat-quickstart
pipecat init .              # set up the current directory
pipecat init . --bot-type web -t daily -m cascade --stt deepgram_stt --llm openai_llm --tts cartesia_tts
pipecat init my-bot --config project-config.json   # scaffold from a config file
pipecat init my-bot --overwrite-guide              # refresh existing guide files
pipecat init --list-options # print valid service/transport values as JSON