mlclaw 0.2.1 → 0.2.3

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.
@@ -64,7 +64,7 @@ Space names from that.
64
64
  With Node.js:
65
65
 
66
66
  ```bash
67
- npx mlclaw bootstrap --name mlclaw
67
+ npx mlclaw@latest bootstrap --name mlclaw
68
68
  ```
69
69
 
70
70
  Without Node.js on macOS/Linux:
@@ -92,13 +92,13 @@ node dist/mlclaw.mjs --help
92
92
  Interactive:
93
93
 
94
94
  ```bash
95
- npx mlclaw bootstrap --name mlclaw
95
+ npx mlclaw@latest bootstrap --name mlclaw
96
96
  ```
97
97
 
98
98
  Automation:
99
99
 
100
100
  ```bash
101
- npx mlclaw bootstrap \
101
+ npx mlclaw@latest bootstrap \
102
102
  --name mlclaw \
103
103
  --model huggingface/google/gemma-4-26B-A4B-it:deepinfra \
104
104
  --yes
@@ -118,7 +118,7 @@ Create a public Space only when the user explicitly asks for a public demo or
118
118
  template-style deployment:
119
119
 
120
120
  ```bash
121
- npx mlclaw bootstrap --name mlclaw --public-space
121
+ npx mlclaw@latest bootstrap --name mlclaw --public-space
122
122
  ```
123
123
 
124
124
  ## Optional Telegram
@@ -126,7 +126,7 @@ npx mlclaw bootstrap --name mlclaw --public-space
126
126
  Telegram is optional and should not be required for the default setup.
127
127
 
128
128
  ```bash
129
- npx mlclaw bootstrap \
129
+ npx mlclaw@latest bootstrap \
130
130
  --telegram-token-file ~/secrets/mlclaw_bot.env \
131
131
  --telegram-user-id 1234567890 \
132
132
  --hardware cpu-upgrade \
@@ -143,13 +143,13 @@ restriction because messaging traffic originates from the user's machine.
143
143
  Use local gateway mode when the user wants the gateway on their machine:
144
144
 
145
145
  ```bash
146
- npx mlclaw bootstrap --gateway local --name mlclaw
146
+ npx mlclaw@latest bootstrap --gateway local --name mlclaw
147
147
  ```
148
148
 
149
149
  If the user has multiple Docker engines, pin the intended context:
150
150
 
151
151
  ```bash
152
- npx mlclaw bootstrap \
152
+ npx mlclaw@latest bootstrap \
153
153
  --gateway local \
154
154
  --name mlclaw \
155
155
  --docker-context desktop-linux
@@ -167,7 +167,7 @@ models, use the `huggingface/` prefix.
167
167
  Default/recommended:
168
168
 
169
169
  ```bash
170
- npx mlclaw bootstrap \
170
+ npx mlclaw@latest bootstrap \
171
171
  --name mlclaw \
172
172
  --model huggingface/google/gemma-4-26B-A4B-it:deepinfra
