@clawops/cli 1.7.9 → 2.0.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 +504 -76
- package/dist/apply-KYFPWI5U.js +27 -0
- package/dist/automation-RMAIBNVC.js +44 -0
- package/dist/bedrock-XVASJX2K.js +61 -0
- package/dist/{bootstrap-HL4DNUNG.js → bootstrap-HNGKY6WW.js} +31 -19
- package/dist/bootstrap.sh.tmpl +51 -31
- package/dist/channels-KBUR42IU.js +53 -0
- package/dist/chunk-2I7KCMXZ.js +142 -0
- package/dist/{chunk-DQDAWNGB.js → chunk-2Z7J3ERQ.js} +1 -1
- package/dist/chunk-3OLUJPCB.js +36 -0
- package/dist/chunk-5XT5IAJK.js +69 -0
- package/dist/chunk-AEEMRFZV.js +24 -0
- package/dist/chunk-BSLIYB5Q.js +106 -0
- package/dist/{chunk-3XK66DKK.js → chunk-E4NJSJ54.js} +57 -93
- package/dist/chunk-FEK7VJAY.js +16 -0
- package/dist/{chunk-UKTP332Z.js → chunk-GAZPPSKU.js} +6 -7
- package/dist/chunk-GIEVAGEK.js +126 -0
- package/dist/chunk-HSPHXG6W.js +67 -0
- package/dist/chunk-IVWP4QUJ.js +901 -0
- package/dist/{chunk-PVUVI35Y.js → chunk-JW5A7E3X.js} +5 -1
- package/dist/{chunk-GZN7PKP4.js → chunk-KC3GC3PE.js} +328 -121
- package/dist/chunk-LBE6COC4.js +244 -0
- package/dist/chunk-LEVIW2PV.js +890 -0
- package/dist/chunk-LT4XMO5D.js +50 -0
- package/dist/chunk-MC5ATCXS.js +108 -0
- package/dist/chunk-N4WZLWJ4.js +16 -0
- package/dist/chunk-NUDIHZEH.js +55 -0
- package/dist/chunk-NUL5F6YV.js +56 -0
- package/dist/chunk-RHOWYIWT.js +52 -0
- package/dist/chunk-STLRHLLV.js +193 -0
- package/dist/chunk-V25QRZRB.js +45 -0
- package/dist/chunk-VOEJYRIK.js +33 -0
- package/dist/{providers-2OABPW2E.js → chunk-VUFMZEIM.js} +3 -2
- package/dist/chunk-W3OLNNJW.js +51 -0
- package/dist/cli-WLD3EBEM.js +11 -0
- package/dist/cli-auth-GD5SK7JU.js +13 -0
- package/dist/cli.js +1296 -695
- package/dist/config-validate-K2N6XLDX.js +76 -0
- package/dist/context-7EVC6W45.js +20 -0
- package/dist/docker-3PDO4TS7.js +12 -0
- package/dist/{firewall-XQGO7HWK.js → firewall-5VKZ4WBH.js} +32 -1
- package/dist/generate-I6YQ5V2T.js +29 -0
- package/dist/{harden-URPXLSVF.js → harden-72JMRT4E.js} +51 -11
- package/dist/health-5CCOXYGG.js +11 -0
- package/dist/index.d.ts +56 -0
- package/dist/known-hosts-file-I3Q3NBYQ.js +22 -0
- package/dist/logs-5A7YYA53.js +15 -0
- package/dist/{mcp-wire-7E5JQY47.js → mcp-wire-3SWBM7D6.js} +32 -16
- package/dist/models-AGTQWYDL.js +32 -0
- package/dist/network-args-PYJRJBYO.js +64 -0
- package/dist/{package-5AR4ZPK4.js → package-5BCMEBTE.js} +11 -4
- package/dist/passphrase-MJBE45N7.js +15 -0
- package/dist/plugins-DTST3OER.js +49 -0
- package/dist/{pool-QGFQRMGU.js → pool-PIIKJ4L2.js} +3 -2
- package/dist/preflight-EF52S3WW.js +162 -0
- package/dist/preflight-MWWM5JT3.js +181 -0
- package/dist/preflight-TFD4N5ZU.js +141 -0
- package/dist/privileged-JFA6LLTV.js +17 -0
- package/dist/providers-FW6H6OPF.js +11 -0
- package/dist/ready-KDNRBNSU.js +95 -0
- package/dist/{remote-config-QDLN4UMG.js → remote-config-3HZLUWEA.js} +4 -3
- package/dist/runtime-X3KW5TCP.js +44 -0
- package/dist/server-GBA7BJGK.js +46 -0
- package/dist/spec-path-KQOOIQCA.js +9 -0
- package/dist/ssh-VAI5DU5M.js +11 -0
- package/dist/ssh-key-DUO6OKOI.js +7 -0
- package/dist/stack-config-R4SPSUQZ.js +12 -0
- package/dist/upgrade-ULD4KFYC.js +88 -0
- package/dist/validate-YVI3BJ55.js +14 -0
- package/dist/{version-guard-VUCNZXQS.js → version-guard-XVYW5WFJ.js} +2 -2
- package/dist/{versions-2UVAT6PQ.js → versions-W5LRQCAJ.js} +2 -2
- package/dist/wait-WO72TRRQ.js +79 -0
- package/package.json +11 -4
- package/spec/deploy-plan.schema.json +114 -25
- package/spec/integrations.yaml +135 -28
- package/spec/mcp-tools.yaml +89 -37
- package/spec/models.yaml +23 -3
- package/spec/openclaw-2.0.config.schema.json +1 -0
- package/spec/openclaw-versions.yaml +116 -27
- package/spec/providers.schema.json +163 -28
- package/dist/apply-F3KY2HTB.js +0 -17
- package/dist/automation-RULUSJBW.js +0 -30
- package/dist/aws-L4RR2LSE.js +0 -254
- package/dist/azure-7OXQENQL.js +0 -262
- package/dist/chunk-35WVQY3X.js +0 -122
- package/dist/chunk-6X45DDGH.js +0 -42
- package/dist/chunk-A4QR4TXW.js +0 -120
- package/dist/chunk-C5X375RO.js +0 -85
- package/dist/chunk-FNS56UQY.js +0 -741
- package/dist/chunk-P5LKWRPL.js +0 -114
- package/dist/chunk-SEZMVVAS.js +0 -156
- package/dist/context-5LCUG2QR.js +0 -10
- package/dist/gcp-UG6AWPIZ.js +0 -193
- package/dist/generate-OAGYT3VH.js +0 -15
- package/dist/local-DXBEVZ5C.js +0 -47
- package/dist/server-FIZCOLHL.js +0 -32
- package/dist/ssh-CNJNLM3E.js +0 -8
- package/dist/validate-CFQ4FH2T.js +0 -10
package/spec/integrations.yaml
CHANGED
|
@@ -1,9 +1,44 @@
|
|
|
1
1
|
# spec/integrations.yaml — OpenClaw channel integration catalog for the setup wizard.
|
|
2
2
|
# Read at runtime by src/cli/commands/setup.ts — not compiled or code-generated.
|
|
3
3
|
#
|
|
4
|
-
# Each integration maps to a key in
|
|
4
|
+
# Each integration maps to a key in the `channels` object of OpenClaw's config.
|
|
5
5
|
# infraRequired: true means a publicly reachable webhook URL must be registered
|
|
6
6
|
# with the provider after the stack is deployed.
|
|
7
|
+
#
|
|
8
|
+
# ── Checked against OpenClaw 2026.9.2 (WO-60) ────────────────────────────────
|
|
9
|
+
#
|
|
10
|
+
# EVERY channel in 2.0 is an install-gated plugin. `openclaw channels list --all --json`
|
|
11
|
+
# reports all 31 as `origin: "installable"`, and none is bundled — the same shape as model
|
|
12
|
+
# providers (WO-43), which is why `plugin:` below carries the package to install.
|
|
13
|
+
#
|
|
14
|
+
# Configuring a channel without installing it produces a gateway that starts, reports
|
|
15
|
+
# healthy, and never connects to the channel.
|
|
16
|
+
#
|
|
17
|
+
# `dmPolicy` and `groupPolicy` are REQUIRED by the schema on every channel here, and Slack
|
|
18
|
+
# and WhatsApp require more. `defaults:` carries OpenClaw's own default for each of them, and
|
|
19
|
+
# the wizard writes them — a JSON Schema default does not satisfy `required`, so a config
|
|
20
|
+
# omitting them is REJECTED. Every channel the wizard wrote was invalid before this.
|
|
21
|
+
#
|
|
22
|
+
# Every credential field also accepts a SecretRef — `{source: env, provider, id}` — as well
|
|
23
|
+
# as a plain string, so a token need not be inlined into the config.
|
|
24
|
+
#
|
|
25
|
+
# The catalog was wrong in four ways before this pass, all of which would have produced a
|
|
26
|
+
# config OpenClaw rejects or ignores: the Teams key was `teams` (the schema has `msteams`),
|
|
27
|
+
# Discord's token field was `botToken` (it is `token`), WhatsApp's `phoneNumberId` and
|
|
28
|
+
# `accessToken` do not exist on that channel at all, and EVERY `envDefault` used an
|
|
29
|
+
# `OPENCLAW_*` name that OpenClaw does not read.
|
|
30
|
+
#
|
|
31
|
+
# `envVar` below is the variable `openclaw channels add --use-env` actually reads, taken from
|
|
32
|
+
# the binary's own error message. `useEnvSupported: false` means that flag is rejected for the
|
|
33
|
+
# channel outright — measured, not assumed.
|
|
34
|
+
#
|
|
35
|
+
# `plugin.version` is pinned to the runtime floor, and it is not decoration. Measured on
|
|
36
|
+
# 2026.9.2: `@openclaw/discord@2026.9.3` refuses to install with
|
|
37
|
+
#
|
|
38
|
+
# plugin "discord" requires plugin API >=2026.9.3, but this OpenClaw runtime exposes 2026.9.2
|
|
39
|
+
#
|
|
40
|
+
# The same drift that forced version pins on model providers in WO-43. `latest` would break
|
|
41
|
+
# the deploy the moment upstream publishes ahead of the runtime, which it already has.
|
|
7
42
|
|
|
8
43
|
integrations:
|
|
9
44
|
- id: discord
|
|
@@ -11,12 +46,21 @@ integrations:
|
|
|
11
46
|
displayName: Discord
|
|
12
47
|
description: Connect OpenClaw agents to a Discord server via bot
|
|
13
48
|
infraRequired: false
|
|
49
|
+
plugin:
|
|
50
|
+
package: "@openclaw/discord"
|
|
51
|
+
source: npm
|
|
52
|
+
version: "2026.9.2"
|
|
53
|
+
useEnvSupported: true
|
|
54
|
+
requiredConfig: [dmPolicy, groupPolicy]
|
|
55
|
+
defaults:
|
|
56
|
+
dmPolicy: pairing
|
|
57
|
+
groupPolicy: allowlist
|
|
14
58
|
fields:
|
|
15
|
-
- name:
|
|
59
|
+
- name: token
|
|
16
60
|
label: Bot token
|
|
17
61
|
description: Bot token from the Discord Developer Portal (Bot → Token)
|
|
18
62
|
sensitive: true
|
|
19
|
-
envDefault:
|
|
63
|
+
envDefault: DISCORD_BOT_TOKEN
|
|
20
64
|
setupUrl: https://discord.com/developers/applications
|
|
21
65
|
|
|
22
66
|
- id: telegram
|
|
@@ -24,33 +68,69 @@ integrations:
|
|
|
24
68
|
displayName: Telegram
|
|
25
69
|
description: Connect OpenClaw agents to a Telegram bot
|
|
26
70
|
infraRequired: false
|
|
71
|
+
# Bundled in the image: `channels add --channel telegram --use-env` succeeds with
|
|
72
|
+
# `--network none`, so there is nothing to download and no egress needed. It is listed
|
|
73
|
+
# as "installable" alongside the rest, which is why this looked unresolved at first.
|
|
74
|
+
plugin:
|
|
75
|
+
package: ""
|
|
76
|
+
source: bundled
|
|
77
|
+
useEnvSupported: true
|
|
78
|
+
requiredConfig: [dmPolicy, groupPolicy]
|
|
79
|
+
defaults:
|
|
80
|
+
dmPolicy: pairing
|
|
81
|
+
groupPolicy: allowlist
|
|
27
82
|
fields:
|
|
28
83
|
- name: botToken
|
|
29
84
|
label: Bot token
|
|
30
85
|
description: Token from @BotFather (/newbot)
|
|
31
86
|
sensitive: true
|
|
32
|
-
envDefault:
|
|
87
|
+
envDefault: TELEGRAM_BOT_TOKEN
|
|
33
88
|
setupUrl: https://t.me/BotFather
|
|
34
89
|
|
|
35
90
|
- id: slack
|
|
36
91
|
channelKey: slack
|
|
37
92
|
displayName: Slack
|
|
38
|
-
description: Connect OpenClaw agents to a Slack workspace via app
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
93
|
+
description: Connect OpenClaw agents to a Slack workspace via app (Socket Mode)
|
|
94
|
+
# Socket Mode, not a webhook. `mode` defaults to "socket" in OpenClaw and it is what
|
|
95
|
+
# `channels add --use-env` drives: the gateway opens an OUTBOUND WebSocket to Slack, so
|
|
96
|
+
# there is no public URL to register and no inbound rule to open.
|
|
97
|
+
#
|
|
98
|
+
# This entry said infraRequired: true — the `http` mode setup — while declaring the
|
|
99
|
+
# socket credentials incompletely. It described one setup while the tooling installed
|
|
100
|
+
# the other, and the config it produced failed validation either way.
|
|
101
|
+
#
|
|
102
|
+
# `mode: http` is still available: it needs a public webhook at `webhookPath` and a
|
|
103
|
+
# signingSecret to verify inbound requests. That is a deliberate choice, not the default,
|
|
104
|
+
# and clawops does not configure it.
|
|
105
|
+
infraRequired: false
|
|
106
|
+
plugin:
|
|
107
|
+
package: "@openclaw/slack"
|
|
108
|
+
source: npm
|
|
109
|
+
version: "2026.9.2"
|
|
110
|
+
# Socket Mode is what --use-env drives, and it demands SLACK_APP_TOKEN:
|
|
111
|
+
# "Slack Socket Mode requires SLACK_APP_TOKEN when using --use-env."
|
|
112
|
+
useEnvSupported: true
|
|
113
|
+
# Slack requires more than the two policies: the schema also demands postAs, mode,
|
|
114
|
+
# webhookPath and userTokenReadOnly.
|
|
115
|
+
requiredConfig: [dmPolicy, groupPolicy, postAs, mode, webhookPath, userTokenReadOnly]
|
|
116
|
+
defaults:
|
|
117
|
+
dmPolicy: pairing
|
|
118
|
+
groupPolicy: allowlist
|
|
119
|
+
postAs: bot
|
|
120
|
+
mode: socket
|
|
121
|
+
webhookPath: /slack/events
|
|
122
|
+
userTokenReadOnly: true
|
|
43
123
|
fields:
|
|
44
124
|
- name: botToken
|
|
45
125
|
label: Bot OAuth token
|
|
46
126
|
description: "Bot User OAuth Token (starts with xoxb-)"
|
|
47
127
|
sensitive: true
|
|
48
|
-
envDefault:
|
|
49
|
-
- name:
|
|
50
|
-
label:
|
|
51
|
-
description: App
|
|
128
|
+
envDefault: SLACK_BOT_TOKEN
|
|
129
|
+
- name: appToken
|
|
130
|
+
label: App-level token
|
|
131
|
+
description: "App-level token for Socket Mode (starts with xapp-), from Basic Information → App-Level Tokens"
|
|
52
132
|
sensitive: true
|
|
53
|
-
envDefault:
|
|
133
|
+
envDefault: SLACK_APP_TOKEN
|
|
54
134
|
setupUrl: https://api.slack.com/apps
|
|
55
135
|
|
|
56
136
|
- id: whatsapp
|
|
@@ -62,27 +142,49 @@ integrations:
|
|
|
62
142
|
After deployment, register the gateway webhook URL in the Meta Developer
|
|
63
143
|
Console (WhatsApp → Configuration → Webhook). The gateway URL is printed
|
|
64
144
|
at the end of setup.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
145
|
+
plugin:
|
|
146
|
+
package: "@openclaw/whatsapp"
|
|
147
|
+
source: npm
|
|
148
|
+
version: "2026.9.2"
|
|
149
|
+
# `openclaw channels add --use-env` answers: OpenClaw does not recognize option
|
|
150
|
+
# "--use-env". There is no non-interactive path for this channel.
|
|
151
|
+
useEnvSupported: false
|
|
152
|
+
requiredConfig: [dmPolicy, groupPolicy, mediaMaxMb]
|
|
153
|
+
defaults:
|
|
154
|
+
dmPolicy: pairing
|
|
155
|
+
groupPolicy: allowlist
|
|
156
|
+
mediaMaxMb: 50
|
|
157
|
+
# WhatsApp has no top-level credential fields in 2.0 — credentials live under
|
|
158
|
+
# `accounts.<name>`, with `defaultAccount` selecting one. The wizard cannot collect a
|
|
159
|
+
# flat token for it, so it is marked unsupported rather than collecting fields that go
|
|
160
|
+
# nowhere. `phoneNumberId` and `accessToken`, which this entry used to declare, are not
|
|
161
|
+
# properties of the whatsapp channel at all.
|
|
162
|
+
wizardSupported: false
|
|
163
|
+
unsupportedNote: >
|
|
164
|
+
WhatsApp uses per-account credentials (`channels.whatsapp.accounts.<name>`) rather
|
|
165
|
+
than a single token. Configure it with `openclaw channels add --channel whatsapp`
|
|
166
|
+
on the host after deployment.
|
|
167
|
+
fields: []
|
|
76
168
|
setupUrl: https://developers.facebook.com/apps
|
|
77
169
|
|
|
78
|
-
- id:
|
|
79
|
-
channelKey:
|
|
170
|
+
- id: msteams
|
|
171
|
+
channelKey: msteams
|
|
80
172
|
displayName: Microsoft Teams
|
|
81
173
|
description: Connect OpenClaw agents to a Microsoft Teams channel via bot
|
|
82
174
|
infraRequired: true
|
|
83
175
|
infraNote: >
|
|
84
176
|
After deployment, update the bot's messaging endpoint in Azure Bot Service
|
|
85
177
|
to the gateway webhook URL.
|
|
178
|
+
plugin:
|
|
179
|
+
package: "@openclaw/msteams"
|
|
180
|
+
source: npm
|
|
181
|
+
version: "2026.9.2"
|
|
182
|
+
# Same as WhatsApp: --use-env is rejected outright.
|
|
183
|
+
useEnvSupported: false
|
|
184
|
+
requiredConfig: [dmPolicy, groupPolicy]
|
|
185
|
+
defaults:
|
|
186
|
+
dmPolicy: pairing
|
|
187
|
+
groupPolicy: allowlist
|
|
86
188
|
fields:
|
|
87
189
|
- name: appId
|
|
88
190
|
label: App (client) ID
|
|
@@ -93,5 +195,10 @@ integrations:
|
|
|
93
195
|
label: App password
|
|
94
196
|
description: Client secret from the Azure app registration
|
|
95
197
|
sensitive: true
|
|
96
|
-
envDefault:
|
|
198
|
+
envDefault: "" # no --use-env path; collected interactively on the host
|
|
199
|
+
- name: tenantId
|
|
200
|
+
label: Directory (tenant) ID
|
|
201
|
+
description: Azure AD tenant ID for the app registration
|
|
202
|
+
sensitive: false
|
|
203
|
+
envDefault: ""
|
|
97
204
|
setupUrl: https://portal.azure.com/
|
package/spec/mcp-tools.yaml
CHANGED
|
@@ -11,6 +11,15 @@
|
|
|
11
11
|
# R8 — enums for closed sets
|
|
12
12
|
# R10 — all four annotation hints set
|
|
13
13
|
# R11 — annotations bound to safety modes (--read-only, --no-destructive)
|
|
14
|
+
#
|
|
15
|
+
# NOTE on `output:` — these blocks are DESCRIPTIVE, not generated. gen-schemas reads
|
|
16
|
+
# `input:` and `annotations:` only; nothing emits an MCP outputSchema, and no handler is
|
|
17
|
+
# checked against what its entry claims to return. Making them real means generating an
|
|
18
|
+
# outputSchema per tool and returning `structuredContent` from every handler — worth doing,
|
|
19
|
+
# but it is a change to all 18 handlers, not a spec edit. Until then, treat `output:` as the
|
|
20
|
+
# intended shape and the handler as the truth. Keeping them honest is not optional:
|
|
21
|
+
# clawops_status declared health, uptimeSec, openclawVersion and agentCount for three
|
|
22
|
+
# releases while returning none of them (WO-47).
|
|
14
23
|
|
|
15
24
|
version: 1
|
|
16
25
|
|
|
@@ -32,14 +41,15 @@ tools:
|
|
|
32
41
|
- name: clawops_status
|
|
33
42
|
toolset: [cli, read]
|
|
34
43
|
description: |
|
|
35
|
-
Get
|
|
36
|
-
|
|
44
|
+
Get what is deployed for a clawops-managed stack: public IP, gateway URL,
|
|
45
|
+
SSH user, or that nothing is deployed yet. Reads stack outputs; does not
|
|
46
|
+
contact the host.
|
|
37
47
|
|
|
38
|
-
Use when: the user asks
|
|
39
|
-
the gateway is responding, or wants a quick overview.
|
|
48
|
+
Use when: the user asks what exists for a stack, or where to reach it.
|
|
40
49
|
|
|
41
|
-
Do NOT use when: the user asks
|
|
42
|
-
|
|
50
|
+
Do NOT use when: the user asks whether the gateway is actually WORKING —
|
|
51
|
+
that needs the host, so use clawops_doctor. Also not for live logs (use
|
|
52
|
+
clawops_logs_tail) or config values (use clawops_config_get).
|
|
43
53
|
annotations:
|
|
44
54
|
title: Get Stack Status
|
|
45
55
|
readOnlyHint: true
|
|
@@ -51,15 +61,60 @@ tools:
|
|
|
51
61
|
type: string
|
|
52
62
|
optional: true
|
|
53
63
|
description: Stack name. Defaults to active stack from config.
|
|
64
|
+
# What the handler returns: the stack's deployment outputs. Health, version and agent
|
|
65
|
+
# count are NOT here — they need the host, and asking for them is clawops_doctor.
|
|
54
66
|
output:
|
|
55
|
-
|
|
67
|
+
stack: { type: string }
|
|
68
|
+
publicIp: { type: string }
|
|
56
69
|
gatewayUrl: { type: string, format: uri }
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
agentCount: { type: integer }
|
|
60
|
-
provider: { type: enum, values: [aws, gcp, azure, local] }
|
|
70
|
+
sshUser: { type: string }
|
|
71
|
+
status: { type: enum, values: [not bootstrapped, not deployed] }
|
|
61
72
|
region: { type: string }
|
|
62
73
|
|
|
74
|
+
- name: clawops_doctor
|
|
75
|
+
toolset: [cli, read]
|
|
76
|
+
description: |
|
|
77
|
+
Run clawops's diagnostics and return the report: Node and Pulumi runtime, config,
|
|
78
|
+
SSH key and known_hosts, cloud credentials per configured provider, and the
|
|
79
|
+
supported OpenClaw range. With stackName, also contacts the host for container
|
|
80
|
+
state, the deployed OpenClaw version, a real gateway health probe, whether the
|
|
81
|
+
port is published to the internet, disk usage on the state directory, log
|
|
82
|
+
rotation, and hardening drift.
|
|
83
|
+
|
|
84
|
+
Use when: something is not working and you do not yet know what; before any
|
|
85
|
+
deploy, upgrade or migration; or to find out which OpenClaw version a gateway is
|
|
86
|
+
actually running.
|
|
87
|
+
|
|
88
|
+
Do NOT use when: you already know the problem and want to fix it. This tool only
|
|
89
|
+
reports — it changes nothing, and never runs `openclaw doctor --fix`. Repair is
|
|
90
|
+
part of clawops_gateway_update, where it is gated on a verified backup.
|
|
91
|
+
|
|
92
|
+
Every check carries a status: fail (something is wrong that clawops can name),
|
|
93
|
+
warn (worth knowing, not broken), info (did not apply). `ok` is false only when
|
|
94
|
+
something failed — a fresh machine with no stacks is full of warnings and healthy.
|
|
95
|
+
annotations:
|
|
96
|
+
title: Run Diagnostics
|
|
97
|
+
readOnlyHint: true
|
|
98
|
+
destructiveHint: false
|
|
99
|
+
idempotentHint: true
|
|
100
|
+
openWorldHint: true
|
|
101
|
+
input:
|
|
102
|
+
stackName:
|
|
103
|
+
type: string
|
|
104
|
+
optional: true
|
|
105
|
+
description: |
|
|
106
|
+
Stack to include remote checks for. Without it, only the local machine is
|
|
107
|
+
checked — no SSH connection is made.
|
|
108
|
+
failuresOnly:
|
|
109
|
+
type: boolean
|
|
110
|
+
optional: true
|
|
111
|
+
default: false
|
|
112
|
+
description: Return only failing and warning checks. Passing checks are counted, not listed.
|
|
113
|
+
output:
|
|
114
|
+
ok: { type: boolean }
|
|
115
|
+
counts: { type: object }
|
|
116
|
+
sections: { type: array }
|
|
117
|
+
|
|
63
118
|
- name: clawops_logs_tail
|
|
64
119
|
toolset: [cli, read]
|
|
65
120
|
description: |
|
|
@@ -236,10 +291,29 @@ tools:
|
|
|
236
291
|
description: Defaults to provider configured for this stack
|
|
237
292
|
region: { type: string, optional: true }
|
|
238
293
|
instanceType:
|
|
239
|
-
type:
|
|
240
|
-
values: [micro, small, medium, large, gpu]
|
|
294
|
+
type: string
|
|
241
295
|
optional: true
|
|
242
296
|
default: small
|
|
297
|
+
description: |
|
|
298
|
+
A clawops size (micro|small|medium|large|gpu) or a provider-native machine type.
|
|
299
|
+
Not an enum: Azure offers SKU families per subscription, and an account offered
|
|
300
|
+
none of the five sizes clawops names would otherwise have no way to deploy.
|
|
301
|
+
sshCidr:
|
|
302
|
+
type: string
|
|
303
|
+
optional: true
|
|
304
|
+
description: |
|
|
305
|
+
CIDR(s) allowed to reach SSH, comma-separated, or 'auto' for the caller's own
|
|
306
|
+
address. Omitted means none, and nothing will be able to connect — including
|
|
307
|
+
every clawops day-two command.
|
|
308
|
+
gatewayCidr:
|
|
309
|
+
type: string
|
|
310
|
+
optional: true
|
|
311
|
+
description: CIDR(s) allowed to reach the gateway port. Requires publishGateway=all.
|
|
312
|
+
publishGateway:
|
|
313
|
+
type: enum
|
|
314
|
+
values: [loopback, all]
|
|
315
|
+
optional: true
|
|
316
|
+
description: Which interface the gateway binds. 'all' serves plaintext HTTP.
|
|
243
317
|
openclawVersion: { type: string, optional: true, description: "semver or 'stable'/'dev'" }
|
|
244
318
|
dryRun: { type: boolean, optional: true, default: false }
|
|
245
319
|
output:
|
|
@@ -399,28 +473,6 @@ tools:
|
|
|
399
473
|
valid: { type: boolean }
|
|
400
474
|
issues: { type: array, items: { type: string } }
|
|
401
475
|
|
|
402
|
-
- name: clawops_agents_restart
|
|
403
|
-
toolset: [cli]
|
|
404
|
-
description: |
|
|
405
|
-
Restart a specific OpenClaw agent on the remote gateway.
|
|
406
|
-
|
|
407
|
-
Use when: the user reports an agent is stuck, errored, or unresponsive;
|
|
408
|
-
or after a config change that the agent needs to pick up.
|
|
409
|
-
|
|
410
|
-
Do NOT use when: the issue is gateway-wide — use clawops_gateway_restart.
|
|
411
|
-
annotations:
|
|
412
|
-
title: Restart OpenClaw Agent
|
|
413
|
-
readOnlyHint: false
|
|
414
|
-
destructiveHint: true
|
|
415
|
-
idempotentHint: true
|
|
416
|
-
openWorldHint: true
|
|
417
|
-
input:
|
|
418
|
-
stackName: { type: string, optional: true }
|
|
419
|
-
agentId: { type: string }
|
|
420
|
-
output:
|
|
421
|
-
previousStatus: { type: string }
|
|
422
|
-
newStatus: { type: string }
|
|
423
|
-
|
|
424
476
|
- name: clawops_gateway_restart
|
|
425
477
|
toolset: [cli]
|
|
426
478
|
description: |
|
|
@@ -429,8 +481,8 @@ tools:
|
|
|
429
481
|
Use when: a gateway-wide config change requires reload, or the gateway is
|
|
430
482
|
reported as unresponsive.
|
|
431
483
|
|
|
432
|
-
|
|
433
|
-
|
|
484
|
+
Note: OpenClaw 2.0 removed per-agent restart; `gateway restart` is the only
|
|
485
|
+
restart it offers, and it affects every agent on the host. Brief downtime (~10s).
|
|
434
486
|
annotations:
|
|
435
487
|
title: Restart Gateway Daemon
|
|
436
488
|
readOnlyHint: false
|
package/spec/models.yaml
CHANGED
|
@@ -39,6 +39,9 @@ providers:
|
|
|
39
39
|
- { id: deepseek-reasoner, displayName: "DeepSeek Reasoner (R1)" }
|
|
40
40
|
defaultModel: deepseek-chat
|
|
41
41
|
configPath: models.providers.deepseek
|
|
42
|
+
plugin:
|
|
43
|
+
package: "@openclaw/deepseek-provider"
|
|
44
|
+
version: "2026.9.2"
|
|
42
45
|
|
|
43
46
|
- id: kimi
|
|
44
47
|
displayName: Kimi (Moonshot AI)
|
|
@@ -50,13 +53,27 @@ providers:
|
|
|
50
53
|
- { id: moonshot-v1-128k, displayName: "Moonshot v1 128K" }
|
|
51
54
|
defaultModel: moonshot-v1-8k
|
|
52
55
|
configPath: models.providers.kimi
|
|
56
|
+
plugin:
|
|
57
|
+
package: "@openclaw/kimi-provider"
|
|
58
|
+
version: "2026.9.2"
|
|
53
59
|
|
|
54
60
|
- id: bedrock
|
|
55
61
|
displayName: AWS Bedrock
|
|
56
62
|
credentialSource: aws-profile
|
|
57
|
-
#
|
|
58
|
-
#
|
|
59
|
-
#
|
|
63
|
+
# Bedrock is a plugin provider, so OpenClaw does not resolve its transport on its own:
|
|
64
|
+
# without `api` the call routes through the OpenAI-compatible transport and fails with
|
|
65
|
+
# "requires an explicit base URL". Bundled providers do resolve it — `anthropic` selects
|
|
66
|
+
# anthropic-messages with nothing in the config — so this key is set here and nowhere
|
|
67
|
+
# else. See docs/spikes/SP-12-bedrock-config-shape.md.
|
|
68
|
+
api: bedrock-converse-stream
|
|
69
|
+
# No API key — credentials come from the EC2 instance role via IMDS, resolved by the AWS
|
|
70
|
+
# SDK chain at call time. The old `AWS_PROFILE=default` env-file mechanism is obsolete
|
|
71
|
+
# (SP-08); so is the `auth: "aws-sdk"` marker as a *requirement* — Bedrock was reached
|
|
72
|
+
# with it absent (SP-12 §4) — though clawops still writes it to document the auth route.
|
|
73
|
+
#
|
|
74
|
+
# modelId below is the FOUNDATION model id. Bedrock refuses these for on-demand
|
|
75
|
+
# inference; clawops resolves each to a regional inference profile at plan time, because
|
|
76
|
+
# the right profile depends on the deployment region and cannot be written down here.
|
|
60
77
|
iamPolicy: AmazonBedrockFullAccess
|
|
61
78
|
iamNote: >
|
|
62
79
|
Credentials are provided by the EC2 instance role. clawops attaches
|
|
@@ -80,6 +97,9 @@ providers:
|
|
|
80
97
|
- { id: deepseek-r1, displayName: "DeepSeek-R1", modelId: "deepseek.r1-v1:0", family: DeepSeek }
|
|
81
98
|
defaultModel: claude-sonnet-46
|
|
82
99
|
configPath: models.providers.amazon-bedrock
|
|
100
|
+
plugin:
|
|
101
|
+
package: "@openclaw/amazon-bedrock-provider"
|
|
102
|
+
version: "2026.9.2"
|
|
83
103
|
|
|
84
104
|
- id: ollama
|
|
85
105
|
displayName: Ollama (self-hosted)
|