README.md

June 1, 2026 · View on GitHub

ccp: Claude Code Profiles

Switch between Claude Code setups with a single command.
Different accounts, different providers, different models — each in its own profile.

No dependencies. Works with bash, zsh, and fish.

Version License


Install

curl -fsSL https://ccp.fa.dev.br/install.sh | bash

Then reload your shell:

ShellCommand
bashsource ~/.bashrc
zshsource ~/.zshrc
fishsource ~/.config/fish/conf.d/ccp.fish

The installer detects your shell automatically. For fish, it installs a native ccp.fish function to ~/.config/fish/conf.d/ — no need to source anything on the next shell launch.

Quickstart

ccp new work       # create a profile (interactive wizard)
ccp work           # launch claude with that profile
ccp use work       # export its vars into your current shell

How it works

A profile is a .env file under ~/.ccp/profiles/. Each profile gets an isolated CLAUDE_CONFIG_DIR — separate settings, history, and todos per profile.

~/.ccp/
  profiles/
    work.env
    personal.env
    openrouter.env
  config              # stores the default profile name
  data/               # isolated CLAUDE_CONFIG_DIR per profile

Example profile:

# ~/.ccp/profiles/work.env
CLAUDE_CONFIG_DIR=~/.ccp/data/work
ANTHROPIC_BASE_URL=https://openrouter.ai/api
ANTHROPIC_API_KEY=sk-or-...

Commands

ccp list                   list all profiles
ccp new <profile>          create a profile (interactive)
ccp show <profile>         show vars (keys masked)
ccp edit <profile>         open in $EDITOR
ccp remove <profile>       delete a profile

ccp [<profile>] [flags]    launch claude (with optional profile and claude flags)
ccp use <profile>          export vars into current shell
ccp run <profile> <cmd>    run any command with profile vars

ccp default [profile]      get or set the default profile
ccp doctor                 validate all profiles
ccp version                show current version
ccp update                 update to the latest release

Shorthand: ccp work --resume launches claude with the work profile and passes --resume directly to claude. Bare ccp uses the default profile.

ccp use vs ccp <profile>: use ccp use when you want vars to persist in your shell session. The shorthand spawns a subprocess — vars are scoped to that invocation only.

Providers

ProviderANTHROPIC_BASE_URLAuth var
Anthropic(leave blank)ANTHROPIC_API_KEY
OpenRouterhttps://openrouter.ai/apiANTHROPIC_API_KEY
z.ai (GLM)https://api.z.ai/api/anthropicANTHROPIC_AUTH_TOKEN
Kimihttps://api.moonshot.ai/anthropicANTHROPIC_AUTH_TOKEN
DeepSeekhttps://api.deepseek.com/anthropicANTHROPIC_AUTH_TOKEN
Ollama (local)http://localhost:11434ANTHROPIC_AUTH_TOKEN=ollama

The interactive wizard sets the right auth variable automatically.

Model mapping

Claude Code internally requests claude-opus, claude-sonnet, etc. If your provider uses different model names, map them in the profile:

ANTHROPIC_DEFAULT_OPUS_MODEL=glm-4.6
ANTHROPIC_DEFAULT_SONNET_MODEL=glm-4.6
ANTHROPIC_DEFAULT_HAIKU_MODEL=glm-4.5-air

The wizard asks for these optionally when creating a profile.

Updating

ccp update    # downloads and installs the latest release
ccp version   # show current version

ccp checks for updates in the background and notifies you when a new version is available.


Want to contribute? See CONTRIBUTING.md.