173
173
  ```
@@ -175,8 +175,15 @@ npx mlclaw bootstrap \
175
175
  Known useful router-compatible choices:
176
176
 
177
177
  - `huggingface/google/gemma-4-26B-A4B-it:deepinfra`: default quality target.
178
+ - `huggingface/Qwen/Qwen3.6-35B-A3B:deepinfra`: strong Qwen 3.6 option with tool and structured-output support.
178
179
  - `huggingface/Qwen/Qwen3.6-27B:deepinfra`: live Qwen 3.6 option with tool and structured-output support.
179
- - `huggingface/Qwen/Qwen3-8B:nscale`: cheaper small-model option.
180
+ - `huggingface/zai-org/GLM-5.2:deepinfra`: long-context GLM option with tool and structured-output support.
181
+ - `huggingface/moonshotai/Kimi-K2.7-Code:deepinfra`: coding-focused Kimi option with tool and structured-output support.
182
+ - `huggingface/openai/gpt-oss-120b:deepinfra`: larger GPT-OSS option with tool and structured-output support.
183
+ - `huggingface/openai/gpt-oss-20b:deepinfra`: lower-cost GPT-OSS option with tool and structured-output support.
184
+ - `huggingface/deepseek-ai/DeepSeek-V4-Flash:deepinfra`: low-cost long-context DeepSeek V4 option.
185
+ - `huggingface/deepseek-ai/DeepSeek-V4-Pro:deepinfra`: higher-quality long-context DeepSeek V4 option.
186
+ - `huggingface/MiniMaxAI/MiniMax-M3:together`: long-context MiniMax option with tool and structured-output support.
180
187
 
181
188
  Do not assume every Hub model is a Router chat model. If exact current model
182
189
  availability matters, check the Hugging Face Router catalog or run a direct
@@ -229,10 +236,11 @@ to the browser.
229
236
  ## Branding
230
237
 
231
238
  ML Claw white-labels the browser gateway at the proxy layer. App Spaces default
232
- the browser title, PWA manifest, assistant fallback avatar, login heading, and
233
- ML Claw control link to the agent name. The ML Claw logo is reserved for the
234
- control UI brand mark. The gateway shortcut, login logo, and default browser
235
- icons use the Hugging Face logo.
239
+ the browser title, PWA manifest, login heading, and ML Claw control link to the
240
+ agent name. The ML Claw logo is reserved for the control UI brand mark. The
241
+ gateway shortcut, login logo, and default browser icons use the Hugging Face
242
+ logo. The OpenClaw assistant fallback avatar defaults to a neutral assistant
243
+ icon.
236
244
 
237
245
  Use Space variables for explicit branding:
238
246
 
@@ -244,7 +252,8 @@ MLCLAW_BRAND_LOGO="mlclaw.svg"
244
252
  MLCLAW_BRAND_FAVICON="hf-logo.svg"
245
253
  MLCLAW_BRAND_FAVICON_32="hf-logo.svg"
246
254
  MLCLAW_BRAND_FAVICON_ICO="hf-logo.svg"
247
- MLCLAW_BRAND_APPLE_TOUCH_ICON="hf-logo.svg"
255
+ MLCLAW_BRAND_APPLE_TOUCH_ICON="assistant-avatar.svg"
256
+ MLCLAW_BRAND_ASSISTANT_AVATAR="assistant-avatar.svg"
248
257
  ```
249
258
 
250
259
  Brand asset paths are relative to the Space `assets/` directory. ML Claw serves
package/Dockerfile CHANGED
@@ -1,6 +1,6 @@
1
- ARG OPENCLAW_VERSION=2026.6.11
1
+ ARG OPENCLAW_VERSION=2026.7.1-beta.2
2
2
  ARG OPENCLAW_BASE_IMAGE=ghcr.io/openclaw/openclaw:${OPENCLAW_VERSION}
3
- ARG MLCLAW_RUNTIME_IMAGE=ghcr.io/osolmaz/mlclaw:0.2.1-openclaw-2026.6.11
3
+ ARG MLCLAW_RUNTIME_IMAGE=ghcr.io/osolmaz/mlclaw:0.2.3-openclaw-2026.7.1-beta.2
4
4
 
5
5
  # Stage 1: build the state-sync bundle so the runtime image needs no dev deps.
6
6
  FROM node:24-bookworm-slim AS sync-build
package/README.md CHANGED
@@ -17,7 +17,7 @@ OpenClaw on loopback using OpenClaw trusted-proxy auth.
17
17
  With Node.js:
18
18
 
19
19
  ```bash
20
- npx mlclaw bootstrap
20
+ npx mlclaw@latest bootstrap
21
21
  ```
22
22
 
23
23
  Without Node.js, the launcher fetches a pinned Node runtime into your user
@@ -40,7 +40,7 @@ token into someone else's app; the bootstrapper runs locally.
40
40
  ## Default Flow
41
41
 
42
42
  ```bash
43
- npx mlclaw bootstrap --name mlclaw
43
+ npx mlclaw@latest bootstrap --name mlclaw
44
44
  ```
45
45
 
46
46
  This creates:
@@ -59,13 +59,13 @@ for settings, status, credentials, and sign out.
59
59
  Create a public Space only when you explicitly want a public demo or template:
60
60
 
