@desplega.ai/agent-swarm 2.7.0 → 2.7.1

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 (236) hide show
  1. package/dist/{acp-adapter-ma1js5n7.js → acp-adapter-8dn5tq56.js} +6 -6
  2. package/dist/{actions-1vhmtvg9.js → actions-3r6gw7dy.js} +18 -18
  3. package/dist/{amp-adapter-sxqqvmdk.js → amp-adapter-wjtq413p.js} +3 -3
  4. package/dist/{anthropic-messages-txs190dd.js → anthropic-messages-n4cby1rz.js} +4 -4
  5. package/dist/{app-mwx1d5a9.js → app-d53yhykk.js} +3 -3
  6. package/dist/{assistant-yx1p6g82.js → assistant-ksrawj3k.js} +20 -20
  7. package/dist/{boot-reembed-7h78vmvv.js → boot-reembed-fxfw17m2.js} +10 -3
  8. package/dist/{boot-reembed-5h37a2c2.js → boot-reembed-k5y5xbj0.js} +15 -8
  9. package/dist/{boot-scrub-sweep-8mawd4gw.js → boot-scrub-sweep-se41j9fd.js} +3 -3
  10. package/dist/{boot-seeds-ca84dhnn.js → boot-seeds-r3kwwv8b.js} +4 -4
  11. package/dist/{claude-adapter-wqt4hfkq.js → claude-adapter-ahmyf231.js} +7 -7
  12. package/dist/{claude-managed-adapter-6fjqtr2z.js → claude-managed-adapter-5knamegc.js} +3 -3
  13. package/dist/{claude-managed-setup-rqv98sea.js → claude-managed-setup-mdc7dy6b.js} +2 -2
  14. package/dist/{claude-sdk-session-f29f3b2x.js → claude-sdk-session-n5wen9zk.js} +8728 -8599
  15. package/dist/{cli-m5e802r7.js → cli-0dqtv2jg.js} +2 -2
  16. package/dist/{cli-e1595bgx.js → cli-0tww7dnz.js} +2 -2
  17. package/dist/{cli-2y7v133v.js → cli-0w4e4v58.js} +7 -7
  18. package/dist/{cli-d20qvpr2.js → cli-2sjm3t4r.js} +1 -1
  19. package/dist/{cli-gf2850q7.js → cli-3cywb44q.js} +18 -1
  20. package/dist/{cli-8wkb09q5.js → cli-3k9jej0c.js} +2 -2
  21. package/dist/{cli-twctnkng.js → cli-3v2cyqb8.js} +3 -3
  22. package/dist/{cli-he9gbdx0.js → cli-5qt9vzmq.js} +39 -20
  23. package/dist/{cli-a6ds2epe.js → cli-5rp1w4cr.js} +1 -1
  24. package/dist/{cli-6srv653c.js → cli-6vwjsetx.js} +4 -4
  25. package/dist/{cli-1hhbzkbb.js → cli-6w2yrrc0.js} +8 -8
  26. package/dist/{cli-f12mr20z.js → cli-75tdydgv.js} +1 -1
  27. package/dist/{cli-j3y0x2n4.js → cli-8feswf2v.js} +43 -33
  28. package/dist/{cli-07q03xm2.js → cli-8wd3mbyj.js} +1 -1
  29. package/dist/{cli-ymjpkxgn.js → cli-9csfthbw.js} +8 -6
  30. package/dist/{cli-f1e0ptjj.js → cli-b41p764a.js} +21 -2
  31. package/dist/{cli-kv7sbc2c.js → cli-c1t533hh.js} +3 -3
  32. package/dist/{cli-54sj64fc.js → cli-c28jxpcv.js} +1 -1
  33. package/dist/{cli-8mbc9za9.js → cli-cb50g9cd.js} +1 -1
  34. package/dist/{cli-c668vvcf.js → cli-d8gaphtr.js} +1 -1
  35. package/dist/{cli-86ehn4s5.js → cli-dgtfysne.js} +2 -2
  36. package/dist/{cli-sjctjr48.js → cli-dscnhn18.js} +1 -1
  37. package/dist/{cli-j0ppywdr.js → cli-dv11pgpv.js} +12 -12
  38. package/dist/{cli-1m9x8dr5.js → cli-ekptgk2m.js} +5 -5
  39. package/dist/{cli-9gsm2rzp.js → cli-f3mzy662.js} +17 -17
  40. package/dist/{cli-s0mgx214.js → cli-fk7k8s9x.js} +2 -2
  41. package/dist/{cli-vbhgkw9h.js → cli-h3e7bhvn.js} +3 -3
  42. package/dist/{cli-yd2nreqw.js → cli-hkxqdmnb.js} +2 -2
  43. package/dist/{cli-8wmj18cz.js → cli-hpkvgdad.js} +7 -4
  44. package/dist/{cli-wqr7cea4.js → cli-hq2v4rr5.js} +37 -9
  45. package/dist/{cli-sgqm2582.js → cli-k1zb7raw.js} +5 -5
  46. package/dist/{cli-4rvr7zfx.js → cli-k4awgvzm.js} +5 -0
  47. package/dist/{cli-ay40dnj3.js → cli-k7d3hvya.js} +2 -2
  48. package/dist/{cli-j9bpmykh.js → cli-kbtdftbw.js} +5 -5
  49. package/dist/{cli-x37r7qwf.js → cli-kj69b9tw.js} +25 -5
  50. package/dist/{cli-gsfk58nw.js → cli-kk9jy4nm.js} +1 -1
  51. package/dist/{cli-39aet655.js → cli-m52t4cta.js} +1 -1
  52. package/dist/{cli-h5jeg46p.js → cli-mdadewqp.js} +5 -5
  53. package/dist/{cli-a89zdqz9.js → cli-nf6k60sn.js} +1 -1
  54. package/dist/{cli-v6shg7na.js → cli-nzdf09js.js} +1 -1
  55. package/dist/{cli-rr7zx19j.js → cli-prcyzecg.js} +12 -12
  56. package/dist/{cli-6a9qfa8b.js → cli-pzafyqtk.js} +118 -48
  57. package/dist/{cli-48gxjmcz.js → cli-qvaa1gjp.js} +87 -24
  58. package/dist/{cli-qj442fws.js → cli-rg4b2g6j.js} +1 -1
  59. package/dist/{cli-aypd09nf.js → cli-rm66vqdz.js} +1 -1
  60. package/dist/{cli-9pshx6rd.js → cli-s504c3w7.js} +1 -1
  61. package/dist/{cli-ptfq202x.js → cli-swkx9jm2.js} +3 -3
  62. package/dist/{cli-m30k9777.js → cli-thsaq4pd.js} +16 -16
  63. package/dist/{cli-60sty27p.js → cli-twjnyvs8.js} +2 -2
  64. package/dist/{cli-rd5m70gj.js → cli-typdpe8g.js} +4 -4
  65. package/dist/{cli-yxbsmx56.js → cli-vg8pwmsd.js} +6 -6
  66. package/dist/{cli-s09j9vp5.js → cli-vhpckzvp.js} +1 -1
  67. package/dist/{cli-dv97kdzv.js → cli-wdxgsdz5.js} +2 -2
  68. package/dist/{cli-7a6p4e65.js → cli-wtjg6je3.js} +1 -1
  69. package/dist/{cli-b3yzyc57.js → cli-x3cngb1h.js} +44 -12
  70. package/dist/{cli-6mgdba42.js → cli-xbz6mcg4.js} +2 -2
  71. package/dist/{cli-2pvzmas1.js → cli-y4tdxsqb.js} +3 -3
  72. package/dist/{cli-f4dbh7a5.js → cli-yqrsp3ny.js} +7 -7
  73. package/dist/cli.js +27 -19
  74. package/dist/{codex-adapter-zk59x2zh.js → codex-adapter-7wepzq15.js} +5 -5
  75. package/dist/{codex-hook-xyjhvxwd.js → codex-hook-pbdh4xhx.js} +2 -2
  76. package/dist/{codex-session-runner-kh6s4j3n.js → codex-session-runner-02sb49e4.js} +5 -5
  77. package/dist/{commands-68et1qv2.js → commands-3rcspxct.js} +2 -2
  78. package/dist/{controller-fyrbnzg4.js → controller-8ar4avd6.js} +3 -3
  79. package/dist/{controllers-connect-nep9h2xv.js → controllers-connect-ajvh9h0v.js} +19 -19
  80. package/dist/{cursor-adapter-yss3pg7t.js → cursor-adapter-gd0sa7bh.js} +1 -1
  81. package/dist/{db-28gjyvxj.js → db-dv9j7ts5.js} +2 -2
  82. package/dist/{db-8ftwvzba.js → db-z26vgdvj.js} +3 -3
  83. package/dist/{dispatcher-hayexmkr.js → dispatcher-8m0htjq8.js} +17 -17
  84. package/dist/{dsh-adapter-46wawff9.js → dsh-adapter-y8gyk130.js} +1 -1
  85. package/dist/{e2b-fn3zacvt.js → e2b-74vg9b7e.js} +1 -1
  86. package/dist/{e2b-222hsajc.js → e2b-jyay8wzn.js} +1 -1
  87. package/dist/{easter-egg-3d-8d1e0h4m.js → easter-egg-3d-28f880xx.js} +1 -1
  88. package/dist/{execute-cjrfxfnm.js → execute-9seb79vh.js} +1 -1
  89. package/dist/{external-channel-xbmxcg09.js → external-channel-smz7jyth.js} +2 -2
  90. package/dist/{getMachineId-bsd-brn0xym3.js → getMachineId-bsd-whfre6gr.js} +3 -3
  91. package/dist/{getMachineId-darwin-t339sfxm.js → getMachineId-darwin-5zjynb19.js} +3 -3
  92. package/dist/{getMachineId-linux-5eq95d8b.js → getMachineId-linux-8mksrrsq.js} +3 -3
  93. package/dist/{getMachineId-unsupported-qavrtc7j.js → getMachineId-unsupported-fxtqsdt2.js} +3 -3
  94. package/dist/{getMachineId-win-q7fe1wx7.js → getMachineId-win-nzfmz857.js} +3 -3
  95. package/dist/{grok-adapter-ag4wks2a.js → grok-adapter-z0nnvtbn.js} +7 -7
  96. package/dist/handlers-pspryh6g.js +41 -0
  97. package/dist/{heartbeat-psfvcgwp.js → heartbeat-f928aqyp.js} +20 -20
  98. package/dist/{hook-cyq4mryn.js → hook-d7c605r4.js} +7 -7
  99. package/dist/{hook-8pz04697.js → hook-q9hv5xf9.js} +5 -5
  100. package/dist/{http-haj1nd6k.js → http-q6j4k989.js} +934 -180
  101. package/dist/{index-z5h22pes.js → index-5nb266jr.js} +17 -17
  102. package/dist/{index-ysd45kgc.js → index-8fxt5eah.js} +10 -10
  103. package/dist/{index-zgvqzjsw.js → index-cekzwhez.js} +5 -5
  104. package/dist/{index-zyq8ct52.js → index-ch0c1xff.js} +17 -17
  105. package/dist/{index-syvhnvtw.js → index-ebnjhxh1.js} +1 -1
  106. package/dist/{index-y1ajx04a.js → index-ed8dy8rn.js} +20 -20
  107. package/dist/{index-jwt2bj6f.js → index-ejqdkkqx.js} +11 -10
  108. package/dist/{index-dr94zbnh.js → index-farm1zsn.js} +32661 -29443
  109. package/dist/{index-q52f47pe.js → index-yn1yxg85.js} +1 -1
  110. package/dist/{keepalive-xdvsamvj.js → keepalive-zzc3hks1.js} +3 -3
  111. package/dist/{lead-hqg57kdp.js → lead-c0pjcaw4.js} +36 -36
  112. package/dist/{maintenance-4y2xzh3a.js → maintenance-kqsxzpzx.js} +1 -1
  113. package/dist/{oauth-refresh-sweep-jd4r7zbs.js → oauth-refresh-sweep-7qt0g55z.js} +2 -2
  114. package/dist/{onboard-18447q9q.js → onboard-k7x13fqg.js} +118 -5
  115. package/dist/{opencode-adapter-26b2frdf.js → opencode-adapter-tqvrtter.js} +5 -5
  116. package/dist/{otel-impl-f9tgr8yw.js → otel-impl-sqkf6k3b.js} +97 -97
  117. package/dist/{pi-mono-adapter-qn6qbga1.js → pi-mono-adapter-m2qnafxm.js} +63 -9
  118. package/dist/{pricing-refresh-dw2tgb53.js → pricing-refresh-wkpwhgvs.js} +3 -3
  119. package/dist/{rbac-roles-s4nwj2m3.js → rbac-roles-dpn0c0wj.js} +7 -4
  120. package/dist/{rbac-roles-aygm2760.js → rbac-roles-wk7xd6a6.js} +2 -2
  121. package/dist/{render-v2-yfvdfr0x.js → render-v2-ex2m4g2k.js} +3 -3
  122. package/dist/{resume-1bmvjbf3.js → resume-725g9b0b.js} +7 -7
  123. package/dist/{runtime-f7tpzedy.js → runtime-kajas15g.js} +1 -1
  124. package/dist/{session-access-r5garej6.js → session-access-0j2ezjje.js} +8 -4
  125. package/dist/{session-source-backfill-424wzv0r.js → session-source-backfill-62202awe.js} +2 -2
  126. package/dist/{setup-8tygvxkq.js → setup-9sj11ax6.js} +1 -1
  127. package/dist/{virtual-modules-xsw323b3.js → virtual-modules-c6fcq6zr.js} +2 -2
  128. package/dist/{work-objects-ggnghpgf.js → work-objects-0y07495y.js} +20 -20
  129. package/dist/{worker-sqjd1nqf.js → worker-d4q9sqbc.js} +36 -36
  130. package/openapi.json +1070 -9
  131. package/package.json +3 -3
  132. package/src/be/connector-codes.ts +65 -22
  133. package/src/be/memory/boot-reembed.ts +4 -1
  134. package/src/be/memory/constants.ts +6 -0
  135. package/src/be/memory/embedding-recovery.ts +48 -0
  136. package/src/be/memory/index-content.ts +5 -2
  137. package/src/be/memory/providers/openai-embedding.ts +65 -14
  138. package/src/be/memory/task-learning.ts +110 -8
  139. package/src/be/memory/types.ts +13 -2
  140. package/src/be/migrations/246_connector_code_kind.sql +11 -0
  141. package/src/be/onboarding.ts +125 -15
  142. package/src/be/rbac-roles.ts +4 -1
  143. package/src/be/scripts/embeddings.ts +2 -2
  144. package/src/be/seed/agent-fs-provision.ts +75 -14
  145. package/src/be/swarm-config-guard.ts +3 -0
  146. package/src/cli.tsx +9 -0
  147. package/src/comb/config.ts +6 -1
  148. package/src/commands/onboard/agent-fs-version.ts +5 -0
  149. package/src/commands/onboard/compose-generator.ts +112 -1
  150. package/src/commands/onboard/env-generator.ts +9 -0
  151. package/src/commands/onboard/tei-image.ts +12 -0
  152. package/src/commands/onboard/types.ts +7 -0
  153. package/src/commands/onboard.tsx +11 -1
  154. package/src/commands/runner.ts +14 -1
  155. package/src/http/agentfs-proxy.ts +369 -0
  156. package/src/http/all-routes.ts +1 -0
  157. package/src/http/codex-oauth-device.ts +8 -1
  158. package/src/http/fs.ts +64 -10
  159. package/src/http/inbox-state.ts +27 -1
  160. package/src/http/index.ts +4 -1
  161. package/src/http/memory.ts +7 -4
  162. package/src/http/onboarding.ts +139 -11
  163. package/src/http/session-access.ts +24 -0
  164. package/src/http/sessions.ts +10 -6
  165. package/src/http/tasks.ts +85 -11
  166. package/src/http/telemetry-ui.ts +1 -1
  167. package/src/http/user-roles.ts +4 -1
  168. package/src/http/users.ts +272 -3
  169. package/src/http/utils.ts +22 -3
  170. package/src/prompts/base-prompt.ts +24 -9
  171. package/src/prompts/session-templates.ts +26 -2
  172. package/src/providers/amp-adapter.ts +1 -1
  173. package/src/providers/codex-adapter.ts +6 -1
  174. package/src/providers/cursor-adapter.ts +1 -1
  175. package/src/providers/pi-mono-adapter.ts +58 -3
  176. package/src/rbac/legacy-policy.ts +1 -0
  177. package/src/rbac/permissions.ts +4 -0
  178. package/src/tests/agent-fs-provision-seeder.test.ts +261 -92
  179. package/src/tests/agentfs-proxy.test.ts +1106 -0
  180. package/src/tests/base-prompt.test.ts +69 -2
  181. package/src/tests/codex-adapter.test.ts +46 -8
  182. package/src/tests/codex-oauth-device.test.ts +12 -1
  183. package/src/tests/comb-config-guard.test.ts +20 -0
  184. package/src/tests/comb-links.test.ts +79 -1
  185. package/src/tests/comb-status.test.ts +44 -0
  186. package/src/tests/docs-index-footprint.test.js +3 -3
  187. package/src/tests/fixtures/onboard/baseline-states.ts +68 -0
  188. package/src/tests/fixtures/onboard/content.compose.yml.txt +190 -0
  189. package/src/tests/fixtures/onboard/content.env.txt +29 -0
  190. package/src/tests/fixtures/onboard/dev.compose.yml.txt +155 -0
  191. package/src/tests/fixtures/onboard/dev.env.txt +28 -0
  192. package/src/tests/fixtures/onboard/full-all.compose.yml.txt +582 -0
  193. package/src/tests/fixtures/onboard/full-all.env.txt +59 -0
  194. package/src/tests/fixtures/onboard/full.compose.yml.txt +435 -0
  195. package/src/tests/fixtures/onboard/full.env.txt +36 -0
  196. package/src/tests/fixtures/onboard/research.compose.yml.txt +155 -0
  197. package/src/tests/fixtures/onboard/research.env.txt +28 -0
  198. package/src/tests/fixtures/onboard/solo.compose.yml.txt +85 -0
  199. package/src/tests/fixtures/onboard/solo.env.txt +26 -0
  200. package/src/tests/http-log-scrubbing.test.ts +34 -1
  201. package/src/tests/http-task-write-ownership.test.ts +5 -1
  202. package/src/tests/invites-http.test.ts +464 -0
  203. package/src/tests/memory-embedding-input-cap.test.ts +122 -1
  204. package/src/tests/memory-embedding-recovery.test.ts +137 -0
  205. package/src/tests/onboard-compose.test.ts +142 -0
  206. package/src/tests/onboard-env.test.ts +24 -0
  207. package/src/tests/onboard-non-interactive.test.ts +29 -0
  208. package/src/tests/onboard-tei-image.test.ts +36 -0
  209. package/src/tests/onboarding.test.ts +451 -4
  210. package/src/tests/openai-embedding-provider.test.ts +105 -2
  211. package/src/tests/pi-mono-session-cost-on-abort.test.ts +270 -0
  212. package/src/tests/preload-env.test.ts +4 -0
  213. package/src/tests/preload.ts +4 -0
  214. package/src/tests/prompt-template-session.test.ts +19 -3
  215. package/src/tests/rbac-admission-e2e.test.ts +22 -6
  216. package/src/tests/rbac-admission.test.ts +342 -4
  217. package/src/tests/rbac-engine.test.ts +1 -0
  218. package/src/tests/rbac-roles.test.ts +9 -1
  219. package/src/tests/send-task-requester-gate.test.ts +64 -3
  220. package/src/tests/sessions-move.test.ts +39 -1
  221. package/src/tests/store-progress-learning.test.ts +95 -2
  222. package/src/tests/whoami-route.test.ts +41 -0
  223. package/src/tools/inject-learning.ts +1 -1
  224. package/src/tools/memory-edit.ts +1 -1
  225. package/src/tools/memory-search.ts +1 -1
  226. package/src/tools/store-progress.ts +5 -1
  227. package/src/tools/utils.ts +12 -1
  228. package/src/utils/constants.ts +39 -0
  229. package/src/utils/task-attachment-links.ts +15 -3
  230. package/templates/skills/swarm-docs/content.md +1 -1
  231. package/dist/handlers-tzmevqb5.js +0 -41
  232. package/dist/{azure-openai-responses-9kfwhmn7.js → azure-openai-responses-43asa23s.js} +0 -0
  233. package/dist/{node-vxx896fa.js → node-t28cc56b.js} +0 -0
  234. package/dist/{openai-codex-responses-79s8xnbh.js → openai-codex-responses-jhr3sjtm.js} +3 -3
  235. package/dist/{openai-completions-tdbyts0x.js → openai-completions-gs6yn37k.js} +3 -3
  236. /package/dist/{openai-responses-dm3t5vqp.js → openai-responses-jqm9vwwk.js} +0 -0
