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/install.md CHANGED
@@ -28,16 +28,17 @@ agentwheel --version
28
28
  agentwheel --help
29
29
  ```
30
30
 
31
- If it is missing, install it with the package manager already available on the host:
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://nestdevlab.github.io/agentwheel/catalogue.html
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 catalogue: https://nestdevlab.github.io/agentwheel/catalogue.html
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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
3
  "name": "NestDevLab/agentwheel",
4
- "version": "0.17.0",
4
+ "version": "0.18.0",
5
5
  "provides": [
6
6
  { "type": "skills", "path": "skills" }
7
7
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentwheel",
3
- "version": "0.17.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://github.com/NestDevLab/agentwheel#readme",
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
- "sync-site-version": "node scripts/sync-site-version.mjs",
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.17.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 package closure.
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 `--local` for
58
- the current directory or `-t/--target-root <project>` for project/workspace installs. Use `--user`, `--local`, or
59
- `-i/--installation-type <type>` when scope should be explicit.
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` for the current directory or `-t/--target-root <project>` for project/workspace installs, and use `--user`, `--local`,
281
- or `-i/--installation-type <type>` when scope should be explicit. If a package can be installed in
282
- more than one type and no CLI/context default applies, agentwheel fails instead of guessing.
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 profile-managed fleets, prefer `agentwheel status --profile <name>` over
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 a workspace defines a profile named `all`,
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
- Global config is `~/.agentwheel/config.json`. Project config is `.agentwheel/config.json`; project values win.
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": 1,
312
- "packages": [],
313
- "registry": {},
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": "$HOME/project" },
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 install --agent lab-codex --dry-run
333
- agentwheel install --agent lab-codex
334
- agentwheel install --all --dry-run
335
- agentwheel install --all
336
- agentwheel install --profile daily --dry-run
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 profile-managed fleets, use `agentwheel update --profile <name>` before
386
- `install --profile <name>` when tracking packages should move forward. If a
387
- workspace defines a profile named `all`, `agentwheel update --all` checks that
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 package closure:
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
 
@@ -5,7 +5,7 @@ allowed-tools: [Bash]
5
5
  license: MIT
6
6
  metadata:
7
7
  author: NestDevLab
8
- version: "0.17.0"
8
+ version: "0.18.0"
9
9
  ---
10
10
 
11
11
  # Agentwheel Discovery
@@ -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.
@@ -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.