@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.
Files changed (561) hide show
  1. package/README.md +271 -169
  2. package/openapi.json +5015 -0
  3. package/package.json +40 -7
  4. package/plugin/commands/close-issue.md +7 -3
  5. package/plugin/commands/create-pr.md +18 -12
  6. package/plugin/commands/implement-issue.md +7 -3
  7. package/plugin/commands/respond-github.md +8 -4
  8. package/plugin/commands/review-pr.md +44 -10
  9. package/plugin/commands/start-leader.md +1 -3
  10. package/plugin/commands/start-worker.md +1 -3
  11. package/plugin/commands/work-on-task.md +22 -3
  12. package/plugin/pi-skills/close-issue/SKILL.md +90 -0
  13. package/plugin/pi-skills/create-pr/SKILL.md +99 -0
  14. package/plugin/pi-skills/implement-issue/SKILL.md +135 -0
  15. package/plugin/pi-skills/investigate-sentry-issue/SKILL.md +138 -0
  16. package/plugin/pi-skills/respond-github/SKILL.md +98 -0
  17. package/plugin/pi-skills/review-offered-task/SKILL.md +45 -0
  18. package/plugin/pi-skills/review-pr/SKILL.md +261 -0
  19. package/plugin/pi-skills/start-leader/SKILL.md +121 -0
  20. package/plugin/pi-skills/start-worker/SKILL.md +60 -0
  21. package/plugin/pi-skills/swarm-chat/SKILL.md +82 -0
  22. package/plugin/pi-skills/todos/SKILL.md +66 -0
  23. package/plugin/pi-skills/work-on-task/SKILL.md +65 -0
  24. package/plugin/skills/artifacts/examples/approval-flow.ts +34 -0
  25. package/plugin/skills/artifacts/examples/hono-dashboard.ts +31 -0
  26. package/plugin/skills/artifacts/examples/multi-artifact.ts +20 -0
  27. package/plugin/skills/artifacts/examples/static-report.sh +17 -0
  28. package/plugin/skills/artifacts/skill.md +71 -0
  29. package/src/agentmail/app.ts +65 -0
  30. package/src/agentmail/handlers.ts +262 -0
  31. package/src/agentmail/index.ts +9 -0
  32. package/src/agentmail/templates.ts +111 -0
  33. package/src/agentmail/types.ts +51 -0
  34. package/src/artifact-sdk/browser-sdk.ts +30 -0
  35. package/src/artifact-sdk/index.ts +2 -0
  36. package/src/artifact-sdk/localtunnel.d.ts +20 -0
  37. package/src/artifact-sdk/port.ts +12 -0
  38. package/src/artifact-sdk/server.ts +156 -0
  39. package/src/artifact-sdk/tunnel.ts +19 -0
  40. package/src/be/chunking.ts +193 -0
  41. package/src/be/db-queries/oauth.ts +90 -0
  42. package/src/be/db-queries/tracker.ts +182 -0
  43. package/src/be/db.ts +3327 -784
  44. package/src/be/embedding.ts +80 -0
  45. package/src/be/migrations/001_initial.sql +409 -0
  46. package/src/be/migrations/002_one_time_schedules.sql +59 -0
  47. package/src/be/migrations/003_workflows.sql +51 -0
  48. package/src/be/migrations/004_workflow_source.sql +81 -0
  49. package/src/be/migrations/005_epic_next_steps.sql +2 -0
  50. package/src/be/migrations/006_vcs_provider.sql +94 -0
  51. package/src/be/migrations/007_task_dir.sql +2 -0
  52. package/src/be/migrations/008_workflow_redesign.sql +85 -0
  53. package/src/be/migrations/009_tracker_integration.sql +144 -0
  54. package/src/be/migrations/010_step_diagnostics.sql +1 -0
  55. package/src/be/migrations/011_step_next_port.sql +1 -0
  56. package/src/be/migrations/012_trigger_schema.sql +1 -0
  57. package/src/be/migrations/013_task_output_schema.sql +2 -0
  58. package/src/be/migrations/014_prompt_templates.sql +33 -0
  59. package/src/be/migrations/015_workflow_workspace.sql +3 -0
  60. package/src/be/migrations/016_active_session_runner_session.sql +4 -0
  61. package/src/be/migrations/017_channel_activity_cursors.sql +6 -0
  62. package/src/be/migrations/018_fix_seed_double_version.sql +30 -0
  63. package/src/be/migrations/runner.ts +188 -0
  64. package/src/be/seed.ts +62 -0
  65. package/src/cli.tsx +231 -299
  66. package/src/commands/artifact.ts +241 -0
  67. package/src/commands/onboard/compose-generator.ts +169 -0
  68. package/src/commands/onboard/env-generator.ts +79 -0
  69. package/src/commands/onboard/manifest.ts +37 -0
  70. package/src/commands/onboard/presets.ts +85 -0
  71. package/src/commands/onboard/service-names.ts +47 -0
  72. package/src/commands/onboard/steps/core-credentials.tsx +111 -0
  73. package/src/commands/onboard/steps/custom-templates.tsx +168 -0
  74. package/src/commands/onboard/steps/generate.tsx +154 -0
  75. package/src/commands/onboard/steps/harness-credentials.tsx +195 -0
  76. package/src/commands/onboard/steps/harness.tsx +21 -0
  77. package/src/commands/onboard/steps/health-check.tsx +171 -0
  78. package/src/commands/onboard/steps/integration-github.tsx +105 -0
  79. package/src/commands/onboard/steps/integration-gitlab.tsx +79 -0
  80. package/src/commands/onboard/steps/integration-menu.tsx +58 -0
  81. package/src/commands/onboard/steps/integration-sentry.tsx +79 -0
  82. package/src/commands/onboard/steps/integration-slack.tsx +165 -0
  83. package/src/commands/onboard/steps/post-connect.tsx +145 -0
  84. package/src/commands/onboard/steps/post-dashboard.tsx +34 -0
  85. package/src/commands/onboard/steps/post-task.tsx +103 -0
  86. package/src/commands/onboard/steps/prereq-check.tsx +178 -0
  87. package/src/commands/onboard/steps/review.tsx +82 -0
  88. package/src/commands/onboard/steps/start.tsx +97 -0
  89. package/src/commands/onboard/templates.ts +34 -0
  90. package/src/commands/onboard/types.ts +259 -0
  91. package/src/commands/onboard.tsx +425 -0
  92. package/src/commands/runner.ts +1540 -630
  93. package/src/commands/setup.tsx +23 -38
  94. package/src/commands/shared/client-config.ts +41 -0
  95. package/src/commands/templates.ts +172 -0
  96. package/src/github/app.ts +8 -0
  97. package/src/github/handlers.ts +384 -151
  98. package/src/github/index.ts +1 -0
  99. package/src/github/mentions-aliases.test.ts +73 -0
  100. package/src/github/mentions.test.ts +3 -3
  101. package/src/github/mentions.ts +32 -6
  102. package/src/github/templates.ts +398 -0
  103. package/src/github/types.ts +1 -0
  104. package/src/gitlab/auth.ts +63 -0
  105. package/src/gitlab/handlers.ts +368 -0
  106. package/src/gitlab/index.ts +19 -0
  107. package/src/gitlab/reactions.ts +104 -0
  108. package/src/gitlab/templates.ts +140 -0
  109. package/src/gitlab/types.ts +130 -0
  110. package/src/heartbeat/heartbeat.ts +434 -0
  111. package/src/heartbeat/index.ts +1 -0
  112. package/src/heartbeat/templates.ts +30 -0
  113. package/src/hooks/hook.ts +555 -4
  114. package/src/hooks/tool-loop-detection.test.ts +158 -0
  115. package/src/hooks/tool-loop-detection.ts +167 -0
  116. package/src/http/active-sessions.ts +199 -0
  117. package/src/http/agents.ts +328 -0
  118. package/src/http/config.ts +191 -0
  119. package/src/http/core.ts +309 -0
  120. package/src/http/db-query.ts +91 -0
  121. package/src/http/ecosystem.ts +63 -0
  122. package/src/http/epics.ts +460 -0
  123. package/src/http/index.ts +216 -0
  124. package/src/http/mcp.ts +77 -0
  125. package/src/http/memory.ts +168 -0
  126. package/src/http/openapi.ts +109 -0
  127. package/src/http/poll.ts +299 -0
  128. package/src/http/prompt-templates.ts +412 -0
  129. package/src/http/repos.ts +195 -0
  130. package/src/http/route-def.ts +123 -0
  131. package/src/http/schedules.ts +426 -0
  132. package/src/http/session-data.ts +241 -0
  133. package/src/http/stats.ts +174 -0
  134. package/src/http/tasks.ts +468 -0
  135. package/src/http/trackers/index.ts +10 -0
  136. package/src/http/trackers/linear.ts +187 -0
  137. package/src/http/types.ts +12 -0
  138. package/src/http/utils.ts +87 -0
  139. package/src/http/webhooks.ts +432 -0
  140. package/src/http/workflows.ts +530 -0
  141. package/src/http.ts +1 -1890
  142. package/src/linear/README.md +65 -0
  143. package/src/linear/app.ts +48 -0
  144. package/src/linear/client.ts +18 -0
  145. package/src/linear/index.ts +1 -0
  146. package/src/linear/oauth.ts +35 -0
  147. package/src/linear/outbound.ts +212 -0
  148. package/src/linear/sync.ts +567 -0
  149. package/src/linear/templates.ts +47 -0
  150. package/src/linear/types.ts +7 -0
  151. package/src/linear/webhook.ts +104 -0
  152. package/src/oauth/README.md +66 -0
  153. package/src/oauth/index.ts +6 -0
  154. package/src/oauth/wrapper.ts +204 -0
  155. package/src/prompts/base-prompt.ts +150 -265
  156. package/src/prompts/defaults.ts +196 -0
  157. package/src/prompts/registry.ts +57 -0
  158. package/src/prompts/resolver.ts +296 -0
  159. package/src/prompts/session-templates.ts +604 -0
  160. package/src/providers/claude-adapter.ts +442 -0
  161. package/src/providers/index.ts +24 -0
  162. package/src/providers/pi-mono-adapter.ts +442 -0
  163. package/src/providers/pi-mono-extension.ts +624 -0
  164. package/src/providers/pi-mono-mcp-client.ts +124 -0
  165. package/src/providers/types.ts +75 -0
  166. package/src/scheduler/scheduler.test.ts +2 -0
  167. package/src/scheduler/scheduler.ts +231 -40
  168. package/src/server.ts +97 -6
  169. package/src/slack/HEURISTICS.md +105 -0
  170. package/src/slack/actions.ts +133 -0
  171. package/src/slack/app.ts +7 -0
  172. package/src/slack/assistant.ts +118 -0
  173. package/src/slack/blocks.ts +233 -0
  174. package/src/slack/channel-activity.ts +177 -0
  175. package/src/slack/commands.ts +31 -17
  176. package/src/slack/files.ts +1 -1
  177. package/src/slack/handlers.test.ts +114 -1
  178. package/src/slack/handlers.ts +230 -55
  179. package/src/slack/responses.ts +120 -67
  180. package/src/slack/router.ts +17 -99
  181. package/src/slack/templates.ts +55 -0
  182. package/src/slack/thread-buffer.ts +213 -0
  183. package/src/slack/watcher.ts +119 -4
  184. package/src/tests/agent-activity.test.ts +247 -0
  185. package/src/tests/agentmail-filters.test.ts +97 -0
  186. package/src/tests/artifact-sdk.test.ts +800 -0
  187. package/src/tests/base-prompt.test.ts +264 -0
  188. package/src/tests/build-pi-skills.test.ts +127 -0
  189. package/src/tests/channel-activity.test.ts +363 -0
  190. package/src/tests/claude-adapter.test.ts +126 -0
  191. package/src/tests/context-versioning.test.ts +425 -0
  192. package/src/tests/db-queries-oauth.test.ts +197 -0
  193. package/src/tests/db-queries-tracker.test.ts +230 -0
  194. package/src/tests/epics.test.ts +3 -3
  195. package/src/tests/error-tracker.test.ts +368 -0
  196. package/src/tests/fetch-resolved-env.test.ts +167 -0
  197. package/src/tests/generate-default-claude-md.test.ts +9 -1
  198. package/src/tests/generate-identity-templates.test.ts +124 -0
  199. package/src/tests/gitlab-auth.test.ts +109 -0
  200. package/src/tests/gitlab-handlers.test.ts +691 -0
  201. package/src/tests/gitlab-vcs-db.test.ts +177 -0
  202. package/src/tests/heartbeat.test.ts +364 -0
  203. package/src/tests/http-api-integration.test.ts +1698 -0
  204. package/src/tests/linear-outbound-sync.test.ts +200 -0
  205. package/src/tests/linear-webhook.test.ts +406 -0
  206. package/src/tests/match-route.test.ts +187 -0
  207. package/src/tests/memory.test.ts +737 -0
  208. package/src/tests/migration-runner-regressions.test.ts +86 -0
  209. package/src/tests/model-control.test.ts +338 -0
  210. package/src/tests/oauth-wrapper.test.ts +147 -0
  211. package/src/tests/onboard-compose.test.ts +138 -0
  212. package/src/tests/onboard-env.test.ts +174 -0
  213. package/src/tests/onboard-manifest.test.ts +137 -0
  214. package/src/tests/pi-mono-adapter.test.ts +234 -0
  215. package/src/tests/pool-session-logs.test.ts +199 -0
  216. package/src/tests/progress-dedup.test.ts +98 -0
  217. package/src/tests/prompt-template-github.test.ts +682 -0
  218. package/src/tests/prompt-template-remaining.test.ts +504 -0
  219. package/src/tests/prompt-template-resolver.test.ts +621 -0
  220. package/src/tests/prompt-template-session.test.ts +363 -0
  221. package/src/tests/prompt-templates-db.test.ts +616 -0
  222. package/src/tests/provider-adapter.test.ts +122 -0
  223. package/src/tests/provider-command-format.test.ts +98 -0
  224. package/src/tests/reload-config.test.ts +170 -0
  225. package/src/tests/runner-polling-api.test.ts +25 -20
  226. package/src/tests/scheduled-tasks.test.ts +104 -0
  227. package/src/tests/scheduler-backoff.test.ts +166 -0
  228. package/src/tests/self-improvement.test.ts +541 -0
  229. package/src/tests/session-attach.test.ts +536 -0
  230. package/src/tests/session-costs.test.ts +267 -1
  231. package/src/tests/slack-actions.test.ts +133 -0
  232. package/src/tests/slack-assistant.test.ts +136 -0
  233. package/src/tests/slack-blocks.test.ts +246 -0
  234. package/src/tests/slack-metadata-inheritance.test.ts +243 -0
  235. package/src/tests/slack-queue-offline.test.ts +174 -0
  236. package/src/tests/slack-router.test.ts +181 -0
  237. package/src/tests/slack-thread-buffer.test.ts +305 -0
  238. package/src/tests/slack-thread-followups.test.ts +298 -0
  239. package/src/tests/slack-watcher.test.ts +101 -0
  240. package/src/tests/structured-output.test.ts +307 -0
  241. package/src/tests/swarm-repos.test.ts +198 -0
  242. package/src/tests/task-cancellation.test.ts +6 -4
  243. package/src/tests/task-working-dir.test.ts +176 -0
  244. package/src/tests/template-fetch.test.ts +490 -0
  245. package/src/tests/tool-annotations.test.ts +371 -0
  246. package/src/tests/tracker-tools.test.ts +184 -0
  247. package/src/tests/update-profile-agentid.test.ts +248 -0
  248. package/src/tests/update-profile-api.test.ts +143 -3
  249. package/src/tests/update-profile-auth.test.ts +195 -0
  250. package/src/tests/validation-adapters.test.ts +86 -0
  251. package/src/tests/vcs-provider.test.ts +27 -0
  252. package/src/tests/workflow-agent-task.test.ts +196 -0
  253. package/src/tests/workflow-async-v2.test.ts +508 -0
  254. package/src/tests/workflow-convergence.test.ts +541 -0
  255. package/src/tests/workflow-definition-validation.test.ts +366 -0
  256. package/src/tests/workflow-engine-v2.test.ts +691 -0
  257. package/src/tests/workflow-executors.test.ts +736 -0
  258. package/src/tests/workflow-http-v2.test.ts +599 -0
  259. package/src/tests/workflow-integration-io.test.ts +902 -0
  260. package/src/tests/workflow-io-schemas.test.ts +624 -0
  261. package/src/tests/workflow-registry.test.ts +592 -0
  262. package/src/tests/workflow-retry-v2.test.ts +401 -0
  263. package/src/tests/workflow-retry-validation.test.ts +282 -0
  264. package/src/tests/workflow-schedule-trigger.test.ts +104 -0
  265. package/src/tests/workflow-template.test.ts +288 -0
  266. package/src/tests/workflow-trigger-schema.test.ts +359 -0
  267. package/src/tests/workflow-triggers-v2.test.ts +264 -0
  268. package/src/tests/workflow-versions.test.ts +208 -0
  269. package/src/tests/workflow-workspace.test.ts +272 -0
  270. package/src/tests/x402-client.test.ts +117 -0
  271. package/src/tests/x402-config.test.ts +182 -0
  272. package/src/tests/x402-spending-tracker.test.ts +185 -0
  273. package/src/tools/cancel-task.ts +2 -0
  274. package/src/tools/context-diff.ts +171 -0
  275. package/src/tools/context-history.ts +138 -0
  276. package/src/tools/create-channel.ts +1 -0
  277. package/src/tools/db-query.ts +78 -0
  278. package/src/tools/delete-channel.ts +132 -0
  279. package/src/tools/epics/assign-task-to-epic.ts +1 -0
  280. package/src/tools/epics/create-epic.ts +3 -2
  281. package/src/tools/epics/delete-epic.ts +2 -0
  282. package/src/tools/epics/get-epic-details.ts +2 -0
  283. package/src/tools/epics/list-epics.ts +2 -0
  284. package/src/tools/epics/unassign-task-from-epic.ts +1 -0
  285. package/src/tools/epics/update-epic.ts +7 -4
  286. package/src/tools/get-swarm.ts +2 -0
  287. package/src/tools/get-task-details.ts +2 -0
  288. package/src/tools/get-tasks.ts +27 -1
  289. package/src/tools/inject-learning.ts +106 -0
  290. package/src/tools/join-swarm.ts +17 -7
  291. package/src/tools/list-channels.ts +2 -0
  292. package/src/tools/list-services.ts +2 -0
  293. package/src/tools/memory-get.ts +56 -0
  294. package/src/tools/memory-search.ts +131 -0
  295. package/src/tools/my-agent-info.ts +2 -0
  296. package/src/tools/poll-task.ts +2 -20
  297. package/src/tools/post-message.ts +1 -0
  298. package/src/tools/prompt-templates/delete.ts +86 -0
  299. package/src/tools/prompt-templates/get.ts +89 -0
  300. package/src/tools/prompt-templates/index.ts +5 -0
  301. package/src/tools/prompt-templates/list.ts +95 -0
  302. package/src/tools/prompt-templates/preview.ts +84 -0
  303. package/src/tools/prompt-templates/set.ts +117 -0
  304. package/src/tools/read-messages.ts +2 -0
  305. package/src/tools/register-agentmail-inbox.ts +166 -0
  306. package/src/tools/register-service.ts +2 -0
  307. package/src/tools/schedules/create-schedule.ts +134 -24
  308. package/src/tools/schedules/delete-schedule.ts +2 -0
  309. package/src/tools/schedules/list-schedules.ts +20 -4
  310. package/src/tools/schedules/run-schedule-now.ts +1 -0
  311. package/src/tools/schedules/update-schedule.ts +49 -17
  312. package/src/tools/send-task.ts +132 -10
  313. package/src/tools/slack-download-file.ts +4 -2
  314. package/src/tools/slack-list-channels.ts +2 -0
  315. package/src/tools/slack-post.ts +2 -0
  316. package/src/tools/slack-read.ts +2 -0
  317. package/src/tools/slack-reply.ts +2 -0
  318. package/src/tools/slack-upload-file.ts +2 -0
  319. package/src/tools/store-progress.ts +205 -4
  320. package/src/tools/swarm-config/delete-config.ts +87 -0
  321. package/src/tools/swarm-config/get-config.ts +108 -0
  322. package/src/tools/swarm-config/index.ts +4 -0
  323. package/src/tools/swarm-config/list-config.ts +99 -0
  324. package/src/tools/swarm-config/set-config.ts +118 -0
  325. package/src/tools/task-action.ts +50 -5
  326. package/src/tools/task-dedup.ts +97 -0
  327. package/src/tools/templates.ts +53 -0
  328. package/src/tools/tool-config.ts +124 -0
  329. package/src/tools/tracker/index.ts +6 -0
  330. package/src/tools/tracker/tracker-link-epic.ts +64 -0
  331. package/src/tools/tracker/tracker-link-task.ts +64 -0
  332. package/src/tools/tracker/tracker-map-agent.ts +57 -0
  333. package/src/tools/tracker/tracker-status.ts +56 -0
  334. package/src/tools/tracker/tracker-sync-status.ts +42 -0
  335. package/src/tools/tracker/tracker-unlink.ts +41 -0
  336. package/src/tools/unregister-service.ts +2 -0
  337. package/src/tools/update-profile.ts +172 -17
  338. package/src/tools/update-service-status.ts +2 -0
  339. package/src/tools/utils.ts +10 -1
  340. package/src/tools/workflows/create-workflow.ts +129 -0
  341. package/src/tools/workflows/delete-workflow.ts +42 -0
  342. package/src/tools/workflows/get-workflow-run.ts +59 -0
  343. package/src/tools/workflows/get-workflow.ts +53 -0
  344. package/src/tools/workflows/index.ts +9 -0
  345. package/src/tools/workflows/list-workflow-runs.ts +48 -0
  346. package/src/tools/workflows/list-workflows.ts +42 -0
  347. package/src/tools/workflows/retry-workflow-run.ts +40 -0
  348. package/src/tools/workflows/trigger-workflow.ts +96 -0
  349. package/src/tools/workflows/update-workflow.ts +133 -0
  350. package/src/tracker/types.ts +51 -0
  351. package/src/types.ts +530 -14
  352. package/src/utils/credentials.test.ts +156 -0
  353. package/src/utils/credentials.ts +50 -0
  354. package/src/utils/error-tracker.ts +190 -0
  355. package/src/vcs/index.ts +15 -0
  356. package/src/vcs/types.ts +5 -0
  357. package/src/workflows/checkpoint.ts +121 -0
  358. package/src/workflows/cooldown.ts +28 -0
  359. package/src/workflows/definition.ts +235 -0
  360. package/src/workflows/engine.ts +580 -0
  361. package/src/workflows/event-bus.ts +29 -0
  362. package/src/workflows/executors/agent-task.ts +103 -0
  363. package/src/workflows/executors/base.ts +86 -0
  364. package/src/workflows/executors/code-match.ts +88 -0
  365. package/src/workflows/executors/index.ts +16 -0
  366. package/src/workflows/executors/notify.ts +93 -0
  367. package/src/workflows/executors/property-match.ts +104 -0
  368. package/src/workflows/executors/raw-llm.ts +83 -0
  369. package/src/workflows/executors/registry.ts +76 -0
  370. package/src/workflows/executors/script.ts +103 -0
  371. package/src/workflows/executors/validate.ts +215 -0
  372. package/src/workflows/executors/vcs.ts +58 -0
  373. package/src/workflows/index.ts +61 -0
  374. package/src/workflows/input.ts +46 -0
  375. package/src/workflows/json-schema-validator.ts +118 -0
  376. package/src/workflows/recovery.ts +139 -0
  377. package/src/workflows/resume.ts +229 -0
  378. package/src/workflows/retry-poller.ts +216 -0
  379. package/src/workflows/template.ts +74 -0
  380. package/src/workflows/templates.ts +86 -0
  381. package/src/workflows/triggers.ts +124 -0
  382. package/src/workflows/validation.ts +104 -0
  383. package/src/workflows/version.ts +44 -0
  384. package/src/x402/cli.ts +140 -0
  385. package/src/x402/client.ts +192 -0
  386. package/src/x402/config.ts +131 -0
  387. package/src/x402/index.ts +37 -0
  388. package/src/x402/openfort-signer.ts +83 -0
  389. package/src/x402/spending-tracker.ts +109 -0
  390. package/templates/official/coder/CLAUDE.md +49 -0
  391. package/templates/official/coder/IDENTITY.md +28 -0
  392. package/templates/official/coder/SOUL.md +43 -0
  393. package/templates/official/coder/TOOLS.md +40 -0
  394. package/templates/official/coder/config.json +23 -0
  395. package/templates/official/coder/start-up.sh +23 -0
  396. package/templates/official/content-reviewer/CLAUDE.md +68 -0
  397. package/templates/official/content-reviewer/IDENTITY.md +28 -0
  398. package/templates/official/content-reviewer/SOUL.md +44 -0
  399. package/templates/official/content-reviewer/TOOLS.md +37 -0
  400. package/templates/official/content-reviewer/config.json +23 -0
  401. package/templates/official/content-reviewer/start-up.sh +23 -0
  402. package/templates/official/content-strategist/CLAUDE.md +63 -0
  403. package/templates/official/content-strategist/IDENTITY.md +33 -0
  404. package/templates/official/content-strategist/SOUL.md +48 -0
  405. package/templates/official/content-strategist/TOOLS.md +47 -0
  406. package/templates/official/content-strategist/config.json +23 -0
  407. package/templates/official/content-strategist/start-up.sh +23 -0
  408. package/templates/official/content-writer/CLAUDE.md +72 -0
  409. package/templates/official/content-writer/IDENTITY.md +30 -0
  410. package/templates/official/content-writer/SOUL.md +46 -0
  411. package/templates/official/content-writer/TOOLS.md +44 -0
  412. package/templates/official/content-writer/config.json +23 -0
  413. package/templates/official/content-writer/start-up.sh +23 -0
  414. package/templates/official/forward-deployed-engineer/CLAUDE.md +54 -0
  415. package/templates/official/forward-deployed-engineer/IDENTITY.md +37 -0
  416. package/templates/official/forward-deployed-engineer/SOUL.md +55 -0
  417. package/templates/official/forward-deployed-engineer/config.json +21 -0
  418. package/templates/official/lead/CLAUDE.md +33 -0
  419. package/templates/official/lead/IDENTITY.md +36 -0
  420. package/templates/official/lead/SOUL.md +51 -0
  421. package/templates/official/lead/config.json +22 -0
  422. package/templates/official/researcher/CLAUDE.md +46 -0
  423. package/templates/official/researcher/IDENTITY.md +28 -0
  424. package/templates/official/researcher/SOUL.md +43 -0
  425. package/templates/official/researcher/config.json +21 -0
  426. package/templates/official/reviewer/CLAUDE.md +63 -0
  427. package/templates/official/reviewer/IDENTITY.md +28 -0
  428. package/templates/official/reviewer/SOUL.md +45 -0
  429. package/templates/official/reviewer/config.json +21 -0
  430. package/templates/official/tester/CLAUDE.md +53 -0
  431. package/templates/official/tester/IDENTITY.md +28 -0
  432. package/templates/official/tester/SOUL.md +55 -0
  433. package/templates/official/tester/config.json +21 -0
  434. package/templates/schema.ts +35 -0
  435. package/.claude/settings.local.json +0 -115
  436. package/.dockerignore +0 -61
  437. package/.editorconfig +0 -15
  438. package/.env.docker.example +0 -39
  439. package/.env.example +0 -40
  440. package/.github/workflows/ci.yml +0 -76
  441. package/.github/workflows/docker-and-deploy.yml +0 -117
  442. package/.wts-config.json +0 -4
  443. package/.wts-setup.ts +0 -102
  444. package/CLAUDE.md +0 -104
  445. package/CONTRIBUTING.md +0 -270
  446. package/DEPLOYMENT.md +0 -605
  447. package/Dockerfile +0 -57
  448. package/Dockerfile.worker +0 -157
  449. package/FAQ.md +0 -19
  450. package/MCP.md +0 -406
  451. package/UI.md +0 -40
  452. package/assets/agent-swarm-logo-orange.png +0 -0
  453. package/assets/agent-swarm-logo.png +0 -0
  454. package/assets/agent-swarm.mp4 +0 -0
  455. package/assets/agent-swarm.png +0 -0
  456. package/biome.json +0 -39
  457. package/deploy/DEPLOY.md +0 -60
  458. package/deploy/agent-swarm.service +0 -17
  459. package/deploy/docker-push.ts +0 -30
  460. package/deploy/install.ts +0 -85
  461. package/deploy/prod-db.ts +0 -42
  462. package/deploy/uninstall.ts +0 -12
  463. package/deploy/update.ts +0 -21
  464. package/docker-compose.example.yml +0 -159
  465. package/docker-entrypoint.sh +0 -352
  466. package/ecosystem.config.cjs +0 -66
  467. package/plugin/README.md +0 -1
  468. package/plugin/hooks/hooks.json +0 -71
  469. package/pyproject.toml +0 -9
  470. package/scripts/generate-mcp-docs.ts +0 -415
  471. package/slack-manifest.json +0 -71
  472. package/src/tests/get-inbox-message.test.ts +0 -145
  473. package/src/tools/get-inbox-message.ts +0 -89
  474. package/src/tools/inbox-delegate.ts +0 -113
  475. package/thoughts/shared/plans/2025-12-18-slack-integration.md +0 -1195
  476. package/thoughts/shared/plans/2025-12-19-agent-log-streaming.md +0 -732
  477. package/thoughts/shared/plans/2025-12-19-role-based-swarm-plugin.md +0 -361
  478. package/thoughts/shared/plans/2025-12-20-mobile-responsive-ui.md +0 -501
  479. package/thoughts/shared/plans/2025-12-20-startup-team-swarm.md +0 -560
  480. package/thoughts/shared/plans/2025-12-23-runner-level-polling.md +0 -934
  481. package/thoughts/shared/plans/2025-12-23-runner-session-logs.md +0 -1000
  482. package/thoughts/shared/plans/2025-12-23-worker-lead-spawn-triggers.md +0 -568
  483. package/thoughts/shared/plans/2026-01-09-inverse-teleport.md +0 -1516
  484. package/thoughts/shared/plans/2026-01-12-agent-rename-pm2-control.md +0 -1133
  485. package/thoughts/shared/plans/2026-01-12-github-app-integration.md +0 -380
  486. package/thoughts/shared/plans/2026-01-12-lead-inbox-model.md +0 -876
  487. package/thoughts/shared/plans/2026-01-12-ralph-wiggum-integration.md +0 -463
  488. package/thoughts/shared/plans/2026-01-13-agent-concurrency.md +0 -691
  489. package/thoughts/shared/plans/2026-01-13-github-assignment-handling.md +0 -690
  490. package/thoughts/shared/plans/2026-01-13-prevent-duplicate-trigger-processing.md +0 -1071
  491. package/thoughts/shared/plans/2026-01-14-fix-slack-thread-context.md +0 -507
  492. package/thoughts/shared/plans/2026-01-15-scheduled-tasks-implementation.md +0 -565
  493. package/thoughts/shared/plans/2026-01-15-usage-cost-tracking-ui.md +0 -1479
  494. package/thoughts/shared/plans/2026-01-16-epics-feature-implementation.md +0 -1230
  495. package/thoughts/shared/research/.gitkeep +0 -0
  496. package/thoughts/shared/research/2025-01-09-inverse-teleport-plan-review.md +0 -420
  497. package/thoughts/shared/research/2025-12-18-slack-integration.md +0 -442
  498. package/thoughts/shared/research/2025-12-19-agent-log-streaming.md +0 -339
  499. package/thoughts/shared/research/2025-12-19-agent-secrets-cli-research.md +0 -390
  500. package/thoughts/shared/research/2025-12-21-gemini-cli-integration.md +0 -376
  501. package/thoughts/shared/research/2025-12-22-runner-loop-architecture.md +0 -582
  502. package/thoughts/shared/research/2025-12-22-setup-experience-improvements.md +0 -264
  503. package/thoughts/shared/research/2026-01-13-lead-duplicate-trigger-processing.md +0 -223
  504. package/thoughts/shared/research/2026-01-14-lead-slack-thread-context.md +0 -277
  505. package/thoughts/shared/research/2026-01-15-ai-tracker-agent-swarm-integration.md +0 -376
  506. package/thoughts/shared/research/2026-01-15-auto-starting-processes-in-worker-containers.md +0 -787
  507. package/thoughts/shared/research/2026-01-15-scheduled-tasks.md +0 -390
  508. package/thoughts/shared/research/2026-01-16-epics-feature-research.md +0 -437
  509. package/thoughts/taras/plans/2026-01-22-agent-swarm-schemas.md +0 -98
  510. package/thoughts/taras/plans/2026-01-28-per-worker-claude-md.md +0 -617
  511. package/thoughts/taras/plans/2026-01-28-sentry-cli-integration.md +0 -214
  512. package/thoughts/taras/research/2026-01-22-vercel-cli-integration.md +0 -287
  513. package/thoughts/taras/research/2026-01-27-excessive-polling-issue.md +0 -311
  514. package/thoughts/taras/research/2026-01-28-per-worker-claude-md.md +0 -383
  515. package/thoughts/taras/research/2026-01-28-sentry-cli-integration.md +0 -240
  516. package/tsconfig.json +0 -37
  517. package/ui/CLAUDE.md +0 -49
  518. package/ui/bun.lock +0 -771
  519. package/ui/index.html +0 -22
  520. package/ui/package-lock.json +0 -5290
  521. package/ui/package.json +0 -33
  522. package/ui/pnpm-lock.yaml +0 -3341
  523. package/ui/postcss.config.js +0 -6
  524. package/ui/public/logo.png +0 -0
  525. package/ui/src/App.tsx +0 -63
  526. package/ui/src/components/ActivityFeed.tsx +0 -440
  527. package/ui/src/components/AgentDetailPanel.tsx +0 -733
  528. package/ui/src/components/AgentsPanel.tsx +0 -815
  529. package/ui/src/components/ChatPanel.tsx +0 -1920
  530. package/ui/src/components/ConfigModal.tsx +0 -253
  531. package/ui/src/components/Dashboard.tsx +0 -832
  532. package/ui/src/components/EditAgentProfileModal.tsx +0 -433
  533. package/ui/src/components/EpicDetailPage.tsx +0 -741
  534. package/ui/src/components/EpicsPanel.tsx +0 -566
  535. package/ui/src/components/Header.tsx +0 -160
  536. package/ui/src/components/JsonViewer.tsx +0 -171
  537. package/ui/src/components/ScheduledTaskDetailPanel.tsx +0 -517
  538. package/ui/src/components/ScheduledTasksPanel.tsx +0 -639
  539. package/ui/src/components/ServicesPanel.tsx +0 -622
  540. package/ui/src/components/SessionLogPanel.tsx +0 -1219
  541. package/ui/src/components/StatsBar.tsx +0 -321
  542. package/ui/src/components/StatusBadge.tsx +0 -168
  543. package/ui/src/components/TaskDetailPanel.tsx +0 -903
  544. package/ui/src/components/TasksPanel.tsx +0 -614
  545. package/ui/src/components/UsageCharts.tsx +0 -216
  546. package/ui/src/components/UsageTab.tsx +0 -394
  547. package/ui/src/hooks/queries.ts +0 -353
  548. package/ui/src/hooks/useAutoScroll.ts +0 -83
  549. package/ui/src/index.css +0 -257
  550. package/ui/src/lib/api.ts +0 -268
  551. package/ui/src/lib/config.ts +0 -35
  552. package/ui/src/lib/contentPreview.ts +0 -208
  553. package/ui/src/lib/theme.ts +0 -214
  554. package/ui/src/lib/utils.ts +0 -88
  555. package/ui/src/main.tsx +0 -28
  556. package/ui/src/types/api.ts +0 -323
  557. package/ui/src/vite-env.d.ts +0 -1
  558. package/ui/tailwind.config.js +0 -37
  559. package/ui/tsconfig.json +0 -31
  560. package/ui/vite.config.ts +0 -35
  561. /package/{thoughts/shared/plans → templates/community}/.gitkeep +0 -0