61
61
  ```bash
62
- npx mlclaw bootstrap --name mlclaw --public-space
62
+ npx mlclaw@latest bootstrap --name mlclaw --public-space
63
63
  ```
64
64
 
65
65
  Choose a Hugging Face Router model with `--model`:
66
66
 
67
67
  ```bash
68
- npx mlclaw bootstrap \
68
+ npx mlclaw@latest bootstrap \
69
69
  --name mlclaw \
70
70
  --model huggingface/google/gemma-4-26B-A4B-it:deepinfra
71
71
  ```
@@ -73,8 +73,15 @@ npx mlclaw bootstrap \
73
73
  Recommended router-compatible options:
74
74
 
75
75
  - `huggingface/google/gemma-4-26B-A4B-it:deepinfra`: default quality target.
76
+ - `huggingface/Qwen/Qwen3.6-35B-A3B:deepinfra`: strong Qwen 3.6 option with tool and structured-output support.
76
77
  - `huggingface/Qwen/Qwen3.6-27B:deepinfra`: live Qwen 3.6 option with tool and structured-output support.
77
- - `huggingface/Qwen/Qwen3-8B:nscale`: cheaper small-model option.
78
+ - `huggingface/zai-org/GLM-5.2:deepinfra`: long-context GLM option with tool and structured-output support.
79
+ - `huggingface/moonshotai/Kimi-K2.7-Code:deepinfra`: coding-focused Kimi option with tool and structured-output support.
80
+ - `huggingface/openai/gpt-oss-120b:deepinfra`: larger GPT-OSS option with tool and structured-output support.
81
+ - `huggingface/openai/gpt-oss-20b:deepinfra`: lower-cost GPT-OSS option with tool and structured-output support.
82
+ - `huggingface/deepseek-ai/DeepSeek-V4-Flash:deepinfra`: low-cost long-context DeepSeek V4 option.
83
+ - `huggingface/deepseek-ai/DeepSeek-V4-Pro:deepinfra`: higher-quality long-context DeepSeek V4 option.
84
+ - `huggingface/MiniMaxAI/MiniMax-M3:together`: long-context MiniMax option with tool and structured-output support.
78
85
 
79
86
  ## Optional Telegram
80
87
 
@@ -83,7 +90,7 @@ Telegram `getMe`, removes a trailing `_bot` from the username, and can derive
83
90
  the Space and bucket names from the bot username.
84
91
 
85
92
  ```bash
86
- npx mlclaw bootstrap \
93
+ npx mlclaw@latest bootstrap \
87
94
  --telegram-token-file ~/secrets/mlclaw_bot.env \
88
95
  --telegram-user-id 1234567890 \
89
96
  --hardware cpu-upgrade \
@@ -100,7 +107,7 @@ only for automation.
100
107
  You can run the gateway locally instead of inside a Space:
101
108
 
102
109
  ```bash
103
- npx mlclaw bootstrap --gateway local --name mlclaw
110
+ npx mlclaw@latest bootstrap --gateway local --name mlclaw
104
111
  ```
105
112
 
106
113
  Local mode uses Docker on your machine and the same private Storage Bucket.
@@ -175,10 +182,11 @@ mutate only the current Space, inferred from `SPACE_ID`.
175
182
  ## Branding
176
183
 
177
184
  ML Claw white-labels the browser-facing gateway by default. App Spaces use the
178
- agent name as the browser title, PWA name, login heading, assistant fallback
179
- avatar, and ML Claw control link label. The ML Claw logo is reserved for the
180
- control UI brand mark. The gateway shortcut, login logo, and default browser
181
- icons use the Hugging Face logo.
185
+ agent name as the browser title, PWA name, login heading, and ML Claw control
186
+ link label. The ML Claw logo is reserved for the control UI brand mark. The
187
+ gateway shortcut, login logo, and default browser icons use the Hugging Face
188
+ logo. The OpenClaw assistant fallback avatar defaults to a neutral assistant
189
+ icon.
182
190
 
183
191
  Override branding with Space variables:
184
192
 
@@ -190,7 +198,8 @@ MLCLAW_BRAND_LOGO=mlclaw.svg
190
198
  MLCLAW_BRAND_FAVICON=hf-logo.svg
191
199
  MLCLAW_BRAND_FAVICON_32=hf-logo.svg
192
200
  MLCLAW_BRAND_FAVICON_ICO=hf-logo.svg
193
- MLCLAW_BRAND_APPLE_TOUCH_ICON=hf-logo.svg
201
+ MLCLAW_BRAND_APPLE_TOUCH_ICON=assistant-avatar.svg
202
+ MLCLAW_BRAND_ASSISTANT_AVATAR=assistant-avatar.svg
194
203
  ```
