multi-ccp 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -12
- package/LICENSE +21 -21
- package/README.md +306 -306
- package/README.zh-CN.md +306 -306
- package/dist/cli/program.js +38 -2
- package/dist/cli/program.js.map +1 -1
- package/dist/core/ccr.d.ts +25 -0
- package/dist/core/ccr.js +97 -3
- package/dist/core/ccr.js.map +1 -1
- package/dist/core/presets.d.ts +8 -0
- package/dist/core/presets.js +25 -12
- package/dist/core/presets.js.map +1 -1
- package/dist/web/assets/app.js +30 -19
- package/dist/web/assets/index.html +112 -111
- package/dist/web/assets/styles.css +1 -1
- package/dist/web/server.js +174 -21
- package/dist/web/server.js.map +1 -1
- package/package.json +46 -46
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
## 0.1.0
|
|
4
|
-
|
|
5
|
-
- Initial TypeScript npm package scaffold.
|
|
6
|
-
- Added cross-platform profile core for API and Claude login profiles.
|
|
7
|
-
- Added CLI commands for `list`, `add`, `add-login`, `remove`, `status`, `path`, `edit`, and `start`.
|
|
8
|
-
- Added Vitest coverage for core profile behavior.
|
|
9
|
-
- Added CCR base commands for `status`, `install`, `start`, `stop`, `restart`, `ui`, and `model`.
|
|
10
|
-
- Added CCR preset-bound profile creation with `add-ccr`.
|
|
11
|
-
- Added CCR profile gateway preparation before `ccp start`.
|
|
12
|
-
- Added session synchronization with `sync-session`.
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.0
|
|
4
|
+
|
|
5
|
+
- Initial TypeScript npm package scaffold.
|
|
6
|
+
- Added cross-platform profile core for API and Claude login profiles.
|
|
7
|
+
- Added CLI commands for `list`, `add`, `add-login`, `remove`, `status`, `path`, `edit`, and `start`.
|
|
8
|
+
- Added Vitest coverage for core profile behavior.
|
|
9
|
+
- Added CCR base commands for `status`, `install`, `start`, `stop`, `restart`, `ui`, and `model`.
|
|
10
|
+
- Added CCR preset-bound profile creation with `add-ccr`.
|
|
11
|
+
- Added CCR profile gateway preparation before `ccp start`.
|
|
12
|
+
- Added session synchronization with `sync-session`.
|
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,306 +1,306 @@
|
|
|
1
|
-
# multi-ccp
|
|
2
|
-
|
|
3
|
-
[![NPM Version][npm-version]][npm-url]
|
|
4
|
-
[![NPM Downloads][npm-downloads]][npm-url]
|
|
5
|
-
[![License][license]][license-url]
|
|
6
|
-
|
|
7
|
-
English | [简体中文](README.zh-CN.md)
|
|
8
|
-
|
|
9
|
-
`multi-ccp` is a profile and session manager for Claude Code. It installs the `ccp` command and helps you run multiple Claude Code windows with fully isolated configuration directories, model providers, login state, and history.
|
|
10
|
-
|
|
11
|
-
Use it when you want separate Claude Code sessions for work, personal projects, different API providers, or different model routes without manually switching environment variables or editing config files.
|
|
12
|
-
|
|
13
|
-

