@1claw/cli 0.35.1 → 0.36.1
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/README.md +33 -3
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +262 -63
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/docker/base/Dockerfile +7 -1
- package/dist/src/docker/base/chat-ui/server.js +127 -7
- package/dist/src/lib/container-config.d.ts +10 -1
- package/dist/src/lib/container-config.d.ts.map +1 -1
- package/dist/src/lib/container-config.js +11 -2
- package/dist/src/lib/container-config.js.map +1 -1
- package/dist/src/lib/daemon-control.d.ts +6 -0
- package/dist/src/lib/daemon-control.d.ts.map +1 -1
- package/dist/src/lib/daemon-control.js +38 -1
- package/dist/src/lib/daemon-control.js.map +1 -1
- package/dist/src/lib/docker-client.d.ts +2 -0
- package/dist/src/lib/docker-client.d.ts.map +1 -1
- package/dist/src/lib/docker-client.js +17 -0
- package/dist/src/lib/docker-client.js.map +1 -1
- package/dist/src/lib/image-build.d.ts +8 -1
- package/dist/src/lib/image-build.d.ts.map +1 -1
- package/dist/src/lib/image-build.js +27 -5
- package/dist/src/lib/image-build.js.map +1 -1
- package/dist/src/secret-proxy.d.ts +7 -0
- package/dist/src/secret-proxy.d.ts.map +1 -1
- package/dist/src/secret-proxy.js +25 -18
- package/dist/src/secret-proxy.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# @1claw/cli (v0.
|
|
1
|
+
# @1claw/cli (v0.36.1)
|
|
2
2
|
|
|
3
3
|
Command-line interface for [1Claw](https://1claw.xyz) — HSM-backed secret management for AI agents and humans.
|
|
4
4
|
|
|
@@ -586,15 +586,45 @@ AI Client (Claude, Cursor, etc.)
|
|
|
586
586
|
`1claw init --docker` provisions a secure agent runtime inside a Docker container in one command. The container ships with the 1Claw MCP server and a lightweight chat UI. Crucially, the container **never receives the agent API key** — the host daemon injects credentials over a read-only Unix-socket mount, preserving the same trust boundary as local daemon mode.
|
|
587
587
|
|
|
588
588
|
```bash
|
|
589
|
-
1claw init --docker # Basic secure agent
|
|
589
|
+
1claw init --docker # Basic secure agent (chat LLM via Shroud)
|
|
590
590
|
1claw init --docker --module=ampersend # With x402 payments
|
|
591
591
|
1claw init --docker --module=ampersend,onchain --port 8080
|
|
592
|
-
1claw init --docker --
|
|
592
|
+
1claw init --docker --llm-provider anthropic --llm-model claude-3-5-haiku-latest
|
|
593
|
+
1claw init --docker --local # Fully offline — no cloud account, no LLM
|
|
593
594
|
1claw init --docker --list-modules # List available modules
|
|
594
595
|
```
|
|
595
596
|
|
|
596
597
|
When the cloud is reachable, `init` provisions an agent + vault + read policy and stores the agent key in your local vault (the daemon injects it toward `*.1claw.xyz`). With `--local`, nothing touches the cloud. The base image is built from bundled assets if it isn't already present, so the flow works offline.
|
|
597
598
|
|
|
599
|
+
### Chat with an LLM through Shroud
|
|
600
|
+
|
|
601
|
+
In cloud mode (not `--local`), the embedded chat UI is wired to an LLM **through Shroud** — type a message and it routes via the host daemon, which injects the `X-Shroud-Agent-Key` header (the container never sees the key). Shroud inspects the prompt (redaction, PII, injection detection) and forwards to the provider.
|
|
602
|
+
|
|
603
|
+
- Pick the model with `--llm-provider` (default `openai`) and `--llm-model` (default per provider, e.g. `gpt-4o-mini`).
|
|
604
|
+
- `--local` mode has **no LLM** (no cloud agent → no Shroud credential); only the `/help`, `/secrets`, `/info`, and `/proxy` slash commands work.
|
|
605
|
+
|
|
606
|
+
**Where does the provider key come from?** Shroud resolves it in this order — pick whichever you prefer:
|
|
607
|
+
|
|
608
|
+
| Option | How | Where the key lives |
|
|
609
|
+
| --- | --- | --- |
|
|
610
|
+
| **1Claw Token Billing** | Enable LLM Token Billing for the org (Dashboard → Billing, or `POST /v1/billing/llm-token-billing/subscribe`). Shroud routes through the Stripe AI Gateway. | No provider key — billed to 1Claw |
|
|
611
|
+
| **1Claw vault** | `--llm-api-key <key>` (default `--llm-key-store cloud`) stores it at `providers/<provider>/api-key`; or store it yourself with `1claw secret put`. Shroud auto-fetches it with the agent JWT. | Your 1Claw cloud vault |
|
|
612
|
+
| **Local CLI vault (BYOK)** | `--llm-api-key <key> --llm-key-store local`, or `--llm-api-key-secret <name>` to reuse an existing local secret. The daemon injects it as the `X-Shroud-Api-Key` header. | Your local CLI vault (`~/.config/1claw`) |
|
|
613
|
+
|
|
614
|
+
```bash
|
|
615
|
+
# Bill model usage to 1Claw (no provider key):
|
|
616
|
+
1claw init --docker # then enable LLM Token Billing
|
|
617
|
+
|
|
618
|
+
# Provider key stored in your 1Claw vault (Shroud auto-fetches):
|
|
619
|
+
1claw init --docker --llm-api-key sk-... # --llm-key-store cloud (default)
|
|
620
|
+
|
|
621
|
+
# Provider key stored in the local CLI vault (daemon injects, container never sees it):
|
|
622
|
+
1claw init --docker --llm-api-key sk-... --llm-key-store local
|
|
623
|
+
1claw init --docker --llm-api-key-secret openai-key # reuse an existing local secret
|
|
624
|
+
```
|
|
625
|
+
|
|
626
|
+
In every case the container **never receives the provider key** — it's resolved server-side by Shroud (cloud vault / token billing) or injected by the host daemon (local BYOK).
|
|
627
|
+
|
|
598
628
|
### Modules
|
|
599
629
|
|
|
600
630
|
Composable container extensions defined by `module.yaml` manifests bundled with the CLI:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+EpC,eAAO,MAAM,WAAW,SA0ClB,CAAC"}
|
|
@@ -6,13 +6,13 @@ import { api } from "../client.js";
|
|
|
6
6
|
import { getToken } from "../config.js";
|
|
7
7
|
import { loginWithDevice } from "../auth.js";
|
|
8
8
|
import { printSuccess, printError, printWarning, printInfo, printKeyValue, printTable, } from "../output.js";
|
|
9
|
-
import { vaultExists, createVault, loadVault, saveVault, addSecret, } from "../local-vault.js";
|
|
9
|
+
import { vaultExists, createVault, loadVault, saveVault, addSecret, getSecret, } from "../local-vault.js";
|
|
10
10
|
import { loadPolicy, savePolicy, setSecretPolicy, } from "../local-policy.js";
|
|
11
11
|
import { dockerAvailable, dockerDaemonError, dockerRun, dockerContainerStatus, dockerLogs, } from "../lib/docker-client.js";
|
|
12
12
|
import { ensureBaseImage, buildModuleImage, DEFAULT_BASE_IMAGE, } from "../lib/image-build.js";
|
|
13
13
|
import { listModules, resolveModules, } from "../modules/registry.js";
|
|
14
14
|
import { generateContainerName, isValidContainerName, sanitizeName, loadContainerState, saveContainerState, findAvailablePort, MANAGED_LABEL, } from "../lib/container-config.js";
|
|
15
|
-
import { daemonSocketPath, daemonHealthy, startDaemonDetached, } from "../lib/daemon-control.js";
|
|
15
|
+
import { daemonSocketPath, daemonHealthy, startDaemonDetached, stopDaemon, } from "../lib/daemon-control.js";
|
|
16
16
|
export const initCommand = new Command("init")
|
|
17
17
|
.description("Initialize a secure agent runtime in a Docker container")
|
|
18
18
|
.option("--docker [image]", "Run in Docker container (default: 1claw/agent:stable)")
|
|
@@ -23,6 +23,11 @@ export const initCommand = new Command("init")
|
|
|
23
23
|
.option("--local", "Fully offline — no cloud provisioning")
|
|
24
24
|
.option("--agent-key <key>", "Use an existing agent key (skip provisioning)")
|
|
25
25
|
.option("--detach", "Run the container in the background")
|
|
26
|
+
.option("--llm-provider <provider>", "LLM provider for the chat UI via Shroud (openai, anthropic, google, ...)", "openai")
|
|
27
|
+
.option("--llm-model <model>", "LLM model for the chat UI via Shroud (e.g. gpt-4o-mini, claude-3-5-haiku-latest)")
|
|
28
|
+
.option("--llm-api-key <key>", "Provider API key for the chat LLM (stored, never passed to the container)")
|
|
29
|
+
.option("--llm-key-store <where>", "Where to store --llm-api-key: 'cloud' (1Claw vault, Shroud auto-fetches) or 'local' (CLI vault, daemon injects)", "cloud")
|
|
30
|
+
.option("--llm-api-key-secret <name>", "Use an existing LOCAL vault secret as the provider key (daemon injects it as X-Shroud-Api-Key)")
|
|
26
31
|
.action(async (opts) => {
|
|
27
32
|
try {
|
|
28
33
|
await initAction(opts);
|
|
@@ -32,6 +37,20 @@ export const initCommand = new Command("init")
|
|
|
32
37
|
process.exit(1);
|
|
33
38
|
}
|
|
34
39
|
});
|
|
40
|
+
function defaultModelForProvider(provider) {
|
|
41
|
+
switch (provider.toLowerCase()) {
|
|
42
|
+
case "anthropic":
|
|
43
|
+
return "claude-3-5-haiku-latest";
|
|
44
|
+
case "google":
|
|
45
|
+
case "gemini":
|
|
46
|
+
return "gemini-2.5-flash";
|
|
47
|
+
case "mistral":
|
|
48
|
+
return "mistral-small-latest";
|
|
49
|
+
case "openai":
|
|
50
|
+
default:
|
|
51
|
+
return "gpt-4o-mini";
|
|
52
|
+
}
|
|
53
|
+
}
|
|
35
54
|
function parseModuleNames(input) {
|
|
36
55
|
if (!input)
|
|
37
56
|
return [];
|
|
@@ -130,7 +149,18 @@ async function provisionCloudResources(containerName) {
|
|
|
130
149
|
permissions: ["read"],
|
|
131
150
|
},
|
|
132
151
|
});
|
|
133
|
-
|
|
152
|
+
// Allow the agent to read LLM provider keys it stores in 1Claw, so
|
|
153
|
+
// Shroud can auto-fetch `providers/{provider}/api-key` for chat.
|
|
154
|
+
await api(`/vaults/${vaultId}/policies`, {
|
|
155
|
+
method: "POST",
|
|
156
|
+
body: {
|
|
157
|
+
principal_type: "agent",
|
|
158
|
+
principal_id: agentId,
|
|
159
|
+
secret_path_pattern: "providers/*",
|
|
160
|
+
permissions: ["read"],
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
policySpinner.succeed("Vault bound; read policies on secrets/* and providers/* granted.");
|
|
134
164
|
}
|
|
135
165
|
catch (err) {
|
|
136
166
|
policySpinner.fail("Failed to bind vault / create policy.");
|
|
@@ -167,41 +197,42 @@ async function resolvePassphrase(confirm) {
|
|
|
167
197
|
return passphrase;
|
|
168
198
|
}
|
|
169
199
|
/**
|
|
170
|
-
* Ensure a local vault exists, optionally store
|
|
171
|
-
* and make sure the daemon is running so the
|
|
200
|
+
* Ensure a local vault exists, optionally store one or more secrets (each with
|
|
201
|
+
* its daemon injection policy), and make sure the daemon is running so the
|
|
202
|
+
* container can reach it. If the daemon is already running and we wrote new
|
|
203
|
+
* secrets, it is reloaded (the daemon loads the vault into memory at startup).
|
|
172
204
|
*/
|
|
173
205
|
async function ensureDaemonRunning(opts) {
|
|
174
206
|
const socketPath = daemonSocketPath();
|
|
175
207
|
const alreadyRunning = await daemonHealthy(socketPath);
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
// to store, we can skip vault work entirely.
|
|
179
|
-
const needVaultWrite = !!opts.storeKey;
|
|
208
|
+
const storeKeys = opts.storeKeys ?? [];
|
|
209
|
+
const needVaultWrite = storeKeys.length > 0;
|
|
180
210
|
const needStart = !alreadyRunning;
|
|
211
|
+
// If we're writing secrets but the daemon is already up, it must be
|
|
212
|
+
// reloaded — otherwise the container can't reach the freshly stored keys.
|
|
213
|
+
const needReload = needVaultWrite && alreadyRunning;
|
|
181
214
|
if (!needVaultWrite && !needStart) {
|
|
182
215
|
return socketPath;
|
|
183
216
|
}
|
|
184
217
|
const creatingVault = !vaultExists();
|
|
185
218
|
let passphrase;
|
|
186
|
-
if (
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
219
|
+
if (creatingVault) {
|
|
220
|
+
printInfo("No local vault found — creating one for the daemon.");
|
|
221
|
+
passphrase = await resolvePassphrase(true);
|
|
222
|
+
createVault(passphrase);
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
passphrase = await resolvePassphrase(false);
|
|
226
|
+
// Verify the passphrase up front so we fail with a clear message
|
|
227
|
+
// instead of an opaque "daemon did not become ready in time".
|
|
228
|
+
try {
|
|
229
|
+
loadVault(passphrase);
|
|
191
230
|
}
|
|
192
|
-
|
|
193
|
-
passphrase
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
loadVault(passphrase);
|
|
198
|
-
}
|
|
199
|
-
catch {
|
|
200
|
-
throw new Error("Wrong passphrase for the existing local vault.\n" +
|
|
201
|
-
" • If you mistyped it, re-run and enter the correct passphrase.\n" +
|
|
202
|
-
" • If you've forgotten it, reset the vault with: 1claw local destroy --force\n" +
|
|
203
|
-
" (this permanently deletes the old local vault and its secrets), then re-run.");
|
|
204
|
-
}
|
|
231
|
+
catch {
|
|
232
|
+
throw new Error("Wrong passphrase for the existing local vault.\n" +
|
|
233
|
+
" • If you mistyped it, re-run and enter the correct passphrase.\n" +
|
|
234
|
+
" • If you've forgotten it, reset the vault with: 1claw local destroy --force\n" +
|
|
235
|
+
" (this permanently deletes the old local vault and its secrets), then re-run.");
|
|
205
236
|
}
|
|
206
237
|
}
|
|
207
238
|
if (needVaultWrite && passphrase) {
|
|
@@ -212,17 +243,33 @@ async function ensureDaemonRunning(opts) {
|
|
|
212
243
|
catch {
|
|
213
244
|
throw new Error("Wrong passphrase or corrupted local vault.");
|
|
214
245
|
}
|
|
215
|
-
addSecret(vault, opts.storeKey.localVaultPath, opts.storeKey.apiKey, "api_key");
|
|
216
|
-
saveVault(vault, passphrase);
|
|
217
|
-
// Allow the daemon to inject this key toward the 1Claw API only.
|
|
218
246
|
const policy = loadPolicy();
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
247
|
+
for (const spec of storeKeys) {
|
|
248
|
+
if (spec.value !== undefined) {
|
|
249
|
+
addSecret(vault, spec.path, spec.value, spec.type ?? "api_key");
|
|
250
|
+
}
|
|
251
|
+
else if (!getSecret(vault, spec.path)) {
|
|
252
|
+
throw new Error(`Provider key secret "${spec.path}" not found in the local vault.\n` +
|
|
253
|
+
` Add it first: 1claw local add ${spec.path}`);
|
|
254
|
+
}
|
|
255
|
+
setSecretPolicy(policy, spec.path, spec.policy);
|
|
256
|
+
}
|
|
257
|
+
saveVault(vault, passphrase);
|
|
223
258
|
savePolicy(policy);
|
|
224
259
|
}
|
|
225
|
-
if (
|
|
260
|
+
if (needReload) {
|
|
261
|
+
const spinner = ora("Reloading daemon to pick up new secrets...").start();
|
|
262
|
+
await stopDaemon(socketPath);
|
|
263
|
+
const ok = await startDaemonDetached(passphrase, socketPath);
|
|
264
|
+
if (!ok) {
|
|
265
|
+
spinner.fail("Daemon did not come back up.");
|
|
266
|
+
throw new Error("Failed to reload the daemon.\n" +
|
|
267
|
+
" • Check status: 1claw daemon status\n" +
|
|
268
|
+
" • Start it manually (shows errors): 1claw daemon start");
|
|
269
|
+
}
|
|
270
|
+
spinner.succeed(`Daemon reloaded on ${socketPath}`);
|
|
271
|
+
}
|
|
272
|
+
else if (needStart) {
|
|
226
273
|
if (!passphrase)
|
|
227
274
|
passphrase = await resolvePassphrase(false);
|
|
228
275
|
const spinner = ora("Starting local daemon...").start();
|
|
@@ -330,19 +377,96 @@ async function initAction(opts) {
|
|
|
330
377
|
vaultId = result.vaultId;
|
|
331
378
|
agentApiKey = result.apiKey;
|
|
332
379
|
}
|
|
333
|
-
// ── Step 4/5: Store key + start daemon
|
|
334
|
-
|
|
335
|
-
|
|
380
|
+
// ── Step 4/5: Store key(s) + start daemon ────────────────────────────
|
|
381
|
+
// Shroud authenticates via the X-Shroud-Agent-Key header in `agent_id:key`
|
|
382
|
+
// form. We have a clean id+key only on the provisioned path; for --agent-key
|
|
383
|
+
// the user can pass `agent_id:key` directly.
|
|
384
|
+
const sid = sanitizeName(containerName);
|
|
385
|
+
const storeKeys = [];
|
|
386
|
+
let shroudAgentKey = null;
|
|
387
|
+
if (agentId && agentApiKey) {
|
|
388
|
+
shroudAgentKey = `${agentId}:${agentApiKey}`;
|
|
389
|
+
}
|
|
390
|
+
else if (agentApiKey && agentApiKey.includes(":")) {
|
|
391
|
+
shroudAgentKey = agentApiKey;
|
|
392
|
+
}
|
|
393
|
+
if (agentApiKey) {
|
|
394
|
+
// Generic bearer key toward the 1Claw API (used by /proxy demos).
|
|
395
|
+
localVaultPath = `__docker/${sid}/agent-key`;
|
|
396
|
+
storeKeys.push({
|
|
397
|
+
path: localVaultPath,
|
|
398
|
+
value: agentApiKey,
|
|
399
|
+
type: "api_key",
|
|
400
|
+
policy: {
|
|
401
|
+
allowed_hosts: ["api.1claw.xyz", "*.1claw.xyz"],
|
|
402
|
+
inject_as: "bearer",
|
|
403
|
+
},
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
// Shroud LLM key: injected as the X-Shroud-Agent-Key header toward Shroud.
|
|
407
|
+
let shroudSecretPath = null;
|
|
408
|
+
if (shroudAgentKey && !opts.local) {
|
|
409
|
+
shroudSecretPath = `__docker/${sid}/shroud-key`;
|
|
410
|
+
storeKeys.push({
|
|
411
|
+
path: shroudSecretPath,
|
|
412
|
+
value: shroudAgentKey,
|
|
413
|
+
type: "api_key",
|
|
414
|
+
policy: {
|
|
415
|
+
allowed_hosts: ["shroud.1claw.xyz", "*.1claw.xyz"],
|
|
416
|
+
inject_as: "header",
|
|
417
|
+
header_name: "X-Shroud-Agent-Key",
|
|
418
|
+
},
|
|
419
|
+
});
|
|
336
420
|
}
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
421
|
+
// ── LLM provider key (BYOK) — three storage options ──────────────────
|
|
422
|
+
// 1) Cloud (1Claw vault): Shroud auto-fetches providers/{provider}/api-key.
|
|
423
|
+
// 2) Local (CLI vault): the daemon injects it as X-Shroud-Api-Key.
|
|
424
|
+
// 3) Existing local secret by name: same as (2) but reuse a stored secret.
|
|
425
|
+
const llmProvider = opts.llmProvider || "openai";
|
|
426
|
+
const keyStore = (opts.llmKeyStore || "cloud").toLowerCase();
|
|
427
|
+
const byokPolicy = {
|
|
428
|
+
allowed_hosts: ["shroud.1claw.xyz", "*.1claw.xyz"],
|
|
429
|
+
inject_as: "header",
|
|
430
|
+
header_name: "X-Shroud-Api-Key",
|
|
431
|
+
};
|
|
432
|
+
let shroudApiKeySecretPath = null;
|
|
433
|
+
let cloudKeyToStore = null;
|
|
434
|
+
if (opts.llmApiKeySecret) {
|
|
435
|
+
// Reference an existing LOCAL vault secret as the provider key. No value
|
|
436
|
+
// → ensureDaemonRunning only sets the policy and verifies it exists.
|
|
437
|
+
shroudApiKeySecretPath = opts.llmApiKeySecret;
|
|
438
|
+
storeKeys.push({ path: shroudApiKeySecretPath, policy: byokPolicy });
|
|
439
|
+
}
|
|
440
|
+
else if (opts.llmApiKey) {
|
|
441
|
+
if (keyStore === "local" || opts.local) {
|
|
442
|
+
shroudApiKeySecretPath = `__docker/${sid}/llm-api-key`;
|
|
443
|
+
storeKeys.push({
|
|
444
|
+
path: shroudApiKeySecretPath,
|
|
445
|
+
value: opts.llmApiKey,
|
|
446
|
+
type: "api_key",
|
|
447
|
+
policy: byokPolicy,
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
else {
|
|
451
|
+
// cloud (default): stored in the 1Claw vault after provisioning.
|
|
452
|
+
cloudKeyToStore = opts.llmApiKey;
|
|
453
|
+
}
|
|
340
454
|
}
|
|
341
455
|
const socketPath = await ensureDaemonRunning({
|
|
342
|
-
|
|
343
|
-
? { localVaultPath, apiKey: agentApiKey }
|
|
344
|
-
: undefined,
|
|
456
|
+
storeKeys: storeKeys.length ? storeKeys : undefined,
|
|
345
457
|
});
|
|
458
|
+
// Store the provider key in the 1Claw cloud vault (Shroud auto-fetches it).
|
|
459
|
+
if (cloudKeyToStore && vaultId && !opts.local) {
|
|
460
|
+
const keySpinner = ora(`Storing ${llmProvider} key in 1Claw vault...`).start();
|
|
461
|
+
try {
|
|
462
|
+
await api(`/vaults/${vaultId}/secrets/${encodeURIComponent(`providers/${llmProvider}/api-key`)}`, { method: "PUT", body: { type: "api_key", value: cloudKeyToStore } });
|
|
463
|
+
keySpinner.succeed(`Provider key stored at providers/${llmProvider}/api-key (1Claw vault).`);
|
|
464
|
+
}
|
|
465
|
+
catch (err) {
|
|
466
|
+
keySpinner.fail("Failed to store provider key in the vault.");
|
|
467
|
+
throw err;
|
|
468
|
+
}
|
|
469
|
+
}
|
|
346
470
|
// ── Step 6/7: Build or pull image ────────────────────────────────────
|
|
347
471
|
const baseImage = typeof opts.docker === "string" && opts.docker.length
|
|
348
472
|
? opts.docker
|
|
@@ -388,36 +512,85 @@ async function initAction(opts) {
|
|
|
388
512
|
}
|
|
389
513
|
// ── Step 8: Run container ────────────────────────────────────────────
|
|
390
514
|
const requestedPort = parseInt(opts.port, 10) || 3000;
|
|
391
|
-
|
|
515
|
+
let port = await findAvailablePort(requestedPort);
|
|
392
516
|
if (port !== requestedPort) {
|
|
393
517
|
printWarning(`Port ${requestedPort} busy — using ${port}.`);
|
|
394
518
|
}
|
|
519
|
+
const containerMode = opts.local ? "local" : "cloud";
|
|
395
520
|
const env = {
|
|
396
|
-
|
|
521
|
+
ONECLAW_MODE: containerMode,
|
|
397
522
|
ONECLAW_DAEMON_SOCKET: "/run/1claw/daemon.sock",
|
|
398
523
|
ONECLAW_CONTAINER_MODULES: modules.map((m) => m.name).join(","),
|
|
399
524
|
};
|
|
525
|
+
if (opts.local)
|
|
526
|
+
env.ONECLAW_LOCAL_VAULT = "true";
|
|
400
527
|
if (agentId)
|
|
401
528
|
env.ONECLAW_AGENT_ID = agentId;
|
|
529
|
+
// Wire the chat UI to an LLM through Shroud (key stays in the host daemon).
|
|
530
|
+
const llmWired = !!shroudSecretPath;
|
|
531
|
+
if (llmWired) {
|
|
532
|
+
const model = opts.llmModel || defaultModelForProvider(llmProvider);
|
|
533
|
+
env.ONECLAW_LLM_VIA_SHROUD = "true";
|
|
534
|
+
env.ONECLAW_SHROUD_URL =
|
|
535
|
+
process.env.ONECLAW_SHROUD_URL || "https://shroud.1claw.xyz";
|
|
536
|
+
env.ONECLAW_SHROUD_SECRET = shroudSecretPath;
|
|
537
|
+
env.ONECLAW_SHROUD_PROVIDER = llmProvider;
|
|
538
|
+
env.ONECLAW_SHROUD_MODEL = model;
|
|
539
|
+
// BYOK: the daemon also injects this secret as the X-Shroud-Api-Key
|
|
540
|
+
// header so the container never sees the provider key.
|
|
541
|
+
if (shroudApiKeySecretPath) {
|
|
542
|
+
env.ONECLAW_SHROUD_API_KEY_SECRET = shroudApiKeySecretPath;
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
else if (shroudApiKeySecretPath || cloudKeyToStore) {
|
|
546
|
+
printWarning("An LLM provider key was supplied but there's no cloud agent to authenticate to Shroud " +
|
|
547
|
+
"(this is --local or no provisioning). The chat UI can't reach Shroud without an agent key.");
|
|
548
|
+
}
|
|
402
549
|
const runSpinner = ora(`Starting container ${containerName}...`).start();
|
|
550
|
+
const userPinnedPort = opts.port !== undefined && opts.port !== "3000";
|
|
551
|
+
const MAX_PORT_RETRIES = 5;
|
|
403
552
|
let containerId;
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
553
|
+
for (let attempt = 0;; attempt++) {
|
|
554
|
+
try {
|
|
555
|
+
containerId = await dockerRun({
|
|
556
|
+
image: imageToRun,
|
|
557
|
+
name: containerName,
|
|
558
|
+
ports: { [String(port)]: "3000" },
|
|
559
|
+
volumes: { [socketPath]: "/run/1claw/daemon.sock:ro" },
|
|
560
|
+
env,
|
|
561
|
+
detach: true,
|
|
562
|
+
restart: "unless-stopped",
|
|
563
|
+
labels: { [MANAGED_LABEL]: "true", "1claw.name": containerName },
|
|
564
|
+
});
|
|
565
|
+
runSpinner.succeed(`Container started (${containerId.slice(0, 12)})`);
|
|
566
|
+
break;
|
|
567
|
+
}
|
|
568
|
+
catch (err) {
|
|
569
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
570
|
+
const portConflict = /port is already allocated|address already in use|Bind for [^ ]+ failed/i.test(msg);
|
|
571
|
+
// The bind pre-check can miss ports held only inside the Docker VM,
|
|
572
|
+
// and a race can let another process grab the port first. Auto-retry
|
|
573
|
+
// on the next free port unless the user explicitly pinned --port.
|
|
574
|
+
if (portConflict && !userPinnedPort && attempt < MAX_PORT_RETRIES) {
|
|
575
|
+
const nextPort = await findAvailablePort(port + 1);
|
|
576
|
+
runSpinner.text = `Port ${port} already allocated — retrying on ${nextPort}...`;
|
|
577
|
+
port = nextPort;
|
|
578
|
+
continue;
|
|
579
|
+
}
|
|
580
|
+
runSpinner.fail("Failed to start container.");
|
|
581
|
+
if (portConflict) {
|
|
582
|
+
printError(`Port ${port} is already in use by another process or container.`);
|
|
583
|
+
printInfo("Fix it with one of:");
|
|
584
|
+
printInfo(` • Pick a free port: 1claw init --docker --port <port>`);
|
|
585
|
+
printInfo(` • See what's running: 1claw containers list`);
|
|
586
|
+
printInfo(` • Stop a 1claw agent: 1claw containers stop <name>`);
|
|
587
|
+
printInfo(` • Find the holder: docker ps --filter publish=${port}`);
|
|
588
|
+
}
|
|
589
|
+
throw err;
|
|
590
|
+
}
|
|
420
591
|
}
|
|
592
|
+
if (!containerId)
|
|
593
|
+
throw new Error("Failed to start container.");
|
|
421
594
|
// ── Step 9: Wait healthy + summary ───────────────────────────────────
|
|
422
595
|
const healthSpinner = ora("Waiting for the agent to become healthy...").start();
|
|
423
596
|
const healthy = await waitForHealthy(port);
|
|
@@ -438,7 +611,7 @@ async function initAction(opts) {
|
|
|
438
611
|
createdAt: new Date().toISOString(),
|
|
439
612
|
localVaultPath,
|
|
440
613
|
customImage: null,
|
|
441
|
-
mode:
|
|
614
|
+
mode: containerMode,
|
|
442
615
|
};
|
|
443
616
|
saveContainerState(state);
|
|
444
617
|
console.log();
|
|
@@ -451,9 +624,35 @@ async function initAction(opts) {
|
|
|
451
624
|
["Modules", modules.map((m) => m.name).join(", ") || chalk.dim("none")],
|
|
452
625
|
["Image", imageToRun],
|
|
453
626
|
["Shroud", agentId ? "enabled" : chalk.dim("n/a")],
|
|
627
|
+
[
|
|
628
|
+
"Chat LLM",
|
|
629
|
+
llmWired
|
|
630
|
+
? chalk.green(`via Shroud (${env.ONECLAW_SHROUD_PROVIDER}/${env.ONECLAW_SHROUD_MODEL})`)
|
|
631
|
+
: chalk.dim("none — slash commands only"),
|
|
632
|
+
],
|
|
633
|
+
[
|
|
634
|
+
"LLM key source",
|
|
635
|
+
!llmWired
|
|
636
|
+
? chalk.dim("n/a")
|
|
637
|
+
: shroudApiKeySecretPath
|
|
638
|
+
? chalk.green("local vault (daemon → X-Shroud-Api-Key)")
|
|
639
|
+
: cloudKeyToStore
|
|
640
|
+
? chalk.green(`1Claw vault (providers/${llmProvider}/api-key)`)
|
|
641
|
+
: chalk.cyan("1Claw vault or token billing (Shroud resolves)"),
|
|
642
|
+
],
|
|
454
643
|
["Key injection", chalk.green("daemon (container never sees the key)")],
|
|
455
644
|
]);
|
|
456
645
|
console.log();
|
|
646
|
+
if (llmWired && !shroudApiKeySecretPath && !cloudKeyToStore) {
|
|
647
|
+
printInfo("No provider key was supplied. Shroud will use, in order: a key in your " +
|
|
648
|
+
"1Claw vault at providers/<provider>/api-key, or 1Claw LLM Token Billing.");
|
|
649
|
+
console.log(chalk.dim(" Store one in 1Claw: 1claw secret put providers/" +
|
|
650
|
+
llmProvider +
|
|
651
|
+
"/api-key -v <vault>\n" +
|
|
652
|
+
" Or store it locally: re-run with --llm-api-key <key> --llm-key-store local\n" +
|
|
653
|
+
" Or bill to 1Claw: enable LLM Token Billing (Dashboard → Billing)."));
|
|
654
|
+
console.log();
|
|
655
|
+
}
|
|
457
656
|
if (modules.some((m) => m.required_secrets.length)) {
|
|
458
657
|
printInfo("Some modules expect secrets in your vault:");
|
|
459
658
|
for (const m of modules) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
FROM node:20-alpine AS base
|
|
2
2
|
|
|
3
|
+
# Bumped by the CLI when bundled assets (chat UI, entrypoint) change, so an
|
|
4
|
+
# existing `1claw/agent:stable` is rebuilt instead of silently reused.
|
|
5
|
+
ARG ONECLAW_BASE_VERSION=dev
|
|
6
|
+
LABEL org.1claw.base-version=$ONECLAW_BASE_VERSION
|
|
7
|
+
|
|
3
8
|
RUN apk add --no-cache curl tini
|
|
4
9
|
|
|
5
10
|
WORKDIR /app
|
|
@@ -20,8 +25,9 @@ RUN chmod +x /app/entrypoint.sh /app/healthcheck.sh
|
|
|
20
25
|
# Module extension point: modules drop assets under /app/modules
|
|
21
26
|
RUN mkdir -p /app/modules /run/1claw
|
|
22
27
|
|
|
28
|
+
# NOTE: mode (local vs cloud) and LLM wiring are passed at `docker run` time via
|
|
29
|
+
# -e flags by `1claw init`; nothing about the vault is baked into the image.
|
|
23
30
|
ENV NODE_ENV=production
|
|
24
|
-
ENV ONECLAW_LOCAL_VAULT=true
|
|
25
31
|
ENV ONECLAW_DAEMON_SOCKET=/run/1claw/daemon.sock
|
|
26
32
|
ENV CHAT_UI_PORT=3000
|
|
27
33
|
|