Project Config (.ccpod.yml)
A profile is global to your machine. A project config lives in a repo and overlays the profile for that project. ccpod walks up from $PWD to find a .ccpod.yml, so any subdirectory of the repo works.
Why use one
Section titled “Why use one”- Pin which profile this repo uses (
profile:). - Add domains to a restricted network policy.
- Expose extra ports.
- Forward extra env vars.
- Add sidecar services that only this project needs.
- Append to (or replace)
CLAUDE.md. - Pass extra flags to
claudeon every run (claudeArgs).
Example
Section titled “Example”# .ccpod.yml at the repo rootprofile: personal # which profile to base onmerge: deep # "deep" (default) | "override"
claudeArgs: - "--dangerously-skip-permissions"
config: claudeMd: append # "append" (default) | "override"
network: policy: restricted allow: - api.github.com - registry.npmjs.org
ports: list: - "4000:4000"
env: - STRIPE_SECRET_KEY
services: redis: image: redis:7 ports: - "6379:6379"Schema
Section titled “Schema”| Field | Type | Notes |
|---|---|---|
profile | string | Which profile to use. Falls back to default. |
merge | deep | override | How to combine with the profile (see Merge Strategies). |
claudeArgs | string[] | Extra CLI flags passed to claude. Deep: appended after profile args. Override: replaces. |
config.claudeMd | append | override | How to combine CLAUDE.md files. |
network | partial network block | Adds to (or replaces) the profile’s network config. |
ports | array | Extra port mappings. |
services | object | Extra sidecars; merged by key. |
env | string[] | Extra env-var names to forward. |
Inspecting the result
Section titled “Inspecting the result”ccpod config show # print resolved merged configccpod config validate # validate without runningccpod config show is the source of truth — what you see is what ccpod run will use.