CLIProxy Sync
CCS can automatically sync your API profiles (GLM, Kimi, etc.) to a local or remote CLIProxy configuration. This enables centralized management of all your API keys and models.Overview
CLIProxy Sync transforms CCS settings-based profiles into CLIProxyClaudeKey format and writes them to config.yaml. Changes to profiles automatically trigger a sync when auto_sync is enabled.
Use Cases:
- Centralized API key management across devices
- Remote CLIProxy deployment with synced profiles
- Dashboard-managed profiles available to all providers
Quick Start
Enable Auto-Sync
Auto-sync is enabled by default. It watches for changes to~/.ccs/*.settings.json and syncs to local CLIProxy config.
Configure Profiles
Profiles with valid API keys are automatically synced:Auto-Sync Behavior
Watcher
Whencliproxy.auto_sync is enabled, CCS watches for file changes:
Watch Pattern: ~/.ccs/*.settings.json
Trigger Events:
- File created (new profile)
- File modified (API key/model changed)
- File deleted (profile removed)
Sync Target
Local Sync: Writes to~/.ccs/cliproxy/config.yaml
Profile Mapping:
- Profile name →
prefix(e.g.,glm→glm-) ANTHROPIC_AUTH_TOKEN→api-keyANTHROPIC_BASE_URL→base-url(optional)ANTHROPIC_MODEL→models[0].name
Example
CCS Profile (glm.settings.json):
config.yaml):
CLI Commands
ccs cliproxy sync
Sync profiles to CLIProxy config and show status.
ccs cliproxy sync --dry-run
Preview sync changes without writing to config.
ccs cliproxy sync --verbose
Show detailed sync information.
Configuration
Enable/Disable Auto-Sync
Config location:~/.ccs/config.yaml
Profile Filtering
Only profiles with valid API keys are synced. Profiles are skipped if:ANTHROPIC_AUTH_TOKENis missing- API key contains placeholder text (
YOUR_,your-) settings.jsonis unreadable- Profile name is invalid (non-alphanumeric, too long)
Dashboard Integration
Sync Status Card
Dashboard shows real-time sync status: Location: Settings → CLIProxy Sync Displays:- Auto-sync enabled/disabled
- Watcher status (running/stopped)
- Syncable profile count
- Last sync timestamp
- Toggle auto-sync
- Manual sync trigger
- View profile list
Profile Management
Profiles managed via Dashboard are automatically synced:- Go to Dashboard → API Profiles
- Add/edit GLM, Kimi, or custom profile
- Auto-sync triggers within 3 seconds
- Profile available via
ccs \u003cprefix\u003e-
Troubleshooting
Auto-Sync Not Working
Check watcher status:- Auto-sync disabled → Enable in
~/.ccs/config.yaml(cliproxy.auto_sync: true) - Watcher crashed → Restart Dashboard or run
ccs cliproxy sync - Invalid profile → Check
settings.jsonfor syntax errors
Profile Not Syncing
Verify profile is syncable:- API key placeholder not replaced
ANTHROPIC_AUTH_TOKENmissing fromsettings.json- Profile name contains invalid characters
Manual Sync Fails
Error: “Failed to sync: \u003cerror\u003e” Solutions:Remote Proxy Sync
For remote CLIProxy deployments, sync profiles to remote server. Coming Soon: Remote sync via Management API Current Workaround:- Sync locally:
ccs cliproxy sync - Copy
~/.ccs/cliproxy/config.yamlto remote server - Restart remote CLIProxy instance
Security Considerations
API Key Storage:- Keys stored in
~/.ccs/*.settings.json(plain text) - Synced to
~/.ccs/cliproxy/config.yaml(plain text) - File permissions:
600(owner read/write only)
- Never commit
*.settings.jsonorconfig.yamlto git - Use environment variables for sensitive keys
- Rotate API keys regularly
- Encrypt home directory on shared machines
Related
- CLIProxy API - OAuth provider integration
- API Profiles - Profile configuration
- Dashboard - Visual management
- CLI Commands - Full command reference
