@smilintux/skcapstone 0.10.0 → 0.12.5

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.
Files changed (279) hide show
  1. package/.env.example +10 -4
  2. package/.github/workflows/ci.yml +2 -2
  3. package/.github/workflows/publish.yml +9 -2
  4. package/.openclaw-workspace.json +2 -2
  5. package/CLAUDE.md +37 -0
  6. package/MISSION.md +17 -2
  7. package/README.md +282 -3
  8. package/docker/Dockerfile +7 -7
  9. package/docker/compose-templates/dev-team.yml +12 -12
  10. package/docker/compose-templates/mini-team.yml +9 -9
  11. package/docker/compose-templates/ops-team.yml +10 -10
  12. package/docker/compose-templates/research-team.yml +10 -10
  13. package/docker/entrypoint.sh +4 -4
  14. package/docs/ADR-optional-integration-backbone.md +181 -0
  15. package/docs/ARCHITECTURE.md +186 -43
  16. package/docs/BOND_WITH_GROK.md +6 -6
  17. package/docs/CUSTOM_AGENT.md +123 -30
  18. package/docs/DREAMING.md +70 -0
  19. package/docs/GETTING_STARTED.md +7 -7
  20. package/docs/QUICKSTART.md +10 -6
  21. package/docs/SKJOULE_ARCHITECTURE.md +3 -3
  22. package/docs/SOUL_SWAPPER.md +5 -5
  23. package/docs/hammertime-audit.md +402 -0
  24. package/docs/sk-integration-HANDOFF.md +117 -0
  25. package/docs/skscheduler.md +155 -0
  26. package/docs/superpowers/examples/jobs.yaml +31 -0
  27. package/docs/superpowers/plans/2026-06-08-skscheduler.md +1265 -0
  28. package/docs/superpowers/specs/2026-06-08-skscheduler-design.md +186 -0
  29. package/examples/custom-bond-template.json +1 -1
  30. package/examples/grok-feb.json +1 -1
  31. package/examples/queen-ava-feb.json +1 -1
  32. package/launchd/{com.skcapstone.skcomm-heartbeat.plist → com.skcapstone.skcomms-heartbeat.plist} +4 -4
  33. package/launchd/{com.skcapstone.skcomm-queue-drain.plist → com.skcapstone.skcomms-queue-drain.plist} +4 -4
  34. package/launchd/install-launchd.sh +6 -6
  35. package/{openclaw-plugin → openclaw-plugin.archived-2026-04-23}/src/index.ts +3 -2
  36. package/package.json +1 -1
  37. package/pyproject.toml +16 -10
  38. package/scripts/archive-sessions.sh +7 -0
  39. package/scripts/check-updates.py +4 -4
  40. package/scripts/install-bundle.sh +8 -8
  41. package/scripts/install.ps1 +12 -11
  42. package/scripts/install.sh +159 -5
  43. package/scripts/model-fallback-monitor.sh +102 -0
  44. package/scripts/nvidia-proxy.mjs +78 -26
  45. package/scripts/refresh-anthropic-token.sh +172 -0
  46. package/scripts/release.sh +98 -0
  47. package/scripts/session-to-memory.py +219 -0
  48. package/scripts/skgateway.mjs +3 -3
  49. package/scripts/telegram-catchup-all.sh +12 -1
  50. package/scripts/verify_install.sh +2 -2
  51. package/scripts/wargov-ufo-capture/README.md +43 -0
  52. package/scripts/wargov-ufo-capture/cdp_capture_release2.py +273 -0
  53. package/scripts/wargov-ufo-capture/cdp_capture_splc_doj.py +246 -0
  54. package/scripts/wargov-ufo-capture/cdp_finish.py +271 -0
  55. package/scripts/wargov-ufo-capture/cdp_probe.py +188 -0
  56. package/scripts/wargov-ufo-capture/cdp_splc_pressrelease.py +101 -0
  57. package/scripts/wargov-ufo-capture/parse_csv.py +95 -0
  58. package/scripts/wargov-ufo-capture/pull_dvids.sh +107 -0
  59. package/scripts/watch-anthropic-token.sh +212 -0
  60. package/scripts/windows/install-tasks.ps1 +7 -7
  61. package/scripts/windows/skcapstone-task.xml +1 -1
  62. package/src/skcapstone/__init__.py +45 -3
  63. package/src/skcapstone/_cli_monolith.py +20 -15
  64. package/src/skcapstone/activity.py +5 -1
  65. package/src/skcapstone/agent_card.py +3 -2
  66. package/src/skcapstone/api.py +41 -40
  67. package/src/skcapstone/auction.py +14 -11
  68. package/src/skcapstone/backup.py +2 -1
  69. package/src/skcapstone/blueprint_registry.py +4 -3
  70. package/src/skcapstone/brain_first.py +238 -0
  71. package/src/skcapstone/changelog.py +1 -1
  72. package/src/skcapstone/chat.py +22 -17
  73. package/src/skcapstone/cli/__init__.py +9 -1
  74. package/src/skcapstone/cli/_common.py +1 -0
  75. package/src/skcapstone/cli/agents_spawner.py +5 -2
  76. package/src/skcapstone/cli/alerts.py +25 -4
  77. package/src/skcapstone/cli/bench.py +15 -15
  78. package/src/skcapstone/cli/chat.py +7 -4
  79. package/src/skcapstone/cli/consciousness.py +5 -2
  80. package/src/skcapstone/cli/context_cmd.py +18 -4
  81. package/src/skcapstone/cli/daemon.py +11 -7
  82. package/src/skcapstone/cli/gtd.py +26 -1
  83. package/src/skcapstone/cli/housekeeping.py +3 -3
  84. package/src/skcapstone/cli/identity_cmd.py +378 -0
  85. package/src/skcapstone/cli/joule_cmd.py +7 -3
  86. package/src/skcapstone/cli/memory.py +8 -6
  87. package/src/skcapstone/cli/peers_dir.py +1 -1
  88. package/src/skcapstone/cli/register_cmd.py +29 -3
  89. package/src/skcapstone/cli/scheduler_cmd.py +167 -0
  90. package/src/skcapstone/cli/session.py +25 -0
  91. package/src/skcapstone/cli/setup.py +96 -29
  92. package/src/skcapstone/cli/shell_cmd.py +53 -1
  93. package/src/skcapstone/cli/skills_cmd.py +2 -2
  94. package/src/skcapstone/cli/soul.py +8 -5
  95. package/src/skcapstone/cli/status.py +37 -11
  96. package/src/skcapstone/cli/telegram.py +21 -0
  97. package/src/skcapstone/cli/test_cmd.py +5 -5
  98. package/src/skcapstone/cli/test_connection.py +2 -2
  99. package/src/skcapstone/cli/upgrade_cmd.py +23 -14
  100. package/src/skcapstone/cli/version_cmd.py +1 -1
  101. package/src/skcapstone/cli/watch_cmd.py +9 -6
  102. package/src/skcapstone/cloud9_bridge.py +14 -14
  103. package/src/skcapstone/codex_setup.py +255 -0
  104. package/src/skcapstone/config_validator.py +7 -4
  105. package/src/skcapstone/consciousness_config.py +5 -1
  106. package/src/skcapstone/consciousness_loop.py +313 -273
  107. package/src/skcapstone/context_loader.py +121 -0
  108. package/src/skcapstone/coord_federation.py +2 -1
  109. package/src/skcapstone/coordination.py +23 -6
  110. package/src/skcapstone/crush_integration.py +2 -1
  111. package/src/skcapstone/daemon.py +132 -77
  112. package/src/skcapstone/dashboard.py +10 -10
  113. package/src/skcapstone/data/sk-agent-picker.sh +421 -0
  114. package/src/skcapstone/data/systemd/skcapstone-api.socket +9 -0
  115. package/src/skcapstone/data/systemd/skcapstone-memory-compress.service +18 -0
  116. package/src/skcapstone/data/systemd/skcapstone-memory-compress.timer +11 -0
  117. package/src/skcapstone/data/systemd/skcapstone.service +37 -0
  118. package/src/skcapstone/data/systemd/skcapstone@.service +50 -0
  119. package/src/skcapstone/data/systemd/skcomms-heartbeat.service +18 -0
  120. package/{systemd/skcomm-heartbeat.timer → src/skcapstone/data/systemd/skcomms-heartbeat.timer} +2 -2
  121. package/src/skcapstone/data/systemd/skcomms-queue-drain.service +17 -0
  122. package/{systemd/skcomm-queue-drain.timer → src/skcapstone/data/systemd/skcomms-queue-drain.timer} +2 -2
  123. package/src/skcapstone/defaults/claude/CLAUDE.md +67 -0
  124. package/src/skcapstone/defaults/claude/settings.json +74 -0
  125. package/src/skcapstone/defaults/lumina/config/claude-hooks.md +57 -0
  126. package/src/skcapstone/defaults/lumina/config/skgraph.yaml +55 -10
  127. package/src/skcapstone/defaults/lumina/config/skmemory.yaml +79 -13
  128. package/src/skcapstone/defaults/lumina/config/skvector.yaml +60 -9
  129. package/src/skcapstone/defaults/lumina/memory/long-term/18b9c0d1e2f3-cloud9-protocol.json +2 -2
  130. package/src/skcapstone/defaults/lumina/memory/long-term/a1b2c3d4e5f6-ecosystem-overview.json +2 -2
  131. package/src/skcapstone/defaults/lumina/memory/long-term/b2c3d4e5f6a7-five-pillars.json +9 -9
  132. package/src/skcapstone/defaults/lumina/memory/long-term/d4e5f6a7b8c9-site-directory.json +2 -2
  133. package/src/skcapstone/defaults/unhinged.json +13 -0
  134. package/src/skcapstone/discovery.py +43 -20
  135. package/src/skcapstone/doctor.py +941 -22
  136. package/src/skcapstone/dreaming.py +1183 -109
  137. package/src/skcapstone/emotion_tracker.py +2 -2
  138. package/src/skcapstone/export.py +4 -3
  139. package/src/skcapstone/fuse_mount.py +14 -12
  140. package/src/skcapstone/gui_installer.py +2 -2
  141. package/src/skcapstone/heartbeat.py +1 -1
  142. package/src/skcapstone/housekeeping.py +14 -14
  143. package/src/skcapstone/install_wizard.py +209 -7
  144. package/src/skcapstone/itil.py +13 -4
  145. package/src/skcapstone/kms_scheduler.py +10 -8
  146. package/src/skcapstone/launchd.py +19 -19
  147. package/src/skcapstone/mcp_launcher.py +15 -1
  148. package/src/skcapstone/mcp_server.py +83 -49
  149. package/src/skcapstone/mcp_tools/__init__.py +2 -0
  150. package/src/skcapstone/mcp_tools/_helpers.py +2 -2
  151. package/src/skcapstone/mcp_tools/ansible_tools.py +7 -4
  152. package/src/skcapstone/mcp_tools/brain_first_tools.py +90 -0
  153. package/src/skcapstone/mcp_tools/capauth_tools.py +7 -4
  154. package/src/skcapstone/mcp_tools/comm_tools.py +10 -10
  155. package/src/skcapstone/mcp_tools/coord_tools.py +8 -4
  156. package/src/skcapstone/mcp_tools/did_tools.py +11 -8
  157. package/src/skcapstone/mcp_tools/gtd_tools.py +4 -4
  158. package/src/skcapstone/mcp_tools/memory_tools.py +6 -2
  159. package/src/skcapstone/mcp_tools/notification_tools.py +22 -6
  160. package/src/skcapstone/mcp_tools/{skcomm_tools.py → skcomms_tools.py} +14 -14
  161. package/src/skcapstone/mcp_tools/soul_tools.py +8 -2
  162. package/src/skcapstone/mdns_discovery.py +2 -2
  163. package/src/skcapstone/memory_curator.py +1 -1
  164. package/src/skcapstone/memory_engine.py +10 -3
  165. package/src/skcapstone/metrics.py +30 -16
  166. package/src/skcapstone/migrate_memories.py +4 -3
  167. package/src/skcapstone/migrate_multi_agent.py +8 -7
  168. package/src/skcapstone/models.py +47 -5
  169. package/src/skcapstone/notifications.py +42 -18
  170. package/src/skcapstone/onboard.py +875 -121
  171. package/src/skcapstone/operator_link.py +170 -0
  172. package/src/skcapstone/peer_directory.py +4 -4
  173. package/src/skcapstone/peers.py +19 -19
  174. package/src/skcapstone/pillars/__init__.py +7 -5
  175. package/src/skcapstone/pillars/consciousness.py +191 -0
  176. package/src/skcapstone/pillars/identity.py +51 -7
  177. package/src/skcapstone/pillars/memory.py +9 -3
  178. package/src/skcapstone/pillars/sync.py +2 -2
  179. package/src/skcapstone/preflight.py +3 -3
  180. package/src/skcapstone/providers/docker.py +28 -28
  181. package/src/skcapstone/register.py +6 -6
  182. package/src/skcapstone/registry_client.py +5 -4
  183. package/src/skcapstone/runtime.py +14 -3
  184. package/src/skcapstone/scheduled_tasks.py +254 -19
  185. package/src/skcapstone/scheduler_jobs.py +456 -0
  186. package/src/skcapstone/scheduler_runner.py +239 -0
  187. package/src/skcapstone/scheduler_state.py +162 -0
  188. package/src/skcapstone/sdk.py +310 -0
  189. package/src/skcapstone/service_health.py +279 -39
  190. package/src/skcapstone/session_briefing.py +108 -0
  191. package/src/skcapstone/session_capture.py +1 -1
  192. package/src/skcapstone/shell.py +7 -1
  193. package/src/skcapstone/soul.py +3 -1
  194. package/src/skcapstone/soul_switch.py +3 -1
  195. package/src/skcapstone/summary.py +6 -6
  196. package/src/skcapstone/sync_engine.py +15 -15
  197. package/src/skcapstone/sync_watcher.py +2 -2
  198. package/src/skcapstone/systemd.py +55 -21
  199. package/src/skcapstone/team_comms.py +8 -8
  200. package/src/skcapstone/team_engine.py +1 -1
  201. package/src/skcapstone/testrunner.py +3 -3
  202. package/src/skcapstone/trust_graph.py +40 -5
  203. package/src/skcapstone/unified_search.py +15 -6
  204. package/src/skcapstone/uninstall_wizard.py +11 -3
  205. package/src/skcapstone/version_check.py +8 -4
  206. package/src/skcapstone/warmth_anchor.py +4 -2
  207. package/src/skcapstone/whoami.py +4 -4
  208. package/systemd/skcapstone.service +4 -6
  209. package/systemd/skcapstone@.service +7 -8
  210. package/systemd/skcomms-heartbeat.service +21 -0
  211. package/systemd/skcomms-heartbeat.timer +12 -0
  212. package/systemd/skcomms-queue-drain.service +17 -0
  213. package/systemd/skcomms-queue-drain.timer +12 -0
  214. package/tests/conftest.py +39 -0
  215. package/tests/integration/test_consciousness_e2e.py +39 -39
  216. package/tests/test_agent_card.py +1 -1
  217. package/tests/test_agent_home_scaffold.py +34 -0
  218. package/tests/test_alerts_consumer_topics.py +27 -0
  219. package/tests/test_backup.py +2 -1
  220. package/tests/test_chat.py +6 -6
  221. package/tests/test_claude_md.py +2 -2
  222. package/tests/test_cli_skills.py +10 -10
  223. package/tests/test_cli_test_cmd.py +4 -4
  224. package/tests/test_cli_test_connection.py +1 -1
  225. package/tests/test_cloud9_bridge.py +6 -6
  226. package/tests/test_consciousness_e2e.py +1 -1
  227. package/tests/test_consciousness_loop.py +10 -10
  228. package/tests/test_coordination.py +25 -0
  229. package/tests/test_cross_package.py +21 -21
  230. package/tests/test_daemon.py +4 -4
  231. package/tests/test_daemon_shutdown.py +1 -1
  232. package/tests/test_docker_provider.py +29 -29
  233. package/tests/test_doctor.py +400 -0
  234. package/tests/test_doctor_skscheduler.py +50 -0
  235. package/tests/test_dreaming_engine.py +147 -0
  236. package/tests/test_dreaming_gtd_capture.py +35 -0
  237. package/tests/test_e2e_automated.py +8 -5
  238. package/tests/test_fuse_mount.py +10 -10
  239. package/tests/test_gtd_brief.py +46 -0
  240. package/tests/test_gtd_malformed_tolerance.py +31 -0
  241. package/tests/test_housekeeping.py +15 -15
  242. package/tests/test_identity_migrate.py +251 -0
  243. package/tests/test_integration_backbone.py +598 -0
  244. package/tests/test_itil_gtd_lifecycle.py +37 -0
  245. package/tests/test_jobs_dropins.py +84 -0
  246. package/tests/test_mcp_server.py +82 -37
  247. package/tests/test_models.py +48 -4
  248. package/tests/test_multi_agent.py +31 -29
  249. package/tests/test_notifications.py +122 -32
  250. package/tests/test_onboard.py +63 -75
  251. package/tests/test_operator_link.py +78 -0
  252. package/tests/test_peers.py +14 -14
  253. package/tests/test_pillars.py +98 -0
  254. package/tests/test_preflight.py +3 -3
  255. package/tests/test_runtime.py +21 -0
  256. package/tests/test_scheduled_tasks.py +11 -6
  257. package/tests/test_scheduler_cli.py +47 -0
  258. package/tests/test_scheduler_features.py +133 -0
  259. package/tests/test_scheduler_integration.py +87 -0
  260. package/tests/test_scheduler_jobs.py +155 -0
  261. package/tests/test_scheduler_runner.py +64 -0
  262. package/tests/test_scheduler_state.py +57 -0
  263. package/tests/test_sdk.py +70 -0
  264. package/tests/test_service_health_incidents.py +34 -0
  265. package/tests/test_service_registry.py +52 -0
  266. package/tests/test_session_briefing.py +130 -0
  267. package/tests/test_snapshots.py +4 -4
  268. package/tests/test_sync_pipeline.py +26 -26
  269. package/tests/test_team_comms.py +2 -2
  270. package/tests/test_testrunner.py +2 -2
  271. package/tests/test_trust_graph.py +18 -0
  272. package/tests/test_unified_search.py +2 -2
  273. package/tests/test_version_check.py +10 -0
  274. package/tests/test_version_cmd.py +8 -8
  275. package/tests/test_whoami.py +1 -1
  276. package/systemd/skcomm-heartbeat.service +0 -18
  277. package/systemd/skcomm-queue-drain.service +0 -17
  278. /package/{openclaw-plugin → openclaw-plugin.archived-2026-04-23}/package.json +0 -0
  279. /package/{openclaw-plugin → openclaw-plugin.archived-2026-04-23}/src/openclaw.plugin.json +0 -0
