agentwheel 0.16.6 → 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.16.6",
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.16.6",
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.16.6"
8
+ version: "0.18.0"
9
9
  ---
10
10
 
11
11
  # agentwheel
@@ -19,6 +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 skill plus its genuine transitive composition inputs; sibling artifacts keep their runtime bytes and manifest/lock state.
22
23
  - `uninstall` removes configured packages and their managed runtime output.
23
24
 
24
25
  ## Safety Rules
@@ -53,9 +54,10 @@ To add and install in one step:
53
54
  agentwheel install github:owner/repo --adapter codex,claude
54
55
  ```
55
56
 
56
- Explicit source installs with explicit adapters default to user-level artifacts. Use `--local` for
57
- the current directory or `-t/--target-root <project>` for project/workspace installs. Use `--user`, `--local`, or
58
- `-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.
59
61
 
60
62
  ## Workspace Setup
61
63
 
@@ -276,9 +278,10 @@ agentwheel install github:owner/repo --adapter codex,claude
276
278
  ```
277
279
 
278
280
  Explicit source installs with explicit adapters default to documented user-level installs. Pass
279
- `--local` for the current directory or `-t/--target-root <project>` for project/workspace installs, and use `--user`, `--local`,
280
- or `-i/--installation-type <type>` when scope should be explicit. If a package can be installed in
281
- 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.
282
285
 
283
286
  Target selection order is `--target-root`, then `--agent`, then runtime auto-detection from the current directory, then the current directory.
284
287
 
@@ -293,32 +296,46 @@ agentwheel status --all
293
296
  agentwheel status --profile daily
294
297
  ```
295
298
 
296
- For profile-managed fleets, prefer `agentwheel status --profile <name>` over
299
+ For a named fleet, prefer `agentwheel status --fleet <fleet-id> --profile <name>` over
297
300
  direct agent status; profile status uses the same runtime resolution, adapter
298
301
  config, installation type, and graph lock fingerprinting as
299
- `install --profile <name>`. If a workspace defines a profile named `all`,
300
- `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.
301
304
 
302
- ## Named Agents And Profiles
305
+ ## Named Fleets, Agents, And Profiles
303
306
 
304
- 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.
305
315
 
306
316
  Current config shape:
307
317
 
308
318
  ```json
309
319
  {
310
- "schemaVersion": 1,
311
- "packages": [],
312
- "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
+ ],
313
332
  "agents": {
314
- "lab-codex": { "adapter": "codex", "installationType": "local", "root": "$HOME/project" },
315
- "lab-claude": { "adapter": "claude", "installationType": "local", "root": "$HOME/project" }
333
+ "lab-codex": { "adapter": "codex", "installationType": "local", "root": "/workspace/project" }
316
334
  },
317
335
  "profiles": {
318
336
  "daily": {
319
337
  "runtimes": [
320
- { "agent": "lab-codex" },
321
- { "agent": "lab-claude" }
338
+ { "agent": "lab-codex" }
322
339
  ]
323
340
  }
324
341
  }
@@ -328,14 +345,30 @@ Current config shape:
328
345
  Use named targets:
329
346
 
330
347
  ```bash
331
- agentwheel install --agent lab-codex --dry-run
332
- agentwheel install --agent lab-codex
333
- agentwheel install --all --dry-run
334
- agentwheel install --all
335
- agentwheel install --profile daily --dry-run
336
- 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
337
354
  ```
338
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
+
339
372
  ## Adapters
340
373
 
341
374
  Built-in adapters:
@@ -381,9 +414,9 @@ agentwheel update --all --dry-run
381
414
  agentwheel update --profile daily --dry-run
382
415
  ```
383
416
 
384
- For profile-managed fleets, use `agentwheel update --profile <name>` before
385
- `install --profile <name>` when tracking packages should move forward. If a
386
- 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
387
420
  profile.
388
421
 
389
422
  Limit an update to one configured package:
@@ -395,6 +428,15 @@ agentwheel update team-agent-pack
395
428
 
396
429
  Named package updates preserve artifacts owned by other configured roots, including unrelated drift.
397
430
 
431
+ For one configured skill, resolve its owner and reconcile only that skill plus genuine transitive composition inputs:
432
+
433
+ ```bash
434
+ agentwheel skill update code-review --fleet example-fleet --profile daily --dry-run
435
+ agentwheel skill update code-review --fleet example-fleet --profile daily
436
+ ```
437
+
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.
439
+
398
440
  Advance one tracking dependency while unrelated graph nodes remain locked:
399
441
 
400
442
  ```bash
