claude-multi 0.13.1 → 0.13.2
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 +13 -0
- package/README.md +6 -6
- package/build/cli.js +17 -4
- package/package.json +13 -4
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.13.2] - 2026-11-03
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
- **Provider templates now map the Fable alias.** Claude Code resolves `fable` to `claude-fable-5-1` unless `ANTHROPIC_DEFAULT_FABLE_MODEL` is set, and third-party Anthropic-compatible endpoints reject that ID. Every template maps the alias to its primary model.
|
|
12
|
+
- **Effort now reaches custom model IDs.** GLM, MiniMax, DeepSeek, and Kimi set `CLAUDE_CODE_ALWAYS_ENABLE_EFFORT=1` alongside `CLAUDE_CODE_EFFORT_LEVEL` so Claude Code sends the effort parameter for model names it does not recognize.
|
|
13
|
+
- **Provider documentation and examples now include the Fable slot.** The provider pages, docs tables, website examples, `llms.txt`, and the monthly review checklist match the shipped templates.
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
- The monthly model-review workflow now links to the live Xiaomi MiMo Claude Code page and includes the Fable and effort checks.
|
|
17
|
+
- Environment-variable documentation now matches current Claude Code behavior for `API_TIMEOUT_MS`, `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`, `CLAUDE_CODE_MAX_CONTEXT_TOKENS`, `CLAUDE_CODE_SUBAGENT_MODEL`, and `ANTHROPIC_AUTH_TOKEN`. DeepSeek and Kimi notes no longer claim their fixed thinking budgets are provider-side limits.
|
|
18
|
+
- README now separates `doctor check` from `doctor fix` and shows the POSIX shell wrapper that claude-multi actually generates.
|
|
19
|
+
- The Xiaomi MiMo provider page links to the live `platform.xiaomimimo.com` signup page, and the MiniMax, GLM, Kimi, and DeepSeek source links use their canonical URLs.
|
|
20
|
+
|
|
8
21
|
## [0.13.1] - 2026-10-31
|
|
9
22
|
|
|
10
23
|
### Changed
|
package/README.md
CHANGED
|
@@ -67,7 +67,7 @@ That's the only command to remember. Everything else happens in the terminal UI:
|
|
|
67
67
|
Two things worth knowing:
|
|
68
68
|
|
|
69
69
|
- If the menu shows a `!` health hint, press `!` to see what's wrong and fix it.
|
|
70
|
-
- After upgrading claude-multi, run `claude-multi doctor check` to
|
|
70
|
+
- After upgrading claude-multi, run `claude-multi doctor check` to see pending provider template updates, then `claude-multi doctor fix` to apply them. `doctor fix` backs up `settings.json` first and keeps any values you changed yourself.
|
|
71
71
|
|
|
72
72
|
Full documentation: **https://claude-multi.hmziq.xyz**
|
|
73
73
|
|
|
@@ -86,7 +86,7 @@ Full documentation: **https://claude-multi.hmziq.xyz**
|
|
|
86
86
|
| Alibaba Qwen | `dashscope-intl.aliyuncs.com` | `qwen` |
|
|
87
87
|
| Alibaba Qwen Coding Plan | `coding-intl.dashscope.aliyuncs.com` | `qwen-coding` |
|
|
88
88
|
|
|
89
|
-
Templates write `ANTHROPIC_BASE_URL`, `ANTHROPIC_MODEL`, and related env vars into `~/.claude-<name>/settings.json`. Provider sync keeps values you changed yourself and restores model slots to the current template.
|
|
89
|
+
Templates write `ANTHROPIC_BASE_URL`, `ANTHROPIC_MODEL`, and related env vars into `~/.claude-<name>/settings.json`. Every template maps `ANTHROPIC_DEFAULT_FABLE_MODEL` to its primary model, and the templates that set an effort level also set `CLAUDE_CODE_ALWAYS_ENABLE_EFFORT=1`. Provider sync keeps values you changed yourself and restores model slots to the current template.
|
|
90
90
|
|
|
91
91
|
---
|
|
92
92
|
|
|
@@ -94,10 +94,10 @@ Templates write `ANTHROPIC_BASE_URL`, `ANTHROPIC_MODEL`, and related env vars in
|
|
|
94
94
|
|
|
95
95
|
Each instance is a config dir at `~/.claude-<name>/` plus a wrapper script at `~/.local/bin/claude-<name>` that sets `CLAUDE_CONFIG_DIR` and runs the unmodified `claude` binary. No fork, no patch. The instance registry lives in `~/.claude-multi/config.json`.
|
|
96
96
|
|
|
97
|
-
```
|
|
98
|
-
#!/
|
|
99
|
-
|
|
100
|
-
|
|
97
|
+
```sh
|
|
98
|
+
#!/bin/sh
|
|
99
|
+
export CLAUDE_CONFIG_DIR="/Users/you/.claude-glm"
|
|
100
|
+
exec "/Users/you/.local/bin/claude" "$@"
|
|
101
101
|
```
|
|
102
102
|
|
|
103
103
|
Auto-sync symlinks `plugins/` and `skills/` back to `~/.claude/`, so a plugin you install once shows up in every instance that opted in. Skip it (or toggle it later in the menu) if you want an instance fully independent.
|
package/build/cli.js
CHANGED
|
@@ -7465,11 +7465,12 @@ function syncProviderEnvToSettings(configDir, options = {}) {
|
|
|
7465
7465
|
}
|
|
7466
7466
|
function needsProviderTemplateSync(configDir, options = {}) {
|
|
7467
7467
|
try {
|
|
7468
|
-
|
|
7468
|
+
const result = syncProviderEnvToSettings(configDir, {
|
|
7469
7469
|
...options,
|
|
7470
7470
|
tunablePolicy: options.tunablePolicy ?? "overwrite-legacy-defaults",
|
|
7471
7471
|
dryRun: true
|
|
7472
|
-
})
|
|
7472
|
+
});
|
|
7473
|
+
return result.status === "synced" || result.region !== null && result.providerName !== null && result.region !== options.providerRegion;
|
|
7473
7474
|
} catch {
|
|
7474
7475
|
return false;
|
|
7475
7476
|
}
|
|
@@ -7491,10 +7492,12 @@ var init_templates = __esm(() => {
|
|
|
7491
7492
|
ANTHROPIC_MODEL: "glm-5.3[1m]",
|
|
7492
7493
|
ANTHROPIC_DEFAULT_OPUS_MODEL: "glm-5.3[1m]",
|
|
7493
7494
|
ANTHROPIC_DEFAULT_SONNET_MODEL: "glm-5.3[1m]",
|
|
7495
|
+
ANTHROPIC_DEFAULT_FABLE_MODEL: "glm-5.3[1m]",
|
|
7494
7496
|
ANTHROPIC_DEFAULT_HAIKU_MODEL: "glm-5.3-flash[1m]",
|
|
7495
7497
|
CLAUDE_CODE_AUTO_COMPACT_WINDOW: "1000000",
|
|
7496
7498
|
CLAUDE_CODE_MAX_OUTPUT_TOKENS: "128000",
|
|
7497
7499
|
CLAUDE_CODE_EFFORT_LEVEL: "high",
|
|
7500
|
+
CLAUDE_CODE_ALWAYS_ENABLE_EFFORT: "1",
|
|
7498
7501
|
MAX_THINKING_TOKENS: "8000",
|
|
7499
7502
|
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "1"
|
|
7500
7503
|
},
|
|
@@ -7515,10 +7518,12 @@ var init_templates = __esm(() => {
|
|
|
7515
7518
|
ANTHROPIC_MODEL: "MiniMax-M3.1-Flash[1m]",
|
|
7516
7519
|
ANTHROPIC_DEFAULT_OPUS_MODEL: "MiniMax-M3.1-Flash[1m]",
|
|
7517
7520
|
ANTHROPIC_DEFAULT_SONNET_MODEL: "MiniMax-M3.1-Flash[1m]",
|
|
7521
|
+
ANTHROPIC_DEFAULT_FABLE_MODEL: "MiniMax-M3.1-Flash[1m]",
|
|
7518
7522
|
ANTHROPIC_DEFAULT_HAIKU_MODEL: "MiniMax-M3.1-Flash[1m]",
|
|
7519
7523
|
CLAUDE_CODE_SUBAGENT_MODEL: "MiniMax-M3.1-Flash[1m]",
|
|
7520
7524
|
CLAUDE_CODE_AUTO_COMPACT_WINDOW: "524288",
|
|
7521
7525
|
CLAUDE_CODE_EFFORT_LEVEL: "max",
|
|
7526
|
+
CLAUDE_CODE_ALWAYS_ENABLE_EFFORT: "1",
|
|
7522
7527
|
CLAUDE_CODE_MAX_OUTPUT_TOKENS: "128000"
|
|
7523
7528
|
},
|
|
7524
7529
|
includeCoAuthoredBy: false,
|
|
@@ -7537,11 +7542,13 @@ var init_templates = __esm(() => {
|
|
|
7537
7542
|
ANTHROPIC_MODEL: "deepseek-flash[1m]",
|
|
7538
7543
|
ANTHROPIC_DEFAULT_OPUS_MODEL: "deepseek-flash[1m]",
|
|
7539
7544
|
ANTHROPIC_DEFAULT_SONNET_MODEL: "deepseek-flash[1m]",
|
|
7545
|
+
ANTHROPIC_DEFAULT_FABLE_MODEL: "deepseek-flash[1m]",
|
|
7540
7546
|
ANTHROPIC_DEFAULT_HAIKU_MODEL: "deepseek-flash",
|
|
7541
7547
|
CLAUDE_CODE_SUBAGENT_MODEL: "deepseek-flash",
|
|
7542
7548
|
CLAUDE_CODE_AUTO_COMPACT_WINDOW: "786432",
|
|
7543
7549
|
CLAUDE_CODE_MAX_OUTPUT_TOKENS: "128000",
|
|
7544
7550
|
CLAUDE_CODE_EFFORT_LEVEL: "max",
|
|
7551
|
+
CLAUDE_CODE_ALWAYS_ENABLE_EFFORT: "1",
|
|
7545
7552
|
MAX_THINKING_TOKENS: "32000"
|
|
7546
7553
|
},
|
|
7547
7554
|
includeCoAuthoredBy: false,
|
|
@@ -7551,7 +7558,7 @@ var init_templates = __esm(() => {
|
|
|
7551
7558
|
mimo: {
|
|
7552
7559
|
name: "mimo",
|
|
7553
7560
|
displayName: "Xiaomi MiMo",
|
|
7554
|
-
description: "MiMo-V2.6-Pro and MiMo-V2.6-Flash via xiaomimimo.com, pay-per-token API",
|
|
7561
|
+
description: "MiMo-V2.6-Pro and MiMo-V2.6-Flash via platform.xiaomimimo.com, pay-per-token API",
|
|
7555
7562
|
settings: {
|
|
7556
7563
|
env: {
|
|
7557
7564
|
ANTHROPIC_AUTH_TOKEN: "",
|
|
@@ -7560,6 +7567,7 @@ var init_templates = __esm(() => {
|
|
|
7560
7567
|
ANTHROPIC_MODEL: "mimo-v2.6-pro[1m]",
|
|
7561
7568
|
ANTHROPIC_DEFAULT_OPUS_MODEL: "mimo-v2.6-pro[1m]",
|
|
7562
7569
|
ANTHROPIC_DEFAULT_SONNET_MODEL: "mimo-v2.6-pro[1m]",
|
|
7570
|
+
ANTHROPIC_DEFAULT_FABLE_MODEL: "mimo-v2.6-pro[1m]",
|
|
7563
7571
|
ANTHROPIC_DEFAULT_HAIKU_MODEL: "mimo-v2.6-flash[1m]",
|
|
7564
7572
|
CLAUDE_CODE_SUBAGENT_MODEL: "mimo-v2.6-flash[1m]",
|
|
7565
7573
|
CLAUDE_CODE_MAX_OUTPUT_TOKENS: "128000"
|
|
@@ -7580,6 +7588,7 @@ var init_templates = __esm(() => {
|
|
|
7580
7588
|
ANTHROPIC_MODEL: "mimo-v2.6-pro[1m]",
|
|
7581
7589
|
ANTHROPIC_DEFAULT_OPUS_MODEL: "mimo-v2.6-pro[1m]",
|
|
7582
7590
|
ANTHROPIC_DEFAULT_SONNET_MODEL: "mimo-v2.6-pro[1m]",
|
|
7591
|
+
ANTHROPIC_DEFAULT_FABLE_MODEL: "mimo-v2.6-pro[1m]",
|
|
7583
7592
|
ANTHROPIC_DEFAULT_HAIKU_MODEL: "mimo-v2.6-flash[1m]",
|
|
7584
7593
|
CLAUDE_CODE_SUBAGENT_MODEL: "mimo-v2.6-flash[1m]",
|
|
7585
7594
|
CLAUDE_CODE_MAX_OUTPUT_TOKENS: "128000"
|
|
@@ -7600,11 +7609,13 @@ var init_templates = __esm(() => {
|
|
|
7600
7609
|
ANTHROPIC_MODEL: "kimi-k3.1-pro[1m]",
|
|
7601
7610
|
ANTHROPIC_DEFAULT_OPUS_MODEL: "kimi-k3.1-pro[1m]",
|
|
7602
7611
|
ANTHROPIC_DEFAULT_SONNET_MODEL: "kimi-k3.1-pro[1m]",
|
|
7612
|
+
ANTHROPIC_DEFAULT_FABLE_MODEL: "kimi-k3.1-pro[1m]",
|
|
7603
7613
|
ANTHROPIC_DEFAULT_HAIKU_MODEL: "kimi-k3.1-pro[1m]",
|
|
7604
7614
|
CLAUDE_CODE_SUBAGENT_MODEL: "kimi-k3.1-pro[1m]",
|
|
7605
7615
|
CLAUDE_CODE_AUTO_COMPACT_WINDOW: "1000000",
|
|
7606
7616
|
CLAUDE_CODE_MAX_OUTPUT_TOKENS: "128000",
|
|
7607
7617
|
CLAUDE_CODE_EFFORT_LEVEL: "max",
|
|
7618
|
+
CLAUDE_CODE_ALWAYS_ENABLE_EFFORT: "1",
|
|
7608
7619
|
MAX_THINKING_TOKENS: "16000"
|
|
7609
7620
|
},
|
|
7610
7621
|
includeCoAuthoredBy: false,
|
|
@@ -7623,6 +7634,7 @@ var init_templates = __esm(() => {
|
|
|
7623
7634
|
ANTHROPIC_MODEL: "qwen3.8-max",
|
|
7624
7635
|
ANTHROPIC_DEFAULT_OPUS_MODEL: "qwen3.8-max",
|
|
7625
7636
|
ANTHROPIC_DEFAULT_SONNET_MODEL: "qwen3.7-plus",
|
|
7637
|
+
ANTHROPIC_DEFAULT_FABLE_MODEL: "qwen3.8-max",
|
|
7626
7638
|
ANTHROPIC_DEFAULT_HAIKU_MODEL: "qwen3.8-flash",
|
|
7627
7639
|
CLAUDE_CODE_SUBAGENT_MODEL: "qwen3.8-flash",
|
|
7628
7640
|
CLAUDE_CODE_MAX_CONTEXT_TOKENS: "983616",
|
|
@@ -7646,6 +7658,7 @@ var init_templates = __esm(() => {
|
|
|
7646
7658
|
ANTHROPIC_MODEL: "qwen3.7-plus",
|
|
7647
7659
|
ANTHROPIC_DEFAULT_OPUS_MODEL: "qwen3.7-plus",
|
|
7648
7660
|
ANTHROPIC_DEFAULT_SONNET_MODEL: "qwen3.7-plus",
|
|
7661
|
+
ANTHROPIC_DEFAULT_FABLE_MODEL: "qwen3.7-plus",
|
|
7649
7662
|
ANTHROPIC_DEFAULT_HAIKU_MODEL: "qwen3.7-plus",
|
|
7650
7663
|
CLAUDE_CODE_SUBAGENT_MODEL: "qwen3.7-plus",
|
|
7651
7664
|
CLAUDE_CODE_MAX_CONTEXT_TOKENS: "983616",
|
|
@@ -10825,7 +10838,7 @@ async function syncProviderTemplateForInstance(instance) {
|
|
|
10825
10838
|
inst.providerTemplate = result.providerName;
|
|
10826
10839
|
needsSave = true;
|
|
10827
10840
|
}
|
|
10828
|
-
if (result.region &&
|
|
10841
|
+
if (result.region && inst.providerRegion !== result.region) {
|
|
10829
10842
|
inst.providerRegion = result.region;
|
|
10830
10843
|
needsSave = true;
|
|
10831
10844
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-multi",
|
|
3
|
-
"version": "0.13.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.13.2",
|
|
4
|
+
"description": "Run isolated Claude Code instances with separate providers, configs, plugins, MCP servers, and aliases",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"claude-multi": "bin/claude-multi.js"
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"docs:build": "astro build",
|
|
24
24
|
"docs:preview": "astro preview",
|
|
25
25
|
"docs:typecheck": "astro check",
|
|
26
|
+
"indexnow": "bun run scripts/indexnow.ts",
|
|
26
27
|
"ci:docs:deploy": "gh workflow run deploy-docs.yml",
|
|
27
28
|
"ci:publish": "gh workflow run publish.yml -f version=$(node -p \"require('./package.json').version\")",
|
|
28
29
|
"ci:test-install": "gh workflow run test-install.yml",
|
|
@@ -37,9 +38,17 @@
|
|
|
37
38
|
"keywords": [
|
|
38
39
|
"claude",
|
|
39
40
|
"claude-code",
|
|
41
|
+
"claude-ai",
|
|
40
42
|
"cli",
|
|
41
43
|
"multi-instance",
|
|
42
|
-
"wrapper"
|
|
44
|
+
"wrapper",
|
|
45
|
+
"provider-templates",
|
|
46
|
+
"deepseek",
|
|
47
|
+
"glm",
|
|
48
|
+
"kimi",
|
|
49
|
+
"minimax",
|
|
50
|
+
"qwen",
|
|
51
|
+
"xiaomi-mimo"
|
|
43
52
|
],
|
|
44
53
|
"author": "hmziqrs",
|
|
45
54
|
"license": "MIT",
|
|
@@ -56,7 +65,7 @@
|
|
|
56
65
|
"@astrojs/starlight": "^0.41.9",
|
|
57
66
|
"@inkjs/ui": "^2.0.0",
|
|
58
67
|
"@tailwindcss/vite": "^4.3.0",
|
|
59
|
-
"@types/node": "^
|
|
68
|
+
"@types/node": "^22.0.0",
|
|
60
69
|
"@types/prompts": "^2.4.9",
|
|
61
70
|
"@types/react": "^19.2.14",
|
|
62
71
|
"@types/semver": "^7.7.1",
|