195
204
 
196
205
  Brand asset paths are relative to the Space `assets/` directory. ML Claw serves
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" role="img" aria-label="Assistant">
2
+ <rect width="256" height="256" rx="64" fill="#111827"/>
3
+ <path fill="#f9fafb" d="M128 52 146 107h58l-47 34 18 55-47-34-47 34 18-55-47-34h58z"/>
4
+ <circle cx="128" cy="128" r="92" fill="none" stroke="#f9fafb" stroke-width="10" opacity=".22"/>
5
+ </svg>
@@ -17,6 +17,7 @@ var DEFAULT_BRAND_NAME = "ML Claw";
17
17
  var DEFAULT_THEME_COLOR = "#111827";
18
18
  var DEFAULT_LOGO_ASSET = "mlclaw.svg";
19
19
  var DEFAULT_HUGGING_FACE_ASSET = "hf-logo.svg";
20
+ var DEFAULT_ASSISTANT_AVATAR_ASSET = "assistant-avatar.svg";
20
21
  function resolveBranding(env, agentName) {
21
22
  const defaultName = defaultBrandName(agentName);
22
23
  const name = cleanText(env.MLCLAW_BRAND_NAME) ?? defaultName;
@@ -38,8 +39,8 @@ function resolveBranding(env, agentName) {
38
39
  DEFAULT_HUGGING_FACE_ASSET
39
40
  ),
40
41
  appleTouchIconAsset: normalizeAssetRef(
41
- env.MLCLAW_BRAND_APPLE_TOUCH_ICON ?? env.MLCLAW_BRAND_FAVICON_PNG ?? env.MLCLAW_BRAND_FAVICON,
42
- DEFAULT_HUGGING_FACE_ASSET
42
+ env.MLCLAW_BRAND_APPLE_TOUCH_ICON ?? env.MLCLAW_BRAND_ASSISTANT_AVATAR,
43
+ DEFAULT_ASSISTANT_AVATAR_ASSET
43
44
  )
44
45
  };
45
46
  }
@@ -139,6 +140,22 @@ var PRESET_MODEL_CHOICES = [
139
140
  outputModalities: ["text"],
140
141
  preset: true
141
142
  }),
