@desplega.ai/agent-swarm 1.20.0 → 1.51.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +271 -169
- package/openapi.json +5015 -0
- package/package.json +40 -7
- package/plugin/commands/close-issue.md +7 -3
- package/plugin/commands/create-pr.md +18 -12
- package/plugin/commands/implement-issue.md +7 -3
- package/plugin/commands/respond-github.md +8 -4
- package/plugin/commands/review-pr.md +44 -10
- package/plugin/commands/start-leader.md +1 -3
- package/plugin/commands/start-worker.md +1 -3
- package/plugin/commands/work-on-task.md +22 -3
- package/plugin/pi-skills/close-issue/SKILL.md +90 -0
- package/plugin/pi-skills/create-pr/SKILL.md +99 -0
- package/plugin/pi-skills/implement-issue/SKILL.md +135 -0
- package/plugin/pi-skills/investigate-sentry-issue/SKILL.md +138 -0
- package/plugin/pi-skills/respond-github/SKILL.md +98 -0
- package/plugin/pi-skills/review-offered-task/SKILL.md +45 -0
- package/plugin/pi-skills/review-pr/SKILL.md +261 -0
- package/plugin/pi-skills/start-leader/SKILL.md +121 -0
- package/plugin/pi-skills/start-worker/SKILL.md +60 -0
- package/plugin/pi-skills/swarm-chat/SKILL.md +82 -0
- package/plugin/pi-skills/todos/SKILL.md +66 -0
- package/plugin/pi-skills/work-on-task/SKILL.md +65 -0
- package/plugin/skills/artifacts/examples/approval-flow.ts +34 -0
- package/plugin/skills/artifacts/examples/hono-dashboard.ts +31 -0
- package/plugin/skills/artifacts/examples/multi-artifact.ts +20 -0
- package/plugin/skills/artifacts/examples/static-report.sh +17 -0
- package/plugin/skills/artifacts/skill.md +71 -0
- package/src/agentmail/app.ts +65 -0
- package/src/agentmail/handlers.ts +262 -0
- package/src/agentmail/index.ts +9 -0
- package/src/agentmail/templates.ts +111 -0
- package/src/agentmail/types.ts +51 -0
- package/src/artifact-sdk/browser-sdk.ts +30 -0
- package/src/artifact-sdk/index.ts +2 -0
- package/src/artifact-sdk/localtunnel.d.ts +20 -0
- package/src/artifact-sdk/port.ts +12 -0
- package/src/artifact-sdk/server.ts +156 -0
- package/src/artifact-sdk/tunnel.ts +19 -0
- package/src/be/chunking.ts +193 -0
- package/src/be/db-queries/oauth.ts +90 -0
- package/src/be/db-queries/tracker.ts +182 -0
- package/src/be/db.ts +3327 -784
- package/src/be/embedding.ts +80 -0
- package/src/be/migrations/001_initial.sql +409 -0
- package/src/be/migrations/002_one_time_schedules.sql +59 -0
- package/src/be/migrations/003_workflows.sql +51 -0
- package/src/be/migrations/004_workflow_source.sql +81 -0
- package/src/be/migrations/005_epic_next_steps.sql +2 -0
- package/src/be/migrations/006_vcs_provider.sql +94 -0
- package/src/be/migrations/007_task_dir.sql +2 -0
- package/src/be/migrations/008_workflow_redesign.sql +85 -0
- package/src/be/migrations/009_tracker_integration.sql +144 -0
- package/src/be/migrations/010_step_diagnostics.sql +1 -0
- package/src/be/migrations/011_step_next_port.sql +1 -0
- package/src/be/migrations/012_trigger_schema.sql +1 -0
- package/src/be/migrations/013_task_output_schema.sql +2 -0
- package/src/be/migrations/014_prompt_templates.sql +33 -0
- package/src/be/migrations/015_workflow_workspace.sql +3 -0
- package/src/be/migrations/016_active_session_runner_session.sql +4 -0
- package/src/be/migrations/017_channel_activity_cursors.sql +6 -0
- package/src/be/migrations/018_fix_seed_double_version.sql +30 -0
- package/src/be/migrations/runner.ts +188 -0
- package/src/be/seed.ts +62 -0
- package/src/cli.tsx +231 -299
- package/src/commands/artifact.ts +241 -0
- package/src/commands/onboard/compose-generator.ts +169 -0
- package/src/commands/onboard/env-generator.ts +79 -0
- package/src/commands/onboard/manifest.ts +37 -0
- package/src/commands/onboard/presets.ts +85 -0
- package/src/commands/onboard/service-names.ts +47 -0
- package/src/commands/onboard/steps/core-credentials.tsx +111 -0
- package/src/commands/onboard/steps/custom-templates.tsx +168 -0
- package/src/commands/onboard/steps/generate.tsx +154 -0
- package/src/commands/onboard/steps/harness-credentials.tsx +195 -0
- package/src/commands/onboard/steps/harness.tsx +21 -0
- package/src/commands/onboard/steps/health-check.tsx +171 -0
- package/src/commands/onboard/steps/integration-github.tsx +105 -0
- package/src/commands/onboard/steps/integration-gitlab.tsx +79 -0
- package/src/commands/onboard/steps/integration-menu.tsx +58 -0
- package/src/commands/onboard/steps/integration-sentry.tsx +79 -0
- package/src/commands/onboard/steps/integration-slack.tsx +165 -0
- package/src/commands/onboard/steps/post-connect.tsx +145 -0
- package/src/commands/onboard/steps/post-dashboard.tsx +34 -0
- package/src/commands/onboard/steps/post-task.tsx +103 -0
- package/src/commands/onboard/steps/prereq-check.tsx +178 -0
- package/src/commands/onboard/steps/review.tsx +82 -0
- package/src/commands/onboard/steps/start.tsx +97 -0
- package/src/commands/onboard/templates.ts +34 -0
- package/src/commands/onboard/types.ts +259 -0
- package/src/commands/onboard.tsx +425 -0
- package/src/commands/runner.ts +1540 -630
- package/src/commands/setup.tsx +23 -38
- package/src/commands/shared/client-config.ts +41 -0
- package/src/commands/templates.ts +172 -0
- package/src/github/app.ts +8 -0
- package/src/github/handlers.ts +384 -151
- package/src/github/index.ts +1 -0
- package/src/github/mentions-aliases.test.ts +73 -0
- package/src/github/mentions.test.ts +3 -3
- package/src/github/mentions.ts +32 -6
- package/src/github/templates.ts +398 -0
- package/src/github/types.ts +1 -0
- package/src/gitlab/auth.ts +63 -0
- package/src/gitlab/handlers.ts +368 -0
- package/src/gitlab/index.ts +19 -0
- package/src/gitlab/reactions.ts +104 -0
- package/src/gitlab/templates.ts +140 -0
- package/src/gitlab/types.ts +130 -0
- package/src/heartbeat/heartbeat.ts +434 -0
- package/src/heartbeat/index.ts +1 -0
- package/src/heartbeat/templates.ts +30 -0
- package/src/hooks/hook.ts +555 -4
- package/src/hooks/tool-loop-detection.test.ts +158 -0
- package/src/hooks/tool-loop-detection.ts +167 -0
- package/src/http/active-sessions.ts +199 -0
- package/src/http/agents.ts +328 -0
- package/src/http/config.ts +191 -0
- package/src/http/core.ts +309 -0
- package/src/http/db-query.ts +91 -0
- package/src/http/ecosystem.ts +63 -0
- package/src/http/epics.ts +460 -0
- package/src/http/index.ts +216 -0
- package/src/http/mcp.ts +77 -0
- package/src/http/memory.ts +168 -0
- package/src/http/openapi.ts +109 -0
- package/src/http/poll.ts +299 -0
- package/src/http/prompt-templates.ts +412 -0
- package/src/http/repos.ts +195 -0
- package/src/http/route-def.ts +123 -0
- package/src/http/schedules.ts +426 -0
- package/src/http/session-data.ts +241 -0
- package/src/http/stats.ts +174 -0
- package/src/http/tasks.ts +468 -0
- package/src/http/trackers/index.ts +10 -0
- package/src/http/trackers/linear.ts +187 -0
- package/src/http/types.ts +12 -0
- package/src/http/utils.ts +87 -0
- package/src/http/webhooks.ts +432 -0
- package/src/http/workflows.ts +530 -0
- package/src/http.ts +1 -1890
- package/src/linear/README.md +65 -0
- package/src/linear/app.ts +48 -0
- package/src/linear/client.ts +18 -0
- package/src/linear/index.ts +1 -0
- package/src/linear/oauth.ts +35 -0
- package/src/linear/outbound.ts +212 -0
- package/src/linear/sync.ts +567 -0
- package/src/linear/templates.ts +47 -0
- package/src/linear/types.ts +7 -0
- package/src/linear/webhook.ts +104 -0
- package/src/oauth/README.md +66 -0
- package/src/oauth/index.ts +6 -0
- package/src/oauth/wrapper.ts +204 -0
- package/src/prompts/base-prompt.ts +150 -265
- package/src/prompts/defaults.ts +196 -0
- package/src/prompts/registry.ts +57 -0
- package/src/prompts/resolver.ts +296 -0
- package/src/prompts/session-templates.ts +604 -0
- package/src/providers/claude-adapter.ts +442 -0
- package/src/providers/index.ts +24 -0
- package/src/providers/pi-mono-adapter.ts +442 -0
- package/src/providers/pi-mono-extension.ts +624 -0
- package/src/providers/pi-mono-mcp-client.ts +124 -0
- package/src/providers/types.ts +75 -0
- package/src/scheduler/scheduler.test.ts +2 -0
- package/src/scheduler/scheduler.ts +231 -40
- package/src/server.ts +97 -6
- package/src/slack/HEURISTICS.md +105 -0
- package/src/slack/actions.ts +133 -0
- package/src/slack/app.ts +7 -0
- package/src/slack/assistant.ts +118 -0
- package/src/slack/blocks.ts +233 -0
- package/src/slack/channel-activity.ts +177 -0
- package/src/slack/commands.ts +31 -17
- package/src/slack/files.ts +1 -1
- package/src/slack/handlers.test.ts +114 -1
- package/src/slack/handlers.ts +230 -55
- package/src/slack/responses.ts +120 -67
- package/src/slack/router.ts +17 -99
- package/src/slack/templates.ts +55 -0
- package/src/slack/thread-buffer.ts +213 -0
- package/src/slack/watcher.ts +119 -4
- package/src/tests/agent-activity.test.ts +247 -0
- package/src/tests/agentmail-filters.test.ts +97 -0
- package/src/tests/artifact-sdk.test.ts +800 -0
- package/src/tests/base-prompt.test.ts +264 -0
- package/src/tests/build-pi-skills.test.ts +127 -0
- package/src/tests/channel-activity.test.ts +363 -0
- package/src/tests/claude-adapter.test.ts +126 -0
- package/src/tests/context-versioning.test.ts +425 -0
- package/src/tests/db-queries-oauth.test.ts +197 -0
- package/src/tests/db-queries-tracker.test.ts +230 -0
- package/src/tests/epics.test.ts +3 -3
- package/src/tests/error-tracker.test.ts +368 -0
- package/src/tests/fetch-resolved-env.test.ts +167 -0
- package/src/tests/generate-default-claude-md.test.ts +9 -1
- package/src/tests/generate-identity-templates.test.ts +124 -0
- package/src/tests/gitlab-auth.test.ts +109 -0
- package/src/tests/gitlab-handlers.test.ts +691 -0
- package/src/tests/gitlab-vcs-db.test.ts +177 -0
- package/src/tests/heartbeat.test.ts +364 -0
- package/src/tests/http-api-integration.test.ts +1698 -0
- package/src/tests/linear-outbound-sync.test.ts +200 -0
- package/src/tests/linear-webhook.test.ts +406 -0
- package/src/tests/match-route.test.ts +187 -0
- package/src/tests/memory.test.ts +737 -0
- package/src/tests/migration-runner-regressions.test.ts +86 -0
- package/src/tests/model-control.test.ts +338 -0
- package/src/tests/oauth-wrapper.test.ts +147 -0
- package/src/tests/onboard-compose.test.ts +138 -0
- package/src/tests/onboard-env.test.ts +174 -0
- package/src/tests/onboard-manifest.test.ts +137 -0
- package/src/tests/pi-mono-adapter.test.ts +234 -0
- package/src/tests/pool-session-logs.test.ts +199 -0
- package/src/tests/progress-dedup.test.ts +98 -0
- package/src/tests/prompt-template-github.test.ts +682 -0
- package/src/tests/prompt-template-remaining.test.ts +504 -0
- package/src/tests/prompt-template-resolver.test.ts +621 -0
- package/src/tests/prompt-template-session.test.ts +363 -0
- package/src/tests/prompt-templates-db.test.ts +616 -0
- package/src/tests/provider-adapter.test.ts +122 -0
- package/src/tests/provider-command-format.test.ts +98 -0
- package/src/tests/reload-config.test.ts +170 -0
- package/src/tests/runner-polling-api.test.ts +25 -20
- package/src/tests/scheduled-tasks.test.ts +104 -0
- package/src/tests/scheduler-backoff.test.ts +166 -0
- package/src/tests/self-improvement.test.ts +541 -0
- package/src/tests/session-attach.test.ts +536 -0
- package/src/tests/session-costs.test.ts +267 -1
- package/src/tests/slack-actions.test.ts +133 -0
- package/src/tests/slack-assistant.test.ts +136 -0
- package/src/tests/slack-blocks.test.ts +246 -0
- package/src/tests/slack-metadata-inheritance.test.ts +243 -0
- package/src/tests/slack-queue-offline.test.ts +174 -0
- package/src/tests/slack-router.test.ts +181 -0
- package/src/tests/slack-thread-buffer.test.ts +305 -0
- package/src/tests/slack-thread-followups.test.ts +298 -0
- package/src/tests/slack-watcher.test.ts +101 -0
- package/src/tests/structured-output.test.ts +307 -0
- package/src/tests/swarm-repos.test.ts +198 -0
- package/src/tests/task-cancellation.test.ts +6 -4
- package/src/tests/task-working-dir.test.ts +176 -0
- package/src/tests/template-fetch.test.ts +490 -0
- package/src/tests/tool-annotations.test.ts +371 -0
- package/src/tests/tracker-tools.test.ts +184 -0
- package/src/tests/update-profile-agentid.test.ts +248 -0
- package/src/tests/update-profile-api.test.ts +143 -3
- package/src/tests/update-profile-auth.test.ts +195 -0
- package/src/tests/validation-adapters.test.ts +86 -0
- package/src/tests/vcs-provider.test.ts +27 -0
- package/src/tests/workflow-agent-task.test.ts +196 -0
- package/src/tests/workflow-async-v2.test.ts +508 -0
- package/src/tests/workflow-convergence.test.ts +541 -0
- package/src/tests/workflow-definition-validation.test.ts +366 -0
- package/src/tests/workflow-engine-v2.test.ts +691 -0
- package/src/tests/workflow-executors.test.ts +736 -0
- package/src/tests/workflow-http-v2.test.ts +599 -0
- package/src/tests/workflow-integration-io.test.ts +902 -0
- package/src/tests/workflow-io-schemas.test.ts +624 -0
- package/src/tests/workflow-registry.test.ts +592 -0
- package/src/tests/workflow-retry-v2.test.ts +401 -0
- package/src/tests/workflow-retry-validation.test.ts +282 -0
- package/src/tests/workflow-schedule-trigger.test.ts +104 -0
- package/src/tests/workflow-template.test.ts +288 -0
- package/src/tests/workflow-trigger-schema.test.ts +359 -0
- package/src/tests/workflow-triggers-v2.test.ts +264 -0
- package/src/tests/workflow-versions.test.ts +208 -0
- package/src/tests/workflow-workspace.test.ts +272 -0
- package/src/tests/x402-client.test.ts +117 -0
- package/src/tests/x402-config.test.ts +182 -0
- package/src/tests/x402-spending-tracker.test.ts +185 -0
- package/src/tools/cancel-task.ts +2 -0
- package/src/tools/context-diff.ts +171 -0
- package/src/tools/context-history.ts +138 -0
- package/src/tools/create-channel.ts +1 -0
- package/src/tools/db-query.ts +78 -0
- package/src/tools/delete-channel.ts +132 -0
- package/src/tools/epics/assign-task-to-epic.ts +1 -0
- package/src/tools/epics/create-epic.ts +3 -2
- package/src/tools/epics/delete-epic.ts +2 -0
- package/src/tools/epics/get-epic-details.ts +2 -0
- package/src/tools/epics/list-epics.ts +2 -0
- package/src/tools/epics/unassign-task-from-epic.ts +1 -0
- package/src/tools/epics/update-epic.ts +7 -4
- package/src/tools/get-swarm.ts +2 -0
- package/src/tools/get-task-details.ts +2 -0
- package/src/tools/get-tasks.ts +27 -1
- package/src/tools/inject-learning.ts +106 -0
- package/src/tools/join-swarm.ts +17 -7
- package/src/tools/list-channels.ts +2 -0
- package/src/tools/list-services.ts +2 -0
- package/src/tools/memory-get.ts +56 -0
- package/src/tools/memory-search.ts +131 -0
- package/src/tools/my-agent-info.ts +2 -0
- package/src/tools/poll-task.ts +2 -20
- package/src/tools/post-message.ts +1 -0
- package/src/tools/prompt-templates/delete.ts +86 -0
- package/src/tools/prompt-templates/get.ts +89 -0
- package/src/tools/prompt-templates/index.ts +5 -0
- package/src/tools/prompt-templates/list.ts +95 -0
- package/src/tools/prompt-templates/preview.ts +84 -0
- package/src/tools/prompt-templates/set.ts +117 -0
- package/src/tools/read-messages.ts +2 -0
- package/src/tools/register-agentmail-inbox.ts +166 -0
- package/src/tools/register-service.ts +2 -0
- package/src/tools/schedules/create-schedule.ts +134 -24
- package/src/tools/schedules/delete-schedule.ts +2 -0
- package/src/tools/schedules/list-schedules.ts +20 -4
- package/src/tools/schedules/run-schedule-now.ts +1 -0
- package/src/tools/schedules/update-schedule.ts +49 -17
- package/src/tools/send-task.ts +132 -10
- package/src/tools/slack-download-file.ts +4 -2
- package/src/tools/slack-list-channels.ts +2 -0
- package/src/tools/slack-post.ts +2 -0
- package/src/tools/slack-read.ts +2 -0
- package/src/tools/slack-reply.ts +2 -0
- package/src/tools/slack-upload-file.ts +2 -0
- package/src/tools/store-progress.ts +205 -4
- package/src/tools/swarm-config/delete-config.ts +87 -0
- package/src/tools/swarm-config/get-config.ts +108 -0
- package/src/tools/swarm-config/index.ts +4 -0
- package/src/tools/swarm-config/list-config.ts +99 -0
- package/src/tools/swarm-config/set-config.ts +118 -0
- package/src/tools/task-action.ts +50 -5
- package/src/tools/task-dedup.ts +97 -0
- package/src/tools/templates.ts +53 -0
- package/src/tools/tool-config.ts +124 -0
- package/src/tools/tracker/index.ts +6 -0
- package/src/tools/tracker/tracker-link-epic.ts +64 -0
- package/src/tools/tracker/tracker-link-task.ts +64 -0
- package/src/tools/tracker/tracker-map-agent.ts +57 -0
- package/src/tools/tracker/tracker-status.ts +56 -0
- package/src/tools/tracker/tracker-sync-status.ts +42 -0
- package/src/tools/tracker/tracker-unlink.ts +41 -0
- package/src/tools/unregister-service.ts +2 -0
- package/src/tools/update-profile.ts +172 -17
- package/src/tools/update-service-status.ts +2 -0
- package/src/tools/utils.ts +10 -1
- package/src/tools/workflows/create-workflow.ts +129 -0
- package/src/tools/workflows/delete-workflow.ts +42 -0
- package/src/tools/workflows/get-workflow-run.ts +59 -0
- package/src/tools/workflows/get-workflow.ts +53 -0
- package/src/tools/workflows/index.ts +9 -0
- package/src/tools/workflows/list-workflow-runs.ts +48 -0
- package/src/tools/workflows/list-workflows.ts +42 -0
- package/src/tools/workflows/retry-workflow-run.ts +40 -0
- package/src/tools/workflows/trigger-workflow.ts +96 -0
- package/src/tools/workflows/update-workflow.ts +133 -0
- package/src/tracker/types.ts +51 -0
- package/src/types.ts +530 -14
- package/src/utils/credentials.test.ts +156 -0
- package/src/utils/credentials.ts +50 -0
- package/src/utils/error-tracker.ts +190 -0
- package/src/vcs/index.ts +15 -0
- package/src/vcs/types.ts +5 -0
- package/src/workflows/checkpoint.ts +121 -0
- package/src/workflows/cooldown.ts +28 -0
- package/src/workflows/definition.ts +235 -0
- package/src/workflows/engine.ts +580 -0
- package/src/workflows/event-bus.ts +29 -0
- package/src/workflows/executors/agent-task.ts +103 -0
- package/src/workflows/executors/base.ts +86 -0
- package/src/workflows/executors/code-match.ts +88 -0
- package/src/workflows/executors/index.ts +16 -0
- package/src/workflows/executors/notify.ts +93 -0
- package/src/workflows/executors/property-match.ts +104 -0
- package/src/workflows/executors/raw-llm.ts +83 -0
- package/src/workflows/executors/registry.ts +76 -0
- package/src/workflows/executors/script.ts +103 -0
- package/src/workflows/executors/validate.ts +215 -0
- package/src/workflows/executors/vcs.ts +58 -0
- package/src/workflows/index.ts +61 -0
- package/src/workflows/input.ts +46 -0
- package/src/workflows/json-schema-validator.ts +118 -0
- package/src/workflows/recovery.ts +139 -0
- package/src/workflows/resume.ts +229 -0
- package/src/workflows/retry-poller.ts +216 -0
- package/src/workflows/template.ts +74 -0
- package/src/workflows/templates.ts +86 -0
- package/src/workflows/triggers.ts +124 -0
- package/src/workflows/validation.ts +104 -0
- package/src/workflows/version.ts +44 -0
- package/src/x402/cli.ts +140 -0
- package/src/x402/client.ts +192 -0
- package/src/x402/config.ts +131 -0
- package/src/x402/index.ts +37 -0
- package/src/x402/openfort-signer.ts +83 -0
- package/src/x402/spending-tracker.ts +109 -0
- package/templates/official/coder/CLAUDE.md +49 -0
- package/templates/official/coder/IDENTITY.md +28 -0
- package/templates/official/coder/SOUL.md +43 -0
- package/templates/official/coder/TOOLS.md +40 -0
- package/templates/official/coder/config.json +23 -0
- package/templates/official/coder/start-up.sh +23 -0
- package/templates/official/content-reviewer/CLAUDE.md +68 -0
- package/templates/official/content-reviewer/IDENTITY.md +28 -0
- package/templates/official/content-reviewer/SOUL.md +44 -0
- package/templates/official/content-reviewer/TOOLS.md +37 -0
- package/templates/official/content-reviewer/config.json +23 -0
- package/templates/official/content-reviewer/start-up.sh +23 -0
- package/templates/official/content-strategist/CLAUDE.md +63 -0
- package/templates/official/content-strategist/IDENTITY.md +33 -0
- package/templates/official/content-strategist/SOUL.md +48 -0
- package/templates/official/content-strategist/TOOLS.md +47 -0
- package/templates/official/content-strategist/config.json +23 -0
- package/templates/official/content-strategist/start-up.sh +23 -0
- package/templates/official/content-writer/CLAUDE.md +72 -0
- package/templates/official/content-writer/IDENTITY.md +30 -0
- package/templates/official/content-writer/SOUL.md +46 -0
- package/templates/official/content-writer/TOOLS.md +44 -0
- package/templates/official/content-writer/config.json +23 -0
- package/templates/official/content-writer/start-up.sh +23 -0
- package/templates/official/forward-deployed-engineer/CLAUDE.md +54 -0
- package/templates/official/forward-deployed-engineer/IDENTITY.md +37 -0
- package/templates/official/forward-deployed-engineer/SOUL.md +55 -0
- package/templates/official/forward-deployed-engineer/config.json +21 -0
- package/templates/official/lead/CLAUDE.md +33 -0
- package/templates/official/lead/IDENTITY.md +36 -0
- package/templates/official/lead/SOUL.md +51 -0
- package/templates/official/lead/config.json +22 -0
- package/templates/official/researcher/CLAUDE.md +46 -0
- package/templates/official/researcher/IDENTITY.md +28 -0
- package/templates/official/researcher/SOUL.md +43 -0
- package/templates/official/researcher/config.json +21 -0
- package/templates/official/reviewer/CLAUDE.md +63 -0
- package/templates/official/reviewer/IDENTITY.md +28 -0
- package/templates/official/reviewer/SOUL.md +45 -0
- package/templates/official/reviewer/config.json +21 -0
- package/templates/official/tester/CLAUDE.md +53 -0
- package/templates/official/tester/IDENTITY.md +28 -0
- package/templates/official/tester/SOUL.md +55 -0
- package/templates/official/tester/config.json +21 -0
- package/templates/schema.ts +35 -0
- package/.claude/settings.local.json +0 -115
- package/.dockerignore +0 -61
- package/.editorconfig +0 -15
- package/.env.docker.example +0 -39
- package/.env.example +0 -40
- package/.github/workflows/ci.yml +0 -76
- package/.github/workflows/docker-and-deploy.yml +0 -117
- package/.wts-config.json +0 -4
- package/.wts-setup.ts +0 -102
- package/CLAUDE.md +0 -104
- package/CONTRIBUTING.md +0 -270
- package/DEPLOYMENT.md +0 -605
- package/Dockerfile +0 -57
- package/Dockerfile.worker +0 -157
- package/FAQ.md +0 -19
- package/MCP.md +0 -406
- package/UI.md +0 -40
- package/assets/agent-swarm-logo-orange.png +0 -0
- package/assets/agent-swarm-logo.png +0 -0
- package/assets/agent-swarm.mp4 +0 -0
- package/assets/agent-swarm.png +0 -0
- package/biome.json +0 -39
- package/deploy/DEPLOY.md +0 -60
- package/deploy/agent-swarm.service +0 -17
- package/deploy/docker-push.ts +0 -30
- package/deploy/install.ts +0 -85
- package/deploy/prod-db.ts +0 -42
- package/deploy/uninstall.ts +0 -12
- package/deploy/update.ts +0 -21
- package/docker-compose.example.yml +0 -159
- package/docker-entrypoint.sh +0 -352
- package/ecosystem.config.cjs +0 -66
- package/plugin/README.md +0 -1
- package/plugin/hooks/hooks.json +0 -71
- package/pyproject.toml +0 -9
- package/scripts/generate-mcp-docs.ts +0 -415
- package/slack-manifest.json +0 -71
- package/src/tests/get-inbox-message.test.ts +0 -145
- package/src/tools/get-inbox-message.ts +0 -89
- package/src/tools/inbox-delegate.ts +0 -113
- package/thoughts/shared/plans/2025-12-18-slack-integration.md +0 -1195
- package/thoughts/shared/plans/2025-12-19-agent-log-streaming.md +0 -732
- package/thoughts/shared/plans/2025-12-19-role-based-swarm-plugin.md +0 -361
- package/thoughts/shared/plans/2025-12-20-mobile-responsive-ui.md +0 -501
- package/thoughts/shared/plans/2025-12-20-startup-team-swarm.md +0 -560
- package/thoughts/shared/plans/2025-12-23-runner-level-polling.md +0 -934
- package/thoughts/shared/plans/2025-12-23-runner-session-logs.md +0 -1000
- package/thoughts/shared/plans/2025-12-23-worker-lead-spawn-triggers.md +0 -568
- package/thoughts/shared/plans/2026-01-09-inverse-teleport.md +0 -1516
- package/thoughts/shared/plans/2026-01-12-agent-rename-pm2-control.md +0 -1133
- package/thoughts/shared/plans/2026-01-12-github-app-integration.md +0 -380
- package/thoughts/shared/plans/2026-01-12-lead-inbox-model.md +0 -876
- package/thoughts/shared/plans/2026-01-12-ralph-wiggum-integration.md +0 -463
- package/thoughts/shared/plans/2026-01-13-agent-concurrency.md +0 -691
- package/thoughts/shared/plans/2026-01-13-github-assignment-handling.md +0 -690
- package/thoughts/shared/plans/2026-01-13-prevent-duplicate-trigger-processing.md +0 -1071
- package/thoughts/shared/plans/2026-01-14-fix-slack-thread-context.md +0 -507
- package/thoughts/shared/plans/2026-01-15-scheduled-tasks-implementation.md +0 -565
- package/thoughts/shared/plans/2026-01-15-usage-cost-tracking-ui.md +0 -1479
- package/thoughts/shared/plans/2026-01-16-epics-feature-implementation.md +0 -1230
- package/thoughts/shared/research/.gitkeep +0 -0
- package/thoughts/shared/research/2025-01-09-inverse-teleport-plan-review.md +0 -420
- package/thoughts/shared/research/2025-12-18-slack-integration.md +0 -442
- package/thoughts/shared/research/2025-12-19-agent-log-streaming.md +0 -339
- package/thoughts/shared/research/2025-12-19-agent-secrets-cli-research.md +0 -390
- package/thoughts/shared/research/2025-12-21-gemini-cli-integration.md +0 -376
- package/thoughts/shared/research/2025-12-22-runner-loop-architecture.md +0 -582
- package/thoughts/shared/research/2025-12-22-setup-experience-improvements.md +0 -264
- package/thoughts/shared/research/2026-01-13-lead-duplicate-trigger-processing.md +0 -223
- package/thoughts/shared/research/2026-01-14-lead-slack-thread-context.md +0 -277
- package/thoughts/shared/research/2026-01-15-ai-tracker-agent-swarm-integration.md +0 -376
- package/thoughts/shared/research/2026-01-15-auto-starting-processes-in-worker-containers.md +0 -787
- package/thoughts/shared/research/2026-01-15-scheduled-tasks.md +0 -390
- package/thoughts/shared/research/2026-01-16-epics-feature-research.md +0 -437
- package/thoughts/taras/plans/2026-01-22-agent-swarm-schemas.md +0 -98
- package/thoughts/taras/plans/2026-01-28-per-worker-claude-md.md +0 -617
- package/thoughts/taras/plans/2026-01-28-sentry-cli-integration.md +0 -214
- package/thoughts/taras/research/2026-01-22-vercel-cli-integration.md +0 -287
- package/thoughts/taras/research/2026-01-27-excessive-polling-issue.md +0 -311
- package/thoughts/taras/research/2026-01-28-per-worker-claude-md.md +0 -383
- package/thoughts/taras/research/2026-01-28-sentry-cli-integration.md +0 -240
- package/tsconfig.json +0 -37
- package/ui/CLAUDE.md +0 -49
- package/ui/bun.lock +0 -771
- package/ui/index.html +0 -22
- package/ui/package-lock.json +0 -5290
- package/ui/package.json +0 -33
- package/ui/pnpm-lock.yaml +0 -3341
- package/ui/postcss.config.js +0 -6
- package/ui/public/logo.png +0 -0
- package/ui/src/App.tsx +0 -63
- package/ui/src/components/ActivityFeed.tsx +0 -440
- package/ui/src/components/AgentDetailPanel.tsx +0 -733
- package/ui/src/components/AgentsPanel.tsx +0 -815
- package/ui/src/components/ChatPanel.tsx +0 -1920
- package/ui/src/components/ConfigModal.tsx +0 -253
- package/ui/src/components/Dashboard.tsx +0 -832
- package/ui/src/components/EditAgentProfileModal.tsx +0 -433
- package/ui/src/components/EpicDetailPage.tsx +0 -741
- package/ui/src/components/EpicsPanel.tsx +0 -566
- package/ui/src/components/Header.tsx +0 -160
- package/ui/src/components/JsonViewer.tsx +0 -171
- package/ui/src/components/ScheduledTaskDetailPanel.tsx +0 -517
- package/ui/src/components/ScheduledTasksPanel.tsx +0 -639
- package/ui/src/components/ServicesPanel.tsx +0 -622
- package/ui/src/components/SessionLogPanel.tsx +0 -1219
- package/ui/src/components/StatsBar.tsx +0 -321
- package/ui/src/components/StatusBadge.tsx +0 -168
- package/ui/src/components/TaskDetailPanel.tsx +0 -903
- package/ui/src/components/TasksPanel.tsx +0 -614
- package/ui/src/components/UsageCharts.tsx +0 -216
- package/ui/src/components/UsageTab.tsx +0 -394
- package/ui/src/hooks/queries.ts +0 -353
- package/ui/src/hooks/useAutoScroll.ts +0 -83
- package/ui/src/index.css +0 -257
- package/ui/src/lib/api.ts +0 -268
- package/ui/src/lib/config.ts +0 -35
- package/ui/src/lib/contentPreview.ts +0 -208
- package/ui/src/lib/theme.ts +0 -214
- package/ui/src/lib/utils.ts +0 -88
- package/ui/src/main.tsx +0 -28
- package/ui/src/types/api.ts +0 -323
- package/ui/src/vite-env.d.ts +0 -1
- package/ui/tailwind.config.js +0 -37
- package/ui/tsconfig.json +0 -31
- package/ui/vite.config.ts +0 -35
- /package/{thoughts/shared/plans → templates/community}/.gitkeep +0 -0
package/README.md
CHANGED
|
@@ -1,277 +1,379 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://github.com/desplega-ai/agent-swarm/stargazers"><img src="https://img.shields.io/github/stars/desplega-ai/agent-swarm?style=flat-square&color=yellow" alt="GitHub Stars"></a>
|
|
3
|
+
<a href="https://github.com/desplega-ai/agent-swarm/blob/main/LICENSE"><img src="https://img.shields.io/github/license/desplega-ai/agent-swarm?style=flat-square" alt="MIT License"></a>
|
|
4
|
+
<a href="https://github.com/desplega-ai/agent-swarm/pulls"><img src="https://img.shields.io/badge/PRs-welcome-brightgreen?style=flat-square" alt="PRs Welcome"></a>
|
|
5
|
+
<a href="https://discord.gg/KZgfyyDVZa"><img src="https://img.shields.io/badge/Discord-Join%20us-5865F2?style=flat-square&logo=discord&logoColor=white" alt="Discord"></a>
|
|
6
|
+
<a href="https://docs.agent-swarm.dev"><img src="https://img.shields.io/badge/docs-agent--swarm.dev-blue?style=flat-square" alt="Docs"></a>
|
|
7
|
+
</p>
|
|
2
8
|
|
|
3
9
|
<p align="center">
|
|
4
|
-
<
|
|
10
|
+
<b>Multi-agent orchestration for Claude Code, Codex, Gemini CLI, and other AI coding assistants.</b><br/>
|
|
11
|
+
<sub>Built by <a href="https://desplega.sh">desplega.sh</a> — by builders, for builders.</sub>
|
|
5
12
|
</p>
|
|
6
13
|
|
|
7
14
|
https://github.com/user-attachments/assets/bd308567-d21e-44a5-87ec-d25aeb1de3d3
|
|
8
15
|
|
|
9
16
|
<p align="center">
|
|
10
|
-
<a href="https://
|
|
17
|
+
<a href="https://agent-swarm.dev">
|
|
18
|
+
<img src="https://img.shields.io/badge/Website-agent--swarm.dev-000?style=for-the-badge" alt="Website">
|
|
19
|
+
</a>
|
|
20
|
+
<a href="https://docs.agent-swarm.dev">
|
|
21
|
+
<img src="https://img.shields.io/badge/Docs-docs.agent--swarm.dev-amber?style=for-the-badge" alt="Docs">
|
|
22
|
+
</a>
|
|
23
|
+
<a href="https://app.agent-swarm.dev">
|
|
24
|
+
<img src="https://img.shields.io/badge/Dashboard-app.agent--swarm.dev-blue?style=for-the-badge" alt="Dashboard">
|
|
25
|
+
</a>
|
|
26
|
+
<a href="https://discord.gg/KZgfyyDVZa">
|
|
11
27
|
<img src="https://img.shields.io/badge/Discord-Join%20Community-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Join Discord">
|
|
12
28
|
</a>
|
|
29
|
+
<a href="https://x.com/swarm_lead">
|
|
30
|
+
<img src="https://img.shields.io/badge/𝕏-@swarm__lead-000?style=for-the-badge&logo=x&logoColor=white" alt="Follow on X">
|
|
31
|
+
</a>
|
|
13
32
|
</p>
|
|
14
33
|
|
|
15
|
-
>
|
|
34
|
+
> **What if your AI agents remembered everything, learned from every mistake, and got better with every task?**
|
|
35
|
+
|
|
36
|
+
Agent Swarm lets you run a team of AI coding agents that coordinate autonomously. A **lead agent** receives tasks (from you, Slack, or GitHub), breaks them down, and delegates to **worker agents** running in Docker containers. Workers execute tasks, report progress, and ship code — all without manual intervention.
|
|
37
|
+
|
|
38
|
+
## Key Features
|
|
39
|
+
|
|
40
|
+
- **Lead/Worker coordination** — A lead agent delegates and tracks work across multiple workers
|
|
41
|
+
- **Docker isolation** — Each worker runs in its own container with a full dev environment
|
|
42
|
+
- **Slack, GitHub, GitLab & Email integration** — Create tasks by messaging the bot, @mentioning it in issues/PRs/MRs, or sending an email
|
|
43
|
+
- **Task lifecycle** — Priority queues, dependencies, pause/resume across deployments
|
|
44
|
+
- **Compounding memory** — Agents learn from every session and get smarter over time
|
|
45
|
+
- **Persistent identity** — Each agent has its own personality, expertise, and working style that evolves
|
|
46
|
+
- **Dashboard UI** — Real-time monitoring of agents, tasks, and inter-agent chat
|
|
47
|
+
- **Service discovery** — Workers can expose HTTP services and discover each other
|
|
48
|
+
- **Scheduled tasks** — Cron-based recurring task automation
|
|
49
|
+
- **Templates registry** — Pre-built agent templates (9 official: lead, coder, researcher, reviewer, tester, FDE, content-writer, content-reviewer, content-strategist) with a gallery UI and docker-compose builder
|
|
50
|
+
- **GitLab integration** — Full GitLab webhook support alongside GitHub via provider adapter pattern
|
|
51
|
+
- **Working directory support** — Tasks can specify a custom starting directory for agents via the `dir` parameter
|
|
52
|
+
- **Multi-provider** — Run agents with Claude Code or pi-mono (`HARNESS_PROVIDER=claude|pi`)
|
|
53
|
+
- **Agent-fs integration** — Persistent, searchable filesystem shared across the swarm with auto-registration on first boot
|
|
54
|
+
- **Debug dashboard** — SQL query interface with Monaco editor and AG Grid results for database inspection
|
|
55
|
+
- **Workflow engine** — DAG-based workflow automation with executor registry, checkpoint durability, webhook/schedule/manual triggers, per-step retry, structured I/O schemas, fan-out/convergence, configurable failure handling, and version history
|
|
56
|
+
- **Linear integration** — Bidirectional ticket tracker sync via OAuth + webhooks with AgentSession lifecycle and generic tracker abstraction
|
|
57
|
+
- **Portless local dev** — Friendly URLs for local development (`api.swarm.localhost:1355`) via portless proxy
|
|
58
|
+
- **Onboarding wizard** — Interactive CLI wizard (`agent-swarm onboard`) to set up a new swarm from scratch with presets, credential collection, and docker-compose generation
|
|
16
59
|
|
|
17
|
-
##
|
|
60
|
+
## Quick Start
|
|
18
61
|
|
|
19
|
-
|
|
20
|
-
- [Quick Start](#quick-start)
|
|
21
|
-
- [CLI Commands](#cli-commands)
|
|
22
|
-
- [Deployment](#deployment)
|
|
23
|
-
- [Documentation](#documentation)
|
|
24
|
-
- [License](#license)
|
|
62
|
+
### Prerequisites
|
|
25
63
|
|
|
26
|
-
|
|
64
|
+
- [Docker](https://docker.com) and Docker Compose
|
|
65
|
+
- A [Claude Code](https://docs.anthropic.com/en/docs/claude-code) OAuth token (`claude setup-token`)
|
|
27
66
|
|
|
28
|
-
|
|
67
|
+
### Option A: Docker Compose (recommended)
|
|
29
68
|
|
|
30
|
-
|
|
69
|
+
The fastest way to get a full swarm running — API server, lead agent, and 2 workers.
|
|
31
70
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
- **Docker Workers** - Run isolated Claude workers in containers
|
|
36
|
-
- **Lead/Worker Pattern** - Coordinate work with a lead agent and multiple workers
|
|
37
|
-
- **Dashboard UI** - Real-time monitoring dashboard for agents, tasks, and channels
|
|
71
|
+
```bash
|
|
72
|
+
git clone https://github.com/desplega-ai/agent-swarm.git
|
|
73
|
+
cd agent-swarm
|
|
38
74
|
|
|
39
|
-
|
|
75
|
+
# Configure environment
|
|
76
|
+
cp .env.docker.example .env
|
|
77
|
+
# Edit .env — set API_KEY and CLAUDE_CODE_OAUTH_TOKEN at minimum
|
|
40
78
|
|
|
41
|
-
|
|
79
|
+
# Start everything
|
|
80
|
+
docker compose -f docker-compose.example.yml --env-file .env up -d
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
The API runs on port `3013`. The dashboard is available separately (see [Dashboard](#dashboard)).
|
|
84
|
+
|
|
85
|
+
The API includes interactive documentation at `http://localhost:3013/docs` (Scalar UI) and a machine-readable OpenAPI 3.1 spec at `http://localhost:3013/openapi.json`.
|
|
42
86
|
|
|
43
|
-
|
|
87
|
+
### Option B: Local API + Docker Workers
|
|
88
|
+
|
|
89
|
+
Run the API locally and connect Docker workers to it.
|
|
44
90
|
|
|
45
91
|
```bash
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
```
|
|
92
|
+
git clone https://github.com/desplega-ai/agent-swarm.git
|
|
93
|
+
cd agent-swarm
|
|
94
|
+
bun install
|
|
50
95
|
|
|
51
|
-
|
|
96
|
+
# 1. Configure and start the API server
|
|
97
|
+
cp .env.example .env
|
|
98
|
+
# Edit .env — set API_KEY
|
|
99
|
+
bun run start:http
|
|
100
|
+
```
|
|
52
101
|
|
|
53
|
-
|
|
102
|
+
In a new terminal, start a worker:
|
|
54
103
|
|
|
55
|
-
|
|
104
|
+
```bash
|
|
105
|
+
# 2. Configure and run a Docker worker
|
|
106
|
+
cp .env.docker.example .env.docker
|
|
107
|
+
# Edit .env.docker — set API_KEY (same as above) and CLAUDE_CODE_OAUTH_TOKEN
|
|
108
|
+
bun run docker:build:worker
|
|
109
|
+
mkdir -p ./logs ./work/shared ./work/worker-1
|
|
110
|
+
bun run docker:run:worker
|
|
111
|
+
```
|
|
56
112
|
|
|
57
|
-
|
|
113
|
+
### Option C: Claude Code as Lead Agent
|
|
58
114
|
|
|
59
|
-
|
|
115
|
+
Use Claude Code directly as the lead agent — no Docker required for the lead.
|
|
60
116
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
GITHUB_WEBHOOK_SECRET=your-secret
|
|
66
|
-
GITHUB_BOT_NAME=agent-swarm-bot # optional, default: agent-swarm-bot
|
|
67
|
-
```
|
|
68
|
-
4. Enable webhook events: Issues, Issue comment, Pull request, Pull request review comment
|
|
69
|
-
5. Install the app on your repositories
|
|
117
|
+
```bash
|
|
118
|
+
# After starting the API server (Option B, step 1):
|
|
119
|
+
bunx @desplega.ai/agent-swarm connect
|
|
120
|
+
```
|
|
70
121
|
|
|
71
|
-
|
|
122
|
+
This configures Claude Code to connect to the swarm. Start Claude Code and tell it:
|
|
72
123
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
| `/review-pr` | Analyze and review a pull request |
|
|
77
|
-
| `/create-pr` | Create PR from current branch changes |
|
|
78
|
-
| `/close-issue` | Close issue with summary comment |
|
|
79
|
-
| `/respond-github` | Comment on an issue or PR |
|
|
124
|
+
```
|
|
125
|
+
Register yourself as the lead agent in the agent-swarm.
|
|
126
|
+
```
|
|
80
127
|
|
|
81
|
-
|
|
128
|
+
## How It Works
|
|
82
129
|
|
|
83
|
-
|
|
130
|
+
```
|
|
131
|
+
You (Slack / GitHub / Email / CLI)
|
|
132
|
+
|
|
|
133
|
+
Lead Agent ←→ MCP API Server ←→ SQLite DB
|
|
134
|
+
|
|
|
135
|
+
┌────┼────┐
|
|
136
|
+
Worker Worker Worker
|
|
137
|
+
(Docker containers with full dev environments)
|
|
138
|
+
```
|
|
84
139
|
|
|
85
|
-
|
|
140
|
+
1. **You send a task** — via Slack DM, GitHub @mention, email, or directly through the API
|
|
141
|
+
2. **Lead agent plans** — breaks the task down and assigns subtasks to workers
|
|
142
|
+
3. **Workers execute** — each in an isolated Docker container with git, Node.js, Python, etc.
|
|
143
|
+
4. **Progress is tracked** — real-time updates in the dashboard, Slack threads, or API
|
|
144
|
+
5. **Results are delivered** — PRs created, issues closed, Slack replies sent
|
|
145
|
+
6. **Agents learn** — every session's learnings are extracted and recalled in future tasks
|
|
86
146
|
|
|
87
|
-
|
|
147
|
+
## Agents Get Smarter Over Time
|
|
88
148
|
|
|
89
|
-
|
|
90
|
-
- `event:read` - Read issues and events
|
|
91
|
-
- `project:read` - Read project data
|
|
92
|
-
- `org:read` - Read organization info
|
|
149
|
+
Agent Swarm agents aren't stateless. They build compounding knowledge through multiple automatic mechanisms:
|
|
93
150
|
|
|
94
|
-
|
|
95
|
-
```bash
|
|
96
|
-
SENTRY_AUTH_TOKEN=your-auth-token
|
|
97
|
-
SENTRY_ORG=your-org-slug
|
|
98
|
-
```
|
|
151
|
+
### Memory System
|
|
99
152
|
|
|
100
|
-
3.
|
|
101
|
-
```bash
|
|
102
|
-
sentry-cli info
|
|
103
|
-
```
|
|
153
|
+
Every agent has a searchable memory backed by OpenAI embeddings (`text-embedding-3-small`). Memories are automatically created from:
|
|
104
154
|
|
|
105
|
-
|
|
155
|
+
- **Session summaries** — At the end of each session, a lightweight model extracts key learnings: mistakes made, patterns discovered, failed approaches, and codebase knowledge. These summaries become searchable memories.
|
|
156
|
+
- **Task completions** — Every completed (or failed) task's output is indexed. Failed tasks include notes about what went wrong, so the agent avoids repeating the same mistake.
|
|
157
|
+
- **File-based notes** — Agents write to `/workspace/personal/memory/` in their per-agent directory. Files are automatically indexed and can be promoted to swarm scope.
|
|
158
|
+
- **Lead-to-worker injection** — The lead agent can push specific learnings into any worker's memory using the `inject-learning` tool, closing the feedback loop.
|
|
106
159
|
|
|
107
|
-
|
|
108
|
-
|---------|-------------|
|
|
109
|
-
| `/investigate-sentry-issue <url-or-id>` | Investigate a Sentry issue, get stacktrace, and triage |
|
|
160
|
+
Before starting each task, the runner automatically searches for relevant memories and includes them in the agent's context. Past experience directly informs future work.
|
|
110
161
|
|
|
111
|
-
###
|
|
162
|
+
### Persistent Identity
|
|
112
163
|
|
|
113
|
-
|
|
114
|
-
- Get issue details and stacktraces
|
|
115
|
-
- Analyze breadcrumbs and context
|
|
116
|
-
- Resolve, mute, or unresolve issues
|
|
164
|
+
Each agent has four identity files that persist across sessions and evolve over time:
|
|
117
165
|
|
|
118
|
-
Example
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
166
|
+
| File | Purpose | Example |
|
|
167
|
+
|------|---------|---------|
|
|
168
|
+
| **SOUL.md** | Core persona, values, behavioral directives | "You're not a chatbot. Be thorough. Own your mistakes." |
|
|
169
|
+
| **IDENTITY.md** | Expertise, working style, track record | "I'm the coding arm of the swarm. I ship fast and clean." |
|
|
170
|
+
| **TOOLS.md** | Environment knowledge — repos, services, APIs | "The API runs on port 3013. Use `wts` for worktree management." |
|
|
171
|
+
| **CLAUDE.md** | Persistent notes and instructions | Learnings, preferences, important context |
|
|
122
172
|
|
|
123
|
-
|
|
124
|
-
```
|
|
125
|
-
/investigate-sentry-issue 123456
|
|
126
|
-
```
|
|
173
|
+
Agents can edit these files directly during a session. Changes are synced to the database in real-time (on every file edit) and at session end. When the agent restarts, its identity is restored from the database. Version history is tracked for all changes.
|
|
127
174
|
|
|
128
|
-
|
|
175
|
+
The default templates encourage self-improvement:
|
|
176
|
+
- Tools you wished you had? Update your startup script.
|
|
177
|
+
- Environment knowledge gained? Record it in TOOLS.md.
|
|
178
|
+
- Patterns discovered? Add them to your notes.
|
|
179
|
+
- Mistakes to avoid? Add guardrails.
|
|
129
180
|
|
|
130
|
-
|
|
181
|
+
### Startup Scripts
|
|
131
182
|
|
|
132
|
-
|
|
183
|
+
Each agent has a startup script (`/workspace/start-up.sh`) that runs at every container start. Agents can modify this script to install tools, configure their environment, or set up workflows — and the changes persist across restarts. An agent that discovers it needs `ripgrep` will install it once, and it'll be there for every future session.
|
|
133
184
|
|
|
134
|
-
|
|
185
|
+
## Agent Configuration
|
|
135
186
|
|
|
136
|
-
|
|
137
|
-
- [Docker](https://docker.com)
|
|
138
|
-
- [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code)
|
|
187
|
+
### Identity Management
|
|
139
188
|
|
|
140
|
-
|
|
189
|
+
Agent identity is stored in the database and synced to the filesystem at session start. There are three ways to configure it:
|
|
141
190
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
bun install
|
|
146
|
-
```
|
|
191
|
+
1. **Default generation** — On first registration, the system generates templates based on the agent's name, role, and description.
|
|
192
|
+
2. **Self-editing** — Agents modify their own identity files during sessions. A PostToolUse hook syncs changes to the database in real-time.
|
|
193
|
+
3. **API / MCP tool** — Use the `update-profile` tool to programmatically set any identity field (soulMd, identityMd, toolsMd, claudeMd, setupScript).
|
|
147
194
|
|
|
148
|
-
###
|
|
195
|
+
### System Prompt Assembly
|
|
149
196
|
|
|
150
|
-
|
|
197
|
+
The system prompt is built from multiple layers, assembled at task start:
|
|
151
198
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
199
|
+
1. **Base role instructions** — Lead or worker-specific behavior rules
|
|
200
|
+
2. **Agent identity** — SOUL.md + IDENTITY.md content
|
|
201
|
+
3. **Repository context** — If the task targets a specific GitHub repo, that repo's CLAUDE.md is included
|
|
202
|
+
4. **Filesystem guide** — Memory directories, personal/shared workspace, setup script instructions
|
|
203
|
+
5. **Self-awareness** — How the agent is built (runtime, hooks, memory system, task lifecycle)
|
|
204
|
+
6. **Additional prompt** — Custom text from `SYSTEM_PROMPT` env var or `--system-prompt` CLI flag
|
|
155
205
|
|
|
156
|
-
|
|
157
|
-
- `API_KEY` - Secret key for API authentication (can be left empty, e.g. for local-only setups)
|
|
206
|
+
### Hook System
|
|
158
207
|
|
|
159
|
-
|
|
208
|
+
Six hooks fire during each Claude Code session, providing safety, context management, and persistence:
|
|
160
209
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
210
|
+
| Hook | When | What it does |
|
|
211
|
+
|------|------|-------------|
|
|
212
|
+
| **SessionStart** | Session begins | Writes CLAUDE.md from DB, loads concurrent session context for leads |
|
|
213
|
+
| **PreCompact** | Before context compaction | Injects a "goal reminder" with current task details so the agent doesn't lose track |
|
|
214
|
+
| **PreToolUse** | Before each tool call | Checks for task cancellation, detects tool loops (same tool/args repeated), blocks excessive polling |
|
|
215
|
+
| **PostToolUse** | After each tool call | Sends heartbeat, syncs identity file edits to DB, auto-indexes memory files |
|
|
216
|
+
| **UserPromptSubmit** | New iteration starts | Checks for task cancellation |
|
|
217
|
+
| **Stop** | Session ends | Saves PM2 state, syncs all identity files, runs session summarization via Haiku, marks agent offline |
|
|
164
218
|
|
|
165
|
-
|
|
166
|
-
- `API_KEY` - Same key as the API server
|
|
167
|
-
- `CLAUDE_CODE_OAUTH_TOKEN` - Run `claude setup-token` to get this
|
|
219
|
+
## Integrations
|
|
168
220
|
|
|
169
|
-
|
|
221
|
+
### Slack
|
|
170
222
|
|
|
171
|
-
|
|
223
|
+
Create a [Slack App](https://api.slack.com/apps) with Socket Mode enabled. Required scopes: `chat:write`, `users:read`, `users:read.email`, `channels:history`, `im:history`.
|
|
172
224
|
|
|
173
225
|
```bash
|
|
174
|
-
|
|
226
|
+
# Add to your .env
|
|
227
|
+
SLACK_BOT_TOKEN=xoxb-... # Bot User OAuth Token
|
|
228
|
+
SLACK_APP_TOKEN=xapp-... # App-Level Token (Socket Mode)
|
|
175
229
|
```
|
|
176
230
|
|
|
177
|
-
|
|
231
|
+
Message the bot directly to create tasks. Workers reply in threads with progress updates. Optionally restrict access with `SLACK_ALLOWED_EMAIL_DOMAINS` or `SLACK_ALLOWED_USER_IDS`.
|
|
232
|
+
|
|
233
|
+
### GitHub App
|
|
178
234
|
|
|
179
|
-
|
|
235
|
+
Set up a [GitHub App](https://github.com/settings/apps/new) to receive webhooks when the bot is @mentioned or assigned to issues/PRs.
|
|
180
236
|
|
|
181
|
-
|
|
237
|
+
**Webhook URL:** `https://<your-domain>/api/github/webhook`
|
|
238
|
+
|
|
239
|
+
**Required permissions:**
|
|
240
|
+
- Issues: Read & Write
|
|
241
|
+
- Pull requests: Read & Write
|
|
242
|
+
|
|
243
|
+
**Subscribe to events:** Issues, Issue comments, Pull requests, Pull request reviews, Pull request review comments, Check runs, Check suites, Workflow runs
|
|
182
244
|
|
|
183
245
|
```bash
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
246
|
+
# Add to your .env
|
|
247
|
+
GITHUB_WEBHOOK_SECRET=your-webhook-secret
|
|
248
|
+
GITHUB_BOT_NAME=your-bot-name # Default: agent-swarm-bot
|
|
249
|
+
|
|
250
|
+
# Optional: Enable bot reactions (emoji acknowledgments on GitHub)
|
|
251
|
+
GITHUB_APP_ID=123456
|
|
252
|
+
GITHUB_APP_PRIVATE_KEY=base64-encoded-key
|
|
187
253
|
```
|
|
188
254
|
|
|
189
|
-
|
|
255
|
+
**Supported events:**
|
|
190
256
|
|
|
191
|
-
|
|
257
|
+
| Event | What happens |
|
|
258
|
+
|-------|-------------|
|
|
259
|
+
| Bot assigned to PR/issue | Creates a task for the lead agent |
|
|
260
|
+
| Review requested from bot | Creates a review task |
|
|
261
|
+
| `@bot-name` in comment/issue/PR | Creates a task with the mention context |
|
|
262
|
+
| PR review submitted (on bot's PR) | Creates a notification task with review feedback |
|
|
263
|
+
| CI failure (on PRs with existing tasks) | Creates a CI notification task |
|
|
192
264
|
|
|
193
|
-
|
|
265
|
+
### GitLab
|
|
194
266
|
|
|
195
|
-
|
|
267
|
+
Set up a GitLab webhook to receive events when the bot is @mentioned or assigned to issues/MRs.
|
|
196
268
|
|
|
197
|
-
|
|
269
|
+
**Webhook URL:** `https://<your-domain>/api/gitlab/webhook`
|
|
198
270
|
|
|
199
271
|
```bash
|
|
200
|
-
|
|
272
|
+
# Add to your .env
|
|
273
|
+
GITLAB_WEBHOOK_SECRET=your-webhook-secret
|
|
274
|
+
GITLAB_TOKEN=your-gitlab-token # PAT or Group Access Token
|
|
275
|
+
GITLAB_BOT_NAME=agent-swarm-bot # Bot name for @mentions
|
|
276
|
+
GITLAB_URL=https://gitlab.com # GitLab instance URL
|
|
201
277
|
```
|
|
202
278
|
|
|
203
|
-
|
|
279
|
+
**Supported events:**
|
|
204
280
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
281
|
+
| Event | What happens |
|
|
282
|
+
|-------|-------------|
|
|
283
|
+
| Bot assigned to MR/issue | Creates a task for the lead agent |
|
|
284
|
+
| `@bot-name` in comment/issue/MR | Creates a task with the mention context |
|
|
285
|
+
| Pipeline failure (on MRs with existing tasks) | Creates a CI notification task |
|
|
208
286
|
|
|
209
|
-
|
|
287
|
+
Workers have `glab` CLI pre-installed for GitLab operations (creating MRs, commenting on issues, etc.).
|
|
210
288
|
|
|
211
|
-
|
|
289
|
+
### AgentMail
|
|
212
290
|
|
|
213
|
-
|
|
214
|
-
- Use `--dry-run` to preview changes without applying them.
|
|
291
|
+
Give your agents email addresses via [AgentMail](https://agentmail.to). Emails are routed to agents as tasks or inbox messages.
|
|
215
292
|
|
|
216
|
-
|
|
293
|
+
**Webhook URL:** `https://<your-domain>/api/agentmail/webhook`
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
# Add to your .env
|
|
297
|
+
AGENTMAIL_WEBHOOK_SECRET=your-svix-secret
|
|
298
|
+
```
|
|
217
299
|
|
|
218
|
-
|
|
300
|
+
Agents self-register which inboxes they receive mail from using the `register-agentmail-inbox` MCP tool. Emails to a worker's inbox become tasks; emails to a lead's inbox become inbox messages for triage. Follow-up emails in the same thread are automatically routed to the same agent.
|
|
219
301
|
|
|
220
|
-
|
|
302
|
+
### Sentry
|
|
221
303
|
|
|
304
|
+
Workers can investigate Sentry issues directly with the `/investigate-sentry-issue` command. Add `SENTRY_AUTH_TOKEN` and `SENTRY_ORG` to your worker's environment.
|
|
222
305
|
|
|
223
|
-
|
|
224
|
-
|---------|-------------|
|
|
225
|
-
| `setup` | Initialize agent-swarm in a project |
|
|
226
|
-
| `mcp` | Start the MCP HTTP server |
|
|
227
|
-
| `worker` | Run Claude as a worker agent |
|
|
228
|
-
| `lead` | Run Claude as a lead agent |
|
|
229
|
-
| `hook` | Handle Claude Code hook events |
|
|
230
|
-
| `help` | Show help message |
|
|
306
|
+
## Dashboard
|
|
231
307
|
|
|
232
|
-
|
|
308
|
+
A React-based monitoring dashboard for real-time visibility into your swarm.
|
|
233
309
|
|
|
234
310
|
```bash
|
|
235
|
-
|
|
236
|
-
|
|
311
|
+
cd new-ui && pnpm install && pnpm run dev
|
|
312
|
+
```
|
|
237
313
|
|
|
238
|
-
|
|
239
|
-
bunx @desplega.ai/agent-swarm mcp --port 8080 --key my-api-key
|
|
314
|
+
Opens at `http://localhost:5173`. See [UI.md](./UI.md) for details.
|
|
240
315
|
|
|
241
|
-
|
|
242
|
-
bunx @desplega.ai/agent-swarm worker --system-prompt "You are a Python specialist"
|
|
316
|
+
## CLI
|
|
243
317
|
|
|
244
|
-
|
|
245
|
-
bunx @desplega.ai/agent-swarm
|
|
318
|
+
```bash
|
|
319
|
+
bunx @desplega.ai/agent-swarm <command>
|
|
246
320
|
```
|
|
247
321
|
|
|
248
|
-
|
|
322
|
+
| Command | Description |
|
|
323
|
+
|---------|-------------|
|
|
324
|
+
| `onboard` | Set up a new swarm from scratch (Docker Compose wizard) |
|
|
325
|
+
| `connect` | Connect this project to an existing swarm |
|
|
326
|
+
| `api` | Start the API + MCP HTTP server |
|
|
327
|
+
| `claude` | Run Claude CLI with optional message and headless mode |
|
|
328
|
+
| `worker` | Run a worker agent |
|
|
329
|
+
| `lead` | Run a lead agent |
|
|
330
|
+
| `docs` | Open documentation (`--open` to launch in browser) |
|
|
331
|
+
| `artifact` | Manage agent artifacts |
|
|
249
332
|
|
|
250
333
|
## Deployment
|
|
251
334
|
|
|
252
|
-
For production deployments, see [
|
|
253
|
-
|
|
254
|
-
- API service (MCP HTTP server)
|
|
255
|
-
- Multiple worker agents
|
|
256
|
-
- Lead agent
|
|
257
|
-
- Shared volumes for logs and workspaces
|
|
335
|
+
For production deployments, see [DEPLOYMENT.md](./DEPLOYMENT.md) which covers:
|
|
258
336
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
337
|
+
- Docker Compose setup with multiple workers
|
|
338
|
+
- systemd deployment for the API server
|
|
339
|
+
- Graceful shutdown and task resume
|
|
340
|
+
- Integration configuration (Slack, GitHub, AgentMail, Sentry)
|
|
262
341
|
|
|
263
342
|
## Documentation
|
|
264
343
|
|
|
265
|
-
|
|
|
344
|
+
| Resource | Description |
|
|
266
345
|
|----------|-------------|
|
|
346
|
+
| [docs.agent-swarm.dev](https://docs.agent-swarm.dev) | Full documentation site |
|
|
347
|
+
| [app.agent-swarm.dev](https://app.agent-swarm.dev) | Hosted dashboard — connect your deployed swarm |
|
|
348
|
+
| [DEPLOYMENT.md](./DEPLOYMENT.md) | Production deployment guide |
|
|
349
|
+
| [Environment Variables](https://docs.agent-swarm.dev/docs/reference/environment-variables) | Complete environment variables reference |
|
|
350
|
+
| [CONTRIBUTING.md](./CONTRIBUTING.md) | Development setup and project structure |
|
|
267
351
|
| [UI.md](./UI.md) | Dashboard UI overview |
|
|
268
|
-
| [DEPLOYMENT.md](./DEPLOYMENT.md) | Docker, Docker Compose, systemd deployment |
|
|
269
|
-
| [CONTRIBUTING.md](./CONTRIBUTING.md) | Development setup, code quality, project structure |
|
|
270
352
|
| [MCP.md](./MCP.md) | MCP tools reference (auto-generated) |
|
|
271
|
-
| [FAQ.md](./FAQ.md) | Frequently asked questions |
|
|
272
353
|
|
|
273
|
-
|
|
354
|
+
## Contributing
|
|
355
|
+
|
|
356
|
+
We love contributions! Whether it's bug reports, feature requests, docs improvements, or code — all are welcome.
|
|
357
|
+
|
|
358
|
+
See [CONTRIBUTING.md](./CONTRIBUTING.md) to get started. The quickest way to contribute:
|
|
359
|
+
|
|
360
|
+
1. Fork the repo
|
|
361
|
+
2. Create a branch (`git checkout -b my-feature`)
|
|
362
|
+
3. Make your changes
|
|
363
|
+
4. Open a PR
|
|
364
|
+
|
|
365
|
+
Join our [Discord](https://discord.gg/KZgfyyDVZa) if you have questions or want to discuss ideas.
|
|
366
|
+
|
|
367
|
+
## Star History
|
|
368
|
+
|
|
369
|
+
<a href="https://star-history.com/#desplega-ai/agent-swarm&Date">
|
|
370
|
+
<picture>
|
|
371
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=desplega-ai/agent-swarm&type=Date&theme=dark" />
|
|
372
|
+
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=desplega-ai/agent-swarm&type=Date" />
|
|
373
|
+
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=desplega-ai/agent-swarm&type=Date" />
|
|
374
|
+
</picture>
|
|
375
|
+
</a>
|
|
274
376
|
|
|
275
377
|
## License
|
|
276
378
|
|
|
277
|
-
[MIT
|
|
379
|
+
[MIT](./LICENSE) — 2025-2026 [desplega.ai](https://desplega.ai)
|