agentwheel 0.17.0 → 0.18.0
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/AGENT.md +29 -3
- package/README.md +55 -42
- package/dist/{chunk-24IUHC3D.js → chunk-UQLRZV5W.js} +1 -0
- package/dist/{identify-G3TXOHNS.js → identify-ZL46CENS.js} +1 -1
- package/dist/index.js +2517 -690
- package/install.md +12 -5
- package/llms.txt +7 -1
- package/openpack.json +1 -1
- package/package.json +4 -4
- package/skills/agentwheel/SKILL.md +65 -33
- package/skills/agentwheel-discovery/SKILL.md +1 -1
- package/skills/agentwheel/references/ct111-selfhost-instruction-activation.md +0 -24
- package/skills/agentwheel/references/fleet-control-cleanup-ct107-node-and-effective-adapters.md +0 -39
- package/skills/agentwheel/references/fleet-plugin-rollouts.md +0 -69
- package/skills/agentwheel/references/harness-path-map-rules-2026-06-13.md +0 -98
- package/skills/agentwheel/references/hermes-profile-scoped-skill-rollout.md +0 -43
package/install.md
CHANGED
|
@@ -28,16 +28,17 @@ agentwheel --version
|
|
|
28
28
|
agentwheel --help
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
If it is missing
|
|
31
|
+
If it is missing or older than the config requires, install the current CLI with the package
|
|
32
|
+
manager already available on the host:
|
|
32
33
|
|
|
33
34
|
```bash
|
|
34
|
-
npm i -g agentwheel
|
|
35
|
+
npm i -g agentwheel@latest
|
|
35
36
|
```
|
|
36
37
|
|
|
37
38
|
Prefer pnpm only when the host already uses pnpm for global tools:
|
|
38
39
|
|
|
39
40
|
```bash
|
|
40
|
-
pnpm add -g agentwheel
|
|
41
|
+
pnpm add -g agentwheel@latest
|
|
41
42
|
```
|
|
42
43
|
|
|
43
44
|
Verify after installation:
|
|
@@ -47,6 +48,11 @@ agentwheel --version
|
|
|
47
48
|
agentwheel doctor --help
|
|
48
49
|
```
|
|
49
50
|
|
|
51
|
+
Named fleets require a schema-v3-capable CLI. Upgrade Agentwheel first, verify
|
|
52
|
+
`agentwheel --version` and `agentwheel fleet --help`, then create, register, inspect, or plan fleet
|
|
53
|
+
state. Do not rewrite the config to an older schema or remove named-fleet data to make an old CLI
|
|
54
|
+
accept it.
|
|
55
|
+
|
|
50
56
|
## Install The Companion Skills
|
|
51
57
|
|
|
52
58
|
Pick the adapter that matches the active runtime:
|
|
@@ -87,7 +93,7 @@ If the user wants to preview first, add `--dry-run` to the `install` command.
|
|
|
87
93
|
Browse the public catalogue:
|
|
88
94
|
|
|
89
95
|
```text
|
|
90
|
-
https://
|
|
96
|
+
https://www.nestdev.it/agentwheel/catalogue.html
|
|
91
97
|
```
|
|
92
98
|
|
|
93
99
|
Install an OpenPack package:
|
|
@@ -112,7 +118,7 @@ If a fleet profile declares runtime `reloadCommands`, run reloads or service res
|
|
|
112
118
|
explicitly approved:
|
|
113
119
|
|
|
114
120
|
```bash
|
|
115
|
-
agentwheel install --profile extra-message-policy --execute-plugins --reload-runtimes
|
|
121
|
+
agentwheel install --fleet example-fleet --profile extra-message-policy --execute-plugins --reload-runtimes
|
|
116
122
|
```
|
|
117
123
|
|
|
118
124
|
Draft a catalogue submission for a public repository:
|
|
@@ -128,4 +134,5 @@ npx agentwheel@latest registry publish https://github.com/owner/repo
|
|
|
128
134
|
- The management skill is installed if the user requested it.
|
|
129
135
|
- The discovery skill is installed only if the user requested proactive suggestions.
|
|
130
136
|
- Any catalogue resource install uses the adapter and installation type the user intended.
|
|
137
|
+
- Desired-state scope is explicit when it matters: `--user`, `--local`, or `--fleet <fleet-id>`.
|
|
131
138
|
- Catalogue submissions use `agentwheel registry publish` unless the user explicitly wants a manual registry PR.
|
package/llms.txt
CHANGED
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
- README: https://github.com/NestDevLab/agentwheel#readme
|
|
8
8
|
- AI install handoff: https://github.com/NestDevLab/agentwheel/blob/main/install.md
|
|
9
9
|
- AI agent guide: https://github.com/NestDevLab/agentwheel/blob/main/AGENT.md
|
|
10
|
-
- Public
|
|
10
|
+
- Public site: https://www.nestdev.it/agentwheel/
|
|
11
|
+
- Public catalogue: https://www.nestdev.it/agentwheel/catalogue.html
|
|
11
12
|
|
|
12
13
|
## Specs And Design
|
|
13
14
|
|
|
@@ -25,3 +26,8 @@ npm i -g agentwheel
|
|
|
25
26
|
agentwheel doctor --adapter codex --local
|
|
26
27
|
agentwheel install github:NestDevLab/agentwheel --adapter codex --local --skill agentwheel
|
|
27
28
|
```
|
|
29
|
+
|
|
30
|
+
Named fleets are optional and require a schema-v3-capable Agentwheel CLI. Select exactly one
|
|
31
|
+
desired-state scope when it matters: `--user`, `--local`, or `--fleet <fleet-id>`. Upgrade and
|
|
32
|
+
verify `agentwheel fleet --help` before creating, registering, or reading fleet state; see the fleet
|
|
33
|
+
configuration guide for registration, plan-digested normalization, and journal recovery.
|
package/openpack.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentwheel",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"description": "Weave skills, rules, and instructions across every AI agent.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "git+https://github.com/NestDevLab/agentwheel.git"
|
|
10
10
|
},
|
|
11
|
-
"homepage": "https://
|
|
11
|
+
"homepage": "https://www.nestdev.it/agentwheel/",
|
|
12
12
|
"bugs": {
|
|
13
13
|
"url": "https://github.com/NestDevLab/agentwheel/issues"
|
|
14
14
|
},
|
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
},
|
|
43
43
|
"scripts": {
|
|
44
44
|
"build": "tsup && chmod +x dist/index.js",
|
|
45
|
-
"check-release-version": "node scripts/check-release-version.mjs",
|
|
46
45
|
"prepack": "pnpm build",
|
|
47
|
-
"
|
|
46
|
+
"release:check": "node scripts/release-check.mjs",
|
|
47
|
+
"release:prepare": "node scripts/release-prepare.mjs",
|
|
48
48
|
"test": "vitest run",
|
|
49
49
|
"typecheck": "tsc --noEmit"
|
|
50
50
|
},
|
|
@@ -5,7 +5,7 @@ allowed-tools: [Bash]
|
|
|
5
5
|
license: MIT
|
|
6
6
|
metadata:
|
|
7
7
|
author: NestDevLab
|
|
8
|
-
version: "0.
|
|
8
|
+
version: "0.18.0"
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# agentwheel
|
|
@@ -19,7 +19,7 @@ Mental model:
|
|
|
19
19
|
- `add` records desired packages.
|
|
20
20
|
- `install` makes the declared state true in the target runtime.
|
|
21
21
|
- `update` re-resolves tracking packages, then applies.
|
|
22
|
-
- `skill update <name>` maps a configured skill to its owning package and reconciles only that
|
|
22
|
+
- `skill update <name>` maps a configured skill to its owning package and reconciles only that skill plus its genuine transitive composition inputs; sibling artifacts keep their runtime bytes and manifest/lock state.
|
|
23
23
|
- `uninstall` removes configured packages and their managed runtime output.
|
|
24
24
|
|
|
25
25
|
## Safety Rules
|
|
@@ -54,9 +54,10 @@ To add and install in one step:
|
|
|
54
54
|
agentwheel install github:owner/repo --adapter codex,claude
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
Explicit source installs with explicit adapters default to user-level artifacts. Use
|
|
58
|
-
|
|
59
|
-
`-i/--installation-type <type>`
|
|
57
|
+
Explicit source installs with explicit adapters default to user-level artifacts. Use exactly one of
|
|
58
|
+
`--user`, `--local`, or `--fleet <fleet-id>` when desired-state scope matters. Use
|
|
59
|
+
`-i/--installation-type <type>` for the runtime layout inside that scope and
|
|
60
|
+
`-t/--target-root <project>` for an explicit target root. Named fleets are optional.
|
|
60
61
|
|
|
61
62
|
## Workspace Setup
|
|
62
63
|
|
|
@@ -277,9 +278,10 @@ agentwheel install github:owner/repo --adapter codex,claude
|
|
|
277
278
|
```
|
|
278
279
|
|
|
279
280
|
Explicit source installs with explicit adapters default to documented user-level installs. Pass
|
|
280
|
-
`--local
|
|
281
|
-
|
|
282
|
-
more than one type and no CLI/context default applies,
|
|
281
|
+
`--user`, `--local`, or `--fleet <fleet-id>` to select one desired-state scope, and use
|
|
282
|
+
`-i/--installation-type <type>` for the runtime layout inside that scope. If a package can be
|
|
283
|
+
installed in more than one type and no CLI/context default applies, Agentwheel fails instead of
|
|
284
|
+
guessing.
|
|
283
285
|
|
|
284
286
|
Target selection order is `--target-root`, then `--agent`, then runtime auto-detection from the current directory, then the current directory.
|
|
285
287
|
|
|
@@ -294,32 +296,46 @@ agentwheel status --all
|
|
|
294
296
|
agentwheel status --profile daily
|
|
295
297
|
```
|
|
296
298
|
|
|
297
|
-
For
|
|
299
|
+
For a named fleet, prefer `agentwheel status --fleet <fleet-id> --profile <name>` over
|
|
298
300
|
direct agent status; profile status uses the same runtime resolution, adapter
|
|
299
301
|
config, installation type, and graph lock fingerprinting as
|
|
300
|
-
`install --profile <name>`. If
|
|
301
|
-
`agentwheel status --all` checks that profile.
|
|
302
|
+
`install --fleet <fleet-id> --profile <name>`. If that fleet defines a profile named `all`,
|
|
303
|
+
`agentwheel status --fleet <fleet-id> --all` checks that profile.
|
|
302
304
|
|
|
303
|
-
## Named Agents And Profiles
|
|
305
|
+
## Named Fleets, Agents, And Profiles
|
|
304
306
|
|
|
305
|
-
|
|
307
|
+
Named fleets are optional control-plane configurations. Select one explicitly with
|
|
308
|
+
`--fleet <fleet-id>`; ordinary user and local work does not require fleet registration. User,
|
|
309
|
+
local, and fleet scopes are isolated desired state: Agentwheel does not merge them, and no fleet
|
|
310
|
+
has global priority.
|
|
311
|
+
|
|
312
|
+
Named fleets require a schema-v3-capable Agentwheel CLI. Upgrade first, verify
|
|
313
|
+
`agentwheel --version` and `agentwheel fleet --help`, then create or register fleet state. Do not
|
|
314
|
+
downgrade the config, strip named-fleet data, or run an old CLI against it.
|
|
306
315
|
|
|
307
316
|
Current config shape:
|
|
308
317
|
|
|
309
318
|
```json
|
|
310
319
|
{
|
|
311
|
-
"schemaVersion":
|
|
312
|
-
"
|
|
313
|
-
"
|
|
320
|
+
"schemaVersion": 3,
|
|
321
|
+
"fleetId": "example-fleet",
|
|
322
|
+
"packages": [
|
|
323
|
+
{
|
|
324
|
+
"name": "core-agent-pack",
|
|
325
|
+
"source": "github:example-org/core-agent-pack",
|
|
326
|
+
"driver": "git",
|
|
327
|
+
"adapter": "codex",
|
|
328
|
+
"installationType": "local",
|
|
329
|
+
"mode": "tracking"
|
|
330
|
+
}
|
|
331
|
+
],
|
|
314
332
|
"agents": {
|
|
315
|
-
"lab-codex": { "adapter": "codex", "installationType": "local", "root": "
|
|
316
|
-
"lab-claude": { "adapter": "claude", "installationType": "local", "root": "$HOME/project" }
|
|
333
|
+
"lab-codex": { "adapter": "codex", "installationType": "local", "root": "/workspace/project" }
|
|
317
334
|
},
|
|
318
335
|
"profiles": {
|
|
319
336
|
"daily": {
|
|
320
337
|
"runtimes": [
|
|
321
|
-
{ "agent": "lab-codex" }
|
|
322
|
-
{ "agent": "lab-claude" }
|
|
338
|
+
{ "agent": "lab-codex" }
|
|
323
339
|
]
|
|
324
340
|
}
|
|
325
341
|
}
|
|
@@ -329,14 +345,30 @@ Current config shape:
|
|
|
329
345
|
Use named targets:
|
|
330
346
|
|
|
331
347
|
```bash
|
|
332
|
-
agentwheel
|
|
333
|
-
agentwheel
|
|
334
|
-
agentwheel
|
|
335
|
-
agentwheel install --
|
|
336
|
-
agentwheel install --
|
|
337
|
-
agentwheel install --profile daily
|
|
348
|
+
agentwheel fleet register example-fleet --root /srv/agentwheel/fleets/example-fleet --required-package core-agent-pack
|
|
349
|
+
agentwheel fleet list
|
|
350
|
+
agentwheel fleet show example-fleet
|
|
351
|
+
agentwheel install --fleet example-fleet --agent lab-codex --dry-run
|
|
352
|
+
agentwheel install --fleet example-fleet --all --dry-run
|
|
353
|
+
agentwheel install --fleet example-fleet --profile daily --dry-run
|
|
338
354
|
```
|
|
339
355
|
|
|
356
|
+
An intended runtime path owned by another scope is a blocking conflict even when the bytes match.
|
|
357
|
+
Use the dedicated fleet normalization workflow: preview the transfer, review its exact plan digest,
|
|
358
|
+
then apply only the unchanged plan. Never remove the source declaration first or hand-edit runtime
|
|
359
|
+
output to manufacture a clean plan.
|
|
360
|
+
|
|
361
|
+
```bash
|
|
362
|
+
agentwheel fleet normalize example-fleet --from user --package core-agent-pack --json
|
|
363
|
+
agentwheel fleet normalize example-fleet --from user --package core-agent-pack \
|
|
364
|
+
--plan-digest <reviewed-sha256> --apply
|
|
365
|
+
agentwheel fleet normalize example-fleet --from user --recover
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
`fleetId` in the fleet config must match the registry key. Every repeatable
|
|
369
|
+
`--required-package` must name a package declared by that fleet. Recovery is only for a pending
|
|
370
|
+
journal and must fail if recorded configs, manifests, or graph locks changed externally.
|
|
371
|
+
|
|
340
372
|
## Adapters
|
|
341
373
|
|
|
342
374
|
Built-in adapters:
|
|
@@ -382,9 +414,9 @@ agentwheel update --all --dry-run
|
|
|
382
414
|
agentwheel update --profile daily --dry-run
|
|
383
415
|
```
|
|
384
416
|
|
|
385
|
-
For
|
|
386
|
-
`install --profile <name>` when tracking packages should move forward. If
|
|
387
|
-
|
|
417
|
+
For a named fleet, use `agentwheel update --fleet <fleet-id> --profile <name>` before
|
|
418
|
+
`install --fleet <fleet-id> --profile <name>` when tracking packages should move forward. If that
|
|
419
|
+
fleet defines a profile named `all`, `agentwheel update --fleet <fleet-id> --all` checks that
|
|
388
420
|
profile.
|
|
389
421
|
|
|
390
422
|
Limit an update to one configured package:
|
|
@@ -396,14 +428,14 @@ agentwheel update team-agent-pack
|
|
|
396
428
|
|
|
397
429
|
Named package updates preserve artifacts owned by other configured roots, including unrelated drift.
|
|
398
430
|
|
|
399
|
-
For one configured skill, resolve its owner and only that
|
|
431
|
+
For one configured skill, resolve its owner and reconcile only that skill plus genuine transitive composition inputs:
|
|
400
432
|
|
|
401
433
|
```bash
|
|
402
|
-
agentwheel skill update code-review --profile daily --dry-run
|
|
403
|
-
agentwheel skill update code-review --profile daily
|
|
434
|
+
agentwheel skill update code-review --fleet example-fleet --profile daily --dry-run
|
|
435
|
+
agentwheel skill update code-review --fleet example-fleet --profile daily
|
|
404
436
|
```
|
|
405
437
|
|
|
406
|
-
Pinned owners use install semantics; tracking owners re-resolve. Unrelated configured packages are not resolved. If ownership is ambiguous, pass `--package <name>`. Use `--adopt` only after explicit approval of the dry-run's unmanaged destinations.
|
|
438
|
+
Pinned owners use install semantics; tracking owners re-resolve. Sibling artifacts from the same package retain their runtime bytes and manifest/graph-lock entries; only composition inputs actually used by the requested skill join the update scope. Unrelated configured packages are not resolved. If ownership is ambiguous, pass `--package <name>`. Use `--adopt` only after explicit approval of the dry-run's unmanaged destinations.
|
|
407
439
|
|
|
408
440
|
Advance one tracking dependency while unrelated graph nodes remain locked:
|
|
409
441
|
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# CT111 self-hosted instruction activation
|
|
2
|
-
|
|
3
|
-
Use when adding a small always-loaded behavior rule to YehonalBot/Drassil on CT111 without importing unrelated core-private skills.
|
|
4
|
-
|
|
5
|
-
Facts/pitfall:
|
|
6
|
-
- CT111 (`ct111-openclaw`) owns its own AgentWheel plane under `/root/src/nestdevlab/fleet-control/profiles/ct111-selfhost`; do not install to CT111 from CT107.
|
|
7
|
-
- OpenClaw instruction artifacts often target the same runtime file: `/root/.openclaw/workspace/AGENTS.md`.
|
|
8
|
-
- Adding a second selected `instructions/<rule>.md` artifact from `agent-core-toolkit-private` can create duplicate instruction targets with different content. AgentWheel may skip one duplicate or report drift on the managed block.
|
|
9
|
-
|
|
10
|
-
Preferred pattern:
|
|
11
|
-
1. Keep the broad source package selected narrowly; do not add all of `agent-core-toolkit-private` just to deliver one rule.
|
|
12
|
-
2. If the target already has a domain/persona `instructions/AGENTS.md` artifact, compose the new small behavior fragment into that existing artifact instead of adding a separate instruction artifact to the same destination.
|
|
13
|
-
3. Put the behavior text in the domain toolkit, e.g. `agent-drassil-toolkit-private/fragments/self-improve-activation.md`.
|
|
14
|
-
4. Add one compose include near the top of the domain `AGENTS.md` composition, usually immediately after `core:fragments/core-base.md` and before role overlays:
|
|
15
|
-
```json
|
|
16
|
-
{ "include": "fragments/self-improve-activation.md" }
|
|
17
|
-
```
|
|
18
|
-
5. Validate JSON/OpenPack selection, then run CT111 dry-run in place:
|
|
19
|
-
```bash
|
|
20
|
-
ssh ct111-openclaw 'cd /root/src/nestdevlab/fleet-control/profiles/ct111-selfhost && npx --yes agentwheel@latest install --profile ct111-selfhost --dry-run --yes'
|
|
21
|
-
```
|
|
22
|
-
6. Treat `UPDATE instructions/AGENTS.md -> .openclaw/workspace/AGENTS.md` as the expected dry-run signal. Do not apply if unrelated drift/plugin operations are present unless the user approves that exact scope.
|
|
23
|
-
|
|
24
|
-
This pattern preserves narrow delivery: the future runtime receives the behavior inside its existing AGENTS managed block without importing unrelated core-private skills or creating competing instruction blocks.
|
package/skills/agentwheel/references/fleet-control-cleanup-ct107-node-and-effective-adapters.md
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# Fleet control cleanup: CT107 node vs runtime targets, and effective adapters
|
|
2
|
-
|
|
3
|
-
Use this reference when cleaning or explaining an AgentWheel fleet-control `.agentwheel/config.json` that targets multiple runtimes/profiles.
|
|
4
|
-
|
|
5
|
-
## Durable lessons
|
|
6
|
-
|
|
7
|
-
- Do not model CT107/nestdev as `ct107-openclaw` unless there is an explicitly declared, full OpenClaw runtime home to manage. In Joseph's current CT107/CT110 layout, CT107 is a local node/workspace with Claude/Codex homes; OpenClaw gateway/profile targets live on CT110 or profile-specific users.
|
|
8
|
-
- If a target name implies a real runtime install that does not exist, remove it from `agents` and from every `profiles.*.runtimes[]` entry rather than leaving it as a misleading alias.
|
|
9
|
-
- For profile installs, AgentWheel chooses the effective adapter from each runtime target in the selected profile. The package entry's `adapter` field can be source/default metadata and is not a reliable answer to “which adapters are targeted by this pack under profile all”.
|
|
10
|
-
- When the user asks “per pack, which adapters are targeted?”, compute it as: selected profile runtimes → each runtime's adapter or adapterConfig name → package roots fanned out to that set. Then separately note artifact-type limitations, especially plugin targets.
|
|
11
|
-
|
|
12
|
-
## Safe cleanup shape
|
|
13
|
-
|
|
14
|
-
1. Read `.agentwheel/config.json` and list:
|
|
15
|
-
- `agents` entries,
|
|
16
|
-
- each profile's runtime list,
|
|
17
|
-
- any `adapterConfig` paths.
|
|
18
|
-
2. Identify misleading/nonexistent runtime targets by user/domain knowledge first. Ask or preserve if unsure; do not rename targets silently.
|
|
19
|
-
3. Remove the bad agent entry and all profile runtime references to it.
|
|
20
|
-
4. Remove only generated lock directories for the removed target, e.g. `.agentwheel/locks/<removed-agent>/`; do not bulk-delete unrelated locks.
|
|
21
|
-
5. Update `docs/fleet.md` with:
|
|
22
|
-
- canonical meaning of the fleet,
|
|
23
|
-
- current agents table,
|
|
24
|
-
- profile membership,
|
|
25
|
-
- effective adapter-targeting table per profile and per package.
|
|
26
|
-
6. Validate with JSON parsing and a grep that the removed target no longer appears in config/docs.
|
|
27
|
-
7. Run `agentwheel install --profile <profile> --dry-run` when credentials/cache allow. If a private GitHub fetch blocks dry-run, report it as a credential/cache blocker, not as proof the config is bad.
|
|
28
|
-
|
|
29
|
-
## Reporting style for Joseph
|
|
30
|
-
|
|
31
|
-
Keep it short and operational:
|
|
32
|
-
|
|
33
|
-
- what was removed/changed,
|
|
34
|
-
- exact files touched,
|
|
35
|
-
- current profile membership,
|
|
36
|
-
- validation result,
|
|
37
|
-
- any dry-run blocker.
|
|
38
|
-
|
|
39
|
-
Avoid over-explaining AgentWheel internals unless he asks; he wants the concrete fleet shape and whether it is clean.
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
# Fleet plugin rollouts with AgentWheel
|
|
2
|
-
|
|
3
|
-
Use this when a fleet-control repository manages plugin installation across multiple runtime harnesses.
|
|
4
|
-
|
|
5
|
-
## Pattern
|
|
6
|
-
|
|
7
|
-
1. Add the plugin package to `.agentwheel/config.json` as a normal package.
|
|
8
|
-
2. Select every runtime-specific artifact exposed by the OpenPack package, for example:
|
|
9
|
-
- `plugins/extra-message-policy`
|
|
10
|
-
- `plugins/hermes-extra-message-policy`
|
|
11
|
-
- shared `rules/...`
|
|
12
|
-
- runtime settings such as `settings/hermes-extra-message-policy.json`
|
|
13
|
-
3. Add a dedicated rollout profile instead of immediately folding it into `all`, for example:
|
|
14
|
-
|
|
15
|
-
```json
|
|
16
|
-
"extra-message-policy": {
|
|
17
|
-
"runtimes": [
|
|
18
|
-
{ "agent": "ct110-openclaw" },
|
|
19
|
-
{
|
|
20
|
-
"agent": "ct110-hermes",
|
|
21
|
-
"adapterConfig": "/absolute/path/to/fleet-control/adapters/hermes-with-plugins.jsonc"
|
|
22
|
-
},
|
|
23
|
-
{ "agent": "ct110-tirrenia" }
|
|
24
|
-
]
|
|
25
|
-
}
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
4. Run a dry-run first:
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
npx --yes agentwheel@latest install --profile extra-message-policy --dry-run
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
5. Apply only after reviewing drift/conflict/plugin operations. For OpenClaw semantic plugin installs, include:
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
npx --yes agentwheel@latest install --profile extra-message-policy --execute-plugins
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
6. Verify the dry-run uses copy/materialized OpenClaw plugin commands, not symlinks:
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
agentwheel install --profile extra-message-policy --dry-run | tee /tmp/plugin-dry-run.txt
|
|
44
|
-
! grep -q -- '--link' /tmp/plugin-dry-run.txt
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
Fleet-managed OpenClaw plugins should plan `openclaw plugins install <staged-plugin-path>`. If the plan contains `openclaw plugins install --link ...`, stop and update AgentWheel/OpenClaw plugin command generation before applying.
|
|
48
|
-
|
|
49
|
-
## Profile scoping pitfall
|
|
50
|
-
|
|
51
|
-
AgentWheel profiles select runtimes, not packages. If a fleet-control repo's root `.agentwheel/config.json` contains many packages and you need a narrow plugin-only rollout, create a separate workspace/profile directory with its own `.agentwheel/config.json` containing only those plugin packages. Then run the dry-run from that profile workspace.
|
|
52
|
-
|
|
53
|
-
## Important pitfall: custom adapter config placement
|
|
54
|
-
|
|
55
|
-
For profile installs, `adapterConfig` must be on the profile runtime entry, not only on the named agent. The current workspace agent schema may not preserve `adapterConfig` under `agents.*`, while profile runtimes do support it.
|
|
56
|
-
|
|
57
|
-
Use an absolute adapter config path when the runtime is remote/SSH or when relative resolution might happen from the target root rather than the fleet repository.
|
|
58
|
-
|
|
59
|
-
## Hermes plugin artifacts
|
|
60
|
-
|
|
61
|
-
If the built-in Hermes adapter does not install plugin artifacts, keep a declarative adapter config in the fleet repo, e.g. `adapters/hermes-with-plugins.jsonc`, with a `plugins` target pointing at `.hermes/plugins`.
|
|
62
|
-
|
|
63
|
-
## Verification checklist
|
|
64
|
-
|
|
65
|
-
- `agentwheel list <source>` shows all expected runtime-specific artifacts.
|
|
66
|
-
- Direct Hermes dry-run with the custom adapter creates `.hermes/plugins/<plugin>`.
|
|
67
|
-
- Fleet profile dry-run creates the Hermes plugin, rule, and settings.
|
|
68
|
-
- OpenClaw profile dry-run shows `PLUGIN ... semantic plugin install planned`.
|
|
69
|
-
- Do not restart runtimes as part of the AgentWheel install unless the user explicitly asks.
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
# Harness path-map rules pattern — 2026-06-13
|
|
2
|
-
|
|
3
|
-
Use this when Joseph asks to make CT107/CT110 workspace/harness topology visible to all agents through AgentWheel.
|
|
4
|
-
|
|
5
|
-
## Durable pattern
|
|
6
|
-
|
|
7
|
-
- Put detailed machine-readable topology in the shared docs root:
|
|
8
|
-
- `/home/administrator/env/workspace/itermodus/brain-shared/mappings/harnesses.yaml`
|
|
9
|
-
- Put the short, always-installed instruction in the private core toolkit:
|
|
10
|
-
- `/home/administrator/env/workspace/itermodus/nestdevlab/agent-core-toolkit-private/rules/harness-path-map.md`
|
|
11
|
-
- The `agent-core-toolkit-private` package exposes `rules/` via `openpack.json`, so any new file under `rules/` is discoverable by `agentwheel list .` and installable by configured runtimes.
|
|
12
|
-
|
|
13
|
-
## Content split
|
|
14
|
-
|
|
15
|
-
- Rule file: concise operational policy and pointers. Avoid a huge topology dump.
|
|
16
|
-
- YAML file: detailed host/path/mount map, legacy path status, canonical runtime homes.
|
|
17
|
-
|
|
18
|
-
## Current canonical layout
|
|
19
|
-
|
|
20
|
-
```text
|
|
21
|
-
/home/administrator/env/workspace/itermodus/brain-shared # shared docs/memory/maps/runbooks
|
|
22
|
-
/home/administrator/env/workspace/itermodus/nestdevlab # AgentWheel/OpenPack/plugin/source repos
|
|
23
|
-
/home/administrator/.hermes # Hermes harness home
|
|
24
|
-
/home/administrator/.openclaw # OpenClaw harness home
|
|
25
|
-
/home/administrator/.codex # Codex harness home
|
|
26
|
-
/home/administrator/.claude # Claude harness home
|
|
27
|
-
/home/administrator/.agentwheel # AgentWheel home
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
CT107 `/home/administrator/env/ai-agents` is a technical SSHFS view of `CT110:/home`, not the canonical docs root. Do not propose active CT110 harness state under `/root`; treat `/root` paths as legacy/backup/compatibility until audited.
|
|
31
|
-
|
|
32
|
-
## Verification
|
|
33
|
-
|
|
34
|
-
From the package root:
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
agentwheel list .
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
Expected: it lists both existing and newly added `rules/*.md` artifacts.
|
|
41
|
-
|
|
42
|
-
Before applying to runtimes, prefer:
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
agentwheel install --dry-run
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Apply only after Joseph approves runtime/generated-file changes.
|
|
49
|
-
|
|
50
|
-
## Completion pattern for fleet propagation
|
|
51
|
-
|
|
52
|
-
When Joseph approves completing propagation of this rule, do not only run a source-scoped install. Make the package part of durable AgentWheel desired state, then apply both configured remote agents and locally detected runtimes.
|
|
53
|
-
|
|
54
|
-
1. Add the private core toolkit rule to AgentWheel global config once:
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
sudo -u administrator -H bash -lc 'agentwheel add /home/administrator/env/workspace/itermodus/nestdevlab/agent-core-toolkit-private \
|
|
58
|
-
--name NestDevLab/agent-core-toolkit-private \
|
|
59
|
-
--driver local \
|
|
60
|
-
--adapter openclaw \
|
|
61
|
-
--mode tracking \
|
|
62
|
-
--select rules/harness-path-map.md'
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
2. Preview/apply configured named agents, including SSH targets such as CT110 OpenClaw/Hermes/Tirrenia:
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
sudo -u administrator -H bash -lc 'agentwheel install --all --dry-run'
|
|
69
|
-
sudo -u administrator -H bash -lc 'agentwheel install --all'
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
3. Separately preview/apply runtimes auto-detected on the current host. `--all` only covers configured agents; it does not cover local auto-detected `.openclaw`, `.claude`, or `.codex` directories unless those are named agents.
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
sudo -u administrator -H bash -lc 'agentwheel install --all-detected --dry-run'
|
|
76
|
-
sudo -u administrator -H bash -lc 'agentwheel install --all-detected'
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
4. Verify with checksums against the package source and final dry-runs. A clean completion has identical hashes for source/generated rule files and summaries with `drift 0, conflict 0`.
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
sha256sum /home/administrator/env/workspace/itermodus/nestdevlab/agent-core-toolkit-private/rules/harness-path-map.md \
|
|
83
|
-
/home/administrator/.openclaw/rules/harness-path-map.md \
|
|
84
|
-
/home/administrator/.claude/rules/harness-path-map.md \
|
|
85
|
-
/home/administrator/.codex/rules/harness-path-map.md
|
|
86
|
-
|
|
87
|
-
ssh root@192.168.1.110 'sha256sum \
|
|
88
|
-
/home/administrator/env/workspace/itermodus/nestdevlab/agent-core-toolkit-private/rules/harness-path-map.md \
|
|
89
|
-
/home/administrator/.openclaw/rules/harness-path-map.md \
|
|
90
|
-
/home/administrator/.hermes/rules/harness-path-map.md \
|
|
91
|
-
/home/openclaw-tirrenia/.openclaw/rules/harness-path-map.md'
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
## Pitfalls
|
|
95
|
-
|
|
96
|
-
- Use `--only-source` when doing an ad-hoc source-scoped dry-run; otherwise AgentWheel may try to apply the current workspace's configured packages and report irrelevant selected-artifact errors.
|
|
97
|
-
- A failed apply may leave a pending journal that AgentWheel can recover on the next run. Fix the underlying issue and rerun `agentwheel install`; do not hand-edit generated files unless ownership/permissions block AgentWheel itself.
|
|
98
|
-
- If remote Hermes rule directories are owned by `root`, fix ownership of the directory and rerun AgentWheel instead of copying the file manually, e.g. `chown administrator:administrator /home/administrator/.hermes/rules` on CT110.
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# Hermes profile-scoped skill rollout
|
|
2
|
-
|
|
3
|
-
Use when adding one new shared toolkit skill to Hermes default/Karan plus a Hermes profile such as `odino` without reconciling the whole generated skill tree.
|
|
4
|
-
|
|
5
|
-
## Pattern
|
|
6
|
-
|
|
7
|
-
1. Put the skill in the class-level toolkit source, e.g. `agent-core-toolkit-private/skills/<skill>/SKILL.md`.
|
|
8
|
-
2. In that toolkit `openpack.json`, restrict the skill item to Hermes if it must not install to OpenClaw/Codex/Claude:
|
|
9
|
-
```json
|
|
10
|
-
{
|
|
11
|
-
"type": "skills",
|
|
12
|
-
"path": "skills",
|
|
13
|
-
"items": {
|
|
14
|
-
"<skill>": { "runtimes": ["hermes"] }
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
```
|
|
18
|
-
3. Add `skills/<skill>` to the relevant fleet selector.
|
|
19
|
-
4. Dry-run with a scoped source install so AgentWheel does not try to adopt/reconcile every existing runtime skill:
|
|
20
|
-
```bash
|
|
21
|
-
AGENTWHEEL_NO_UPDATE_CHECK=1 npx --yes agentwheel install \
|
|
22
|
-
/path/to/toolkit --driver local \
|
|
23
|
-
--agent ct110-hermes \
|
|
24
|
-
--select skills/<skill> \
|
|
25
|
-
--only-source --dry-run
|
|
26
|
-
```
|
|
27
|
-
5. For a Hermes profile target such as Odino, pass the custom profile adapter config explicitly; otherwise the built-in Hermes adapter may reject `profile-odino` for skills as unsupported:
|
|
28
|
-
```bash
|
|
29
|
-
AGENTWHEEL_NO_UPDATE_CHECK=1 npx --yes agentwheel install \
|
|
30
|
-
/path/to/toolkit --driver local \
|
|
31
|
-
--agent ct110-hermes-odino \
|
|
32
|
-
--adapter-config adapters/hermes-odino.jsonc \
|
|
33
|
-
--select skills/<skill> \
|
|
34
|
-
--only-source --dry-run
|
|
35
|
-
```
|
|
36
|
-
6. Apply the same commands without `--dry-run` after the plan shows only the intended `CREATE`/`UPDATE` and `conflict 0`.
|
|
37
|
-
7. Verify on the remote host by checking both paths and hashes, then optionally `hermes skills list` and `hermes --profile odino skills list`.
|
|
38
|
-
|
|
39
|
-
## Pitfalls
|
|
40
|
-
|
|
41
|
-
- A broad `agentwheel install --agent ct110-hermes` can surface many unrelated conflicts for existing unmanaged skills. Use scoped source install for one-skill rollouts.
|
|
42
|
-
- `--agent ct110-hermes-odino` may not automatically apply the profile adapter config in all CLI shapes; pass `--adapter-config adapters/hermes-odino.jsonc` explicitly for profile skill installs.
|
|
43
|
-
- Keep source ownership and deploy ownership separate: toolkit repo owns the skill; fleet-control owns selectors/locks/deploy docs.
|