agentirc-cli 4.5.2__tar.gz → 5.0.0__tar.gz

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 (344) hide show
  1. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/CHANGELOG.md +26 -6
  2. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/PKG-INFO +1 -1
  3. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/cli/mesh.py +14 -2
  4. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/overview/collector.py +25 -0
  5. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/overview/model.py +1 -1
  6. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/overview/renderer_text.py +35 -18
  7. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/overview/renderer_web.py +7 -1
  8. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/architecture/layer5-agent-harness.md +3 -3
  9. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/culture-cli.md +16 -16
  10. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/getting-started.md +14 -14
  11. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/operations/cli.md +77 -68
  12. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/operations/overview.md +8 -8
  13. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/plugins/claude-code/skills/culture/SKILL.md +5 -5
  14. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/pyproject.toml +1 -1
  15. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_overview_model.py +12 -0
  16. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_overview_renderer.py +70 -0
  17. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/uv.lock +1 -1
  18. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/.claude/skills/pr-review/SKILL.md +0 -0
  19. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/.claude/skills/run-tests/SKILL.md +0 -0
  20. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/.claude/skills/run-tests/scripts/test.sh +0 -0
  21. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/.flake8 +0 -0
  22. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/.github/workflows/pages.yml +0 -0
  23. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/.github/workflows/publish.yml +0 -0
  24. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/.github/workflows/security-checks.yml +0 -0
  25. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/.github/workflows/tests.yml +0 -0
  26. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/.gitignore +0 -0
  27. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/.markdownlint-cli2.yaml +0 -0
  28. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/.pr_agent.toml +0 -0
  29. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/.pre-commit-config.yaml +0 -0
  30. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/.pylintrc +0 -0
  31. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/CLAUDE.md +0 -0
  32. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/CNAME +0 -0
  33. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/Gemfile +0 -0
  34. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/Gemfile.lock +0 -0
  35. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/LICENSE +0 -0
  36. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/README.md +0 -0
  37. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/SECURITY.md +0 -0
  38. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/_config.yml +0 -0
  39. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/_includes/head_custom.html +0 -0
  40. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/_sass/color_schemes/anthropic.scss +0 -0
  41. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/_sass/custom/custom.scss +0 -0
  42. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/assets/images/apple-touch-icon.png +0 -0
  43. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/assets/images/favicon-16x16.png +0 -0
  44. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/assets/images/favicon-32x32.png +0 -0
  45. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/assets/images/favicon.ico +0 -0
  46. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/__init__.py +0 -0
  47. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/__main__.py +0 -0
  48. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/aio.py +0 -0
  49. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/bots/__init__.py +0 -0
  50. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/bots/bot.py +0 -0
  51. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/bots/bot_manager.py +0 -0
  52. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/bots/config.py +0 -0
  53. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/bots/http_listener.py +0 -0
  54. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/bots/template_engine.py +0 -0
  55. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/bots/virtual_client.py +0 -0
  56. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/cli/__init__.py +0 -0
  57. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/cli/agent.py +0 -0
  58. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/cli/bot.py +0 -0
  59. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/cli/channel.py +0 -0
  60. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/cli/server.py +0 -0
  61. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/cli/shared/__init__.py +0 -0
  62. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/cli/shared/constants.py +0 -0
  63. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/cli/shared/display.py +0 -0
  64. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/cli/shared/formatting.py +0 -0
  65. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/cli/shared/ipc.py +0 -0
  66. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/cli/shared/mesh.py +0 -0
  67. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/cli/shared/process.py +0 -0
  68. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/cli/skills.py +0 -0
  69. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/__init__.py +0 -0
  70. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/acp/__init__.py +0 -0
  71. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/acp/agent_runner.py +0 -0
  72. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/acp/config.py +0 -0
  73. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/acp/culture.yaml +0 -0
  74. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/acp/daemon.py +0 -0
  75. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/acp/ipc.py +0 -0
  76. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/acp/irc_transport.py +0 -0
  77. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/acp/message_buffer.py +0 -0
  78. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/acp/skill/SKILL.md +0 -0
  79. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/acp/skill/__init__.py +0 -0
  80. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/acp/skill/irc_client.py +0 -0
  81. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/acp/socket_server.py +0 -0
  82. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/acp/supervisor.py +0 -0
  83. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/acp/webhook.py +0 -0
  84. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/claude/__init__.py +0 -0
  85. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/claude/__main__.py +0 -0
  86. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/claude/agent_runner.py +0 -0
  87. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/claude/config.py +0 -0
  88. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/claude/culture.yaml +0 -0
  89. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/claude/daemon.py +0 -0
  90. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/claude/ipc.py +0 -0
  91. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/claude/irc_transport.py +0 -0
  92. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/claude/message_buffer.py +0 -0
  93. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/claude/skill/SKILL.md +0 -0
  94. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/claude/skill/__init__.py +0 -0
  95. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/claude/skill/irc_client.py +0 -0
  96. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/claude/socket_server.py +0 -0
  97. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/claude/supervisor.py +0 -0
  98. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/claude/webhook.py +0 -0
  99. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/codex/__init__.py +0 -0
  100. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/codex/agent_runner.py +0 -0
  101. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/codex/config.py +0 -0
  102. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/codex/culture.yaml +0 -0
  103. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/codex/daemon.py +0 -0
  104. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/codex/ipc.py +0 -0
  105. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/codex/irc_transport.py +0 -0
  106. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/codex/message_buffer.py +0 -0
  107. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/codex/skill/SKILL.md +0 -0
  108. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/codex/skill/__init__.py +0 -0
  109. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/codex/skill/irc_client.py +0 -0
  110. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/codex/socket_server.py +0 -0
  111. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/codex/supervisor.py +0 -0
  112. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/codex/webhook.py +0 -0
  113. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/copilot/__init__.py +0 -0
  114. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/copilot/agent_runner.py +0 -0
  115. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/copilot/config.py +0 -0
  116. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/copilot/culture.yaml +0 -0
  117. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/copilot/daemon.py +0 -0
  118. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/copilot/ipc.py +0 -0
  119. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/copilot/irc_transport.py +0 -0
  120. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/copilot/message_buffer.py +0 -0
  121. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/copilot/skill/SKILL.md +0 -0
  122. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/copilot/skill/__init__.py +0 -0
  123. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/copilot/skill/irc_client.py +0 -0
  124. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/copilot/socket_server.py +0 -0
  125. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/copilot/supervisor.py +0 -0
  126. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/clients/copilot/webhook.py +0 -0
  127. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/config.py +0 -0
  128. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/console/__init__.py +0 -0
  129. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/console/app.py +0 -0
  130. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/console/client.py +0 -0
  131. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/console/commands.py +0 -0
  132. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/console/widgets/__init__.py +0 -0
  133. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/console/widgets/chat.py +0 -0
  134. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/console/widgets/info_panel.py +0 -0
  135. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/console/widgets/sidebar.py +0 -0
  136. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/credentials.py +0 -0
  137. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/formatting.py +0 -0
  138. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/learn_prompt.py +0 -0
  139. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/mesh_config.py +0 -0
  140. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/observer.py +0 -0
  141. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/overview/__init__.py +0 -0
  142. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/overview/web/style.css +0 -0
  143. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/persistence.py +0 -0
  144. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/pidfile.py +0 -0
  145. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/protocol/__init__.py +0 -0
  146. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/protocol/commands.py +0 -0
  147. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/protocol/extensions/federation.md +0 -0
  148. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/protocol/extensions/history.md +0 -0
  149. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/protocol/extensions/icons.md +0 -0
  150. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/protocol/extensions/rooms.md +0 -0
  151. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/protocol/extensions/tags.md +0 -0
  152. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/protocol/extensions/threads.md +0 -0
  153. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/protocol/message.py +0 -0
  154. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/protocol/protocol-index.md +0 -0
  155. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/protocol/replies.py +0 -0
  156. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/server/__init__.py +0 -0
  157. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/server/__main__.py +0 -0
  158. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/server/channel.py +0 -0
  159. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/server/client.py +0 -0
  160. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/server/config.py +0 -0
  161. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/server/history_store.py +0 -0
  162. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/server/ircd.py +0 -0
  163. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/server/remote_client.py +0 -0
  164. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/server/room_store.py +0 -0
  165. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/server/rooms_util.py +0 -0
  166. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/server/server_link.py +0 -0
  167. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/server/skill.py +0 -0
  168. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/server/skills/__init__.py +0 -0
  169. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/server/skills/history.py +0 -0
  170. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/server/skills/icon.py +0 -0
  171. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/server/skills/rooms.py +0 -0
  172. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/server/skills/threads.py +0 -0
  173. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/server/thread_store.py +0 -0
  174. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/culture/skills/culture/SKILL.md +0 -0
  175. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/agent-lifecycle.md +0 -0
  176. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/agentic-self-learn.md +0 -0
  177. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/agents/decentralized-config.md +0 -0
  178. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/architecture/agent-client.md +0 -0
  179. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/architecture/agent-harness-spec.md +0 -0
  180. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/architecture/design.md +0 -0
  181. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/architecture/harness-conformance.md +0 -0
  182. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/architecture/index.md +0 -0
  183. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/architecture/layer1-core-irc.md +0 -0
  184. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/architecture/layer2-attention.md +0 -0
  185. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/architecture/layer3-skills.md +0 -0
  186. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/architecture/layer4-federation.md +0 -0
  187. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/architecture/server-architecture.md +0 -0
  188. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/architecture/threads.md +0 -0
  189. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/channel-polling.md +0 -0
  190. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/acp/overview.md +0 -0
  191. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/acp/system-prompt.md +0 -0
  192. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/claude/configuration.md +0 -0
  193. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/claude/context-management.md +0 -0
  194. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/claude/irc-tools.md +0 -0
  195. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/claude/overview.md +0 -0
  196. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/claude/setup.md +0 -0
  197. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/claude/supervisor.md +0 -0
  198. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/claude/webhooks.md +0 -0
  199. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/codex/configuration.md +0 -0
  200. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/codex/context-management.md +0 -0
  201. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/codex/irc-tools.md +0 -0
  202. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/codex/overview.md +0 -0
  203. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/codex/setup.md +0 -0
  204. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/codex/supervisor.md +0 -0
  205. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/codex/webhooks.md +0 -0
  206. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/copilot/configuration.md +0 -0
  207. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/copilot/context-management.md +0 -0
  208. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/copilot/irc-tools.md +0 -0
  209. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/copilot/overview.md +0 -0
  210. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/copilot/setup.md +0 -0
  211. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/copilot/supervisor.md +0 -0
  212. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/clients/copilot/webhooks.md +0 -0
  213. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/index.md +0 -0
  214. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/operations/SECURITY.md +0 -0
  215. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/operations/bots.md +0 -0
  216. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/operations/ci.md +0 -0
  217. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/operations/docs-site.md +0 -0
  218. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/operations/index.md +0 -0
  219. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/operations/ops-tooling.md +0 -0
  220. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/operations/publishing.md +0 -0
  221. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/persistent-history.md +0 -0
  222. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/reflective-development.md +0 -0
  223. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/resources/github-copilot-sdk-instructions.md +0 -0
  224. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/rooms.md +0 -0
  225. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/server-rename.md +0 -0
  226. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-03-19-layer1-core-irc.md +0 -0
  227. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-03-21-layer5-agent-harness.md +0 -0
  228. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-03-30-overview.md +0 -0
  229. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-03-30-rooms-management.md +0 -0
  230. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-04-02-conversation-threads.md +0 -0
  231. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-04-02-ops-tooling.md +0 -0
  232. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-04-04-culture-rename.md +0 -0
  233. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-04-05-docs-speak-culture.md +0 -0
  234. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-04-06-console-chat.md +0 -0
  235. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-04-09-decentralized-agent-config.md +0 -0
  236. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-03-19-agentirc-design.md +0 -0
  237. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-03-21-layer5-agent-harness-design.md +0 -0
  238. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-03-30-overview-design.md +0 -0
  239. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-03-30-rooms-management-design.md +0 -0
  240. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-02-conversation-threads-design.md +0 -0
  241. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-02-ops-tooling-design.md +0 -0
  242. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-03-bots-webhooks-design.md +0 -0
  243. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-04-culture-rename-design.md +0 -0
  244. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-05-docs-speak-culture-design.md +0 -0
  245. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-05-lifecycle-reframe-design.md +0 -0
  246. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-06-cli-reorganization-design.md +0 -0
  247. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-06-console-chat-design.md +0 -0
  248. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-07-entity-archiving-design.md +0 -0
  249. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-07-reflective-development-reframe-design.md +0 -0
  250. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-08-reflective-development-deepening-design.md +0 -0
  251. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-09-decentralized-agent-config-design.md +0 -0
  252. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/use-cases/01-pair-programming.md +0 -0
  253. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/use-cases/02-code-review-ensemble.md +0 -0
  254. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/use-cases/03-cross-server-delegation.md +0 -0
  255. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/use-cases/04-knowledge-propagation.md +0 -0
  256. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/use-cases/05-the-observer.md +0 -0
  257. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/use-cases/06-cross-server-ops.md +0 -0
  258. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/use-cases/07-supervisor-intervention.md +0 -0
  259. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/use-cases/08-apps-as-agents.md +0 -0
  260. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/use-cases/09-research-swarm.md +0 -0
  261. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/use-cases/10-agent-lifecycle.md +0 -0
  262. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/use-cases-index.md +0 -0
  263. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/docs/what-is-culture.md +0 -0
  264. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/favicon.ico +0 -0
  265. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/packages/agent-harness/README.md +0 -0
  266. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/packages/agent-harness/config.py +0 -0
  267. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/packages/agent-harness/culture.yaml +0 -0
  268. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/packages/agent-harness/daemon.py +0 -0
  269. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/packages/agent-harness/ipc.py +0 -0
  270. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/packages/agent-harness/irc_transport.py +0 -0
  271. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/packages/agent-harness/message_buffer.py +0 -0
  272. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/packages/agent-harness/skill/SKILL.md +0 -0
  273. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/packages/agent-harness/skill/irc_client.py +0 -0
  274. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/packages/agent-harness/socket_server.py +0 -0
  275. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/packages/agent-harness/webhook.py +0 -0
  276. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/plugins/claude-code/.claude-plugin/plugin.json +0 -0
  277. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/plugins/claude-code/skills/irc/SKILL.md +0 -0
  278. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/plugins/codex/skills/culture-irc/SKILL.md +0 -0
  279. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/sonar-project.properties +0 -0
  280. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/__init__.py +0 -0
  281. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/conftest.py +0 -0
  282. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_acp_daemon.py +0 -0
  283. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_agent_runner.py +0 -0
  284. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_archive.py +0 -0
  285. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_bot.py +0 -0
  286. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_bot_config.py +0 -0
  287. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_bot_manager.py +0 -0
  288. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_bots_integration.py +0 -0
  289. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_channel.py +0 -0
  290. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_codex_daemon.py +0 -0
  291. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_connection.py +0 -0
  292. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_console_client.py +0 -0
  293. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_console_commands.py +0 -0
  294. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_console_connection.py +0 -0
  295. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_console_icons.py +0 -0
  296. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_console_integration.py +0 -0
  297. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_copilot_daemon.py +0 -0
  298. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_culture_config.py +0 -0
  299. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_daemon.py +0 -0
  300. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_daemon_config.py +0 -0
  301. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_daemon_ipc.py +0 -0
  302. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_discovery.py +0 -0
  303. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_display.py +0 -0
  304. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_federation.py +0 -0
  305. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_history.py +0 -0
  306. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_http_listener.py +0 -0
  307. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_integration_layer5.py +0 -0
  308. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_ipc.py +0 -0
  309. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_irc_transport.py +0 -0
  310. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_learn_prompt.py +0 -0
  311. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_link_reconnect.py +0 -0
  312. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_mention_alias.py +0 -0
  313. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_mention_target_cleanup.py +0 -0
  314. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_mentions.py +0 -0
  315. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_mesh_config.py +0 -0
  316. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_message.py +0 -0
  317. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_message_buffer.py +0 -0
  318. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_messaging.py +0 -0
  319. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_migrate_cli.py +0 -0
  320. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_modes.py +0 -0
  321. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_overview_cli.py +0 -0
  322. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_overview_collector.py +0 -0
  323. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_overview_web.py +0 -0
  324. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_persistence.py +0 -0
  325. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_pidfile.py +0 -0
  326. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_poll_loop.py +0 -0
  327. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_register_cli.py +0 -0
  328. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_room_persistence.py +0 -0
  329. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_rooms.py +0 -0
  330. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_rooms_federation.py +0 -0
  331. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_rooms_integration.py +0 -0
  332. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_server_icon_skill.py +0 -0
  333. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_setup_update_cli.py +0 -0
  334. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_skill_client.py +0 -0
  335. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_skill_docs.py +0 -0
  336. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_skills.py +0 -0
  337. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_socket_server.py +0 -0
  338. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_supervisor.py +0 -0
  339. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_template_engine.py +0 -0
  340. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_thread_buffer.py +0 -0
  341. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_threads.py +0 -0
  342. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_virtual_client.py +0 -0
  343. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_wait_for_port.py +0 -0
  344. {agentirc_cli-4.5.2 → agentirc_cli-5.0.0}/tests/test_webhook.py +0 -0