143
+ freezeChoice({
144
+ modelId: "Qwen/Qwen3.6-35B-A3B",
145
+ provider: "deepinfra",
146
+ label: "Qwen 3.6 35B A3B",
147
+ note: "Strong Qwen 3.6 preset on DeepInfra",
148
+ contextLength: 262144,
149
+ pricing: { input: 0.15, output: 0.95 },
150
+ supportsTools: true,
151
+ supportsStructuredOutput: true,
152
+ firstTokenLatencyMs: 401,
153
+ throughput: 43.13170843671405,
154
+ status: "live",
155
+ inputModalities: ["text"],
156
+ outputModalities: ["text"],
157
+ preset: true
158
+ }),
142
159
  freezeChoice({
143
160
  modelId: "Qwen/Qwen3.6-27B",
144
161
  provider: "deepinfra",
@@ -154,6 +171,118 @@ var PRESET_MODEL_CHOICES = [
154
171
  inputModalities: ["text", "image"],
155
172
  outputModalities: ["text"],
156
173
  preset: true
174
+ }),
175
+ freezeChoice({
176
+ modelId: "zai-org/GLM-5.2",
177
+ provider: "deepinfra",
178
+ label: "GLM 5.2",
179
+ note: "Long-context GLM preset on DeepInfra",
180
+ contextLength: 1048576,
181
+ pricing: { input: 0.93, output: 3 },
182
+ supportsTools: true,
183
+ supportsStructuredOutput: true,
184
+ firstTokenLatencyMs: 467.5,
185
+ throughput: 16.52283992136833,
186
+ status: "live",
187
+ inputModalities: ["text"],
188
+ outputModalities: ["text"],
189
+ preset: true
190
+ }),
191
+ freezeChoice({
192
+ modelId: "moonshotai/Kimi-K2.7-Code",
193
+ provider: "deepinfra",
194
+ label: "Kimi K2.7 Code",
195
+ note: "Kimi K2.7 coding preset on DeepInfra",
196
+ contextLength: 262144,
197
+ pricing: { input: 0.74, output: 3.5 },
198
+ supportsTools: true,
199
+ supportsStructuredOutput: true,
200
+ firstTokenLatencyMs: 692,
201
+ throughput: 29.26330731892916,
202
+ status: "live",
203
+ inputModalities: ["text"],
204
+ outputModalities: ["text"],
205
+ preset: true
206
+ }),
207
+ freezeChoice({
208
+ modelId: "openai/gpt-oss-120b",
209
+ provider: "deepinfra",
210
+ label: "GPT-OSS 120B",
211
+ note: "Large GPT-OSS preset on DeepInfra",
212
+ contextLength: 131072,
213
+ pricing: { input: 0.037, output: 0.17 },
214
+ supportsTools: true,
215
+ supportsStructuredOutput: true,
216
+ firstTokenLatencyMs: 362.2,
217
+ throughput: 32.98392643597656,
218
+ status: "live",
219
+ inputModalities: ["text"],
220
+ outputModalities: ["text"],
221
+ preset: true
222
+ }),
223
+ freezeChoice({
224
+ modelId: "openai/gpt-oss-20b",
225
+ provider: "deepinfra",
226
+ label: "GPT-OSS 20B",
227
+ note: "Lower-cost GPT-OSS preset on DeepInfra",
228
+ contextLength: 131072,
229
+ pricing: { input: 0.03, output: 0.14 },
230
+ supportsTools: true,
231
+ supportsStructuredOutput: true,
232
+ firstTokenLatencyMs: 255,
233
+ throughput: 115.64765388606148,
234
+ status: "live",
235
+ inputModalities: ["text"],
236
+ outputModalities: ["text"],
237
+ preset: true
238
+ }),
239
+ freezeChoice({
240
+ modelId: "deepseek-ai/DeepSeek-V4-Flash",
241
+ provider: "deepinfra",
242
+ label: "DeepSeek V4 Flash",
243
+ note: "Lower-cost DeepSeek V4 preset on DeepInfra",
244
+ contextLength: 1048576,
245
+ pricing: { input: 0.09, output: 0.18 },
246
+ supportsTools: true,
247
+ supportsStructuredOutput: true,
248
+ firstTokenLatencyMs: 719.8,
249
+ throughput: 24.5757632831937,
250
+ status: "live",
251
+ inputModalities: ["text"],
252
+ outputModalities: ["text"],
253
+ preset: true
254
+ }),
255
+ freezeChoice({
256
+ modelId: "deepseek-ai/DeepSeek-V4-Pro",
257
+ provider: "deepinfra",
258
+ label: "DeepSeek V4 Pro",
259
+ note: "Higher-quality DeepSeek V4 preset on DeepInfra",
260
+ contextLength: 1048576,
261
+ pricing: { input: 1.3, output: 2.6 },
262
+ supportsTools: true,
263
+ supportsStructuredOutput: true,
264
+ firstTokenLatencyMs: 489.2,
265
+ throughput: 37.30647476533069,
266
+ status: "live",
267
+ inputModalities: ["text"],
268
+ outputModalities: ["text"],
269
+ preset: true
270
+ }),
271
+ freezeChoice({
272
+ modelId: "MiniMaxAI/MiniMax-M3",
273
+ provider: "together",
274
+ label: "MiniMax M3",
275
+ note: "Long-context MiniMax preset on Together",
276
+ contextLength: 524288,
277
+ pricing: { input: 0.3, output: 1.2 },
278
+ supportsTools: true,
279
+ supportsStructuredOutput: true,
280
+ firstTokenLatencyMs: 505.6,
281
+ throughput: 59.79726580207129,
282
+ status: "live",
283
+ inputModalities: ["text"],
284
+ outputModalities: ["text"],
285
+ preset: true
157
286
  })
158
287
  ];
