brigade-cli 0.8.1__tar.gz → 0.8.2__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 (235) hide show
  1. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/PKG-INFO +64 -31
  2. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/README.md +63 -30
  3. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/pyproject.toml +1 -1
  4. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/__init__.py +1 -1
  5. brigade_cli-0.8.2/src/brigade/agents.py +184 -0
  6. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/cli.py +43 -5
  7. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/dogfood_cmd.py +47 -15
  8. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/install.py +30 -0
  9. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/learn_cmd.py +19 -1
  10. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/operator_cmd.py +12 -3
  11. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/prompt.py +29 -1
  12. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/repos_cmd.py +5 -0
  13. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/runbook_cmd.py +6 -3
  14. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/security_cmd.py +30 -1
  15. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/selection.py +29 -1
  16. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/skills_cmd.py +27 -9
  17. brigade_cli-0.8.2/src/brigade/templates/codex/memory-handoffs/TEMPLATE.md +64 -0
  18. brigade_cli-0.8.2/src/brigade/templates/continue/memory-handoffs/TEMPLATE.md +64 -0
  19. brigade_cli-0.8.2/src/brigade/templates/copilot/memory-handoffs/TEMPLATE.md +64 -0
  20. brigade_cli-0.8.2/src/brigade/templates/cursor/memory-handoffs/TEMPLATE.md +64 -0
  21. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/generic/harness-adapter-checklist.md +2 -2
  22. brigade_cli-0.8.2/src/brigade/templates/goose/memory-handoffs/TEMPLATE.md +64 -0
  23. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/handoff/handoff-sources.example.json +11 -0
  24. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/handoff/openclaw-ingest-receipt.example.json +11 -0
  25. brigade_cli-0.8.2/src/brigade/templates/harnesses/adal.json +11 -0
  26. brigade_cli-0.8.2/src/brigade/templates/harnesses/aider.json +11 -0
  27. brigade_cli-0.8.2/src/brigade/templates/harnesses/antigravity.json +11 -0
  28. brigade_cli-0.8.2/src/brigade/templates/harnesses/continue.json +11 -0
  29. brigade_cli-0.8.2/src/brigade/templates/harnesses/copilot.json +11 -0
  30. brigade_cli-0.8.2/src/brigade/templates/harnesses/cursor.json +11 -0
  31. brigade_cli-0.8.2/src/brigade/templates/harnesses/goose.json +11 -0
  32. brigade_cli-0.8.2/src/brigade/templates/harnesses/kimi.json +11 -0
  33. brigade_cli-0.8.2/src/brigade/templates/harnesses/openhands.json +11 -0
  34. brigade_cli-0.8.2/src/brigade/templates/harnesses/pi.json +11 -0
  35. brigade_cli-0.8.2/src/brigade/templates/harnesses/qwen.json +11 -0
  36. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/hermes/README.md +1 -1
  37. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/hermes/memory-handoff.harness.json +1 -1
  38. brigade_cli-0.8.2/src/brigade/templates/hermes/memory-handoffs/TEMPLATE.md +64 -0
  39. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/hermes/model-lanes.harness.json +1 -1
  40. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/hermes/workspace.harness.json +1 -1
  41. brigade_cli-0.8.2/src/brigade/templates/kimi/memory-handoffs/TEMPLATE.md +64 -0
  42. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/handoff-flow.md +5 -5
  43. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/chat-memory-sweep.example.json +1 -1
  44. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/memory-care.example.json +1 -1
  45. brigade_cli-0.8.2/src/brigade/templates/opencode/memory-handoffs/TEMPLATE.md +64 -0
  46. brigade_cli-0.8.2/src/brigade/templates/openhands/memory-handoffs/TEMPLATE.md +64 -0
  47. brigade_cli-0.8.2/src/brigade/templates/pi/memory-handoffs/TEMPLATE.md +64 -0
  48. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/policies/personal.json +1 -1
  49. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/policies/public-content.json +1 -1
  50. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/policies/public-repo.json +1 -1
  51. brigade_cli-0.8.2/src/brigade/templates/qwen/memory-handoffs/TEMPLATE.md +64 -0
  52. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/AGENTS.md +2 -2
  53. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/INSTALL_FOR_AGENTS.md +2 -2
  54. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/tools_cmd.py +117 -6
  55. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/work_cmd.py +153 -10
  56. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade_cli.egg-info/PKG-INFO +64 -31
  57. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade_cli.egg-info/SOURCES.txt +22 -0
  58. brigade_cli-0.8.2/tests/test_agents.py +132 -0
  59. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_dogfood_cmd.py +76 -1
  60. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_gitignore.py +6 -0
  61. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_handoff_cmd.py +13 -4
  62. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_ingest.py +90 -0
  63. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_install.py +87 -0
  64. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_operator_cmd.py +59 -4
  65. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_prompt.py +5 -4
  66. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_repos_cmd.py +27 -0
  67. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_selection.py +55 -1
  68. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_skills_cmd.py +37 -8
  69. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_work_cmd.py +74 -1
  70. brigade_cli-0.8.1/src/brigade/agents.py +0 -92
  71. brigade_cli-0.8.1/tests/test_agents.py +0 -84
  72. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/LICENSE +0 -0
  73. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/MANIFEST.in +0 -0
  74. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/QUICKSTART.md +0 -0
  75. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/setup.cfg +0 -0
  76. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/__main__.py +0 -0
  77. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/aboyeur.py +0 -0
  78. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/add.py +0 -0
  79. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/budgets.py +0 -0
  80. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/budgets_cmd.py +0 -0
  81. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/center_cmd.py +0 -0
  82. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/chat_cmd.py +0 -0
  83. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/config.py +0 -0
  84. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/context_cmd.py +0 -0
  85. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/daily_cmd.py +0 -0
  86. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/doctor.py +0 -0
  87. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/fragments.py +0 -0
  88. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/handoff.py +0 -0
  89. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/handoff_cmd.py +0 -0
  90. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/hermes_adapter.py +0 -0
  91. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/ingest.py +0 -0
  92. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/managed.py +0 -0
  93. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/memory_cmd.py +0 -0
  94. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/notifications_cmd.py +0 -0
  95. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/pantry_cmd.py +0 -0
  96. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/phases_cmd.py +0 -0
  97. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/proc.py +0 -0
  98. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/projects_cmd.py +0 -0
  99. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/py.typed +0 -0
  100. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/reconfigure.py +0 -0
  101. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/registry.py +0 -0
  102. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/release_cmd.py +0 -0
  103. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/__init__.py +0 -0
  104. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/config.py +0 -0
  105. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/engine.py +0 -0
  106. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/extract.py +0 -0
  107. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/handoff.py +0 -0
  108. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/llm.py +0 -0
  109. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/registry.py +0 -0
  110. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/report.py +0 -0
  111. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/sources/__init__.py +0 -0
  112. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/sources/cli.py +0 -0
  113. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/sources/local.py +0 -0
  114. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/sources/web.py +0 -0
  115. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/types.py +0 -0
  116. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research_cmd.py +0 -0
  117. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/roadmap_cmd.py +0 -0
  118. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/roster.py +0 -0
  119. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/roster_cmd.py +0 -0
  120. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/runs_cmd.py +0 -0
  121. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/scrub.py +0 -0
  122. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/station.py +0 -0
  123. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/status.py +0 -0
  124. {brigade_cli-0.8.1/src/brigade/templates/claude → brigade_cli-0.8.2/src/brigade/templates/adal}/memory-handoffs/TEMPLATE.md +0 -0
  125. {brigade_cli-0.8.1/src/brigade/templates/codex → brigade_cli-0.8.2/src/brigade/templates/aider}/memory-handoffs/TEMPLATE.md +0 -0
  126. {brigade_cli-0.8.1/src/brigade/templates/hermes → brigade_cli-0.8.2/src/brigade/templates/antigravity}/memory-handoffs/TEMPLATE.md +0 -0
  127. {brigade_cli-0.8.1/src/brigade/templates/opencode → brigade_cli-0.8.2/src/brigade/templates/claude}/memory-handoffs/TEMPLATE.md +0 -0
  128. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/depth/repo.json +0 -0
  129. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/depth/workspace.json +0 -0
  130. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/generic/memory-contract.md +0 -0
  131. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/harnesses/claude.json +0 -0
  132. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/harnesses/codex.json +0 -0
  133. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/harnesses/hermes.json +0 -0
  134. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/harnesses/openclaw.json +0 -0
  135. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/harnesses/opencode.json +0 -0
  136. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/hooks/pre-push +0 -0
  137. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/includes/publisher.json +0 -0
  138. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/backup-restic.md +0 -0
  139. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/chat-surface-crawlers.md +0 -0
  140. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/content-safety.md +0 -0
  141. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/memory-architecture.md +0 -0
  142. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/memory-care-staleness.md +0 -0
  143. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/memory-scanner.md +0 -0
  144. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/multi-workspace-handoff-admin.md +0 -0
  145. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/obsidian-notes.md +0 -0
  146. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/pipeline-standups.md +0 -0
  147. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/tokenjuice-output-compaction.md +0 -0
  148. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/openclaw/README.md +0 -0
  149. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/openclaw/acp-escalation.openclaw.json +0 -0
  150. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/openclaw/memory-sweep-cron.openclaw.json +0 -0
  151. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/openclaw/model-aliases.openclaw.json +0 -0
  152. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/openclaw/ollama-memory-search.openclaw.json +0 -0
  153. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/scripts/backup-restic.sh +0 -0
  154. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/skills/note/SKILL.md +0 -0
  155. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/CLAUDE.md +0 -0
  156. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/HEARTBEAT.md +0 -0
  157. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/IDENTITY.md +0 -0
  158. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/MEMORY.md +0 -0
  159. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/SAFETY_RULES.md +0 -0
  160. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/SOUL.md +0 -0
  161. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/TOOLS.md +0 -0
  162. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/USER.md +0 -0
  163. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/rules/acceptance-driven-work.md +0 -0
  164. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/rules/issue-tdd-loop.md +0 -0
  165. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates.py +0 -0
  166. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/toml_compat.py +0 -0
  167. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/untrusted.py +0 -0
  168. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/untrusted_cmd.py +0 -0
  169. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade_cli.egg-info/dependency_links.txt +0 -0
  170. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade_cli.egg-info/entry_points.txt +0 -0
  171. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade_cli.egg-info/requires.txt +0 -0
  172. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade_cli.egg-info/top_level.txt +0 -0
  173. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_aboyeur.py +0 -0
  174. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_add.py +0 -0
  175. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_budgets.py +0 -0
  176. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_cli_alias.py +0 -0
  177. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_config.py +0 -0
  178. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_doctor.py +0 -0
  179. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_fragments.py +0 -0
  180. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_handoff.py +0 -0
  181. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_init.py +0 -0
  182. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_managed.py +0 -0
  183. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_memory_cmd.py +0 -0
  184. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_neutrality.py +0 -0
  185. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_notifications_cmd.py +0 -0
  186. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_pantry_cmd.py +0 -0
  187. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase100_cmd.py +0 -0
  188. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase101_cmd.py +0 -0
  189. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase165_cmd.py +0 -0
  190. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase36_cmd.py +0 -0
  191. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase37_cmd.py +0 -0
  192. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase38_cmd.py +0 -0
  193. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase39_cmd.py +0 -0
  194. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase40_cmd.py +0 -0
  195. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase41_cmd.py +0 -0
  196. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase42_cmd.py +0 -0
  197. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase43_cmd.py +0 -0
  198. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase44_cmd.py +0 -0
  199. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase45_cmd.py +0 -0
  200. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase46_50_cmd.py +0 -0
  201. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase51_55_cmd.py +0 -0
  202. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase56_60_cmd.py +0 -0
  203. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase96_cmd.py +0 -0
  204. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase97_cmd.py +0 -0
  205. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase98_cmd.py +0 -0
  206. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase99_cmd.py +0 -0
  207. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_privacy_regression.py +0 -0
  208. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_proc.py +0 -0
  209. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_reconfigure.py +0 -0
  210. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_registry.py +0 -0
  211. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_release_cmd.py +0 -0
  212. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_cli_sources.py +0 -0
  213. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_cmd.py +0 -0
  214. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_config.py +0 -0
  215. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_engine.py +0 -0
  216. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_extract.py +0 -0
  217. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_handoff.py +0 -0
  218. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_llm.py +0 -0
  219. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_local_sources.py +0 -0
  220. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_registry.py +0 -0
  221. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_report.py +0 -0
  222. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_types.py +0 -0
  223. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_web.py +0 -0
  224. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_roadmap_cmd.py +0 -0
  225. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_roster.py +0 -0
  226. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_roster_cmd.py +0 -0
  227. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_run_cli.py +0 -0
  228. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_runbook_cmd.py +0 -0
  229. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_runs_cmd.py +0 -0
  230. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_scrub.py +0 -0
  231. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_security_cmd.py +0 -0
  232. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_station.py +0 -0
  233. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_status.py +0 -0
  234. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_toml_compat.py +0 -0
  235. {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_untrusted.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: brigade-cli
3
- Version: 0.8.1
3
+ Version: 0.8.2
4
4
  Summary: AI agent memory, handoffs, and local guardrails for Codex, Claude Code, OpenCode, Hermes, and OpenClaw.
5
5
  Author-email: Solomon Neas <srneas@gmail.com>
6
6
  License: MIT
@@ -34,7 +34,7 @@ Dynamic: license-file
34
34
  <h1 align="center">Brigade CLI</h1>
35
35
 
36
36
  <p align="center">
37
- <strong>AI agent memory, handoffs, and local guardrails for Codex, Claude Code, OpenCode, Hermes, and OpenClaw.</strong>
37
+ <strong>AI agent memory, handoffs, and local guardrails for Codex, Claude Code, OpenCode, Antigravity, Pi, Cursor, Aider, Goose, Continue, GitHub Copilot CLI, Qwen Code, Kimi Code, AdaL, OpenHands, Hermes, and OpenClaw.</strong>
38
38
  </p>
39
39
 
40
40
  <p align="center">
@@ -44,17 +44,13 @@ Dynamic: license-file
44
44
  <img src="https://img.shields.io/badge/license-MIT-green?style=for-the-badge" alt="MIT license">
45
45
  </p>
46
46
 
47
- Brigade is a local-first operator CLI for AI agent workspaces. Local-first means local data on the operator-controlled machine first, before any external service; that machine can be a laptop, workstation, or VPS. The public GitHub repo is [`escoffier-labs/brigade`](https://github.com/escoffier-labs/brigade), the PyPI package is [`brigade-cli`](https://pypi.org/project/brigade-cli/), and the command is `brigade`.
47
+ Your agents run loops. Brigade keeps the receipts.
48
48
 
49
- Brigade helps AI agent tools work from the same memory without turning that memory into a junk drawer.
49
+ Harness agents ship smart models with empty heads. Every session they wake up knowing nothing about your machine, your rules, or what they learned yesterday, and whatever each one figures out scatters across tools and dies there.
50
50
 
51
- ## Mise En Place
52
-
53
- Mise en place, pronounced "Meez", means everything is in its place before the work starts.
54
-
55
- In a kitchen, that is the chef's first job: prep the station, label the ingredients, sharpen the tools, and make sure service does not depend on hunting for basics mid-rush. For agents, it is the same job: rules, memory, handoff inboxes, tools, guards, receipts, and verification paths set up before the session gets expensive.
51
+ **Brigade is a local control plane for agent memory, work, tools, research, review, and release.** Writer agents like Codex, Claude Code, OpenCode, Antigravity, Pi, Cursor, Aider, Goose, Continue, GitHub Copilot CLI, Qwen Code, Kimi Code, AdaL, and OpenHands leave handoff notes as they work. A memory owner like OpenClaw or Hermes ingests the ones worth keeping. Brigade lints, guards, and routes everything in between, and every consequential action lands a receipt in a plain file you can grep, diff, and prune. Nothing is published, pushed, or saved behind your back, and the shared memory never decays into a junk drawer.
56
52
 
57
- This is the most important part of Brigade. The chef owns the station, and every agent working in it should leave the setup clearer, safer, and easier for the next agent to use.
53
+ It runs on the operator-controlled machine first, before any external service, whether that machine is a laptop, workstation, or VPS: local by default, loud about the exceptions. The GitHub repo is [`escoffier-labs/brigade`](https://github.com/escoffier-labs/brigade), the PyPI package is [`brigade-cli`](https://pypi.org/project/brigade-cli/), and the command is `brigade`.
58
54
 
59
55
  ## Current Status
60
56
 
@@ -66,6 +62,8 @@ It is still early-stage and being actively fleshed out. The current focus is har
66
62
 
67
63
  Want an agent to set this up for you? Point it at this repository. The root [`AGENTS.md`](AGENTS.md) tells agents how to install Brigade, verify with doctor, adapt your existing homegrown workflow instead of replacing it, keep local generated folders out of commits, and stop before any remote or destructive action. The fuller walkthrough is in [`docs/agent-assisted-setup.md`](docs/agent-assisted-setup.md).
68
64
 
65
+ New here? Start with [`docs/first-10-minutes.md`](docs/first-10-minutes.md). Maintainers can use [`docs/support-response-templates.md`](docs/support-response-templates.md) for quick first replies to install, quickstart, doctor, commit-scope, and security questions.
66
+
69
67
  Good first install:
70
68
 
71
69
  ```bash
@@ -85,10 +83,10 @@ brigade operator doctor --target ~/agent-workspace --profile local-operator
85
83
  For multiple agent surfaces:
86
84
 
87
85
  ```bash
88
- brigade operator quickstart --target ./my-repo --harnesses codex,claude,opencode
86
+ brigade operator quickstart --target ./my-repo --harnesses codex,claude,opencode,antigravity,pi,cursor,aider,goose,continue,copilot,qwen,kimi,adal,openhands
89
87
  ```
90
88
 
91
- If you use [OpenClaw](https://github.com/solomonneas/openclaw), [Hermes](https://github.com/NousResearch/hermes-agent), [Codex](https://github.com/openai/codex), Claude Code, [OpenCode](https://github.com/opencode-ai/opencode), or a mix of them, Brigade gives those tools a shared local pattern:
89
+ If you use [OpenClaw](https://github.com/solomonneas/openclaw), [Hermes](https://github.com/NousResearch/hermes-agent), [Codex](https://github.com/openai/codex), Claude Code, [OpenCode](https://github.com/opencode-ai/opencode), Antigravity, Pi, Cursor, or a mix of them, Brigade gives those tools a shared local pattern:
92
90
 
93
91
  1. agents write handoff notes
94
92
  2. the memory ingester scans, lints, and routes them
@@ -115,11 +113,12 @@ flowchart TB
115
113
  CODEX["<b>Codex CLI</b><br/>handoff writer"]
116
114
  CLAUDE["<b>Claude Code</b><br/>handoff writer"]
117
115
  OPEN["<b>OpenCode</b><br/>handoff writer"]
116
+ MORE["<b>more CLI writers</b><br/>Antigravity · Pi · Cursor<br/>Aider · Goose · Continue<br/>Copilot · Qwen · Kimi · AdaL · OpenHands"]
118
117
  HERMES["<b>Hermes</b><br/>writer or owner"]
119
118
  end
120
119
 
121
- CODEX & CLAUDE & OPEN & HERMES == handoff drafts ==> BRIGADE
122
- MEMORY -. context .-> CODEX & CLAUDE & OPEN & HERMES
120
+ CODEX & CLAUDE & OPEN & MORE & HERMES == handoff drafts ==> BRIGADE
121
+ MEMORY -. context .-> CODEX & CLAUDE & OPEN & MORE & HERMES
123
122
 
124
123
  subgraph LOCAL [" local operator lanes "]
125
124
  WORK["work sessions<br/>tasks · plans · verification"]
@@ -138,7 +137,7 @@ flowchart TB
138
137
  class OWNER owner;
139
138
  class BRIGADE brigade;
140
139
  class MEMORY,STATE state;
141
- class WORK,SCAN,RELEASE,CODEX,CLAUDE,OPEN,HERMES lane;
140
+ class WORK,SCAN,RELEASE,CODEX,CLAUDE,OPEN,MORE,HERMES lane;
142
141
  ```
143
142
 
144
143
  > Brigade was extracted from the [**solos-cookbook**](https://github.com/solomonneas/solos-cookbook), a documented 24/7 multi-agent stack running in production. If you want the full picture of how Brigade fits into a real setup, start there, and a star helps other people find it.
@@ -161,13 +160,21 @@ Agent tools are getting good enough that people use more than one of them. That
161
160
  Brigade gives the setup a home base.
162
161
 
163
162
  - OpenClaw or Hermes can be the main memory owner.
164
- - Codex, Claude Code, OpenCode, and Hermes can write handoff notes.
163
+ - Codex, Claude Code, OpenCode, Antigravity, Pi, Cursor, Aider, Goose, Continue, GitHub Copilot CLI, Qwen Code, Kimi Code, AdaL, OpenHands, and Hermes can write handoff notes.
165
164
  - You can inspect and lint those notes before saving them.
166
165
  - Local receipts show what happened during work, scans, and reviews.
167
166
  - Risky actions stay manual.
168
167
 
169
168
  The goal is not to make a giant automation machine. The goal is to make agent memory understandable, reviewable, and portable across harnesses.
170
169
 
170
+ ## Mise En Place
171
+
172
+ The name comes from the kitchen. A *brigade de cuisine* is the staff that runs the line, and *mise en place*, pronounced "meez", means everything is in its place before the work starts.
173
+
174
+ In a kitchen, that is the chef's first job: prep the station, label the ingredients, sharpen the tools, and make sure service does not depend on hunting for basics mid-rush. For agents, it is the same job: rules, memory, handoff inboxes, tools, guards, receipts, and verification paths set up before the session gets expensive.
175
+
176
+ That is the idea Brigade is built on. The chef owns the station, and every agent working in it should leave the setup clearer, safer, and easier for the next agent to use.
177
+
171
178
  ## Start Small
172
179
 
173
180
  Install:
@@ -190,7 +197,7 @@ brigade operator quickstart --target ~/agent-workspace --depth workspace --harne
190
197
  brigade operator doctor --target ~/agent-workspace --profile local-operator
191
198
  ```
192
199
 
193
- Use `--dry-run` first if you want to preview the local files Brigade will write. To wire more than one agent surface, pass a comma-separated list such as `--harnesses codex,claude,opencode`.
200
+ Use `--dry-run` first if you want to preview the local files Brigade will write. To wire more than one agent surface, pass a comma-separated list such as `--harnesses codex,claude,opencode,antigravity,pi,cursor,aider,goose,continue,copilot,qwen,kimi,adal,openhands`.
194
201
 
195
202
  If you already have a homegrown setup with scripts, handoff folders, crons, or process managers, use the adoption loop before changing it:
196
203
 
@@ -210,7 +217,7 @@ brigade operator surfaces import-issues --target ~/agent-workspace --json
210
217
 
211
218
  `adopt plan` is read-only. `adopt capture` writes a redacted local snapshot under `.brigade/operator/adoption/`. `adopt import-issues` routes adoption gaps into the normal work inbox so the migration shows up in `work brief` and the daily loop. `operator migration status/doctor/import-issues/consolidate` rolls adoption state, surface review state, and pending migration work into one replacement-progress view, then lets a reviewed rollup supersede tiny record-level imports. `operator surfaces capture/list/doctor/review/reviews/import-issues` keeps a separate redacted registry for shell crontab, OpenClaw cron, and PM2 coverage under `.brigade/operator/surfaces/`. Scheduler and process surfaces are reported as counts, status totals, ordinal labels, review decisions, and fingerprints, not raw scheduler lines, job names, process names, command paths, host details, or environment values.
212
219
 
213
- For a fuller first-run walkthrough and troubleshooting checklist, see [`docs/new-user-quickstart.md`](docs/new-user-quickstart.md). If quickstart fails, use the Quickstart setup problem issue form and include the redacted `issue_report` from `brigade operator quickstart --json`.
220
+ For a fuller first-run walkthrough and troubleshooting checklist, see [`docs/new-user-quickstart.md`](docs/new-user-quickstart.md). For the shortest path, use [`docs/first-10-minutes.md`](docs/first-10-minutes.md). If quickstart fails, use the Quickstart setup problem issue form and include the redacted `issue_report` from `brigade operator quickstart --json`.
214
221
 
215
222
  Write a handoff note:
216
223
 
@@ -231,12 +238,27 @@ That is the simplest useful version of Brigade: shared handoffs, local review, d
231
238
 
232
239
  ## How Memory Handoffs Work
233
240
 
234
- Each writer harness gets its own local inbox:
235
-
236
- - `.codex/memory-handoffs/`
237
- - `.claude/memory-handoffs/`
238
- - `.opencode/memory-handoffs/`
239
- - `.hermes/memory-handoffs/`
241
+ Each writer harness gets its own local inbox. Use `brigade handoff draft --inbox <id>` to write to the matching inbox, or select the harness with `brigade operator quickstart --harnesses ...`.
242
+
243
+ | Writer | `--inbox` / harness id | Local inbox | Brigade support |
244
+ |---|---|---|---|
245
+ | Codex CLI | `codex` | `.codex/memory-handoffs/` | handoff template, ingest source, dogfood adapter, tools, skills |
246
+ | Claude Code | `claude` | `.claude/memory-handoffs/` | handoff template, ingest source, tools, skills |
247
+ | OpenCode | `opencode` | `.opencode/memory-handoffs/` | handoff template, ingest source, dogfood adapter, tools, skills |
248
+ | Antigravity | `antigravity` | `.antigravity/memory-handoffs/` | handoff template, ingest source, dogfood adapter, tools, skills |
249
+ | Pi | `pi` | `.pi/memory-handoffs/` | handoff template, ingest source, dogfood adapter, tools, skills |
250
+ | Cursor | `cursor` | `.cursor/memory-handoffs/` | handoff template, ingest source, dogfood adapter, rules, skills |
251
+ | Aider | `aider` | `.aider/memory-handoffs/` | handoff template, ingest source, dogfood adapter, tools, skills |
252
+ | Goose | `goose` | `.goose/memory-handoffs/` | handoff template, ingest source, dogfood adapter, tools, skills |
253
+ | Continue | `continue` | `.continue/memory-handoffs/` | handoff template, ingest source, dogfood adapter, rules, skills |
254
+ | GitHub Copilot CLI | `copilot` | `.copilot/memory-handoffs/` | handoff template, ingest source, dogfood adapter, instructions, skills |
255
+ | Qwen Code | `qwen` | `.qwen/memory-handoffs/` | handoff template, ingest source, dogfood adapter, tools, skills |
256
+ | Kimi Code | `kimi` | `.kimi/memory-handoffs/` | handoff template, ingest source, dogfood adapter, tools, skills |
257
+ | AdaL | `adal` | `.adal/memory-handoffs/` | handoff template, ingest source, dogfood adapter, tools, skills |
258
+ | OpenHands | `openhands` | `.openhands/memory-handoffs/` | handoff template, ingest source, dogfood adapter, instructions, skills |
259
+ | Hermes | `hermes` | `.hermes/memory-handoffs/` | handoff template, ingest source, owner adapter fragments |
260
+
261
+ OpenClaw is usually the canonical memory owner rather than a writer inbox. Add it with `--harnesses openclaw,...` when the workspace should own durable memory.
240
262
 
241
263
  The memory owner, usually OpenClaw or Hermes, can ingest handoffs into the permanent memory files. Brigade keeps the handoff format consistent so different tools can contribute without each one inventing its own note style.
242
264
 
@@ -246,6 +268,17 @@ flowchart LR
246
268
  C[".codex/memory-handoffs/"]
247
269
  CL[".claude/memory-handoffs/"]
248
270
  O[".opencode/memory-handoffs/"]
271
+ A[".antigravity/memory-handoffs/"]
272
+ P[".pi/memory-handoffs/"]
273
+ CU[".cursor/memory-handoffs/"]
274
+ AI[".aider/memory-handoffs/"]
275
+ G[".goose/memory-handoffs/"]
276
+ CO[".continue/memory-handoffs/"]
277
+ GH[".copilot/memory-handoffs/"]
278
+ Q[".qwen/memory-handoffs/"]
279
+ K[".kimi/memory-handoffs/"]
280
+ AD[".adal/memory-handoffs/"]
281
+ OH[".openhands/memory-handoffs/"]
249
282
  H[".hermes/memory-handoffs/"]
250
283
  end
251
284
 
@@ -254,14 +287,14 @@ flowchart LR
254
287
  OWNER["OpenClaw / Hermes<br/>memory owner"]
255
288
  MEM["durable memory<br/>cards · docs · learnings"]
256
289
 
257
- C & CL & O & H --> DRAFT --> REVIEW
290
+ C & CL & O & A & P & CU & AI & G & CO & GH & Q & K & AD & OH & H --> DRAFT --> REVIEW
258
291
  REVIEW -->|safe targeted note| OWNER --> MEM
259
292
  REVIEW -->|needs judgment| INBOX["review inbox"]
260
293
 
261
294
  classDef local fill:#eff6ff,stroke:#2563eb,color:#1e3a8a;
262
295
  classDef review fill:#fff7ed,stroke:#ea580c,color:#7c2d12;
263
296
  classDef memory fill:#ecfdf5,stroke:#059669,color:#064e3b;
264
- class C,CL,O,H,DRAFT local;
297
+ class C,CL,O,A,P,CU,AI,G,CO,GH,Q,K,AD,OH,H,DRAFT local;
265
298
  class REVIEW,INBOX review;
266
299
  class OWNER,MEM memory;
267
300
  ```
@@ -364,7 +397,7 @@ For memory:
364
397
  - scan handoff drafts with Content Guard before they become durable memory
365
398
  - track which local inboxes the ingestor should watch
366
399
  - reconcile ingester receipts so skipped, failed, routed, and promoted notes stay visible
367
- - support OpenClaw, Hermes, Codex, Claude Code, and OpenCode conventions
400
+ - support OpenClaw, Hermes, Codex, Claude Code, OpenCode, Antigravity, Pi, Cursor, Aider, Goose, Continue, GitHub Copilot CLI, Qwen Code, Kimi Code, AdaL, and OpenHands conventions
368
401
 
369
402
  For local work:
370
403
 
@@ -480,7 +513,7 @@ flowchart LR
480
513
 
481
514
  SOURCE --> CATALOG --> PROJECT
482
515
  CATALOG --> APPROVAL --> RUN
483
- PROJECT -. local generated .-> HARNESSES[".codex · .claude<br/>.opencode · .mcp"]
516
+ PROJECT -. local generated .-> HARNESSES[".codex · .claude<br/>.opencode · .antigravity · .pi · .cursor<br/>.aider · .goose · .continue · .copilot<br/>.qwen · .kimi · .adal · .openhands · .mcp"]
484
517
 
485
518
  classDef source fill:#ecfdf5,stroke:#059669,color:#064e3b;
486
519
  classDef local fill:#eff6ff,stroke:#2563eb,color:#1e3a8a;
@@ -595,7 +628,7 @@ OpenClaw can be the memory owner. Brigade gives nearby tools a way to contribute
595
628
 
596
629
  ```mermaid
597
630
  flowchart LR
598
- WRITERS["Codex · Claude · OpenCode<br/>writer inboxes"]
631
+ WRITERS["Codex · Claude · OpenCode<br/>Antigravity · Pi · Cursor writer inboxes"]
599
632
  BRIGADE["Brigade<br/>draft · lint · source coverage"]
600
633
  OPENCLAW["OpenClaw<br/>memory owner"]
601
634
  MEMORY["canonical memory"]
@@ -615,7 +648,7 @@ flowchart LR
615
648
  A repo-adjacent setup is:
616
649
 
617
650
  ```bash
618
- brigade init --target ./my-repo --depth repo --harnesses openclaw,codex,claude,opencode
651
+ brigade init --target ./my-repo --depth repo --harnesses openclaw,codex,claude,opencode,antigravity,pi,cursor,aider,goose,continue,copilot,qwen,kimi,adal,openhands
619
652
  brigade handoff sources init --target ./my-repo
620
653
  brigade handoff doctor --target ./my-repo
621
654
  ```
@@ -738,7 +771,7 @@ The full technical walkthrough still exists; it is just not the README anymore.
738
771
 
739
772
  ## Tiny Glossary
740
773
 
741
- - **Harness**: an agent tool such as OpenClaw, Hermes, Codex, Claude Code, or OpenCode.
774
+ - **Harness**: an agent tool such as OpenClaw, Hermes, Codex, Claude Code, OpenCode, Antigravity, Pi, or Cursor.
742
775
  - **Handoff**: a note an agent writes for later review.
743
776
  - **Inbox**: the local folder where handoff notes wait.
744
777
  - **Memory owner**: the place that keeps durable shared memory.
@@ -5,7 +5,7 @@
5
5
  <h1 align="center">Brigade CLI</h1>
6
6
 
7
7
  <p align="center">
8
- <strong>AI agent memory, handoffs, and local guardrails for Codex, Claude Code, OpenCode, Hermes, and OpenClaw.</strong>
8
+ <strong>AI agent memory, handoffs, and local guardrails for Codex, Claude Code, OpenCode, Antigravity, Pi, Cursor, Aider, Goose, Continue, GitHub Copilot CLI, Qwen Code, Kimi Code, AdaL, OpenHands, Hermes, and OpenClaw.</strong>
9
9
  </p>
10
10
 
11
11
  <p align="center">
@@ -15,17 +15,13 @@
15
15
  <img src="https://img.shields.io/badge/license-MIT-green?style=for-the-badge" alt="MIT license">
16
16
  </p>
17
17
 
18
- Brigade is a local-first operator CLI for AI agent workspaces. Local-first means local data on the operator-controlled machine first, before any external service; that machine can be a laptop, workstation, or VPS. The public GitHub repo is [`escoffier-labs/brigade`](https://github.com/escoffier-labs/brigade), the PyPI package is [`brigade-cli`](https://pypi.org/project/brigade-cli/), and the command is `brigade`.
18
+ Your agents run loops. Brigade keeps the receipts.
19
19
 
20
- Brigade helps AI agent tools work from the same memory without turning that memory into a junk drawer.
20
+ Harness agents ship smart models with empty heads. Every session they wake up knowing nothing about your machine, your rules, or what they learned yesterday, and whatever each one figures out scatters across tools and dies there.
21
21
 
22
- ## Mise En Place
23
-
24
- Mise en place, pronounced "Meez", means everything is in its place before the work starts.
25
-
26
- In a kitchen, that is the chef's first job: prep the station, label the ingredients, sharpen the tools, and make sure service does not depend on hunting for basics mid-rush. For agents, it is the same job: rules, memory, handoff inboxes, tools, guards, receipts, and verification paths set up before the session gets expensive.
22
+ **Brigade is a local control plane for agent memory, work, tools, research, review, and release.** Writer agents like Codex, Claude Code, OpenCode, Antigravity, Pi, Cursor, Aider, Goose, Continue, GitHub Copilot CLI, Qwen Code, Kimi Code, AdaL, and OpenHands leave handoff notes as they work. A memory owner like OpenClaw or Hermes ingests the ones worth keeping. Brigade lints, guards, and routes everything in between, and every consequential action lands a receipt in a plain file you can grep, diff, and prune. Nothing is published, pushed, or saved behind your back, and the shared memory never decays into a junk drawer.
27
23
 
28
- This is the most important part of Brigade. The chef owns the station, and every agent working in it should leave the setup clearer, safer, and easier for the next agent to use.
24
+ It runs on the operator-controlled machine first, before any external service, whether that machine is a laptop, workstation, or VPS: local by default, loud about the exceptions. The GitHub repo is [`escoffier-labs/brigade`](https://github.com/escoffier-labs/brigade), the PyPI package is [`brigade-cli`](https://pypi.org/project/brigade-cli/), and the command is `brigade`.
29
25
 
30
26
  ## Current Status
31
27
 
@@ -37,6 +33,8 @@ It is still early-stage and being actively fleshed out. The current focus is har
37
33
 
38
34
  Want an agent to set this up for you? Point it at this repository. The root [`AGENTS.md`](AGENTS.md) tells agents how to install Brigade, verify with doctor, adapt your existing homegrown workflow instead of replacing it, keep local generated folders out of commits, and stop before any remote or destructive action. The fuller walkthrough is in [`docs/agent-assisted-setup.md`](docs/agent-assisted-setup.md).
39
35
 
36
+ New here? Start with [`docs/first-10-minutes.md`](docs/first-10-minutes.md). Maintainers can use [`docs/support-response-templates.md`](docs/support-response-templates.md) for quick first replies to install, quickstart, doctor, commit-scope, and security questions.
37
+
40
38
  Good first install:
41
39
 
42
40
  ```bash
@@ -56,10 +54,10 @@ brigade operator doctor --target ~/agent-workspace --profile local-operator
56
54
  For multiple agent surfaces:
57
55
 
58
56
  ```bash
59
- brigade operator quickstart --target ./my-repo --harnesses codex,claude,opencode
57
+ brigade operator quickstart --target ./my-repo --harnesses codex,claude,opencode,antigravity,pi,cursor,aider,goose,continue,copilot,qwen,kimi,adal,openhands
60
58
  ```
61
59
 
62
- If you use [OpenClaw](https://github.com/solomonneas/openclaw), [Hermes](https://github.com/NousResearch/hermes-agent), [Codex](https://github.com/openai/codex), Claude Code, [OpenCode](https://github.com/opencode-ai/opencode), or a mix of them, Brigade gives those tools a shared local pattern:
60
+ If you use [OpenClaw](https://github.com/solomonneas/openclaw), [Hermes](https://github.com/NousResearch/hermes-agent), [Codex](https://github.com/openai/codex), Claude Code, [OpenCode](https://github.com/opencode-ai/opencode), Antigravity, Pi, Cursor, or a mix of them, Brigade gives those tools a shared local pattern:
63
61
 
64
62
  1. agents write handoff notes
65
63
  2. the memory ingester scans, lints, and routes them
@@ -86,11 +84,12 @@ flowchart TB
86
84
  CODEX["<b>Codex CLI</b><br/>handoff writer"]
87
85
  CLAUDE["<b>Claude Code</b><br/>handoff writer"]
88
86
  OPEN["<b>OpenCode</b><br/>handoff writer"]
87
+ MORE["<b>more CLI writers</b><br/>Antigravity · Pi · Cursor<br/>Aider · Goose · Continue<br/>Copilot · Qwen · Kimi · AdaL · OpenHands"]
89
88
  HERMES["<b>Hermes</b><br/>writer or owner"]
90
89
  end
91
90
 
92
- CODEX & CLAUDE & OPEN & HERMES == handoff drafts ==> BRIGADE
93
- MEMORY -. context .-> CODEX & CLAUDE & OPEN & HERMES
91
+ CODEX & CLAUDE & OPEN & MORE & HERMES == handoff drafts ==> BRIGADE
92
+ MEMORY -. context .-> CODEX & CLAUDE & OPEN & MORE & HERMES
94
93
 
95
94
  subgraph LOCAL [" local operator lanes "]
96
95
  WORK["work sessions<br/>tasks · plans · verification"]
@@ -109,7 +108,7 @@ flowchart TB
109
108
  class OWNER owner;
110
109
  class BRIGADE brigade;
111
110
  class MEMORY,STATE state;
112
- class WORK,SCAN,RELEASE,CODEX,CLAUDE,OPEN,HERMES lane;
111
+ class WORK,SCAN,RELEASE,CODEX,CLAUDE,OPEN,MORE,HERMES lane;
113
112
  ```
114
113
 
115
114
  > Brigade was extracted from the [**solos-cookbook**](https://github.com/solomonneas/solos-cookbook), a documented 24/7 multi-agent stack running in production. If you want the full picture of how Brigade fits into a real setup, start there, and a star helps other people find it.
@@ -132,13 +131,21 @@ Agent tools are getting good enough that people use more than one of them. That
132
131
  Brigade gives the setup a home base.
133
132
 
134
133
  - OpenClaw or Hermes can be the main memory owner.
135
- - Codex, Claude Code, OpenCode, and Hermes can write handoff notes.
134
+ - Codex, Claude Code, OpenCode, Antigravity, Pi, Cursor, Aider, Goose, Continue, GitHub Copilot CLI, Qwen Code, Kimi Code, AdaL, OpenHands, and Hermes can write handoff notes.
136
135
  - You can inspect and lint those notes before saving them.
137
136
  - Local receipts show what happened during work, scans, and reviews.
138
137
  - Risky actions stay manual.
139
138
 
140
139
  The goal is not to make a giant automation machine. The goal is to make agent memory understandable, reviewable, and portable across harnesses.
141
140
 
141
+ ## Mise En Place
142
+
143
+ The name comes from the kitchen. A *brigade de cuisine* is the staff that runs the line, and *mise en place*, pronounced "meez", means everything is in its place before the work starts.
144
+
145
+ In a kitchen, that is the chef's first job: prep the station, label the ingredients, sharpen the tools, and make sure service does not depend on hunting for basics mid-rush. For agents, it is the same job: rules, memory, handoff inboxes, tools, guards, receipts, and verification paths set up before the session gets expensive.
146
+
147
+ That is the idea Brigade is built on. The chef owns the station, and every agent working in it should leave the setup clearer, safer, and easier for the next agent to use.
148
+
142
149
  ## Start Small
143
150
 
144
151
  Install:
@@ -161,7 +168,7 @@ brigade operator quickstart --target ~/agent-workspace --depth workspace --harne
161
168
  brigade operator doctor --target ~/agent-workspace --profile local-operator
162
169
  ```
163
170
 
164
- Use `--dry-run` first if you want to preview the local files Brigade will write. To wire more than one agent surface, pass a comma-separated list such as `--harnesses codex,claude,opencode`.
171
+ Use `--dry-run` first if you want to preview the local files Brigade will write. To wire more than one agent surface, pass a comma-separated list such as `--harnesses codex,claude,opencode,antigravity,pi,cursor,aider,goose,continue,copilot,qwen,kimi,adal,openhands`.
165
172
 
166
173
  If you already have a homegrown setup with scripts, handoff folders, crons, or process managers, use the adoption loop before changing it:
167
174
 
@@ -181,7 +188,7 @@ brigade operator surfaces import-issues --target ~/agent-workspace --json
181
188
 
182
189
  `adopt plan` is read-only. `adopt capture` writes a redacted local snapshot under `.brigade/operator/adoption/`. `adopt import-issues` routes adoption gaps into the normal work inbox so the migration shows up in `work brief` and the daily loop. `operator migration status/doctor/import-issues/consolidate` rolls adoption state, surface review state, and pending migration work into one replacement-progress view, then lets a reviewed rollup supersede tiny record-level imports. `operator surfaces capture/list/doctor/review/reviews/import-issues` keeps a separate redacted registry for shell crontab, OpenClaw cron, and PM2 coverage under `.brigade/operator/surfaces/`. Scheduler and process surfaces are reported as counts, status totals, ordinal labels, review decisions, and fingerprints, not raw scheduler lines, job names, process names, command paths, host details, or environment values.
183
190
 
184
- For a fuller first-run walkthrough and troubleshooting checklist, see [`docs/new-user-quickstart.md`](docs/new-user-quickstart.md). If quickstart fails, use the Quickstart setup problem issue form and include the redacted `issue_report` from `brigade operator quickstart --json`.
191
+ For a fuller first-run walkthrough and troubleshooting checklist, see [`docs/new-user-quickstart.md`](docs/new-user-quickstart.md). For the shortest path, use [`docs/first-10-minutes.md`](docs/first-10-minutes.md). If quickstart fails, use the Quickstart setup problem issue form and include the redacted `issue_report` from `brigade operator quickstart --json`.
185
192
 
186
193
  Write a handoff note:
187
194
 
@@ -202,12 +209,27 @@ That is the simplest useful version of Brigade: shared handoffs, local review, d
202
209
 
203
210
  ## How Memory Handoffs Work
204
211
 
205
- Each writer harness gets its own local inbox:
206
-
207
- - `.codex/memory-handoffs/`
208
- - `.claude/memory-handoffs/`
209
- - `.opencode/memory-handoffs/`
210
- - `.hermes/memory-handoffs/`
212
+ Each writer harness gets its own local inbox. Use `brigade handoff draft --inbox <id>` to write to the matching inbox, or select the harness with `brigade operator quickstart --harnesses ...`.
213
+
214
+ | Writer | `--inbox` / harness id | Local inbox | Brigade support |
215
+ |---|---|---|---|
216
+ | Codex CLI | `codex` | `.codex/memory-handoffs/` | handoff template, ingest source, dogfood adapter, tools, skills |
217
+ | Claude Code | `claude` | `.claude/memory-handoffs/` | handoff template, ingest source, tools, skills |
218
+ | OpenCode | `opencode` | `.opencode/memory-handoffs/` | handoff template, ingest source, dogfood adapter, tools, skills |
219
+ | Antigravity | `antigravity` | `.antigravity/memory-handoffs/` | handoff template, ingest source, dogfood adapter, tools, skills |
220
+ | Pi | `pi` | `.pi/memory-handoffs/` | handoff template, ingest source, dogfood adapter, tools, skills |
221
+ | Cursor | `cursor` | `.cursor/memory-handoffs/` | handoff template, ingest source, dogfood adapter, rules, skills |
222
+ | Aider | `aider` | `.aider/memory-handoffs/` | handoff template, ingest source, dogfood adapter, tools, skills |
223
+ | Goose | `goose` | `.goose/memory-handoffs/` | handoff template, ingest source, dogfood adapter, tools, skills |
224
+ | Continue | `continue` | `.continue/memory-handoffs/` | handoff template, ingest source, dogfood adapter, rules, skills |
225
+ | GitHub Copilot CLI | `copilot` | `.copilot/memory-handoffs/` | handoff template, ingest source, dogfood adapter, instructions, skills |
226
+ | Qwen Code | `qwen` | `.qwen/memory-handoffs/` | handoff template, ingest source, dogfood adapter, tools, skills |
227
+ | Kimi Code | `kimi` | `.kimi/memory-handoffs/` | handoff template, ingest source, dogfood adapter, tools, skills |
228
+ | AdaL | `adal` | `.adal/memory-handoffs/` | handoff template, ingest source, dogfood adapter, tools, skills |
229
+ | OpenHands | `openhands` | `.openhands/memory-handoffs/` | handoff template, ingest source, dogfood adapter, instructions, skills |
230
+ | Hermes | `hermes` | `.hermes/memory-handoffs/` | handoff template, ingest source, owner adapter fragments |
231
+
232
+ OpenClaw is usually the canonical memory owner rather than a writer inbox. Add it with `--harnesses openclaw,...` when the workspace should own durable memory.
211
233
 
212
234
  The memory owner, usually OpenClaw or Hermes, can ingest handoffs into the permanent memory files. Brigade keeps the handoff format consistent so different tools can contribute without each one inventing its own note style.
213
235
 
@@ -217,6 +239,17 @@ flowchart LR
217
239
  C[".codex/memory-handoffs/"]
218
240
  CL[".claude/memory-handoffs/"]
219
241
  O[".opencode/memory-handoffs/"]
242
+ A[".antigravity/memory-handoffs/"]
243
+ P[".pi/memory-handoffs/"]
244
+ CU[".cursor/memory-handoffs/"]
245
+ AI[".aider/memory-handoffs/"]
246
+ G[".goose/memory-handoffs/"]
247
+ CO[".continue/memory-handoffs/"]
248
+ GH[".copilot/memory-handoffs/"]
249
+ Q[".qwen/memory-handoffs/"]
250
+ K[".kimi/memory-handoffs/"]
251
+ AD[".adal/memory-handoffs/"]
252
+ OH[".openhands/memory-handoffs/"]
220
253
  H[".hermes/memory-handoffs/"]
221
254
  end
222
255
 
@@ -225,14 +258,14 @@ flowchart LR
225
258
  OWNER["OpenClaw / Hermes<br/>memory owner"]
226
259
  MEM["durable memory<br/>cards · docs · learnings"]
227
260
 
228
- C & CL & O & H --> DRAFT --> REVIEW
261
+ C & CL & O & A & P & CU & AI & G & CO & GH & Q & K & AD & OH & H --> DRAFT --> REVIEW
229
262
  REVIEW -->|safe targeted note| OWNER --> MEM
230
263
  REVIEW -->|needs judgment| INBOX["review inbox"]
231
264
 
232
265
  classDef local fill:#eff6ff,stroke:#2563eb,color:#1e3a8a;
233
266
  classDef review fill:#fff7ed,stroke:#ea580c,color:#7c2d12;
234
267
  classDef memory fill:#ecfdf5,stroke:#059669,color:#064e3b;
235
- class C,CL,O,H,DRAFT local;
268
+ class C,CL,O,A,P,CU,AI,G,CO,GH,Q,K,AD,OH,H,DRAFT local;
236
269
  class REVIEW,INBOX review;
237
270
  class OWNER,MEM memory;
238
271
  ```
@@ -335,7 +368,7 @@ For memory:
335
368
  - scan handoff drafts with Content Guard before they become durable memory
336
369
  - track which local inboxes the ingestor should watch
337
370
  - reconcile ingester receipts so skipped, failed, routed, and promoted notes stay visible
338
- - support OpenClaw, Hermes, Codex, Claude Code, and OpenCode conventions
371
+ - support OpenClaw, Hermes, Codex, Claude Code, OpenCode, Antigravity, Pi, Cursor, Aider, Goose, Continue, GitHub Copilot CLI, Qwen Code, Kimi Code, AdaL, and OpenHands conventions
339
372
 
340
373
  For local work:
341
374
 
@@ -451,7 +484,7 @@ flowchart LR
451
484
 
452
485
  SOURCE --> CATALOG --> PROJECT
453
486
  CATALOG --> APPROVAL --> RUN
454
- PROJECT -. local generated .-> HARNESSES[".codex · .claude<br/>.opencode · .mcp"]
487
+ PROJECT -. local generated .-> HARNESSES[".codex · .claude<br/>.opencode · .antigravity · .pi · .cursor<br/>.aider · .goose · .continue · .copilot<br/>.qwen · .kimi · .adal · .openhands · .mcp"]
455
488
 
456
489
  classDef source fill:#ecfdf5,stroke:#059669,color:#064e3b;
457
490
  classDef local fill:#eff6ff,stroke:#2563eb,color:#1e3a8a;
@@ -566,7 +599,7 @@ OpenClaw can be the memory owner. Brigade gives nearby tools a way to contribute
566
599
 
567
600
  ```mermaid
568
601
  flowchart LR
569
- WRITERS["Codex · Claude · OpenCode<br/>writer inboxes"]
602
+ WRITERS["Codex · Claude · OpenCode<br/>Antigravity · Pi · Cursor writer inboxes"]
570
603
  BRIGADE["Brigade<br/>draft · lint · source coverage"]
571
604
  OPENCLAW["OpenClaw<br/>memory owner"]
572
605
  MEMORY["canonical memory"]
@@ -586,7 +619,7 @@ flowchart LR
586
619
  A repo-adjacent setup is:
587
620
 
588
621
  ```bash
589
- brigade init --target ./my-repo --depth repo --harnesses openclaw,codex,claude,opencode
622
+ brigade init --target ./my-repo --depth repo --harnesses openclaw,codex,claude,opencode,antigravity,pi,cursor,aider,goose,continue,copilot,qwen,kimi,adal,openhands
590
623
  brigade handoff sources init --target ./my-repo
591
624
  brigade handoff doctor --target ./my-repo
592
625
  ```
@@ -709,7 +742,7 @@ The full technical walkthrough still exists; it is just not the README anymore.
709
742
 
710
743
  ## Tiny Glossary
711
744
 
712
- - **Harness**: an agent tool such as OpenClaw, Hermes, Codex, Claude Code, or OpenCode.
745
+ - **Harness**: an agent tool such as OpenClaw, Hermes, Codex, Claude Code, OpenCode, Antigravity, Pi, or Cursor.
713
746
  - **Handoff**: a note an agent writes for later review.
714
747
  - **Inbox**: the local folder where handoff notes wait.
715
748
  - **Memory owner**: the place that keeps durable shared memory.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "brigade-cli"
7
- version = "0.8.1"
7
+ version = "0.8.2"
8
8
  description = "AI agent memory, handoffs, and local guardrails for Codex, Claude Code, OpenCode, Hermes, and OpenClaw."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -1,3 +1,3 @@
1
1
  """Brigade: local operator-system CLI for agent workspaces."""
2
2
 
3
- __version__ = "0.8.1"
3
+ __version__ = "0.8.2"