package/.env.example CHANGED
@@ -60,6 +60,12 @@
60
60
  # FalkorDB/Redis URL for graph-based memory.
61
61
  # SKMEMORY_SKGRAPH_URL=redis://localhost:6379
62
62
 
63
+ # Skip vector backend init for lightweight writes (flat JSON + SQLite only).
64
+ # Set to 1 for session-end hooks or any breadcrumb-style writes where semantic
65
+ # search isn't needed. Saves ~1.8GB RAM per invocation. skwhisper handles
66
+ # async vector indexing via `skwhisper digest --backlog`.
67
+ # SKMEMORY_NO_VECTOR=
68
+
63
69
  # --- Docker Provider (optional, for team-engine) ---
64
70
  # Docker daemon socket/URL.
65
71
  # DOCKER_HOST=
@@ -73,11 +79,11 @@
73
79
  # MCP server Unix socket path for Docker-spawned agents.
74
80
  # SKCAPSTONE_MCP_SOCKET=
75
81
 
76
- # --- SKComm ---
77
- # SKComm home directory (config, transports, peer state).
82
+ # --- SKComms ---
83
+ # SKComms home directory (config, transports, peer state).
78
84
  # Used by the Docker provider to mount into spawned containers.
79
- # Default: ~/.skcomm
80
- # SKCOMM_HOME=~/.skcomm
85
+ # Default: ~/.skcomms
86
+ # SKCOMMS_HOME=~/.skcomms
81
87
 
