scaffold
Project scaffolding for pipecat init.
The scaffolder generates a runnable Pipecat project (bot.py, dependencies, config,
optional client). It has three entry points, all used by pipecat init:
scaffold_interactive()— the wizard, run when the developer chooses “scaffold a runnable bot now” on interactiveinit.scaffold_quickstart()— the canned quickstart preset (pipecat init quickstart).resolve_scaffold_config()+generate_scaffold()— flags/config-file driven, no prompts (pipecat init . --bot-type web …); the path coding agents and automation use. Split so the config is validated before any files are written.
These were formerly the body of the standalone pipecat create command, which has been
removed — pipecat init is now the single entry point.
- pipecat.cli.scaffold.list_options_callback(value: bool)[source]
Print available service options as JSON and exit (eager
--list-optionsflag).
- pipecat.cli.scaffold.scaffold_interactive(dest: Path | None, derived_name: str | None, in_place: bool)[source]
Run the interactive wizard and generate a project.
Used by
pipecat initwhen the developer chooses to scaffold a runnable bot.destis the resolved output location: the exact target directory whenin_placeis True, otherwise the parent the<name>subfolder is created under (None= current directory).
- pipecat.cli.scaffold.resolve_scaffold_config(ctx: Context, *, derived_name: str | None, dry_run: bool, config: Path | None, name: str | None, bot_type: str | None, transport: list[str] | None, mode: str | None, stt: str | None, llm: str | None, tts: str | None, realtime: str | None, video: str | None, client_framework: str | None, client_server: str | None, daily_pstn_mode: str | None, twilio_daily_sip_mode: str | None, recording: bool, transcription: bool, video_input: bool, video_output: bool, deploy_to_cloud: bool, enable_krisp: bool, observability: bool, enable_eval: bool)[source]
Merge flags + config file into a validated
ProjectConfig— no file writes.Merges a
--configfile (if given) with the CLI flags and validates the result. An explicit CLI flag always wins; the file value applies only when the flag was omitted. Exits non-zero with a clear message on a validation error, and ondry_runprints the resolved config as JSON and exits zero — so callers can validate before writing anything (seegenerate_scaffold()).ctxis the calling Typer command’s context — used to tell which flags the user actually typed (vs. their defaults). The parameter names here must match the option names declared on that command.
- pipecat.cli.scaffold.generate_scaffold(project_config, *, dest: Path | None, in_place: bool)[source]
Generate a project from an already-validated config and print next steps.
The write half of non-interactive scaffolding; pair it with
resolve_scaffold_config(), which validates first so a bad invocation fails without touching the directory.
- pipecat.cli.scaffold.scaffold_quickstart(output_dir: Path | None = None, *, dest: Path | None = None, in_place: bool = False)[source]
Generate the canned quickstart project (no questions).
Sets up a project with SmallWebRTC, Daily, Deepgram STT, OpenAI LLM, and Cartesia TTS — the fastest way to get a voice agent running. Used by
pipecat init quickstart, which scaffolds in-place into an already-initialized directory (viadest/in_place).