|
|
14
|
-
|
|
15
|
-
## Features
|
|
16
|
-
|
|
17
|
-
- Run multiple Claude Code windows with independent profiles.
|
|
18
|
-
- Keep each profile's Claude Code config, login state, environment variables, and project history isolated.
|
|
19
|
-
- Create Anthropic-compatible API profiles with custom `ANTHROPIC_BASE_URL`, token, and model settings.
|
|
20
|
-
- Create Claude login profiles that use Claude Code's normal account login flow without storing account passwords.
|
|
21
|
-
- Create [Claude Code Router](https://github.com/musistudio/claude-code-router) preset profiles for multiple model providers and routes.
|
|
22
|
-
- Manage [Claude Code Router](https://github.com/musistudio/claude-code-router) from the same CLI.
|
|
23
|
-
- Sync historical Claude Code sessions between profiles or between `main` and a profile.
|
|
24
|
-
- Open and inspect profile settings quickly from the terminal.
|
|
25
|
-
|
|
26
|
-
## Install
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
npm install -g multi-ccp
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
Verify the install:
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
ccp --version
|
|
36
|
-
ccp help
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Quick Start
|
|
40
|
-
|
|
41
|
-
Want the shortest path? Ask your AI assistant how to use `multi-ccp`. Copy this prompt:
|
|
42
|
-
|
|
43
|
-
```text
|
|
44
|
-
How do I use multi-ccp to manage multiple Claude Code profiles?
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
Then continue with the examples below when you want the full command reference.
|
|
48
|
-
|
|
49
|
-
Open the local Web UI to browse profiles and create configurations visually:
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
ccp ui
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
The Web UI is a local companion for the CLI. It helps you inspect profiles, create preset-based profiles, edit profile settings, and open CCR management shortcuts.
|
|
56
|
-
|
|
57
|
-

|
|
58
|
-
|
|
59
|
-
Create a profile interactively:
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
ccp add
|
|
63
|
-
ccp start <profile-name>
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
`ccp add` lets you choose a built-in preset template or custom configuration, including DeepSeek, AI CodeMirror, Mimo, CCR GPT, Manual CCR, Claude Login, or Custom API.
|
|
67
|
-
|
|
68
|
-
If you want to create directly from a built-in preset, pass `--preset`:
|
|
69
|
-
|
|
70
|
-
```bash
|
|
71
|
-
ccp add --preset deepseek
|
|
72
|
-
ccp add --preset deepseek my-ds
|
|
73
|
-
ccp start my-ds
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Create another isolated profile for a different provider, account, or project context:
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
ccp add
|
|
80
|
-
ccp start <profile-name>
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
List and inspect profiles:
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
ccp list
|
|
87
|
-
ccp status work
|
|
88
|
-
ccp path work
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
## Profile Types
|
|
92
|
-
|
|
93
|
-
### API Profiles
|
|
94
|
-
|
|
95
|
-
API profiles are for Anthropic-compatible providers. They store API environment variables in the profile's `settings.json`.
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
ccp add
|
|
99
|
-
ccp start <profile-name>
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
When you choose an API preset, the command prompts for a profile name and token. When you choose Custom API, it prompts for:
|
|
103
|
-
|
|
104
|
-
- `ANTHROPIC_BASE_URL`
|
|
105
|
-
- `ANTHROPIC_AUTH_TOKEN`
|
|
106
|
-
- Model name (optional; leave empty to use Claude Code's default model)
|
|
107
|
-
|
|
108
|
-
#### Customizing Provider Models
|
|
109
|
-
|
|
110
|
-
`ccp add` keeps provider setup simple by applying the model you enter to all default Claude Code model slots. If you leave the model empty, `multi-ccp` does not write any model environment variables and Claude Code uses its default model. For example, a DeepSeek profile with a model may initially look like this:
|
|
111
|
-
|
|
112
|
-
```json
|
|
113
|
-
{
|
|
114
|
-
"env": {
|
|
115
|
-
"ANTHROPIC_AUTH_TOKEN": "sk-",
|
|
116
|
-
"ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
|
|
117
|
-
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-pro",
|
|
118
|
-
"ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek-v4-pro",
|
|
119
|
-
"ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v4-pro",
|
|
120
|
-
"ANTHROPIC_MODEL": "deepseek-v4-pro"
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
If your provider offers different models for fast tasks, subagents, or long-context work, edit the profile manually:
|
|
126
|
-
|
|
127
|
-
```bash
|
|
128
|
-
ccp edit deepseek
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
For example, you can assign a flash model to lightweight work and a 1M context model to the main model slots:
|
|
132
|
-
|
|
133
|
-
```json
|
|
134
|
-
{
|
|
135
|
-
"env": {
|
|
136
|
-
"ANTHROPIC_AUTH_TOKEN": "sk-",
|
|
137
|
-
"ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
|
|
138
|
-
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-flash",
|
|
139
|
-
"ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek-v4-pro[1M]",
|
|
140
|
-
"ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v4-pro[1M]",
|
|
141
|
-
"CLAUDE_CODE_SUBAGENT_MODEL": "deepseek-v4-flash",
|
|
142
|
-
"ANTHROPIC_MODEL": "deepseek-v4-pro[1M]"
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
See the [DeepSeek API documentation](https://api-docs.deepseek.com/) for provider-specific model names and endpoint details.
|
|
148
|
-
|
|
149
|
-
### Login Profiles
|
|
150
|
-
|
|
151
|
-
Login profiles are for Claude Code account-based authentication. They do not set `ANTHROPIC_BASE_URL` or `ANTHROPIC_AUTH_TOKEN`.
|
|
152
|
-
|
|
153
|
-
```bash
|
|
154
|
-
ccp add
|
|
155
|
-
ccp start <profile-name>
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
When Claude Code asks you to sign in, the login state is stored under that profile's config directory. Another profile can use a different account or login state:
|
|
159
|
-
|
|
160
|
-
```bash
|
|
161
|
-
ccp add-login personal
|
|
162
|
-
ccp start personal
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
`ccp add-login <profile>` remains available as a direct compatibility entrypoint.
|
|
166
|
-
|
|
167
|
-
### Claude Code Router Profiles
|
|
168
|
-
|
|
169
|
-
CCR profiles are bound to [Claude Code Router](https://github.com/musistudio/claude-code-router) presets. Claude Code Router is a separate open source project that can route Claude Code requests to different model providers. `multi-ccp` integrates with its config and preset system so each profile can use its own provider route.
|
|
170
|
-
|
|
171
|
-
```bash
|
|
172
|
-
ccp ccr status
|
|
173
|
-
ccp ccr model
|
|
174
|
-
ccp add
|
|
175
|
-
ccp start <profile-name>
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
A CCR profile stores its route in `.ccp.json` and points Claude Code at a preset endpoint such as:
|
|
179
|
-
|
|
180
|
-
```text
|
|
181
|
-
http://127.0.0.1:3456/preset/gpt-route
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
## Session Sync
|
|
185
|
-
|
|
186
|
-
`sync-session` copies Claude Code history for the current project between profiles. It can sync selected sessions interactively or all sessions at once.
|
|
187
|
-
|
|
188
|
-
Sync from `main` to a profile:
|
|
189
|
-
|
|
190
|
-
```bash
|
|
191
|
-
ccp sync-session work
|
|
192
|
-
ccp sync-session work --all
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
Sync between two named profiles:
|
|
196
|
-
|
|
197
|
-
```bash
|
|
198
|
-
ccp sync-session work to personal
|
|
199
|
-
ccp sync-session work to personal --all
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
Sync from a profile back to `main`:
|
|
203
|
-
|
|
204
|
-
```bash
|
|
205
|
-
ccp sync-session work to main
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
The sync command tracks hashes in `.ccp-sync`, copies session assets, and prompts before overwriting conflicting target sessions.
|
|
209
|
-
|
|
210
|
-
## Commands
|
|
211
|
-
|
|
212
|
-
```bash
|
|
213
|
-
ccp help
|
|
214
|
-
ccp list
|
|
215
|
-
ccp ui
|
|
216
|
-
ccp add [profile]
|
|
217
|
-
ccp add --preset <preset> [profile]
|
|
218
|
-
ccp add-login <profile>
|
|
219
|
-
ccp add-ccr <profile>
|
|
220
|
-
ccp remove <profile>
|
|
221
|
-
ccp status <profile|main>
|
|
222
|
-
ccp start <profile> [claude args...]
|
|
223
|
-
ccp path <profile|main>
|
|
224
|
-
ccp edit <profile>
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
[Claude Code Router](https://github.com/musistudio/claude-code-router) commands:
|
|
228
|
-
|
|
229
|
-
```bash
|
|
230
|
-
ccp ccr status
|
|
231
|
-
ccp ccr install
|
|
232
|
-
ccp ccr start
|
|
233
|
-
ccp ccr stop
|
|
234
|
-
ccp ccr restart
|
|
235
|
-
ccp ccr ui
|
|
236
|
-
ccp ccr model
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
Session sync commands:
|
|
240
|
-
|
|
241
|
-
```bash
|
|
242
|
-
ccp sync-session <target-profile> [--all]
|
|
243
|
-
ccp sync-session <source-profile|main> to <target-profile|main> [--all]
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
## Configuration Layout
|
|
247
|
-
|
|
248
|
-
Profiles are stored under:
|
|
249
|
-
|
|
250
|
-
```text
|
|
251
|
-
~/.claude-profiles/<profile>
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
Claude Code's default config directory is still available as:
|
|
255
|
-
|
|
256
|
-
```text
|
|
257
|
-
main
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
For example:
|
|
261
|
-
|
|
262
|
-
```bash
|
|
263
|
-
ccp status main
|
|
264
|
-
ccp sync-session main to work
|
|
265
|
-
ccp sync-session work to main
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
## Safety Notes
|
|
269
|
-
|
|
270
|
-
- `ccp remove <profile>` asks you to type the profile name before deleting it.
|
|
271
|
-
- `ccp add`, `ccp add-login`, and `ccp add-ccr` refuse to overwrite existing profiles.
|
|
272
|
-
- `sync-session` detects conflicts with SHA-256 hashes and asks before overwriting target files.
|
|
273
|
-
- Login profiles do not store Claude account passwords.
|
|
274
|
-
|
|
275
|
-
## Development
|
|
276
|
-
|
|
277
|
-
```bash
|
|
278
|
-
git clone <repository-url>
|
|
279
|
-
cd multi-ccp
|
|
280
|
-
npm install
|
|
281
|
-
npm run typecheck
|
|
282
|
-
npm test
|
|
283
|
-
npm run build
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
Run the CLI from source:
|
|
287
|
-
|
|
288
|
-
```bash
|
|
289
|
-
npm run dev -- help
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
Preview the npm package:
|
|
293
|
-
|
|
294
|
-
```bash
|
|
295
|
-
npm pack --dry-run
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
## License
|
|
299
|
-
|
|
300
|
-
MIT
|
|
301
|
-
|
|
302
|
-
[npm-version]: https://img.shields.io/npm/v/multi-ccp?style=flat-square
|
|
303
|
-
[npm-downloads]: https://img.shields.io/npm/dm/multi-ccp?style=flat-square
|
|
304
|
-
[npm-url]: https://www.npmjs.com/package/multi-ccp
|
|
305
|
-
[license]: https://img.shields.io/npm/l/multi-ccp?style=flat-square
|
|
306
|
-
[license-url]: LICENSE
|
|
1
|
+
# multi-ccp
|
|
2
|
+
|
|
3
|
+
[![NPM Version][npm-version]][npm-url]
|
|
4
|
+
[![NPM Downloads][npm-downloads]][npm-url]
|
|
5
|
+
[![License][license]][license-url]
|
|
6
|
+
|
|
7
|
+
English | [简体中文](README.zh-CN.md)
|
|
8
|
+
|
|
9
|
+
`multi-ccp` is a profile and session manager for Claude Code. It installs the `ccp` command and helps you run multiple Claude Code windows with fully isolated configuration directories, model providers, login state, and history.
|
|
10
|
+
|
|
11
|
+
Use it when you want separate Claude Code sessions for work, personal projects, different API providers, or different model routes without manually switching environment variables or editing config files.
|
|
12
|
+
|
|
13
|
+

|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- Run multiple Claude Code windows with independent profiles.
|
|
18
|
+
- Keep each profile's Claude Code config, login state, environment variables, and project history isolated.
|
|
19
|
+
- Create Anthropic-compatible API profiles with custom `ANTHROPIC_BASE_URL`, token, and model settings.
|
|
20
|
+
- Create Claude login profiles that use Claude Code's normal account login flow without storing account passwords.
|
|
21
|
+
- Create [Claude Code Router](https://github.com/musistudio/claude-code-router) preset profiles for multiple model providers and routes.
|
|
22
|
+
- Manage [Claude Code Router](https://github.com/musistudio/claude-code-router) from the same CLI.
|
|
23
|
+
- Sync historical Claude Code sessions between profiles or between `main` and a profile.
|
|
24
|
+
- Open and inspect profile settings quickly from the terminal.
|
|
25
|
+
|
|
26
|
+
## Install
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm install -g multi-ccp
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Verify the install:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
ccp --version
|
|
36
|
+
ccp help
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Quick Start
|
|
40
|
+
|
|
41
|
+
Want the shortest path? Ask your AI assistant how to use `multi-ccp`. Copy this prompt:
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
How do I use multi-ccp to manage multiple Claude Code profiles?
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Then continue with the examples below when you want the full command reference.
|
|
48
|
+
|
|
49
|
+
Open the local Web UI to browse profiles and create configurations visually:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
ccp ui
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
The Web UI is a local companion for the CLI. It helps you inspect profiles, create preset-based profiles, edit profile settings, and open CCR management shortcuts.
|
|
56
|
+
|
|
57
|
+

|
|
58
|
+
|
|
59
|
+
Create a profile interactively:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
ccp add
|
|
63
|
+
ccp start <profile-name>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
`ccp add` lets you choose a built-in preset template or custom configuration, including DeepSeek, AI CodeMirror, Mimo, CCR GPT, Manual CCR, Claude Login, or Custom API.
|
|
67
|
+
|
|
68
|
+
If you want to create directly from a built-in preset, pass `--preset`:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
ccp add --preset deepseek
|
|
72
|
+
ccp add --preset deepseek my-ds
|
|
73
|
+
ccp start my-ds
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Create another isolated profile for a different provider, account, or project context:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
ccp add
|
|
80
|
+
ccp start <profile-name>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
List and inspect profiles:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
ccp list
|
|
87
|
+
ccp status work
|
|
88
|
+
ccp path work
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Profile Types
|
|
92
|
+
|
|
93
|
+
### API Profiles
|
|
94
|
+
|
|
95
|
+
API profiles are for Anthropic-compatible providers. They store API environment variables in the profile's `settings.json`.
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
ccp add
|
|
99
|
+
ccp start <profile-name>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
When you choose an API preset, the command prompts for a profile name and token. When you choose Custom API, it prompts for:
|
|
103
|
+
|
|
104
|
+
- `ANTHROPIC_BASE_URL`
|
|
105
|
+
- `ANTHROPIC_AUTH_TOKEN`
|
|
106
|
+
- Model name (optional; leave empty to use Claude Code's default model)
|
|
107
|
+
|
|
108
|
+
#### Customizing Provider Models
|
|
109
|
+
|
|
110
|
+
`ccp add` keeps provider setup simple by applying the model you enter to all default Claude Code model slots. If you leave the model empty, `multi-ccp` does not write any model environment variables and Claude Code uses its default model. For example, a DeepSeek profile with a model may initially look like this:
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"env": {
|
|
115
|
+
"ANTHROPIC_AUTH_TOKEN": "sk-",
|
|
116
|
+
"ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
|
|
117
|
+
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-pro",
|
|
118
|
+
"ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek-v4-pro",
|
|
119
|
+
"ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v4-pro",
|
|
120
|
+
"ANTHROPIC_MODEL": "deepseek-v4-pro"
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
If your provider offers different models for fast tasks, subagents, or long-context work, edit the profile manually:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
ccp edit deepseek
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
For example, you can assign a flash model to lightweight work and a 1M context model to the main model slots:
|
|
132
|
+
|
|
133
|
+
```json
|
|
134
|
+
{
|
|
135
|
+
"env": {
|
|
136
|
+
"ANTHROPIC_AUTH_TOKEN": "sk-",
|
|
137
|
+
"ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
|
|
138
|
+
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-flash",
|
|
139
|
+
"ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek-v4-pro[1M]",
|
|
140
|
+
"ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v4-pro[1M]",
|
|
141
|
+
"CLAUDE_CODE_SUBAGENT_MODEL": "deepseek-v4-flash",
|
|
142
|
+
"ANTHROPIC_MODEL": "deepseek-v4-pro[1M]"
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
See the [DeepSeek API documentation](https://api-docs.deepseek.com/) for provider-specific model names and endpoint details.
|
|
148
|
+
|
|
149
|
+
### Login Profiles
|
|
150
|
+
|
|
151
|
+
Login profiles are for Claude Code account-based authentication. They do not set `ANTHROPIC_BASE_URL` or `ANTHROPIC_AUTH_TOKEN`.
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
ccp add
|
|
155
|
+
ccp start <profile-name>
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
When Claude Code asks you to sign in, the login state is stored under that profile's config directory. Another profile can use a different account or login state:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
ccp add-login personal
|
|
162
|
+
ccp start personal
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
`ccp add-login <profile>` remains available as a direct compatibility entrypoint.
|
|
166
|
+
|
|
167
|
+
### Claude Code Router Profiles
|
|
168
|
+
|
|
169
|
+
CCR profiles are bound to [Claude Code Router](https://github.com/musistudio/claude-code-router) presets. Claude Code Router is a separate open source project that can route Claude Code requests to different model providers. `multi-ccp` integrates with its config and preset system so each profile can use its own provider route.
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
ccp ccr status
|
|
173
|
+
ccp ccr model
|
|
174
|
+
ccp add
|
|
175
|
+
ccp start <profile-name>
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
A CCR profile stores its route in `.ccp.json` and points Claude Code at a preset endpoint such as:
|
|
179
|
+
|
|
180
|
+
```text
|
|
181
|
+
http://127.0.0.1:3456/preset/gpt-route
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Session Sync
|
|
185
|
+
|
|
186
|
+
`sync-session` copies Claude Code history for the current project between profiles. It can sync selected sessions interactively or all sessions at once.
|
|
187
|
+
|
|
188
|
+
Sync from `main` to a profile:
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
ccp sync-session work
|
|
192
|
+
ccp sync-session work --all
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Sync between two named profiles:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
ccp sync-session work to personal
|
|
199
|
+
ccp sync-session work to personal --all
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Sync from a profile back to `main`:
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
ccp sync-session work to main
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
The sync command tracks hashes in `.ccp-sync`, copies session assets, and prompts before overwriting conflicting target sessions.
|
|
209
|
+
|
|
210
|
+
## Commands
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
ccp help
|
|
214
|
+
ccp list
|
|
215
|
+
ccp ui
|
|
216
|
+
ccp add [profile]
|
|
217
|
+
ccp add --preset <preset> [profile]
|
|
218
|
+
ccp add-login <profile>
|
|
219
|
+
ccp add-ccr <profile>
|
|
220
|
+
ccp remove <profile>
|
|
221
|
+
ccp status <profile|main>
|
|
222
|
+
ccp start <profile> [claude args...]
|
|
223
|
+
ccp path <profile|main>
|
|
224
|
+
ccp edit <profile>
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
[Claude Code Router](https://github.com/musistudio/claude-code-router) commands:
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
ccp ccr status
|
|
231
|
+
ccp ccr install
|
|
232
|
+
ccp ccr start
|
|
233
|
+
ccp ccr stop
|
|
234
|
+
ccp ccr restart
|
|
235
|
+
ccp ccr ui
|
|
236
|
+
ccp ccr model
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Session sync commands:
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
ccp sync-session <target-profile> [--all]
|
|
243
|
+
ccp sync-session <source-profile|main> to <target-profile|main> [--all]
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## Configuration Layout
|
|
247
|
+
|
|
248
|
+
Profiles are stored under:
|
|
249
|
+
|
|
250
|
+
```text
|
|
251
|
+
~/.claude-profiles/<profile>
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Claude Code's default config directory is still available as:
|
|
255
|
+
|
|
256
|
+
```text
|
|
257
|
+
main
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
For example:
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
ccp status main
|
|
264
|
+
ccp sync-session main to work
|
|
265
|
+
ccp sync-session work to main
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
## Safety Notes
|
|
269
|
+
|
|
270
|
+
- `ccp remove <profile>` asks you to type the profile name before deleting it.
|
|
271
|
+
- `ccp add`, `ccp add-login`, and `ccp add-ccr` refuse to overwrite existing profiles.
|
|
272
|
+
- `sync-session` detects conflicts with SHA-256 hashes and asks before overwriting target files.
|
|
273
|
+
- Login profiles do not store Claude account passwords.
|
|
274
|
+
|
|
275
|
+
## Development
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
git clone <repository-url>
|
|
279
|
+
cd multi-ccp
|
|
280
|
+
npm install
|
|
281
|
+
npm run typecheck
|
|
282
|
+
npm test
|
|
283
|
+
npm run build
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
Run the CLI from source:
|
|
287
|
+
|
|
288
|
+
```bash
|
|
289
|
+
npm run dev -- help
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
Preview the npm package:
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
npm pack --dry-run
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
## License
|
|
299
|
+
|
|
300
|
+
MIT
|
|
301
|
+
|
|
302
|
+
[npm-version]: https://img.shields.io/npm/v/multi-ccp?style=flat-square
|
|
303
|
+
[npm-downloads]: https://img.shields.io/npm/dm/multi-ccp?style=flat-square
|
|
304
|
+
[npm-url]: https://www.npmjs.com/package/multi-ccp
|
|
305
|
+
[license]: https://img.shields.io/npm/l/multi-ccp?style=flat-square
|
|
306
|
+
[license-url]: LICENSE
|