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.
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/PKG-INFO +64 -31
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/README.md +63 -30
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/pyproject.toml +1 -1
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/__init__.py +1 -1
- brigade_cli-0.8.2/src/brigade/agents.py +184 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/cli.py +43 -5
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/dogfood_cmd.py +47 -15
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/install.py +30 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/learn_cmd.py +19 -1
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/operator_cmd.py +12 -3
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/prompt.py +29 -1
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/repos_cmd.py +5 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/runbook_cmd.py +6 -3
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/security_cmd.py +30 -1
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/selection.py +29 -1
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/skills_cmd.py +27 -9
- brigade_cli-0.8.2/src/brigade/templates/codex/memory-handoffs/TEMPLATE.md +64 -0
- brigade_cli-0.8.2/src/brigade/templates/continue/memory-handoffs/TEMPLATE.md +64 -0
- brigade_cli-0.8.2/src/brigade/templates/copilot/memory-handoffs/TEMPLATE.md +64 -0
- brigade_cli-0.8.2/src/brigade/templates/cursor/memory-handoffs/TEMPLATE.md +64 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/generic/harness-adapter-checklist.md +2 -2
- brigade_cli-0.8.2/src/brigade/templates/goose/memory-handoffs/TEMPLATE.md +64 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/handoff/handoff-sources.example.json +11 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/handoff/openclaw-ingest-receipt.example.json +11 -0
- brigade_cli-0.8.2/src/brigade/templates/harnesses/adal.json +11 -0
- brigade_cli-0.8.2/src/brigade/templates/harnesses/aider.json +11 -0
- brigade_cli-0.8.2/src/brigade/templates/harnesses/antigravity.json +11 -0
- brigade_cli-0.8.2/src/brigade/templates/harnesses/continue.json +11 -0
- brigade_cli-0.8.2/src/brigade/templates/harnesses/copilot.json +11 -0
- brigade_cli-0.8.2/src/brigade/templates/harnesses/cursor.json +11 -0
- brigade_cli-0.8.2/src/brigade/templates/harnesses/goose.json +11 -0
- brigade_cli-0.8.2/src/brigade/templates/harnesses/kimi.json +11 -0
- brigade_cli-0.8.2/src/brigade/templates/harnesses/openhands.json +11 -0
- brigade_cli-0.8.2/src/brigade/templates/harnesses/pi.json +11 -0
- brigade_cli-0.8.2/src/brigade/templates/harnesses/qwen.json +11 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/hermes/README.md +1 -1
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/hermes/memory-handoff.harness.json +1 -1
- brigade_cli-0.8.2/src/brigade/templates/hermes/memory-handoffs/TEMPLATE.md +64 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/hermes/model-lanes.harness.json +1 -1
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/hermes/workspace.harness.json +1 -1
- brigade_cli-0.8.2/src/brigade/templates/kimi/memory-handoffs/TEMPLATE.md +64 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/handoff-flow.md +5 -5
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/chat-memory-sweep.example.json +1 -1
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/memory-care.example.json +1 -1
- brigade_cli-0.8.2/src/brigade/templates/opencode/memory-handoffs/TEMPLATE.md +64 -0
- brigade_cli-0.8.2/src/brigade/templates/openhands/memory-handoffs/TEMPLATE.md +64 -0
- brigade_cli-0.8.2/src/brigade/templates/pi/memory-handoffs/TEMPLATE.md +64 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/policies/personal.json +1 -1
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/policies/public-content.json +1 -1
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/policies/public-repo.json +1 -1
- brigade_cli-0.8.2/src/brigade/templates/qwen/memory-handoffs/TEMPLATE.md +64 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/AGENTS.md +2 -2
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/INSTALL_FOR_AGENTS.md +2 -2
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/tools_cmd.py +117 -6
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/work_cmd.py +153 -10
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade_cli.egg-info/PKG-INFO +64 -31
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade_cli.egg-info/SOURCES.txt +22 -0
- brigade_cli-0.8.2/tests/test_agents.py +132 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_dogfood_cmd.py +76 -1
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_gitignore.py +6 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_handoff_cmd.py +13 -4
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_ingest.py +90 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_install.py +87 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_operator_cmd.py +59 -4
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_prompt.py +5 -4
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_repos_cmd.py +27 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_selection.py +55 -1
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_skills_cmd.py +37 -8
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_work_cmd.py +74 -1
- brigade_cli-0.8.1/src/brigade/agents.py +0 -92
- brigade_cli-0.8.1/tests/test_agents.py +0 -84
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/LICENSE +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/MANIFEST.in +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/QUICKSTART.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/setup.cfg +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/__main__.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/aboyeur.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/add.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/budgets.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/budgets_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/center_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/chat_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/config.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/context_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/daily_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/doctor.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/fragments.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/handoff.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/handoff_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/hermes_adapter.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/ingest.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/managed.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/memory_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/notifications_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/pantry_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/phases_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/proc.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/projects_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/py.typed +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/reconfigure.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/registry.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/release_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/__init__.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/config.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/engine.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/extract.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/handoff.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/llm.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/registry.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/report.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/sources/__init__.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/sources/cli.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/sources/local.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/sources/web.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research/types.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/research_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/roadmap_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/roster.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/roster_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/runs_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/scrub.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/station.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/status.py +0 -0
- {brigade_cli-0.8.1/src/brigade/templates/claude → brigade_cli-0.8.2/src/brigade/templates/adal}/memory-handoffs/TEMPLATE.md +0 -0
- {brigade_cli-0.8.1/src/brigade/templates/codex → brigade_cli-0.8.2/src/brigade/templates/aider}/memory-handoffs/TEMPLATE.md +0 -0
- {brigade_cli-0.8.1/src/brigade/templates/hermes → brigade_cli-0.8.2/src/brigade/templates/antigravity}/memory-handoffs/TEMPLATE.md +0 -0
- {brigade_cli-0.8.1/src/brigade/templates/opencode → brigade_cli-0.8.2/src/brigade/templates/claude}/memory-handoffs/TEMPLATE.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/depth/repo.json +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/depth/workspace.json +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/generic/memory-contract.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/harnesses/claude.json +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/harnesses/codex.json +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/harnesses/hermes.json +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/harnesses/openclaw.json +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/harnesses/opencode.json +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/hooks/pre-push +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/includes/publisher.json +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/backup-restic.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/chat-surface-crawlers.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/content-safety.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/memory-architecture.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/memory-care-staleness.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/memory-scanner.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/multi-workspace-handoff-admin.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/obsidian-notes.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/pipeline-standups.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/memory/cards/tokenjuice-output-compaction.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/openclaw/README.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/openclaw/acp-escalation.openclaw.json +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/openclaw/memory-sweep-cron.openclaw.json +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/openclaw/model-aliases.openclaw.json +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/openclaw/ollama-memory-search.openclaw.json +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/scripts/backup-restic.sh +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/skills/note/SKILL.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/CLAUDE.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/HEARTBEAT.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/IDENTITY.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/MEMORY.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/SAFETY_RULES.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/SOUL.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/TOOLS.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/USER.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/rules/acceptance-driven-work.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates/workspace/rules/issue-tdd-loop.md +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/templates.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/toml_compat.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/untrusted.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade/untrusted_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade_cli.egg-info/dependency_links.txt +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade_cli.egg-info/entry_points.txt +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade_cli.egg-info/requires.txt +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/src/brigade_cli.egg-info/top_level.txt +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_aboyeur.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_add.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_budgets.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_cli_alias.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_config.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_doctor.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_fragments.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_handoff.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_init.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_managed.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_memory_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_neutrality.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_notifications_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_pantry_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase100_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase101_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase165_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase36_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase37_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase38_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase39_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase40_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase41_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase42_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase43_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase44_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase45_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase46_50_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase51_55_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase56_60_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase96_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase97_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase98_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_phase99_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_privacy_regression.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_proc.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_reconfigure.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_registry.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_release_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_cli_sources.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_config.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_engine.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_extract.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_handoff.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_llm.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_local_sources.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_registry.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_report.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_types.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_research_web.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_roadmap_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_roster.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_roster_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_run_cli.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_runbook_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_runs_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_scrub.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_security_cmd.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_station.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_status.py +0 -0
- {brigade_cli-0.8.1 → brigade_cli-0.8.2}/tests/test_toml_compat.py +0 -0
- {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.
|
|
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
|
-
|
|
47
|
+
Your agents run loops. Brigade keeps the receipts.
|
|
48
48
|
|
|
49
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
18
|
+
Your agents run loops. Brigade keeps the receipts.
|
|
19
19
|
|
|
20
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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
|
|
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
|
|
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.
|
|
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"
|