@@ -0,0 +1,190 @@
1
+ # Docker Compose for Agent Swarm
2
+ # Generated by `agent-swarm onboard`
3
+ #
4
+ # Usage:
5
+ # docker compose --env-file .env up -d
6
+ #
7
+ # Image version: set AGENT_SWARM_VERSION in .env to a published release.
8
+ # Blank falls back to `latest`, which moves on every commit to main and is
9
+ # not a release. Releases: https://github.com/desplega-ai/agent-swarm/releases
10
+ # Upgrade/rollback (migrations are forward-only, so back up first):
11
+ # https://github.com/desplega-ai/agent-swarm/blob/main/skills/agent-swarm/references/upgrade.md
12
+
13
+ services:
14
+ swarm-api:
15
+ image: "ghcr.io/desplega-ai/agent-swarm:${AGENT_SWARM_VERSION:-latest}"
16
+ container_name: swarm-api
17
+ pull_policy: always
18
+ stop_grace_period: 60s
19
+
20
+ environment:
21
+ - API_KEY=${API_KEY}
22
+ - INSTALL_METHOD=${INSTALL_METHOD}
23
+ - INSTALL_PRESET=${INSTALL_PRESET:-}
24
+ - MEMORY_HYBRID_SEARCH=${MEMORY_HYBRID_SEARCH-1}
25
+ - MEMORY_GRAPH_EXPANSION=${MEMORY_GRAPH_EXPANSION-1}
26
+ - MEMORY_RATERS=${MEMORY_RATERS-implicit-citation,explicit-self}
27
+ - MEMORY_DEMOTION_FLOOR=${MEMORY_DEMOTION_FLOOR-1.0}
28
+ - CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN}
29
+ - MCP_BASE_URL=http://localhost:3013
30
+ - APP_URL=https://app.agent-swarm.dev
31
+
32
+ ports:
33
+ - "3013:3013"
34
+
35
+ volumes:
36
+ - swarm_data:/app/data
37
+
38
+ healthcheck:
39
+ test: ["CMD-SHELL", "curl -f http://localhost:3013/health || exit 1"]
40
+ interval: 10s
41
+ timeout: 5s
42
+ retries: 3
43
+ start_period: 15s
44
+
45
+ restart: unless-stopped
46
+
47
+ lead:
48
+ image: "ghcr.io/desplega-ai/agent-swarm-worker:${AGENT_SWARM_VERSION:-latest}"
49
+ container_name: swarm-lead
50
+ pull_policy: always
51
+ stop_grace_period: 60s
52
+
53
+ depends_on:
54
+ swarm-api:
55
+ condition: service_healthy
56
+
57
+ environment:
58
+ - HARNESS_PROVIDER=${HARNESS_PROVIDER}
59
+ - CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN}
60
+ - API_KEY=${API_KEY}
61
+ - MEMORY_RATERS=${MEMORY_RATERS-implicit-citation,explicit-self}
62
+ - AGENT_ID=00000000-0000-4000-8000-000000000001
63
+ - AGENT_NAME=Lead
64
+ - AGENT_ROLE=lead
65
+ - TEMPLATE_ID=official/lead
66
+ - MCP_BASE_URL=http://swarm-api:3013
67
+ - YOLO=true
68
+ - SWARM_URL=http://swarm-api:3013
69
+ - MAX_CONCURRENT_TASKS=2
70
+
71
+ ports:
72
+ - "3201:3000"
73
+
74
+ volumes:
75
+ - swarm_logs:/logs
76
+ - swarm_shared:/workspace/shared
77
+ - swarm_lead:/workspace/personal
78
+
79
+ restart: unless-stopped
80
+
81
+ worker-content-writer:
82
+ image: "ghcr.io/desplega-ai/agent-swarm-worker:${AGENT_SWARM_VERSION:-latest}"
83
+ container_name: swarm-worker-content-writer
84
+ pull_policy: always
85
+ stop_grace_period: 60s
86
+
87
+ depends_on:
88
+ swarm-api:
89
+ condition: service_healthy
90
+
91
+ environment:
92
+ - HARNESS_PROVIDER=${HARNESS_PROVIDER}
93
+ - CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN}
94
+ - API_KEY=${API_KEY}
95
+ - MEMORY_RATERS=${MEMORY_RATERS-implicit-citation,explicit-self}
96
+ - AGENT_ID=00000000-0000-4000-8000-000000000002
97
+ - AGENT_NAME=Content Writer
98
+ - AGENT_ROLE=worker
99
+ - TEMPLATE_ID=official/content-writer
100
+ - MCP_BASE_URL=http://swarm-api:3013
101
+ - YOLO=true
102
+ - SWARM_URL=http://swarm-api:3013
103
+ - MAX_CONCURRENT_TASKS=1
104
+
105
+ ports:
106
+ - "3202:3000"
107
+
108
+ volumes:
109
+ - swarm_logs:/logs
110
+ - swarm_shared:/workspace/shared
111
+ - swarm_worker_content_writer:/workspace/personal
112
+
113
+ restart: unless-stopped
114
+
115
+ worker-content-reviewer:
116
+ image: "ghcr.io/desplega-ai/agent-swarm-worker:${AGENT_SWARM_VERSION:-latest}"
117
+ container_name: swarm-worker-content-reviewer
118
+ pull_policy: always
119
+ stop_grace_period: 60s
120
+
121
+ depends_on:
122
+ swarm-api:
123
+ condition: service_healthy
124
+
125
+ environment:
126
+ - HARNESS_PROVIDER=${HARNESS_PROVIDER}
127
+ - CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN}
128
+ - API_KEY=${API_KEY}
129
+ - MEMORY_RATERS=${MEMORY_RATERS-implicit-citation,explicit-self}
130
+ - AGENT_ID=00000000-0000-4000-8000-000000000003
131
+ - AGENT_NAME=Content Reviewer
132
+ - AGENT_ROLE=worker
133
+ - TEMPLATE_ID=official/content-reviewer
134
+ - MCP_BASE_URL=http://swarm-api:3013
135
+ - YOLO=true
136
+ - SWARM_URL=http://swarm-api:3013
137
+ - MAX_CONCURRENT_TASKS=1
138
+
139
+ ports:
140
+ - "3203:3000"
141
+
142
+ volumes:
143
+ - swarm_logs:/logs
144
+ - swarm_shared:/workspace/shared
145
+ - swarm_worker_content_reviewer:/workspace/personal
146
+
147
+ restart: unless-stopped
148
+
149
+ worker-content-strategist:
150
+ image: "ghcr.io/desplega-ai/agent-swarm-worker:${AGENT_SWARM_VERSION:-latest}"
151
+ container_name: swarm-worker-content-strategist
152
+ pull_policy: always
153
+ stop_grace_period: 60s
154
+
155
+ depends_on:
156
+ swarm-api:
157
+ condition: service_healthy
158
+
159
+ environment:
160
+ - HARNESS_PROVIDER=${HARNESS_PROVIDER}
161
+ - CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN}
162
+ - API_KEY=${API_KEY}
163
+ - MEMORY_RATERS=${MEMORY_RATERS-implicit-citation,explicit-self}
164
+ - AGENT_ID=00000000-0000-4000-8000-000000000004
165
+ - AGENT_NAME=Content Strategist
166
+ - AGENT_ROLE=worker
167
+ - TEMPLATE_ID=official/content-strategist
168
+ - MCP_BASE_URL=http://swarm-api:3013
169
+ - YOLO=true
170
+ - SWARM_URL=http://swarm-api:3013
171
+ - MAX_CONCURRENT_TASKS=1
172
+
173
+ ports:
174
+ - "3204:3000"
175
+
176
+ volumes:
177
+ - swarm_logs:/logs
178
+ - swarm_shared:/workspace/shared
179
+ - swarm_worker_content_strategist:/workspace/personal
180
+
181
+ restart: unless-stopped
182
+
183
+ volumes:
184
+ swarm_data:
185
+ swarm_logs:
186
+ swarm_shared:
187
+ swarm_lead:
188
+ swarm_worker_content_writer:
189
+ swarm_worker_content_reviewer:
190
+ swarm_worker_content_strategist:
@@ -0,0 +1,29 @@
1
+ # === Core ===
2
+ API_KEY=example-test-api-key
3
+ MCP_BASE_URL=http://localhost:3013
4
+ APP_URL=https://app.agent-swarm.dev
5
+ # Pin a release, e.g. AGENT_SWARM_VERSION=1.150.0. Blank tracks `latest`.
6
+ AGENT_SWARM_VERSION=
7
+ INSTALL_METHOD=onboard_noninteractive
8
+ INSTALL_PRESET=content
9
+
10
+ # New-deployment memory preset: retrieval, citation ratings, self-rating hints.
11
+ # Set MEMORY_RATERS= to disable all raters; leave SKIP_SESSION_SUMMARY unset.
12
+ MEMORY_HYBRID_SEARCH=1
13
+ MEMORY_GRAPH_EXPANSION=1
14
+ MEMORY_RATERS=implicit-citation,explicit-self
15
+ MEMORY_DEMOTION_FLOOR=1.0
16
+
17
+ # === Authentication ===
18
+ HARNESS_PROVIDER=claude
19
+ CLAUDE_CODE_OAUTH_TOKEN=example-test-oauth
20
+
21
+ # === Integrations ===
22
+ GITHUB_DISABLE=true
23
+ SLACK_DISABLE=true
24
+
25
+ # === Agent IDs (for reference) ===
26
+ # lead = 00000000-0000-4000-8000-000000000001
27
+ # worker-content-writer = 00000000-0000-4000-8000-000000000002
28
+ # worker-content-reviewer = 00000000-0000-4000-8000-000000000003
29
+ # worker-content-strategist = 00000000-0000-4000-8000-000000000004
@@ -0,0 +1,155 @@
1
+ # Docker Compose for Agent Swarm
2
+ # Generated by `agent-swarm onboard`
3
+ #
4
+ # Usage:
5
+ # docker compose --env-file .env up -d
6
+ #
7
+ # Image version: set AGENT_SWARM_VERSION in .env to a published release.
8
+ # Blank falls back to `latest`, which moves on every commit to main and is
9
+ # not a release. Releases: https://github.com/desplega-ai/agent-swarm/releases
10
+ # Upgrade/rollback (migrations are forward-only, so back up first):
11
+ # https://github.com/desplega-ai/agent-swarm/blob/main/skills/agent-swarm/references/upgrade.md
12
+
13
+ services:
14
+ swarm-api:
15
+ image: "ghcr.io/desplega-ai/agent-swarm:${AGENT_SWARM_VERSION:-latest}"
16
+ container_name: swarm-api
17
+ pull_policy: always
18
+ stop_grace_period: 60s
19
+
20
+ environment:
21
+ - API_KEY=${API_KEY}
22
+ - INSTALL_METHOD=${INSTALL_METHOD}
23
+ - INSTALL_PRESET=${INSTALL_PRESET:-}
24
+ - MEMORY_HYBRID_SEARCH=${MEMORY_HYBRID_SEARCH-1}
25
+ - MEMORY_GRAPH_EXPANSION=${MEMORY_GRAPH_EXPANSION-1}
26
+ - MEMORY_RATERS=${MEMORY_RATERS-implicit-citation,explicit-self}
27
+ - MEMORY_DEMOTION_FLOOR=${MEMORY_DEMOTION_FLOOR-1.0}
28
+ - CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN}
29
+ - MCP_BASE_URL=http://localhost:3013
30
+ - APP_URL=https://app.agent-swarm.dev
31
+
32
+ ports:
33
+ - "3013:3013"
34
+
35
+ volumes:
36
+ - swarm_data:/app/data
37
+
38
+ healthcheck:
39
+ test: ["CMD-SHELL", "curl -f http://localhost:3013/health || exit 1"]
40
+ interval: 10s
41
+ timeout: 5s
42
+ retries: 3
43
+ start_period: 15s
44
+
45
+ restart: unless-stopped
46
+
47
+ lead:
48
+ image: "ghcr.io/desplega-ai/agent-swarm-worker:${AGENT_SWARM_VERSION:-latest}"
49
+ container_name: swarm-lead
50
+ pull_policy: always
51
+ stop_grace_period: 60s
52
+
53
+ depends_on:
54
+ swarm-api:
55
+ condition: service_healthy
56
+
57
+ environment:
58
+ - HARNESS_PROVIDER=${HARNESS_PROVIDER}
59
+ - CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN}
60
+ - API_KEY=${API_KEY}
61
+ - MEMORY_RATERS=${MEMORY_RATERS-implicit-citation,explicit-self}
62
+ - AGENT_ID=00000000-0000-4000-8000-000000000001
63
+ - AGENT_NAME=Lead
64
+ - AGENT_ROLE=lead
65
+ - TEMPLATE_ID=official/lead
66
+ - MCP_BASE_URL=http://swarm-api:3013
67
+ - YOLO=true
68
+ - SWARM_URL=http://swarm-api:3013
69
+ - MAX_CONCURRENT_TASKS=2
70
+
71
+ ports:
72
+ - "3201:3000"
73
+
74
+ volumes:
75
+ - swarm_logs:/logs
76
+ - swarm_shared:/workspace/shared
77
+ - swarm_lead:/workspace/personal
78
+
79
+ restart: unless-stopped
80
+
81
+ worker-coder-1:
82
+ image: "ghcr.io/desplega-ai/agent-swarm-worker:${AGENT_SWARM_VERSION:-latest}"
83
+ container_name: swarm-worker-coder-1
84
+ pull_policy: always
85
+ stop_grace_period: 60s
86
+
87
+ depends_on:
88
+ swarm-api:
89
+ condition: service_healthy
90
+
91
+ environment:
92
+ - HARNESS_PROVIDER=${HARNESS_PROVIDER}
93
+ - CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN}
94
+ - API_KEY=${API_KEY}
95
+ - MEMORY_RATERS=${MEMORY_RATERS-implicit-citation,explicit-self}
96
+ - AGENT_ID=00000000-0000-4000-8000-000000000002
97
+ - AGENT_NAME=Coder 1
98
+ - AGENT_ROLE=worker
99
+ - TEMPLATE_ID=official/coder
100
+ - MCP_BASE_URL=http://swarm-api:3013
101
+ - YOLO=true
102
+ - SWARM_URL=http://swarm-api:3013
103
+ - MAX_CONCURRENT_TASKS=1
104
+
105
+ ports:
106
+ - "3202:3000"
107
+
108
+ volumes:
109
+ - swarm_logs:/logs
110
+ - swarm_shared:/workspace/shared
111
+ - swarm_worker_coder_1:/workspace/personal
112
+
113
+ restart: unless-stopped
114
+
115
+ worker-coder-2:
116
+ image: "ghcr.io/desplega-ai/agent-swarm-worker:${AGENT_SWARM_VERSION:-latest}"
117
+ container_name: swarm-worker-coder-2
118
+ pull_policy: always
119
+ stop_grace_period: 60s
120
+
121
+ depends_on:
122
+ swarm-api:
123
+ condition: service_healthy
124
+
125
+ environment:
126
+ - HARNESS_PROVIDER=${HARNESS_PROVIDER}
127
+ - CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN}
128
+ - API_KEY=${API_KEY}
129
+ - MEMORY_RATERS=${MEMORY_RATERS-implicit-citation,explicit-self}
130
+ - AGENT_ID=00000000-0000-4000-8000-000000000003
131
+ - AGENT_NAME=Coder 2
132
+ - AGENT_ROLE=worker
133
+ - TEMPLATE_ID=official/coder
134
+ - MCP_BASE_URL=http://swarm-api:3013
135
+ - YOLO=true
136
+ - SWARM_URL=http://swarm-api:3013
137
+ - MAX_CONCURRENT_TASKS=1
138
+
139
+ ports:
140
+ - "3203:3000"
141
+
142
+ volumes:
143
+ - swarm_logs:/logs
144
+ - swarm_shared:/workspace/shared
145
+ - swarm_worker_coder_2:/workspace/personal
146
+
147
+ restart: unless-stopped
148
+
149
+ volumes:
150
+ swarm_data:
151
+ swarm_logs:
152
+ swarm_shared:
153
+ swarm_lead:
154
+ swarm_worker_coder_1:
155
+ swarm_worker_coder_2:
@@ -0,0 +1,28 @@
1
+ # === Core ===
2
+ API_KEY=example-test-api-key
3
+ MCP_BASE_URL=http://localhost:3013
4
+ APP_URL=https://app.agent-swarm.dev
5
+ # Pin a release, e.g. AGENT_SWARM_VERSION=1.150.0. Blank tracks `latest`.
6
+ AGENT_SWARM_VERSION=
7
+ INSTALL_METHOD=onboard_noninteractive
8
+ INSTALL_PRESET=dev
9
+
10
+ # New-deployment memory preset: retrieval, citation ratings, self-rating hints.
11
+ # Set MEMORY_RATERS= to disable all raters; leave SKIP_SESSION_SUMMARY unset.
12
+ MEMORY_HYBRID_SEARCH=1
13
+ MEMORY_GRAPH_EXPANSION=1
14
+ MEMORY_RATERS=implicit-citation,explicit-self
15
+ MEMORY_DEMOTION_FLOOR=1.0
16
+
17
+ # === Authentication ===
18
+ HARNESS_PROVIDER=claude
19
+ CLAUDE_CODE_OAUTH_TOKEN=example-test-oauth
20
+
21
+ # === Integrations ===
22
+ GITHUB_DISABLE=true
23
+ SLACK_DISABLE=true
24
+
25
+ # === Agent IDs (for reference) ===
26
+ # lead = 00000000-0000-4000-8000-000000000001
27
+ # worker-coder-1 = 00000000-0000-4000-8000-000000000002
28
+ # worker-coder-2 = 00000000-0000-4000-8000-000000000003