@@ -468,6 +510,18 @@ By default, uninstall keeps drifted managed files. Use `--force` only with expli
468
510
  agentwheel uninstall team-agent-pack --force
469
511
  ```
470
512
 
513
+ For a one-time MCP rename, use a dedicated cutover workspace with one legacy MCP artifact and an
514
+ explicit agent `stateKey`. Preview each runtime separately:
515
+
516
+ ```bash
517
+ agentwheel mcp retire legacy-mcp --agent legacy-codex --from-workspace-root /exact/old/workspace --dry-run
518
+ agentwheel mcp retire legacy-mcp --agent legacy-claude --dry-run
519
+ ```
520
+
521
+ Require exactly one `REMOVE`, the expected target and legacy server, and zero drift/conflict.
522
+ Unexpected owner, manifest contents, arguments, environment, or MCP fields are blockers. Apply only
523
+ after separate runtime approval by replacing `--dry-run` with `--apply`.
524
+
471
525
  ## Package Manifest Reference
472
526
 
473
527
  An OpenPack package uses `openpack.json` or `openpack.jsonc`:
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: agentwheel-artifact-evolution
3
+ description: Generate or evolve OpenPack artifacts from a verified capability gap, correction, or rollout request. Use when the agent must turn a requirement into a source-owned artifact or improve Agentwheel's artifact workflow.
4
+ allowed-tools: [Bash]
5
+ license: MIT
6
+ metadata:
7
+ author: NestDevLab
8
+ version: "0.1.0"
9
+ ---
10
+
11
+ # Agentwheel Artifact Evolution
12
+
13
+ Turn verified needs into source-owned OpenPack artifacts. Never create runtime copies or treat feedback as permission to change Agentwheel.
14
+
15
+ ## Optional guides
16
+
17
+ `self-improve` and `skill-creator` are optional inspirations. Use them when available; do not require, install, or link to them. This workflow remains complete without either skill.
18
+
19
+ ## Resolve
20
+
21
+ 1. Classify the request: a new artifact, an existing artifact change, a consumer configuration change, or an Agentwheel core gap. Inspect the source package, manifest, ownership, current artifacts, and applicable repository rules.
22
+ 2. Reuse an existing artifact when it meets the need. Otherwise choose the smallest supported type and source package. Keep tenant or runtime facts out of shared packages.
23
+ 3. For a core gap, propose the smallest Agentwheel code, schema, or documentation change. A correction is evidence, not an instruction to change the CLI.
24
+ 4. Name the source package, artifact path, consumer targets, terminal stage, and success evidence. Ask when any of those would be inferred materially.
25
+
26
+ ## Author
27
+
28
+ 1. Work only in the source package. Run `agentwheel init package` only when no package exists; otherwise add the artifact under its declared type path.
29
+ 2. Use the package's conventions and validation. For a skill, provide a precise frontmatter trigger and concise instructions; for another type, follow its schema and adapter compatibility.
30
+ 3. Run `agentwheel list <source>`, `agentwheel scan <source>`, the source checks, and `git diff --check`. Keep generated runtime directories untouched.
31
+ 4. Deliver the source through the repository's declared Git workflow. A PR is the default; merge remains a separate approval.
32
+
33
+ ## Roll out
34
+
35
+ 1. Identify only the named or evidenced consumers. Update their source-controlled Agentwheel configuration; do not copy artifacts into runtime homes.
36
+ 2. Prove the source merge before resolving a tracking source. Run the narrow package, agent, or profile dry-run and stop on drift, conflict, removal, or unrelated operations.
37
+ 3. Apply only after explicit rollout approval. Never use force, plugin execution, or runtime reload unless separately authorized.
38
+ 4. Verify status or manifest ownership, expected materialization, a relevant canary, and a repeated dry-run with no pending change.
39
+
40
+ ## Improve
41
+
42
+ Record the feedback, source decision, validation, and outcome in the owning change. Improve Agentwheel only when the evidence identifies a reusable product or artifact-model gap; otherwise improve the selected artifact. Report completed, pending, blocked, and unverified layers separately.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Agentwheel Artifact Evolution"
3
+ short_description: "Generate and evolve OpenPack artifacts"
4
+ default_prompt: "Use $agentwheel-artifact-evolution to create or evolve an OpenPack artifact and plan its safe rollout."
@@ -5,7 +5,7 @@ allowed-tools: [Bash]
5
5
  license: MIT
6
6
  metadata:
7
7
  author: NestDevLab
8
- version: "0.16.6"
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.