A Go CLI to switch Claude Code providers and launch profile-isolated sessions.
- Command:
proteus switch <provider> - Global settings: writes to
~/.claude/settings.json - Isolation: none (applies globally)
- Best for: quickly changing the current default provider/model
- Command:
proteus launch <profile> - Global settings: does not write global settings
- Isolation: yes (profile/session isolated)
- Runner: starts
profile.runnerwithprofile.args(profile.runnermust be executable, for exampleclaudeorcodex) - Default:
share_claude_mdisfalse - Best for: running parallel sessions across different providers (for example DeepSeek / GLM / Anthropic)
- Manage multiple Claude-compatible providers in one config file.
- Support both global switching (
switch) and profile-isolated parallel sessions (launch). - Sync shared Claude config entries (
commands,skills,plugins,agents,ide) into profile config dir. - Validate provider configuration with live HTTP checks.
- Go
1.22+(for building/running from source) - Claude Code installed if you use
launchwithrunner: claude
brew tap HeminWon/proteus https://github.com/HeminWon/proteus
brew install proteusgo build -o dist/proteus ./cmd/proteus
./dist/proteus --help- Create config:
cp configs/providers.example.yaml ~/.config/proteus/providers.yaml-
Fill token/env in
~/.config/proteus/providers.yaml. -
Validate:
proteus validate- Global switch:
proteus switch anthropic- Isolated launch:
proteus launch defaultDefault path:
~/.config/proteus/providers.yaml
Minimal example:
version: 1
providers:
- id: anthropic
name: Anthropic Official
claude:
env:
ANTHROPIC_AUTH_TOKEN: "change-me"
ANTHROPIC_BASE_URL: "https://api.anthropic.com"
profiles:
default:
provider: anthropic
runner: claude
args:
- --dangerously-skip-permissions
share_claude_md: falseFile:
~/.config/proteus/config.json
Content:
{
"config_dir": "~/my-providers"
}proteus --help
proteus list
proteus validate [--provider <id>] [--concurrency <n>]
proteus switch <provider-id|provider-name> [--dry-run]
proteus launch <profile> [--dry-run]
proteus launch --list- Never commit real tokens in
providers.yaml. - If both
ANTHROPIC_AUTH_TOKENandANTHROPIC_API_KEYare empty, authentication will fail.
go test ./...Or use just tasks:
just build
just run
just list
just validateContributions are welcome. Please open an issue or pull request with:
- a clear problem statement,
- reproducible steps (for bug reports),
- and expected behavior.
This project is licensed under the MIT License.