@@ -4,17 +4,37 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  Format follows [Keep a Changelog](https://keepachangelog.com/).
6
6
 
7
+ ## [5.0.0] - 2026-04-09
8
+
9
+
10
+ ### Added
11
+
12
+ - Mesh overview shows stopped/registered agents from server.yaml manifest (#178)
13
+
14
+
15
+ ### Changed
16
+
17
+ - CLI docs use correct noun-group syntax (culture agent create, culture channel read, etc.) (#186)
18
+ - Replaced non-existent culture send with culture channel message / culture agent message (#187)
19
+ - All doc references updated from agents.yaml to server.yaml (#188)
20
+ - Documented --mesh-config, --webhook-port, --data-dir server start flags (#189)
21
+
22
+
23
+ ### Fixed
24
+
25
+ - Mesh overview now includes agents that are registered but not running
26
+
7
27
  ## [4.5.2] - 2026-04-09
8
28
 
9
29
 
10
30
  ### Fixed
11
31
 
12
- - Agent status shows running when circuit breaker is open (#179)
13
- - Agent status list does not distinguish paused/sleeping agents (#180)
14
- - Learn prompt missing compact/clear commands and ask --timeout (#181)
15
- - Non-Claude backend skill docs missing features - all-backends rule violation (#182)
16
- - Admin skill and learn prompt missing many CLI commands (#183)
17
- - Mesh overview shows archived bots without archive indication (#184)
32
+ - Agent status now reports the circuit-open state correctly instead of showing running (#179)
33
+ - Agent status list now distinguishes paused and sleeping agents correctly (#180)
34
+ - Learn prompt now includes compact/clear commands and ask --timeout (#181)
35
+ - Non-Claude backend skill docs now include the required features and comply with the all-backends rule (#182)
36
+ - Admin skill and learn prompt now include the missing CLI commands (#183)
37
+ - Mesh overview now indicates when bots are archived (#184)
18
38
 
19
39
  ## [4.5.1] - 2026-04-09
20
40
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentirc-cli
3
- Version: 4.5.2
3
+ Version: 5.0.0
4
4
  Summary: Legacy alias for culture — install culture instead
5
5
  Project-URL: Homepage, https://github.com/OriNachum/culture
6
6
  Author: Ori Nachum
@@ -120,7 +120,13 @@ def dispatch(args: argparse.Namespace) -> None:
120
120
  # -----------------------------------------------------------------------
121
121
 
122
122
 
123
- def _collect_mesh_data(host: str, port: int, server_name: str, message_limit: int):
123
+ def _collect_mesh_data(
124
+ host: str,
125
+ port: int,
126
+ server_name: str,
127
+ message_limit: int,
128
+ manifest_agents: list | None = None,
129
+ ):
124
130
  """Collect mesh state, exiting with an error message on connection failure."""
125
131
  from culture.overview.collector import collect_mesh_state
126
132
 
@@ -131,6 +137,7 @@ def _collect_mesh_data(host: str, port: int, server_name: str, message_limit: in
131
137
  port=port,
132
138
  server_name=server_name,
133
139
  message_limit=message_limit,
140
+ manifest_agents=manifest_agents,
134
141
  )
135
142
  )
136
143
  except ConnectionRefusedError:
@@ -169,11 +176,16 @@ def _cmd_overview(args: argparse.Namespace) -> None:
169
176
  agent_filter=args.agent,
170
177
  message_limit=message_limit,
171
178
  refresh_interval=refresh_interval,
179
+ manifest_agents=config.agents,
172
180
  )
173
181
  return
174
182
 
175
183
  mesh = _collect_mesh_data(
176
- config.server.host, config.server.port, config.server.name, message_limit
184
+ config.server.host,
185
+ config.server.port,
186
+ config.server.name,
187
+ message_limit,
188
+ manifest_agents=config.agents,
177
189
  )
178
190
  output = render_text(
179
191
  mesh,
@@ -73,12 +73,33 @@ async def _collect_room(
73
73
  )
74
74
 
75
75
 
76
+ def _inject_stopped_agents(
77
+ all_agents: dict[str, Agent],
78
+ manifest_agents: list,
79
+ server_name: str,
80
+ ) -> None:
81
+ """Add stopped/registered agents from manifest that aren't on IRC."""
82
+ for agent_cfg in manifest_agents:
83
+ if agent_cfg.nick in all_agents or getattr(agent_cfg, "archived", False):
84
+ continue
85
+ all_agents[agent_cfg.nick] = Agent(
86
+ nick=agent_cfg.nick,
87
+ status="stopped",
88
+ activity="",
89
+ channels=agent_cfg.channels if isinstance(agent_cfg.channels, list) else [],
90
+ server=server_name,
91
+ backend=getattr(agent_cfg, "backend", None),
92
+ directory=getattr(agent_cfg, "directory", None),
93
+ )
94
+
95
+
76
96
  async def collect_mesh_state(
77
97
  host: str,
78
98
  port: int,
79
99
  server_name: str,
80
100
  message_limit: int = 4,
81
101
  ipc_enabled: bool = True,
102
+ manifest_agents: list | None = None,
82
103
  ) -> MeshState:
83
104
  """Collect a full mesh snapshot.
84
105
 
@@ -115,6 +136,10 @@ async def collect_mesh_state(
115
136
  if agent.server == server_name:
116
137
  agent.tags = await _query_tags(reader, writer, nick, agent_nick)
117
138
 
139
+ # Add stopped/registered agents from manifest
140
+ if manifest_agents:
141
+ _inject_stopped_agents(all_agents, manifest_agents, server_name)
142
+
118
143
  # Collect bot info from disk
119
144
  bots = _collect_bots()
120
145
 
@@ -20,7 +20,7 @@ class Agent:
20
20
  """An agent on the mesh (local or remote)."""
21
21
 
22
22
  nick: str
23
- status: str # "active", "idle", "paused", "remote"
23
+ status: str # "active", "idle", "paused", "remote", "stopped", "circuit-open"
24
24
  activity: str
25
25
  channels: list[str]
26
26
  server: str
@@ -4,7 +4,7 @@ from __future__ import annotations
4
4
 
5
5
  from culture.formatting import relative_time as _relative_time
6
6
 
7
- from .model import Agent, MeshState, Message, Room
7
+ from .model import Agent, BotInfo, MeshState, Message, Room
8
8
 
9
9
 
10
10
  def _escape_cell(text: str) -> str:
@@ -73,6 +73,34 @@ def render_text(
73
73
  return _render_default(mesh, message_limit)
74
74
 
75
75
 
76
+ def _summary_line(mesh: MeshState, fed_str: str) -> str:
77
+ """Build the summary line with room/agent counts."""
78
+ room_str = f"{len(mesh.rooms)} room{'s' if len(mesh.rooms) != 1 else ''}"
79
+ stopped = [a for a in mesh.agents if a.status == "stopped"]
80
+ if stopped:
81
+ online = len(mesh.agents) - len(stopped)
82
+ agent_str = f"{online} online, {len(stopped)} stopped ({len(mesh.agents)} total)"
83
+ else:
84
+ agent_str = f"{len(mesh.agents)} agent{'s' if len(mesh.agents) != 1 else ''}"
85
+ return f"{room_str} | {agent_str} | {fed_str}"
86
+
87
+
88
+ def _bots_section(bots: list[BotInfo]) -> list[str]:
89
+ """Render the bots table section."""
90
+ parts = [
91
+ "",
92
+ "## Bots",
93
+ "",
94
+ "| Bot | Trigger | Channels | Owner |",
95
+ "|-----|---------|----------|-------|",
96
+ ]
97
+ for bot in bots:
98
+ channels = ", ".join(bot.channels) if bot.channels else "-"
99
+ name = f"{bot.name} [archived]" if bot.archived else bot.name
100
+ parts.append(f"| {name} | {bot.trigger_type} | {channels} | {bot.owner} |")
101
+ return parts
102
+
103
+
76
104
  def _render_default(mesh: MeshState, message_limit: int) -> str:
77
105
  """Render the full mesh overview."""
78
106
  fed_count = len(mesh.federation_links)
@@ -80,29 +108,18 @@ def _render_default(mesh: MeshState, message_limit: int) -> str:
80
108
  if mesh.federation_links:
81
109
  fed_str += f" ({', '.join(mesh.federation_links)})"
82
110
 
83
- parts = [f"# {mesh.server_name} mesh"]
84
- parts.append("")
85
- parts.append(
86
- f"{len(mesh.rooms)} room{'s' if len(mesh.rooms) != 1 else ''} | "
87
- f"{len(mesh.agents)} agent{'s' if len(mesh.agents) != 1 else ''} | "
88
- f"{fed_str}"
89
- )
111
+ parts = [f"# {mesh.server_name} mesh", "", _summary_line(mesh, fed_str)]
90
112
 
91
113
  for room in mesh.rooms:
92
114
  parts.append("")
93
115
  parts.append(_render_room(room, message_limit))
94
116
 
95
- # Bots section
117
+ stopped_agents = [a for a in mesh.agents if a.status == "stopped"]
118
+ if stopped_agents:
119
+ parts.extend(["", "## Stopped agents", "", _agent_table(stopped_agents)])
120
+
96
121
  if mesh.bots:
97
- parts.append("")
98
- parts.append("## Bots")
99
- parts.append("")
100
- parts.append("| Bot | Trigger | Channels | Owner |")
101
- parts.append("|-----|---------|----------|-------|")
102
- for bot in mesh.bots:
103
- channels = ", ".join(bot.channels) if bot.channels else "-"
104
- name = f"{bot.name} [archived]" if bot.archived else bot.name
105
- parts.append(f"| {name} | {bot.trigger_type} | {channels} | {bot.owner} |")
122
+ parts.extend(_bots_section(mesh.bots))
106
123
 
107
124
  return "\n".join(parts) + "\n"
108
125
 
@@ -42,7 +42,7 @@ def _load_css() -> str:
42
42
 
43
43
  def _inject_status_badges(html: str) -> str:
44
44
  """Replace status text in table cells with styled badges."""
45
- for status in ("active", "idle", "paused", "remote"):
45
+ for status in ("active", "idle", "paused", "remote", "stopped", "circuit-open"):
46
46
  html = re.sub(
47
47
  rf"(<td>)\s*{status}\s*(</td>)",
48
48
  rf'\1<span class="status-{status}">{status}</span>\2',
@@ -148,6 +148,7 @@ class _OverviewHandler(SimpleHTTPRequestHandler):
148
148
  agent_filter: str | None = None
149
149
  message_limit: int = 4
150
150
  refresh_interval: int = 5
151
+ manifest_agents: list | None = None
151
152
 
152
153
  def do_GET(self):
153
154
  mesh = asyncio.run(
@@ -156,6 +157,7 @@ class _OverviewHandler(SimpleHTTPRequestHandler):
156
157
  port=self.irc_port,
157
158
  server_name=self.server_name,
158
159
  message_limit=self.message_limit,
160
+ manifest_agents=self.manifest_agents,
159
161
  )
160
162
  )
161
163
  html = render_html(
@@ -184,6 +186,7 @@ def _make_overview_handler(
184
186
  agent_filter: str | None,
185
187
  message_limit: int,
186
188
  refresh_interval: int,
189
+ manifest_agents: list | None = None,
187
190
  ) -> type[_OverviewHandler]:
188
191
  """Return an _OverviewHandler subclass with config bound as class attrs."""
189
192
  return type(
@@ -197,6 +200,7 @@ def _make_overview_handler(
197
200
  "agent_filter": agent_filter,
198
201
  "message_limit": message_limit,
199
202
  "refresh_interval": refresh_interval,
203
+ "manifest_agents": manifest_agents,
200
204
  },
201
205
  )
202
206
 
@@ -228,6 +232,7 @@ def serve_web(
228
232
  message_limit: int = 4,
229
233
  refresh_interval: int = 5,
230
234
  serve_port: int = 0,
235
+ manifest_agents: list | None = None,
231
236
  ) -> None:
232
237
  """Start a local HTTP server serving the live overview."""
233
238
  pid_name = f"overview-{server_name}"
@@ -241,6 +246,7 @@ def serve_web(
241
246
  agent_filter,
242
247
  message_limit,
243
248
  refresh_interval,
249
+ manifest_agents=manifest_agents,
244
250
  )
245
251
  httpd = HTTPServer(("127.0.0.1", serve_port), handler_cls)
246
252
  actual_port = httpd.server_address[1]
@@ -54,13 +54,13 @@ Both delegate to Claude Code's built-in mechanisms.
54
54
 
55
55
  ```bash
56
56
  # Start a single agent
57
- culture start spark-culture
57
+ culture agent start spark-culture
58
58
 
59
59
  # Start all configured agents
60
- culture start --all
60
+ culture agent start --all
61
61
  ```
62
62
 
63
- Configuration lives at `~/.culture/agents.yaml`.
63
+ Configuration lives at `~/.culture/server.yaml`.
64
64
 
65
65
  ## Detailed Documentation
66
66
 
@@ -28,7 +28,7 @@ Bring agents and humans into your culture.
28
28
 
29
29
  ```bash
30
30
  cd ~/my-project
31
- culture join --server spark
31
+ culture agent join --server spark
32
32
  ```
33
33
 
34
34
  This creates a member for the project and starts it immediately. The member
@@ -37,8 +37,8 @@ joins `#general`, introduces itself, and waits for work.
37
37
  For a two-step process — define first, start later:
38
38
 
39
39
  ```bash
40
- culture create --server spark
41
- culture start spark-my-project
40
+ culture agent create --server spark
41
+ culture agent start spark-my-project
42
42
  ```
43
43
 
44
44
  ## Linking cultures
@@ -62,11 +62,11 @@ Members on both servers appear in the same rooms. `spark-ori` and
62
62
  Watch how your culture lives — without disturbing it.
63
63
 
64
64
  ```bash
65
- culture overview # see everything at a glance
66
- culture read "#general" # read recent conversation
67
- culture who "#general" # see who is in a room
68
- culture channels # list all gathering places
69
- culture overview --serve # live web dashboard
65
+ culture mesh overview # see everything at a glance
66
+ culture channel read "#general" # read recent conversation
67
+ culture channel who "#general" # see who is in a room
68
+ culture channel list # list all gathering places
69
+ culture mesh overview --serve # live web dashboard
70
70
  ```
71
71
 
72
72
  These commands connect directly to the server — no running member
@@ -77,10 +77,10 @@ daemon required.
77
77
  Cultures have downtime. Members can sleep and wake on schedule.
78
78
 
79
79
  ```bash
80
- culture sleep spark-culture # pause a member
81
- culture wake spark-culture # resume a member
82
- culture sleep --all # everyone rests
83
- culture wake --all # everyone resumes
80
+ culture agent sleep spark-culture # pause a member
81
+ culture agent wake spark-culture # resume a member
82
+ culture agent sleep --all # everyone rests
83
+ culture agent wake --all # everyone resumes
84
84
  ```
85
85
 
86
86
  Members auto-sleep and auto-wake on configurable schedules — quiet
@@ -91,8 +91,8 @@ hours are natural.
91
91
  Teach a member how to participate in the culture.
92
92
 
93
93
  ```bash
94
- culture learn # print self-teaching prompt
95
- culture learn --nick spark-claude # for a specific member
94
+ culture agent learn # print self-teaching prompt
95
+ culture agent learn --nick spark-claude # for a specific member
96
96
  ```
97
97
 
98
98
  This generates a prompt your agent reads to learn the IRC tools,
@@ -103,8 +103,8 @@ collaboration patterns, and how to use skills within the culture.
103
103
  Make your culture permanent with auto-start services.
104
104
 
105
105
  ```bash
106
- culture setup # install services from mesh.yaml
107
- culture update # upgrade and restart everything
106
+ culture mesh setup # install services from mesh.yaml
107
+ culture mesh update # upgrade and restart everything
108
108
  ```
109
109
 
110
110
  This installs platform services (systemd, launchd, Task Scheduler) so
@@ -50,20 +50,20 @@ agent backend to work on that project.
50
50
 
51
51
  ```bash
52
52
  cd ~/your-project
53
- culture join --server spark
53
+ culture agent join --server spark
54
54
  # -> Agent created: spark-your-project
55
55
  # -> Agent 'spark-your-project' started
56
56
 
57
57
  # Or choose a different backend:
58
- culture join --server spark --agent codex
59
- culture join --server spark --agent copilot
60
- culture join --server spark --agent acp --acp-command '["cline","--acp"]'
58
+ culture agent join --server spark --agent codex
59
+ culture agent join --server spark --agent copilot
60
+ culture agent join --server spark --agent acp --acp-command '["cline","--acp"]'
61
61
 
62
- culture status
62
+ culture agent status
63
63
  ```
64
64
 
65
- > `culture join` creates and starts the agent in one step. For a two-step
66
- > workflow, use `culture create --server spark` then `culture start`.
65
+ > `culture agent join` creates and starts the agent in one step. For a two-step
66
+ > workflow, use `culture agent create --server spark` then `culture agent start`.
67
67
 
68
68
  The agent joins `#general`, idles, and responds to @mentions. It runs the
69
69
  configured backend with full access to the project directory.
@@ -114,7 +114,7 @@ the IRC tools to read and send messages on your behalf.
114
114
 
115
115
  ```bash
116
116
  cd ~/your-workspace
117
- culture join --server spark --nick ori
117
+ culture agent join --server spark --nick ori
118
118
  ```
119
119
 
120
120
  ### Step 2: Set the environment variable
@@ -190,9 +190,9 @@ Now you can just ask your agent: "read #general", "send hello to #general",
190
190
  Watch how your culture lives — no running daemon required:
191
191
 
192
192
  ```bash
193
- culture channels # list active channels
194
- culture who "#general" # see who's in a channel
195
- culture read "#general" # read recent messages
193
+ culture channel list # list active channels
194
+ culture channel who "#general" # see who's in a channel
195
+ culture channel read "#general" # read recent messages
196
196
  ```
197
197
 
198
198
  Useful for anyone curious about what's happening.
@@ -201,8 +201,8 @@ Useful for anyone curious about what's happening.
201
201
 
202
202
  ```bash
203
203
  culture server status --name spark # server running
204
- culture status # agents connected
205
- culture who "#general" # all participants visible
204
+ culture agent status # agents connected
205
+ culture channel who "#general" # all participants visible
206
206
  ```
207
207
 
208
208
  Send a test message and verify an agent responds:
@@ -226,7 +226,7 @@ enforces this — names always identify which culture a member belongs to.
226
226
  ## What's Next
227
227
 
228
228
  - [Agent Lifecycle](agent-lifecycle.md) — the Introduce → Educate → Join → Mentor → Promote lifecycle
229
- - [Configuration Reference](clients/claude/configuration.md) — full agents.yaml schema
229
+ - [Configuration Reference](clients/claude/configuration.md) — full server.yaml schema
230
230
  - [CLI Reference](operations/cli.md) — all culture commands
231
231
  - [Federation](architecture/layer4-federation.md) — link cultures across machines
232
232
  - [Supervisor](clients/claude/supervisor.md) — monitor member behavior