@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,435 @@
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:
82
+ image: "ghcr.io/desplega-ai/agent-swarm-worker:${AGENT_SWARM_VERSION:-latest}"
83
+ container_name: swarm-worker-coder
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
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:/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
+ worker-content-writer:
184
+ image: "ghcr.io/desplega-ai/agent-swarm-worker:${AGENT_SWARM_VERSION:-latest}"
185
+ container_name: swarm-worker-content-writer
186
+ pull_policy: always
187
+ stop_grace_period: 60s
188
+
189
+ depends_on:
190
+ swarm-api:
191
+ condition: service_healthy
192
+
193
+ environment:
194
+ - HARNESS_PROVIDER=${HARNESS_PROVIDER}
195
+ - CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN}
196
+ - API_KEY=${API_KEY}
197
+ - MEMORY_RATERS=${MEMORY_RATERS-implicit-citation,explicit-self}
198
+ - AGENT_ID=00000000-0000-4000-8000-000000000005
199
+ - AGENT_NAME=Content Writer
200
+ - AGENT_ROLE=worker
201
+ - TEMPLATE_ID=official/content-writer
202
+ - MCP_BASE_URL=http://swarm-api:3013
203
+ - YOLO=true
204
+ - SWARM_URL=http://swarm-api:3013
205
+ - MAX_CONCURRENT_TASKS=1
206
+
207
+ ports:
208
+ - "3205:3000"
209
+
210
+ volumes:
211
+ - swarm_logs:/logs
212
+ - swarm_shared:/workspace/shared
213
+ - swarm_worker_content_writer:/workspace/personal
214
+
215
+ restart: unless-stopped
216
+
217
+ worker-discoverability-optimizer:
218
+ image: "ghcr.io/desplega-ai/agent-swarm-worker:${AGENT_SWARM_VERSION:-latest}"
219
+ container_name: swarm-worker-discoverability-optimizer
220
+ pull_policy: always
221
+ stop_grace_period: 60s
222
+
223
+ depends_on:
224
+ swarm-api:
225
+ condition: service_healthy
226
+
227
+ environment:
228
+ - HARNESS_PROVIDER=${HARNESS_PROVIDER}
229
+ - CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN}
230
+ - API_KEY=${API_KEY}
231
+ - MEMORY_RATERS=${MEMORY_RATERS-implicit-citation,explicit-self}
232
+ - AGENT_ID=00000000-0000-4000-8000-000000000006
233
+ - AGENT_NAME=Discoverability Optimizer
234
+ - AGENT_ROLE=worker
235
+ - TEMPLATE_ID=official/discoverability-optimizer
236
+ - MCP_BASE_URL=http://swarm-api:3013
237
+ - YOLO=true
238
+ - SWARM_URL=http://swarm-api:3013
239
+ - MAX_CONCURRENT_TASKS=1
240
+
241
+ ports:
242
+ - "3206:3000"
243
+
244
+ volumes:
245
+ - swarm_logs:/logs
246
+ - swarm_shared:/workspace/shared
247
+ - swarm_worker_discoverability_optimizer:/workspace/personal
248
+
249
+ restart: unless-stopped
250
+
251
+ worker-forward-deployed-engineer:
252
+ image: "ghcr.io/desplega-ai/agent-swarm-worker:${AGENT_SWARM_VERSION:-latest}"
253
+ container_name: swarm-worker-forward-deployed-engineer
254
+ pull_policy: always
255
+ stop_grace_period: 60s
256
+
257
+ depends_on:
258
+ swarm-api:
259
+ condition: service_healthy
260
+
261
+ environment:
262
+ - HARNESS_PROVIDER=${HARNESS_PROVIDER}
263
+ - CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN}
264
+ - API_KEY=${API_KEY}
265
+ - MEMORY_RATERS=${MEMORY_RATERS-implicit-citation,explicit-self}
266
+ - AGENT_ID=00000000-0000-4000-8000-000000000007
267
+ - AGENT_NAME=Forward Deployed Engineer
268
+ - AGENT_ROLE=worker
269
+ - TEMPLATE_ID=official/forward-deployed-engineer
270
+ - MCP_BASE_URL=http://swarm-api:3013
271
+ - YOLO=true
272
+ - SWARM_URL=http://swarm-api:3013
273
+ - MAX_CONCURRENT_TASKS=1
274
+
275
+ ports:
276
+ - "3207:3000"
277
+
278
+ volumes:
279
+ - swarm_logs:/logs
280
+ - swarm_shared:/workspace/shared
281
+ - swarm_worker_forward_deployed_engineer:/workspace/personal
282
+
283
+ restart: unless-stopped
284
+
285
+ worker-researcher:
286
+ image: "ghcr.io/desplega-ai/agent-swarm-worker:${AGENT_SWARM_VERSION:-latest}"
287
+ container_name: swarm-worker-researcher
288
+ pull_policy: always
289
+ stop_grace_period: 60s
290
+
291
+ depends_on:
292
+ swarm-api:
293
+ condition: service_healthy
294
+
295
+ environment:
296
+ - HARNESS_PROVIDER=${HARNESS_PROVIDER}
297
+ - CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN}
298
+ - API_KEY=${API_KEY}
299
+ - MEMORY_RATERS=${MEMORY_RATERS-implicit-citation,explicit-self}
300
+ - AGENT_ID=00000000-0000-4000-8000-000000000008
301
+ - AGENT_NAME=Researcher
302
+ - AGENT_ROLE=worker
303
+ - TEMPLATE_ID=official/researcher
304
+ - MCP_BASE_URL=http://swarm-api:3013
305
+ - YOLO=true
306
+ - SWARM_URL=http://swarm-api:3013
307
+ - MAX_CONCURRENT_TASKS=1
308
+
309
+ ports:
310
+ - "3208:3000"
311
+
312
+ volumes:
313
+ - swarm_logs:/logs
314
+ - swarm_shared:/workspace/shared
315
+ - swarm_worker_researcher:/workspace/personal
316
+
317
+ restart: unless-stopped
318
+
319
+ worker-reviewer:
320
+ image: "ghcr.io/desplega-ai/agent-swarm-worker:${AGENT_SWARM_VERSION:-latest}"
321
+ container_name: swarm-worker-reviewer
322
+ pull_policy: always
323
+ stop_grace_period: 60s
324
+
325
+ depends_on:
326
+ swarm-api:
327
+ condition: service_healthy
328
+
329
+ environment:
330
+ - HARNESS_PROVIDER=${HARNESS_PROVIDER}
331
+ - CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN}
332
+ - API_KEY=${API_KEY}
333
+ - MEMORY_RATERS=${MEMORY_RATERS-implicit-citation,explicit-self}
334
+ - AGENT_ID=00000000-0000-4000-8000-000000000009
335
+ - AGENT_NAME=Reviewer
336
+ - AGENT_ROLE=worker
337
+ - TEMPLATE_ID=official/reviewer
338
+ - MCP_BASE_URL=http://swarm-api:3013
339
+ - YOLO=true
340
+ - SWARM_URL=http://swarm-api:3013
341
+ - MAX_CONCURRENT_TASKS=1
342
+
343
+ ports:
344
+ - "3209:3000"
345
+
346
+ volumes:
347
+ - swarm_logs:/logs
348
+ - swarm_shared:/workspace/shared
349
+ - swarm_worker_reviewer:/workspace/personal
350
+
351
+ restart: unless-stopped
352
+
353
+ worker-tester:
354
+ image: "ghcr.io/desplega-ai/agent-swarm-worker:${AGENT_SWARM_VERSION:-latest}"
355
+ container_name: swarm-worker-tester
356
+ pull_policy: always
357
+ stop_grace_period: 60s
358
+
359
+ depends_on:
360
+ swarm-api:
361
+ condition: service_healthy
362
+
363
+ environment:
364
+ - HARNESS_PROVIDER=${HARNESS_PROVIDER}
365
+ - CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN}
366
+ - API_KEY=${API_KEY}
367
+ - MEMORY_RATERS=${MEMORY_RATERS-implicit-citation,explicit-self}
368
+ - AGENT_ID=00000000-0000-4000-8000-000000000010
369
+ - AGENT_NAME=Tester
370
+ - AGENT_ROLE=worker
371
+ - TEMPLATE_ID=official/tester
372
+ - MCP_BASE_URL=http://swarm-api:3013
373
+ - YOLO=true
374
+ - SWARM_URL=http://swarm-api:3013
375
+ - MAX_CONCURRENT_TASKS=1
376
+
377
+ ports:
378
+ - "3210:3000"
379
+
380
+ volumes:
381
+ - swarm_logs:/logs
382
+ - swarm_shared:/workspace/shared
383
+ - swarm_worker_tester:/workspace/personal
384
+
385
+ restart: unless-stopped
386
+
387
+ worker-ux-principles:
388
+ image: "ghcr.io/desplega-ai/agent-swarm-worker:${AGENT_SWARM_VERSION:-latest}"
389
+ container_name: swarm-worker-ux-principles
390
+ pull_policy: always
391
+ stop_grace_period: 60s
392
+
393
+ depends_on:
394
+ swarm-api:
395
+ condition: service_healthy
396
+
397
+ environment:
398
+ - HARNESS_PROVIDER=${HARNESS_PROVIDER}
399
+ - CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN}
400
+ - API_KEY=${API_KEY}
401
+ - MEMORY_RATERS=${MEMORY_RATERS-implicit-citation,explicit-self}
402
+ - AGENT_ID=00000000-0000-4000-8000-000000000011
403
+ - AGENT_NAME=UX Principles Agent
404
+ - AGENT_ROLE=worker
405
+ - TEMPLATE_ID=official/ux-principles
406
+ - MCP_BASE_URL=http://swarm-api:3013
407
+ - YOLO=true
408
+ - SWARM_URL=http://swarm-api:3013
409
+ - MAX_CONCURRENT_TASKS=1
410
+
411
+ ports:
412
+ - "3211:3000"
413
+
414
+ volumes:
415
+ - swarm_logs:/logs
416
+ - swarm_shared:/workspace/shared
417
+ - swarm_worker_ux_principles:/workspace/personal
418
+
419
+ restart: unless-stopped
420
+
421
+ volumes:
422
+ swarm_data:
423
+ swarm_logs:
424
+ swarm_shared:
425
+ swarm_lead:
426
+ swarm_worker_coder:
427
+ swarm_worker_content_reviewer:
428
+ swarm_worker_content_strategist:
429
+ swarm_worker_content_writer:
430
+ swarm_worker_discoverability_optimizer:
431
+ swarm_worker_forward_deployed_engineer:
432
+ swarm_worker_researcher:
433
+ swarm_worker_reviewer:
434
+ swarm_worker_tester:
435
+ swarm_worker_ux_principles:
@@ -0,0 +1,36 @@
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=full
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 = 00000000-0000-4000-8000-000000000002
28
+ # worker-content-reviewer = 00000000-0000-4000-8000-000000000003
29
+ # worker-content-strategist = 00000000-0000-4000-8000-000000000004
30
+ # worker-content-writer = 00000000-0000-4000-8000-000000000005
31
+ # worker-discoverability-optimizer = 00000000-0000-4000-8000-000000000006
32
+ # worker-forward-deployed-engineer = 00000000-0000-4000-8000-000000000007
33
+ # worker-researcher = 00000000-0000-4000-8000-000000000008
34
+ # worker-reviewer = 00000000-0000-4000-8000-000000000009
35
+ # worker-tester = 00000000-0000-4000-8000-000000000010
36
+ # worker-ux-principles = 00000000-0000-4000-8000-000000000011
@@ -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-researcher:
82
+ image: "ghcr.io/desplega-ai/agent-swarm-worker:${AGENT_SWARM_VERSION:-latest}"
83
+ container_name: swarm-worker-researcher
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=Researcher
98
+ - AGENT_ROLE=worker
99
+ - TEMPLATE_ID=official/researcher
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_researcher:/workspace/personal
112
+
113
+ restart: unless-stopped
114
+
115
+ worker-reviewer:
116
+ image: "ghcr.io/desplega-ai/agent-swarm-worker:${AGENT_SWARM_VERSION:-latest}"
117
+ container_name: swarm-worker-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=Reviewer
132
+ - AGENT_ROLE=worker
133
+ - TEMPLATE_ID=official/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_reviewer:/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_researcher:
155
+ swarm_worker_reviewer:
@@ -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=research
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-researcher = 00000000-0000-4000-8000-000000000002
28
+ # worker-reviewer = 00000000-0000-4000-8000-000000000003