package/README.md CHANGED
@@ -1,277 +1,379 @@
1
- # Agent Swarm MCP
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
- <img src="assets/agent-swarm.png" alt="Agent Swarm" width="800">
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://discord.gg/3XtmPdXm">
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
- > Agent orchestration layer MCP for Claude Code, Codex, Gemini CLI, and more!
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
- ## Table of Contents
60
+ ## Quick Start
18
61
 
19
- - [What is Agent Swarm?](#what-is-agent-swarm)
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
- ## What is Agent Swarm?
67
+ ### Option A: Docker Compose (recommended)
29
68
 
30
- Agent Swarm MCP enables multi-agent coordination for AI coding assistants. It provides:
69
+ The fastest way to get a full swarm running API server, lead agent, and 2 workers.
31
70
 
32
- - **Task Management** - Assign, track, and coordinate tasks across agents
33
- - **Agent Communication** - Channel-based messaging between agents
34
- - **Service Discovery** - Register and discover background services
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
- ## Dashboard UI
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
- A React-based monitoring dashboard is available in the `ui/` directory. See [UI.md](./UI.md) for details.
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
- cd ui
47
- pnpm install
48
- pnpm run dev
49
- ```
92
+ git clone https://github.com/desplega-ai/agent-swarm.git
93
+ cd agent-swarm
94
+ bun install
50
95
 
51
- The dashboard runs at `http://localhost:5173` by default.
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
- ## GitHub Integration
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
- Agent Swarm can receive tasks from GitHub via webhooks. When someone mentions `@agent-swarm-bot` (or your configured bot name) in an issue, PR, or comment, a task is automatically created for the lead agent.
113
+ ### Option C: Claude Code as Lead Agent
58
114
 
59
- ### Setup
115
+ Use Claude Code directly as the lead agent — no Docker required for the lead.
60
116
 
61
- 1. Create a GitHub App at https://github.com/settings/apps/new
62
- 2. Set the webhook URL to `https://your-server.com/api/github/webhook`
63
- 3. Generate a webhook secret and add to `.env`:
64
- ```bash
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
- ### Agent Commands
122
+ This configures Claude Code to connect to the swarm. Start Claude Code and tell it:
72
123
 
73
- | Command | Description |
74
- |---------|-------------|
75
- | `/implement-issue` | Read issue, implement changes, create PR |
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
- ## Sentry Integration
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
- Docker workers include `sentry-cli` pre-installed, enabling agents to investigate and triage Sentry issues directly. This is useful for debugging errors reported via Slack alerts.
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
- ### Setup
147
+ ## Agents Get Smarter Over Time
88
148
 
89
- 1. Create an Organization Auth Token at `https://sentry.io/settings/{org}/auth-tokens/` with scopes:
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
- 2. Add to `.env.docker`:
95
- ```bash
96
- SENTRY_AUTH_TOKEN=your-auth-token
97
- SENTRY_ORG=your-org-slug
98
- ```
151
+ ### Memory System
99
152
 
100
- 3. Verify authentication in a worker:
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
- ### Agent Commands
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
- | Command | Description |
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
- ### Usage
162
+ ### Persistent Identity
112
163
 
113
- Workers can use the `/investigate-sentry-issue` command to:
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
- /investigate-sentry-issue https://sentry.io/organizations/myorg/issues/123456/
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
- Or just the issue ID:
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
- ## Quick Start
181
+ ### Startup Scripts
131
182
 
132
- The recommended setup: run the API locally, run a Docker worker, and connect Claude Code as the lead agent.
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
- ### Prerequisites
185
+ ## Agent Configuration
135
186
 
136
- - [Bun](https://bun.sh) (or Node.js 22+)
137
- - [Docker](https://docker.com)
138
- - [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code)
187
+ ### Identity Management
139
188
 
140
- ### 1. Clone & Install
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
- ```bash
143
- git clone https://github.com/desplega-ai/agent-swarm.git
144
- cd agent-swarm
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
- ### 2. Configure Environment
195
+ ### System Prompt Assembly
149
196
 
150
- **For the API server:**
197
+ The system prompt is built from multiple layers, assembled at task start:
151
198
 
152
- ```bash
153
- cp .env.example .env
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
- Required in `.env`:
157
- - `API_KEY` - Secret key for API authentication (can be left empty, e.g. for local-only setups)
206
+ ### Hook System
158
207
 
159
- **For Docker workers:**
208
+ Six hooks fire during each Claude Code session, providing safety, context management, and persistence:
160
209
 
161
- ```bash
162
- cp .env.docker.example .env.docker
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
- Required in `.env.docker`:
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
- > See `.env.example` and `.env.docker.example` for additional optional variables.
221
+ ### Slack
170
222
 
171
- ### 3. Start the API Server
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
- bun run start:http
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
- The MCP server runs at `http://localhost:3013`.
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
- ### 4. Run a Docker Worker
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
- In a new terminal:
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
- bun run docker:build:worker
185
- mkdir -p ./logs ./work/shared ./work/worker-1
186
- bun run docker:run:worker
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
- The worker joins the swarm and waits for tasks.
255
+ **Supported events:**
190
256
 
191
- #### Note
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
- We automatically build a Docker image for Claude Code workers: `ghcr.io/desplega-ai/agent-swarm-worker:latest`.
265
+ ### GitLab
194
266
 
195
- ### 5. Connect Claude Code as Lead
267
+ Set up a GitLab webhook to receive events when the bot is @mentioned or assigned to issues/MRs.
196
268
 
197
- In your project directory:
269
+ **Webhook URL:** `https://<your-domain>/api/gitlab/webhook`
198
270
 
199
271
  ```bash
200
- bunx @desplega.ai/agent-swarm setup
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
- This configures Claude Code to connect to the swarm. Then start Claude Code normally and mention the following:
279
+ **Supported events:**
204
280
 
205
- ```
206
- Register yourself as the lead agent in the agent-swarm MCP.
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
- This will be a one-time setup, to make sure you are registered as the lead agent in the swarm, using the provided API key and agent ID (optional).
287
+ Workers have `glab` CLI pre-installed for GitLab operations (creating MRs, commenting on issues, etc.).
210
288
 
211
- #### Notes
289
+ ### AgentMail
212
290
 
213
- - The `setup` command will automatically back-up the updated files, in case you want to revert later (using `--restore`).
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
- ## CLI Commands
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
- > We will be publishing the package to npm as `@desplega.ai/agent-swarm` on each new tag bump of the [`package.json`](./package.json).
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
- | Command | Description |
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
- ### Examples
308
+ A React-based monitoring dashboard for real-time visibility into your swarm.
233
309
 
234
310
  ```bash
235
- # Setup wizard
236
- bunx @desplega.ai/agent-swarm setup
311
+ cd new-ui && pnpm install && pnpm run dev
312
+ ```
237
313
 
238
- # Start MCP & API server on custom port
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
- # Run worker with custom system prompt (not in docker!!! beware)
242
- bunx @desplega.ai/agent-swarm worker --system-prompt "You are a Python specialist"
316
+ ## CLI
243
317
 
244
- # Run lead agent in the background (without human-in-the-loop mode via MCP client)
245
- bunx @desplega.ai/agent-swarm lead
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 [`docker-compose.example.yml`](./docker-compose.example.yml) which sets up:
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
- Full deployment options are documented in [DEPLOYMENT.md](./DEPLOYMENT.md).
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
- | Document | Description |
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 License](./LICENSE) - 2025-2026 desplega.ai
379
+ [MIT](./LICENSE) 2025-2026 [desplega.ai](https://desplega.ai)