Skip to content

Shared Team Profile

The most common reason teams adopt ccpod is to align on a single Claude environment. The fix is a profile with config.source: git.

Create a repo with the contents of a Claude config dir at the root:

your-org/claude-config
├── settings.json
├── CLAUDE.md
├── skills/
│ └── ...
└── hooks/
└── ...

Push it. Make sure teammates have read access.

Each teammate runs:

Terminal window
ccpod profile create team

…and edits ~/.ccpod/profiles/team/profile.yml:

name: team
description: Shared team Claude environment
config:
source: git
repo: https://github.com/your-org/claude-config
sync: daily # "always" | "daily" | "pin"
ref: main
image:
use: ghcr.io/yorch/ccpod:latest
auth:
type: api-key
keyEnv: ANTHROPIC_API_KEY
Terminal window
ccpod run --profile team

…or pin it per project with .ccpod.yml:

profile: team
syncBehavior
alwaysPull on every ccpod run.
daily (default)Pull at most once per 24h. Tracked in ~/.ccpod/profiles/team/.ccpod-sync-lock.
pinNever auto-pull. Use ccpod profile update team to force.

To force an update at any time:

Terminal window
ccpod profile update team

A team profile is a baseline. Individuals can:

  • override per project via .ccpod.yml (deep-merge by default — see Merge Strategies)
  • override per run via flags like --env, --no-state, --rebuild

Profiles stay clean; project- and run-level overrides do not mutate the profile file.