159
288
  function parseModelChoicesEnv(value, activeModel) {
@@ -6960,7 +7089,7 @@ function templatePage(config2) {
6960
7089
  <p>Run the local bootstrapper to create a Hugging Face hosted OpenClaw agent for ML workflows.</p>
6961
7090
  <p class="notice">Do not set this up by only clicking Duplicate. The bootstrapper creates the private Space, private Storage Bucket, OAuth settings, secrets, model configuration, and local manifest.</p>
6962
7091
  <h2>With Node.js</h2>
6963
- <pre><code>npx mlclaw bootstrap --name mlclaw</code></pre>
7092
+ <pre><code>npx mlclaw@latest bootstrap --name mlclaw</code></pre>
6964
7093
  <h2>macOS or Linux without Node.js</h2>
6965
7094
  <pre><code>bash &lt;(curl -fsSL https://raw.githubusercontent.com/osolmaz/mlclaw/main/mlclaw.sh) --name mlclaw</code></pre>
6966
7095
  <h2>Windows PowerShell</h2>
@@ -7516,6 +7645,7 @@ function createSpaceRuntimeApp(config2, controls) {
7516
7645
  app.get("/healthz", (c) => health(c, config2, controls));
7517
7646
  app.get("/assets/mlclaw.svg", async () => serveFile(path3.join(config2.assetsDir, "mlclaw.svg"), "image/svg+xml; charset=utf-8"));
7518
7647
  app.get("/assets/hf-logo.svg", async () => serveFile(path3.join(config2.assetsDir, "hf-logo.svg"), "image/svg+xml; charset=utf-8"));
7648
+ app.get("/assets/assistant-avatar.svg", async () => serveFile(path3.join(config2.assetsDir, "assistant-avatar.svg"), "image/svg+xml; charset=utf-8"));
7519
7649
  app.get("/assets/mlclaw-control-branding.js", () => staticScript(CONTROL_BRANDING_SCRIPT));
7520
7650
  app.get("/assets/brand/logo", async () => serveBrandAsset(config2, config2.branding.logoAsset));
7521
7651
  app.get("/favicon.svg", async () => serveBrandAsset(config2, config2.branding.faviconSvgAsset));
@@ -7853,11 +7983,11 @@ async function serveFile(file, contentTypeHeader, immutable = false) {
7853
7983
  }
7854
7984
  }
7855
7985
  async function serveBrandAsset(config2, asset) {
7856
- const response = await serveFile(path3.join(config2.assetsDir, asset), contentType(asset), true);
7986
+ const response = await serveFile(path3.join(config2.assetsDir, asset), contentType(asset));
7857
7987
  if (response.status !== 404 || asset === "mlclaw.svg") {
7858
7988
  return response;
7859
7989
  }
7860
- return serveFile(path3.join(config2.assetsDir, "mlclaw.svg"), "image/svg+xml; charset=utf-8", true);
7990
+ return serveFile(path3.join(config2.assetsDir, "mlclaw.svg"), "image/svg+xml; charset=utf-8");
7861
7991
  }
7862
7992
  function safeRelativePath(value) {
7863
7993
  let decoded;
@@ -8172,7 +8302,7 @@ var SpaceRuntimeServer = class {
8172
8302
  await proxyHttp(req, res, this.config, { username: session.username });
8173
8303
  }
8174
8304
  shouldRouteToMlClaw(pathname) {
8175
- return pathname === "/health" || pathname === "/healthz" || pathname === "/favicon.svg" || pathname === "/favicon-32.png" || pathname === "/favicon.ico" || pathname === "/apple-touch-icon.png" || pathname === "/manifest.webmanifest" || pathname === "/sw.js" || pathname === "/assets/hf-logo.svg" || pathname === "/assets/mlclaw.svg" || pathname === "/assets/mlclaw-control-branding.js" || pathname === "/assets/brand/logo" || pathname === "/login" || pathname === "/logout" || pathname.startsWith("/oauth/") || pathname === "/mlclaw" || pathname.startsWith("/mlclaw/");
8305
+ return pathname === "/health" || pathname === "/healthz" || pathname === "/favicon.svg" || pathname === "/favicon-32.png" || pathname === "/favicon.ico" || pathname === "/apple-touch-icon.png" || pathname === "/manifest.webmanifest" || pathname === "/sw.js" || pathname === "/assets/hf-logo.svg" || pathname === "/assets/mlclaw.svg" || pathname === "/assets/assistant-avatar.svg" || pathname === "/assets/mlclaw-control-branding.js" || pathname === "/assets/brand/logo" || pathname === "/login" || pathname === "/logout" || pathname.startsWith("/oauth/") || pathname === "/mlclaw" || pathname.startsWith("/mlclaw/");
8176
8306
  }
8177
8307
  async startOpenClaw(extraEnv = {}) {
8178
8308
  if (this.openclawStarting || this.openclaw && !this.openclaw.killed) {
@@ -8299,7 +8429,7 @@ function isApiPath(pathname) {
8299
8429
  return pathname.startsWith("/mlclaw/api/");
8300
8430
  }
8301
8431
  function isTemplateRuntimePath(pathname) {
8302
- return pathname === "/health" || pathname === "/healthz" || pathname === "/favicon.svg" || pathname === "/favicon-32.png" || pathname === "/favicon.ico" || pathname === "/apple-touch-icon.png" || pathname === "/manifest.webmanifest" || pathname === "/assets/hf-logo.svg" || pathname === "/assets/mlclaw.svg" || pathname === "/assets/brand/logo";
8432
+ return pathname === "/health" || pathname === "/healthz" || pathname === "/favicon.svg" || pathname === "/favicon-32.png" || pathname === "/favicon.ico" || pathname === "/apple-touch-icon.png" || pathname === "/manifest.webmanifest" || pathname === "/assets/hf-logo.svg" || pathname === "/assets/mlclaw.svg" || pathname === "/assets/assistant-avatar.svg" || pathname === "/assets/brand/logo";
8303
8433
  }
8304
8434
  function formatError2(err) {
8305
8435
  return err instanceof Error ? err.stack ?? err.message : String(err);
package/dist/mlclaw.mjs CHANGED
@@ -14804,7 +14804,7 @@ function sseDataToText(raw) {
14804
14804
  import fs11 from "node:fs";
14805
14805
  import path12 from "node:path";
14806
14806
  import { fileURLToPath as fileURLToPath2 } from "node:url";
14807
- var DEFAULT_OPENCLAW_VERSION = "2026.6.11";
14807
+ var DEFAULT_OPENCLAW_VERSION = "2026.7.1-beta.2";
14808
14808
  var DEFAULT_RUNTIME_IMAGE_REPOSITORY = "ghcr.io/osolmaz/mlclaw";
14809
14809
  var PACKAGE_METADATA = readPackageMetadata();
14810
14810
  var PACKAGE_VERSION = packageString("version", "unknown");
@@ -14903,6 +14903,7 @@ async function currentTemplateRev(sourceDir) {
14903
14903
  async function generateSpaceRepo(sourceDir, outDir, options = {}) {
14904
14904
  const copies = [
14905
14905
  [".gitattributes", ".gitattributes"],
14906
+ ["assets/assistant-avatar.svg", "assets/assistant-avatar.svg"],
14906
14907
  ["assets/hf-logo.svg", "assets/hf-logo.svg"],
14907
14908
  ["assets/mlclaw.svg", "assets/mlclaw.svg"],
14908
14909
  ["assets/mlclaw-control-ui", "assets/mlclaw-control-ui"],
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "mlclaw",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "license": "MIT",
5
5
  "config": {
6
- "openclawVersion": "2026.6.11",
6
+ "openclawVersion": "2026.7.1-beta.2",
7
7
  "runtimeImageRepository": "ghcr.io/osolmaz/mlclaw"
8
8
  },
9
9
  "repository": {