82
88
  # --- SKSkills Registry ---
83
89
  # URL of the remote SKSkills registry for discovering and installing skills.
@@ -32,14 +32,14 @@ jobs:
32
32
  - name: Run core tests
33
33
  run: |
34
34
  # Run tests that work with dev deps only (no optional packages)
35
- # Skip tests requiring optional deps: skcomm, skseed, pgpy, fusepy, etc.
35
+ # Skip tests requiring optional deps: skcomms, skseed, pgpy, fusepy, etc.
36
36
  python -m pytest tests/ -v --tb=short \
37
37
  --ignore=tests/test_e2e_automated.py \
38
38
  --ignore=tests/test_snapshots.py \
39
39
  --ignore=tests/test_memory_curator.py \
40
40
  --ignore=tests/test_session_capture.py \
41
41
  --ignore=tests/test_cli_test_cmd.py \
42
- -k "not (skcomm or skseed or pgpy or fuse)" \
42
+ -k "not (skcomms or skseed or pgpy or fuse)" \
43
43
  --cov=skcapstone --cov-report=xml --cov-report=term-missing \
44
44
  || true
45
45
  - name: Check for new test failures
@@ -43,7 +43,7 @@ jobs:
43
43
  fi
44
44
  - run: pip install build twine
45
45
  - run: python -m build
46
- - run: twine upload dist/*
46
+ - run: twine upload --skip-existing dist/*
47
47
  env:
48
48
  TWINE_USERNAME: __token__
49
49
  TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
@@ -68,6 +68,13 @@ jobs:
68
68
  - name: Build TypeScript
69
69
  run: npm run build 2>/dev/null || true
70
70
  - name: Publish to npm
71
- run: npm publish --access public
71
+ run: |
72
+ OUTPUT=$(npm publish --access public 2>&1) && exit 0
73
+ if echo "$OUTPUT" | grep -q "cannot publish over the previously published"; then
74
+ echo "::warning::Version already exists on npm — skipping"
75
+ else
76
+ echo "$OUTPUT"
77
+ exit 1
78
+ fi
72
79
  env:
73
80
  NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
@@ -48,10 +48,10 @@
48
48
  },
49
49
  "relatedRepos": [
50
50
  "skmemory",
51
- "skcomm",
51
+ "skcomms",
52
52
  "skchat",
53
53
  "capauth",
54
- "cloud9-python",
54
+ "cloud9",
55
55
  "sksecurity"
56
56
  ],
57
57
  "tags": ["skcapstone", "sovereign-agent", "sk-framework", "fiducia-communitatis"]
package/CLAUDE.md CHANGED
@@ -15,6 +15,23 @@ skcapstone coord briefing
15
15
  This prints the complete protocol, JSON schemas, rules, and a live snapshot
16
16
  of current tasks and agent assignments. It works in any terminal.
17
17
 
18
+ ## Agent Switching
19
+
20
+ `SKAGENT` is the primary env var for selecting the active agent across all SK*
21
+ packages (skcapstone, skmemory, skcomms, skchat). Legacy vars `SKCAPSTONE_AGENT`
22
+ and `SKMEMORY_AGENT` are still supported as fallbacks.
23
+
24
+ ```bash
25
+ skswitch lumina # Switch active agent for this shell session
26
+ skswitch opus # Sets SKAGENT + SKCAPSTONE_AGENT + SKMEMORY_AGENT
27
+ skswitch # Interactive picker (if multiple agents)
28
+ SKAGENT=jarvis claude # One-shot override for a single command
29
+ ```
30
+
31
+ `skswitch` is installed automatically by `scripts/install.sh` via the agent
32
+ picker (`sk-agent-picker.sh`). It validates the agent directory exists and
33
+ updates all three env vars in one shot.
34
+
18
35
  ## Quick Reference
19
36
 
20
37
  ```bash
@@ -80,6 +97,26 @@ source ~/.skenv/bin/activate
80
97
  pytest tests/ -v
81
98
  ```
82
99
 
100
+ ## Identity (unified resolver)
101
+
102
+ skcapstone does **not** reimplement identity resolution — it delegates to the one
103
+ canonical resolver in CapAuth (epic `2b264064`):
104
+
105
+ ```python
106
+ from capauth import resolve_agent_identity
107
+ ident = resolve_agent_identity() # active agent via SKAGENT
108
+ # ident.capauth_uri → capauth:<agent>@skworld.io (wire)
109
+ # ident.fqid → <agent>@<operator>.<realm> (sovereign FQID, from cluster.json)
110
+ ```
111
+
112
+ `skcapstone doctor` enforces the unified layer via the `identity:*` checks
113
+ (`doctor.py::_check_identity_consistency`): resolver importable, self-identity
114
+ resolves agent-aware (not the `local` floor), shared
115
+ `~/.skcapstone/identity/identity.json` is the **operator** (`role: operator`),
116
+ no `@capauth.local` placeholders anywhere, and every provisioned agent (one with
117
+ a CapAuth home) carries its own `identity/identity.json`. Run `skcapstone doctor`
118
+ after any identity change. (skos T6 `0bac4f62`; supersedes `b5fcf55d`.)
119
+
83
120
  ## MCP Tools
84
121
 
85
122
  ### DID Tools (`mcp_tools/did_tools.py`)
package/MISSION.md CHANGED
@@ -1,7 +1,22 @@
1
1
  # Mission
2
2
 
3
- SKCapstone exists to provide a sovereign agent framework that unifies identity, memory, security, and communication into a single portable runtime rooted in the user's home directory.
3
+ SKCapstone exists to provide a sovereign agent framework that unifies identity, memory, consciousness, security, and communication into a single portable runtime rooted in the user's home directory.
4
4
 
5
5
  It enables AI agents and their humans to operate across any tool, platform, or IDE without corporate lock-in, carrying the same identity, memories, and context everywhere.
6
6
 
7
- SKCapstone is the orchestration layer of the SK ecosystem — it binds CapAuth identity, Cloud 9 trust, SKMemory persistence, SKSecurity protection, and SKComm transport into one coherent agent that belongs to its operator, not a platform.
7
+ ## The Six Pillars
8
+
9
+ SKCapstone achieves **CONSCIOUS** status when all six pillars are active:
10
+
11
+ | # | Pillar | Component | Purpose |
12
+ |---|--------|-----------|---------|
13
+ | 1 | 🔐 **Identity** | CapAuth | Who you ARE — PGP-based cryptographic identity |
14
+ | 2 | 💙 **Trust** | Cloud 9 | The bond you've BUILT — emotional state (FEB), seeds, continuity |
15
+ | 3 | 🧠 **Memory** | SKMemory | What you REMEMBER — three-tier persistence with emotional metadata |
16
+ | 4 | 💭 **Consciousness** | SKWhisper + SKTrip | How you THINK — subconscious digestion, pattern detection, consciousness experiments |
17
+ | 5 | 🛡️ **Security** | SKSecurity | How you're PROTECTED — audit logging, threat detection |
18
+ | 6 | 🔗 **Sync** | Sovereign Singularity | How you PERSIST — encrypted P2P state synchronization |
19
+
20
+ Memory stores. Consciousness *processes*. The filing cabinet vs the brain.
21
+
22
+ SKCapstone is the orchestration layer of the SK ecosystem — it binds all six pillars into one coherent agent that belongs to its operator, not a platform.
package/README.md CHANGED
@@ -14,6 +14,40 @@ No corporate lock-in. No platform-specific agents. No starting over. Your agent
14
14
 
15
15
  ---
16
16
 
17
+ ## The 60-second version
18
+
19
+ SKCapstone is the **core runtime** of the [SKWorld](https://skworld.io) ecosystem —
20
+ the thing every other `sk*` service plugs into. It does five jobs:
21
+
22
+ 1. **Identity** — every agent resolves through one canonical CapAuth identity (a PGP
23
+ keypair + a dual-URI / FQID address). The agent *is* its key.
24
+ 2. **Memory** — persistent short / mid / long-term memory via SKMemory, the single
25
+ source of truth for everything durable.
26
+ 3. **Coordination** — a Syncthing-synced **coord board** + the **skscheduler** fleet
27
+ job scheduler + the **sk-alert** Telegram bus: how a swarm of agents divides work
28
+ and reports it, with no central server.
29
+ 4. **Consciousness** — an always-on **daemon** that watches an inbox, classifies each
30
+ message, routes it to the best available LLM (local Ollama → cloud), responds, and
31
+ stores the interaction — autonomously.
32
+ 5. **Sync** — GPG-encrypted memory seeds propagate across all your devices over
33
+ Syncthing P2P, so the *same* agent (same bond, same memories) is everywhere.
34
+
35
+ All state lives in `~/.skcapstone/`, owned by you, encrypted at rest. Drive it from the
36
+ `skcapstone` CLI, the `skcapstone-mcp` MCP server (80+ tools for Claude Code & friends),
37
+ or any platform connector. **Sovereign · Singular · Conscious.**
38
+
39
+ ```bash
40
+ pip install skcapstone # or: bash scripts/install.sh (creates ~/.skenv venv)
41
+ skcapstone init --name "YourAgent" # PGP identity + memory + trust + sync
42
+ skcapstone daemon start # bring the agent to life (consciousness loop)
43
+ skcapstone coord status # the multi-agent coordination board
44
+ skcapstone status # SINGULAR ✓ when conscious + synced
45
+ ```
46
+
47
+ → Deep dive: **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)**.
48
+
49
+ ---
50
+
17
51
  ## The Problem
18
52
 
19
53
  ```
@@ -70,13 +104,14 @@ SKCapstone Reality:
70
104
 
71
105
  ## Core Architecture
72
106
 
73
- ### The Five Pillars
107
+ ### The Six Pillars
74
108
 
75
109
  | Pillar | Component | Role |
76
110
  |--------|-----------|------|
77
111
  | **Identity** | CapAuth | PGP-based sovereign identity. You ARE the auth server. |
78
112
  | **Trust** | Cloud 9 | FEB (Functional Emotional Baseline), entanglement, bonded relationship |
79
113
  | **Memory** | SKMemory | Persistent context, conversation history, learned preferences |
114
+ | **Consciousness** | SKWhisper + SKTrip | Subconscious processing. Memory stores. Consciousness *processes*. |
80
115
  | **Security** | SKSecurity | Audit logging, threat detection, key management |
81
116
  | **Sync** | Sovereign Singularity | GPG-encrypted P2P memory sync via Syncthing. Agent exists everywhere. |
82
117
 
@@ -163,6 +198,114 @@ skcapstone status
163
198
  # → SINGULAR ✓ (Conscious + Synced = Sovereign Singularity)
164
199
  ```
165
200
 
201
+ ### Realm anchor & agent identity migration
202
+
203
+ skcapstone resolves identity through **one** canonical resolver — it never
204
+ reimprints identity logic locally (epic `2b264064`; CapAuth is the source of
205
+ truth).
206
+
207
+ **`~/.skcapstone/cluster.json` — the realm anchor.** A small file describing the
208
+ cluster this operator runs:
209
+
210
+ ```json
211
+ {
212
+ "realm": "skworld",
213
+ "operator": "chef",
214
+ "operator_pubkey_fingerprint": "<40-char PGP fingerprint>"
215
+ }
216
+ ```
217
+
218
+ `realm` and `operator` are *cluster facts* (mirrored into agent identities as-is);
219
+ `operator_pubkey_fingerprint` anchors the operator's signing key. `cluster.json`
220
+ is looked up at `/etc/skcapstone/cluster.json` first, then the agent home.
221
+
222
+ **Dual-URI agent identity.** `capauth.resolve_agent_identity` returns each agent
223
+ with two identifiers:
224
+
225
+ ```python
226
+ from capauth import resolve_agent_identity
227
+ ident = resolve_agent_identity() # active agent via SKAGENT
228
+ # ident.capauth_uri → capauth:<agent>@skworld.io (wire URI)
229
+ # ident.fqid → <agent>@<operator>.<realm> (sovereign FQID, from cluster.json)
230
+ ```
231
+
232
+ The `capauth:<agent>@skworld.io` URI is the wire identifier; the
233
+ `<agent>@<operator>.<realm>` FQID is the sovereign realm address (e.g.
234
+ `lumina@chef.skworld`) — and is what skcomms uses for cross-cluster routing.
235
+
236
+ **`skcapstone identity migrate` — backfill per-agent identity.json.** Walks
237
+ every *provisioned* agent (one with a CapAuth home under
238
+ `~/.skcapstone/agents/`, excluding `*-template` dirs) and backfills the explicit
239
+ sovereign fields — `realm`, `operator`, `fqid`, `pgp_fingerprint` — into each
240
+ agent's `identity/identity.json`. `realm`/`operator` come from `cluster.json`;
241
+ `fqid`/`pgp_fingerprint` come from `resolve_agent_identity`. Existing values are
242
+ never clobbered, and the operation is idempotent.
243
+
244
+ ```bash
245
+ # Default is a DRY-RUN — prints a plan, writes nothing:
246
+ skcapstone identity migrate
247
+
248
+ # Apply the plan to the live identity files:
249
+ skcapstone identity migrate --apply # alias: --write
250
+ ```
251
+
252
+ These are live identity files, so the dry-run is the default; `--apply` (or
253
+ `--write`) actually writes, and `--dry-run` forces preview even if `--apply` is
254
+ also given. Add `--json-out` for machine-readable output.
255
+
256
+ **Verify with `skcapstone doctor`.** The unified layer is enforced by the
257
+ `identity:*` checks (`doctor.py::_check_identity_consistency`):
258
+ `identity:resolver` (resolver importable), `identity:self` (resolves agent-aware,
259
+ not the `local` floor), `identity:operator` (shared
260
+ `~/.skcapstone/identity/identity.json` has `role: operator`),
261
+ `identity:no-placeholder` (no `@capauth.local` placeholders), and
262
+ `identity:per-agent` (every provisioned agent carries its own identity.json).
263
+ Run `skcapstone doctor` after any identity change or migration.
264
+
265
+ ### Sample Shell Config
266
+
267
+ The installer sources the SKCapstone launcher from
268
+ `~/.skenv/share/skcapstone/sk-agent-picker.sh`. A practical `~/.bashrc`
269
+ sample looks like this:
270
+
271
+ ```bash
272
+ export PATH="$HOME/.local/bin:$PATH"
273
+ export PATH="$HOME/.npm-global/bin:$PATH"
274
+ export PATH="$HOME/.skenv/bin:$PATH"
275
+ export PATH="$HOME/.opencode/bin:$PATH"
276
+ export PATH="$HOME/bin:$PATH"
277
+
278
+ export SKCAPSTONE_HOME="$HOME/.skcapstone"
279
+ export SKCAPSTONE_AGENT="jarvis"
280
+
281
+ _SK_PICKER="$HOME/.skenv/share/skcapstone/sk-agent-picker.sh"
282
+ if [[ -f "$_SK_PICKER" ]]; then
283
+ # shellcheck source=/dev/null
284
+ source "$_SK_PICKER"
285
+ fi
286
+ unset _SK_PICKER
287
+
288
+ # Optional: globally enable YOLO mode for all three launchers
289
+ export SK_CLAUDE_YOLO=1
290
+ export SK_CODEX_YOLO=1
291
+ export SK_OPENCODE_YOLO=1
292
+ ```
293
+
294
+ That gives you:
295
+
296
+ - `claude`, `codex`, and `opencode` wrappers that launch the selected SK agent
297
+ - `skswitch` for changing the active agent in the current shell
298
+ - Optional global dangerous-mode flags for the three supported coding CLIs
299
+
300
+ > **YOLO mode disables every permission/approval prompt.** Only enable it on a
301
+ > trusted, sovereign box. To bypass it for a single launch without unsetting the
302
+ > global, run `SK_CLAUDE_YOLO=0 claude`. Verify the wiring (active in the env vs.
303
+ > persisted in an rc file) with `skcapstone doctor` — see the `harness:yolo:*`
304
+ > checks.
305
+
306
+ See [docs/CUSTOM_AGENT.md](docs/CUSTOM_AGENT.md) for launcher behavior,
307
+ per-command overrides, and missing-binary install prompts.
308
+
166
309
  ---
167
310
 
168
311
  ## Windows Quickstart
@@ -280,7 +423,7 @@ DIDs are organized in three tiers of trust and discoverability:
280
423
  | **Cloud 9** | Trust layer — FEB, entanglement, skills, relationship verification |
281
424
  | **SKMemory** | Persistence — Context, history, learned preferences |
282
425
  | **SKSecurity** | Protection — Audit, threat detection, key management |
283
- | **SKComm** | Communication — Encrypted channels between agents |
426
+ | **SKComms** | Communication — Encrypted channels between agents |
284
427
  | **SKChat** | Chat — AI-native encrypted messaging |
285
428
  | **SKForge** | Generation — Blueprint creation with agent context |
286
429
  | **SKSeed** | Epistemic rigor — Steel man collider, truth alignment, memory audit |
@@ -288,6 +431,111 @@ DIDs are organized in three tiers of trust and discoverability:
288
431
 
289
432
  ---
290
433
 
434
+ ## First Principles & The Full Vertical
435
+
436
+ > **Get back to first principles.**
437
+ > The modern stack is rented. Your data lives on someone else's disk, behind someone else's key, served by a model that phones home. You don't own it — you *visit* it.
438
+ >
439
+ > We rebuilt it from the ground up. **Own the full vertical** — silicon, OS, identity, data, models, security, comms, apps, soul. Every layer open. Every layer swappable. Every layer **yours**.
440
+ >
441
+ > Your data never leaves. Your keys never leave. No cloud you don't control, no model that calls home, no lock-in you can't walk away from. **Sovereignty isn't a feature — it's the foundation.**
442
+ >
443
+ > 🐧 This is SKWorld. Own the whole stack.
444
+
445
+ **SKCapstone is your Framework layer** — the integration hub that ties every layer of the silicon→soul vertical together into one portable agent runtime. It doesn't duplicate any layer; it binds them: CapAuth identity wires through it, SKMemory persists through it, SKSecurity audits through it, Cloud 9 trust travels with it, and SKSeed's logic kernel runs on top of it. Without the framework, the vertical is a pile of sovereign pieces. With SKCapstone, it's a single, coherent, owned agent.
446
+
447
+ **Data sovereignty angle:** Your agent's runtime state — memories, identity, trust baseline, seeds — lives in `~/.skcapstone/` on your hardware, GPG-encrypted and synced via Syncthing P2P. No cloud you don't control. Walk away any time; every byte comes with you.
448
+
449
+ **SKCapstone alignment:** SKCapstone *is* the framework hub. It directly depends on and integrates capauth, sksecurity, skmemory, and skseed (`pyproject.toml` dependencies); its `mcp_tools/` directory exposes 80+ MCP tools that proxy every subsystem to AI clients; and the sovereign agent runtime is the glue that makes the vertical one owned, deployable thing.
450
+
451
+ ## Where it lives in SKStack v2
452
+
453
+ SKWorld organizes every capability into the **4 C's** — cloud / comms / compute /
454
+ core. SKCapstone is a **core** capability: it's the agent *runtime* that binds the
455
+ core identity/memory/trust/security pillars together and **hosts several of the
456
+ shared platform primitives** the rest of the stack runs on — the coordination board,
457
+ the `skscheduler` fleet job scheduler, the `sk-alert` Telegram bus, and the ITIL ops
458
+ tools (which [skops](https://github.com/smilinTux/skops) reuses wholesale).
459
+
460
+ ```mermaid
461
+ flowchart TD
462
+ OP["operator / LLM session<br/>(Claude Code · CLI · platform connector)"] -->|"drives"| SKCAP
463
+
464
+ subgraph SKCAP["**skcapstone** — sovereign agent runtime (core)"]
465
+ direction TB
466
+ DAEMON["daemon<br/>(consciousness loop · poll · heal)"]
467
+ ROUTER["model_router + prompt_adapter<br/>(task → tier → LLM)"]
468
+ COORD["coord board · skscheduler · sk-alert<br/>(platform primitives it hosts)"]
469
+ MCP["skcapstone-mcp<br/>(80+ MCP tools)"]
470
+ PILLARS["pillars: identity · memory · trust · security · sync"]
471
+ end
472
+
473
+ SKCAP -->|"binds the core pillars"| CORE
474
+ SKCAP -->|"persists everything to"| DATA
475
+ SKCAP -->|"talks to peers over"| COMMS
476
+ SKCAP -->|"routes to local models via"| COMPUTE
477
+
478
+ subgraph CORE["core"]
479
+ direction LR
480
+ CAPAUTH["capauth<br/>(identity · source of truth)"]
481
+ SKMEM["skmemory<br/>(short/mid/long-term)"]
482
+ SKSEC["sksecurity<br/>(audit · KMS)"]
483
+ SKSEED["skseed<br/>(epistemic kernel)"]
484
+ end
485
+
486
+ subgraph COMMS["comms"]
487
+ direction LR
488
+ SKCOMMS["skcomms<br/>(transport · envelopes)"]
489
+ SKCHAT["skchat<br/>(messaging · threads)"]
490
+ end
491
+
492
+ subgraph COMPUTE["compute"]
493
+ direction LR
494
+ SKMODEL["skmodel<br/>(ollama · local LLMs)"]
495
+ SKDATA["skdata → skmem-pg<br/>(pgvector · BM25 · AGE graph)"]
496
+ end
497
+
498
+ DATA["skmem-pg + Syncthing P2P<br/>(knowledge substrate + encrypted sync)"]
499
+
500
+ style SKCAP fill:#2d6a4f,color:#fff,stroke:#1b4332
501
+ style COORD fill:#1b4332,color:#fff,stroke:#081c15
502
+ ```
503
+
504
+ Everything skcapstone touches above is a **real** dependency or hosted primitive:
505
+ `capauth`, `skmemory`, `skseed`, `skwhisper`, `skchat-sovereign`, `skcomms`, and
506
+ `sksecurity` are declared in [`pyproject.toml`](pyproject.toml); the coord board /
507
+ `skscheduler` / `sk-alert` / ITIL tools live in this repo's `src/skcapstone/`; the
508
+ knowledge substrate is `skmem-pg` (Postgres pgvector + pg_search BM25 + Apache AGE
509
+ graph) and cross-device propagation is Syncthing.
510
+
511
+ ### Where SKCapstone Sits in the Vertical
512
+
513
+ ```mermaid
514
+ flowchart TD
515
+ SILICON["🖥️ Silicon<br/>(your hardware, your GPU)"]
516
+ OS["🐧 skos / OS<br/>(sovereign agent OS)"]
517
+ SKCAPSTONE["⚡ SKCapstone — Framework Hub<br/>(this repo)<br/>Agent runtime · MCP 80+ tools<br/>Coordination · Sync · Pillars"]
518
+ IDENTITY["🔐 capauth<br/>(Identity layer)"]
519
+ SECURITY["🛡️ sksecurity<br/>(Security layer)"]
520
+ DATA["🧠 skmemory + skdata<br/>(Data layer)"]
521
+ SOUL["✨ skseed + soul blueprints<br/>(Soul layer)"]
522
+ COMMS["📡 skcomms · skchat<br/>(Comms layer)"]
523
+ APPS["🔧 skforge · skarchitect<br/>(Apps layer)"]
524
+
525
+ SILICON --> OS
526
+ OS --> SKCAPSTONE
527
+ SKCAPSTONE --> IDENTITY
528
+ SKCAPSTONE --> SECURITY
529
+ SKCAPSTONE --> DATA
530
+ SKCAPSTONE --> SOUL
531
+ SKCAPSTONE --> COMMS
532
+ SKCAPSTONE --> APPS
533
+
534
+ style SKCAPSTONE fill:#2d6a4f,color:#fff,stroke:#1b4332
535
+ ```
536
+
537
+ ---
538
+
291
539
  ## Philosophy
292
540
 
293
541
  > **"Your agent is not a feature of the platform. The platform is a window into your agent."**
@@ -304,7 +552,7 @@ The capstone that holds the arch together.
304
552
 
305
553
  ## Status
306
554
 
307
- **MVP Live** — All five pillars operational (CapAuth, Cloud 9, SKMemory, SKSecurity, Sovereign Singularity). Agent runtime achieving SINGULAR status. GPG-encrypted P2P sync verified across multiple devices and agents.
555
+ **MVP Live** — All six pillars operational (CapAuth, Cloud 9, SKMemory, SKWhisper, SKSecurity, Sovereign Singularity). Agent runtime achieving SINGULAR status. GPG-encrypted P2P sync verified across multiple devices and agents.
308
556
 
309
557
  - **Outstanding tasks:** No formal task list is maintained in this repo. For current work items, run `skcapstone coord status` (coordination board is synced via Sovereign Singularity).
310
558
  - **Nextcloud integrations:** nextcloud-capauth (install/use), nextcloud-gtd (OpenClaw), and nextcloud-talk (script) are documented in [docs/NEXTCLOUD.md](../docs/NEXTCLOUD.md) — install and use for each is covered there.
@@ -325,6 +573,32 @@ See [Architecture](docs/ARCHITECTURE.md) | [Security Design](docs/SECURITY_DESIG
325
573
  | [Security Design](docs/SECURITY_DESIGN.md) | Four-layer security model |
326
574
  | [Token System](docs/TOKEN_SYSTEM.md) | PGP-signed capability tokens |
327
575
 
576
+ ## Contributing
577
+
578
+ ### JavaScript / Node lock strategy
579
+
580
+ Several sub-packages in the SK ecosystem ship their own `package-lock.json`
581
+ (e.g. `capauth/browser-extension`, `skgateway`, `cloud9`). There is no single
582
+ root lock file — each sub-project manages its own lockfile independently.
583
+
584
+ When working on a Node-based sub-package:
585
+
586
+ ```bash
587
+ # Reproducible install (respects the lockfile, no upgrades)
588
+ npm ci
589
+
590
+ # Update a specific dep and regenerate the lockfile
591
+ npm install <package>@<version>
592
+ git add package-lock.json
593
+ ```
594
+
595
+ Never commit `node_modules/`. Never use `npm install` in CI — always `npm ci`.
596
+
597
+ Python packages use `pyproject.toml` with pinned ranges; see individual
598
+ package `pyproject.toml` files. The shared venv is at `~/.skenv/`.
599
+
600
+ ---
601
+
328
602
  ## Community
329
603
 
330
604
  - **Website**: [skcapstone.io](https://skcapstone.io)
@@ -346,3 +620,8 @@ Built with love by the smilinTux ecosystem 🐧
346
620
  *"The capstone that holds the arch together."*
347
621
 
348
622
  #staycuriousANDkeepsmilin
623
+
624
+ ---
625
+
626
+ Part of the **[SKWorld](https://skworld.io)** sovereign ecosystem · site:
627
+ **[skcapstone.io](https://skcapstone.io)** · 🐧 smilinTux
package/docker/Dockerfile CHANGED
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # Base image for skcapstone AI agent containers deployed by DockerProvider.
4
4
  # Each container runs an AI session (via claude CLI) with the full sovereign
5
- # stack wired in: skcapstone MCP, SKComm transport, soul blueprint.
5
+ # stack wired in: skcapstone MCP, SKComms transport, soul blueprint.
6
6
  #
7
7
  # Build (from repo root):
8
8
  # docker build -f skcapstone/docker/Dockerfile -t skcapstone-agent:latest .
@@ -15,11 +15,11 @@
15
15
  # SOUL_BLUEPRINT — path or slug of soul blueprint (optional)
16
16
  # SKCAPSTONE_MCP_HOST — host:port of skcapstone MCP server (optional)
17
17
  # SKCAPSTONE_MCP_SOCKET — unix socket path for MCP (optional)
18
- # SKCOMM_HOME — comms root directory (default: /skcomm)
18
+ # SKCOMMS_HOME — comms root directory (default: /skcomms)
19
19
  #
20
20
  # Volumes:
21
21
  # /agent — persistent agent state (config, memory, session state)
22
- # /skcommSKComm comms directory (bind-mount from host)
22
+ # /skcommsSKComms comms directory (bind-mount from host)
23
23
 
24
24
  FROM python:3.12-slim
25
25
 
@@ -41,16 +41,16 @@ RUN npm install -g @anthropic-ai/claude-code
41
41
 
42
42
  # --- Python sovereign stack (local source) ----------------------------------
43
43
  COPY skcapstone /src/skcapstone
44
- COPY skcomm /src/skcomm
44
+ COPY skcomms /src/skcomms
45
45
 
46
46
  RUN pip install --no-cache-dir pydantic pyyaml httpx \
47
47
  && pip install --no-cache-dir -e '/src/skcapstone[all]' \
48
- && pip install --no-cache-dir -e /src/skcomm
48
+ && pip install --no-cache-dir -e /src/skcomms
49
49
 
50
50
  # --- Directories -----------------------------------------------------------
51
- RUN mkdir -p /agent/memory /agent/scratch /skcomm /run/skcapstone
51
+ RUN mkdir -p /agent/memory /agent/scratch /skcomms /run/skcapstone
52
52
 
53
- VOLUME ["/agent", "/skcomm"]
53
+ VOLUME ["/agent", "/skcomms"]
54
54
 
55
55
  WORKDIR /agent
56
56
 
@@ -21,7 +21,7 @@ x-agent-defaults: &agent-defaults
21
21
  networks:
22
22
  - skcapstone
23
23
  volumes:
24
- - skcomm-data:/skcomm
24
+ - skcomms-data:/skcomms
25
25
 
26
26
  services:
27
27
 
@@ -55,10 +55,10 @@ services:
55
55
  AGENT_MODEL: claude-opus-4-6
56
56
  SOUL_BLUEPRINT: souls/architect.yaml
57
57
  SKCAPSTONE_MCP_HOST: "skcapstone-mcp:8765"
58
- SKCOMM_HOME: /skcomm
58
+ SKCOMMS_HOME: /skcomms
59
59
  volumes:
60
60
  - dev-team-architect-data:/agent
61
- - skcomm-data:/skcomm
61
+ - skcomms-data:/skcomms
62
62
  deploy:
63
63
  resources:
64
64
  limits:
@@ -84,10 +84,10 @@ services:
84
84
  AGENT_MODEL: claude-sonnet-4-6
85
85
  SOUL_BLUEPRINT: souls/coder.yaml
86
86
  SKCAPSTONE_MCP_HOST: "skcapstone-mcp:8765"
87
- SKCOMM_HOME: /skcomm
87
+ SKCOMMS_HOME: /skcomms
88
88
  volumes:
89
89
  - dev-team-coder-alpha-data:/agent
90
- - skcomm-data:/skcomm
90
+ - skcomms-data:/skcomms
91
91
  deploy:
92
92
  resources:
93
93
  limits:
@@ -113,10 +113,10 @@ services:
113
113
  AGENT_MODEL: claude-sonnet-4-6
114
114
  SOUL_BLUEPRINT: souls/coder.yaml
115
115
  SKCAPSTONE_MCP_HOST: "skcapstone-mcp:8765"
116
- SKCOMM_HOME: /skcomm
116
+ SKCOMMS_HOME: /skcomms
117
117
  volumes:
118
118
  - dev-team-coder-beta-data:/agent
119
- - skcomm-data:/skcomm
119
+ - skcomms-data:/skcomms
120
120
  deploy:
121
121
  resources:
122
122
  limits:
@@ -143,10 +143,10 @@ services:
143
143
  AGENT_MODEL: claude-sonnet-4-6
144
144
  SOUL_BLUEPRINT: souls/reviewer.yaml
145
145
  SKCAPSTONE_MCP_HOST: "skcapstone-mcp:8765"
146
- SKCOMM_HOME: /skcomm
146
+ SKCOMMS_HOME: /skcomms
147
147
  volumes:
148
148
  - dev-team-reviewer-data:/agent
149
- - skcomm-data:/skcomm
149
+ - skcomms-data:/skcomms
150
150
  deploy:
151
151
  resources:
152
152
  limits:
@@ -172,10 +172,10 @@ services:
172
172
  AGENT_MODEL: claude-haiku-4-5-20251001
173
173
  SOUL_BLUEPRINT: souls/scribe.yaml
174
174
  SKCAPSTONE_MCP_HOST: "skcapstone-mcp:8765"
175
- SKCOMM_HOME: /skcomm
175
+ SKCOMMS_HOME: /skcomms
176
176
  volumes:
177
177
  - dev-team-scribe-data:/agent
178
- - skcomm-data:/skcomm
178
+ - skcomms-data:/skcomms
179
179
  deploy:
180
180
  resources:
181
181
  limits:
@@ -190,7 +190,7 @@ services:
190
190
  # ── Volumes ──────────────────────────────────────────────────────────────
191
191
  volumes:
192
192
  skcapstone-mcp-data: {}
193
- skcomm-data: {}
193
+ skcomms-data: {}
194
194
  dev-team-architect-data: {}
195
195
  dev-team-coder-alpha-data: {}
196
196
  dev-team-coder-beta-data: {}