@better-openclaw/core 1.0.0

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 (461) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/.turbo/turbo-lint.log +360 -0
  3. package/.turbo/turbo-typecheck.log +4 -0
  4. package/dist/bare-metal-partition.d.ts +22 -0
  5. package/dist/bare-metal-partition.d.ts.map +1 -0
  6. package/dist/bare-metal-partition.js +49 -0
  7. package/dist/bare-metal-partition.js.map +1 -0
  8. package/dist/composer.d.ts +17 -0
  9. package/dist/composer.d.ts.map +1 -0
  10. package/dist/composer.js +305 -0
  11. package/dist/composer.js.map +1 -0
  12. package/dist/generate.d.ts +7 -0
  13. package/dist/generate.d.ts.map +1 -0
  14. package/dist/generate.js +218 -0
  15. package/dist/generate.js.map +1 -0
  16. package/dist/generators/bare-metal-install.d.ts +18 -0
  17. package/dist/generators/bare-metal-install.d.ts.map +1 -0
  18. package/dist/generators/bare-metal-install.js +228 -0
  19. package/dist/generators/bare-metal-install.js.map +1 -0
  20. package/dist/generators/caddy.d.ts +13 -0
  21. package/dist/generators/caddy.d.ts.map +1 -0
  22. package/dist/generators/caddy.js +85 -0
  23. package/dist/generators/caddy.js.map +1 -0
  24. package/dist/generators/env.d.ts +42 -0
  25. package/dist/generators/env.d.ts.map +1 -0
  26. package/dist/generators/env.js +276 -0
  27. package/dist/generators/env.js.map +1 -0
  28. package/dist/generators/grafana.d.ts +19 -0
  29. package/dist/generators/grafana.d.ts.map +1 -0
  30. package/dist/generators/grafana.js +247 -0
  31. package/dist/generators/grafana.js.map +1 -0
  32. package/dist/generators/n8n-workflows.d.ts +7 -0
  33. package/dist/generators/n8n-workflows.d.ts.map +1 -0
  34. package/dist/generators/n8n-workflows.js +78 -0
  35. package/dist/generators/n8n-workflows.js.map +1 -0
  36. package/dist/generators/native-services.d.ts +13 -0
  37. package/dist/generators/native-services.d.ts.map +1 -0
  38. package/dist/generators/native-services.js +85 -0
  39. package/dist/generators/native-services.js.map +1 -0
  40. package/dist/generators/postgres-init.d.ts +27 -0
  41. package/dist/generators/postgres-init.d.ts.map +1 -0
  42. package/dist/generators/postgres-init.js +119 -0
  43. package/dist/generators/postgres-init.js.map +1 -0
  44. package/dist/generators/prometheus.d.ts +10 -0
  45. package/dist/generators/prometheus.d.ts.map +1 -0
  46. package/dist/generators/prometheus.js +79 -0
  47. package/dist/generators/prometheus.js.map +1 -0
  48. package/dist/generators/readme.d.ts +21 -0
  49. package/dist/generators/readme.d.ts.map +1 -0
  50. package/dist/generators/readme.js +224 -0
  51. package/dist/generators/readme.js.map +1 -0
  52. package/dist/generators/scripts.d.ts +7 -0
  53. package/dist/generators/scripts.d.ts.map +1 -0
  54. package/dist/generators/scripts.js +352 -0
  55. package/dist/generators/scripts.js.map +1 -0
  56. package/dist/generators/skills.d.ts +10 -0
  57. package/dist/generators/skills.d.ts.map +1 -0
  58. package/dist/generators/skills.js +596 -0
  59. package/dist/generators/skills.js.map +1 -0
  60. package/dist/index.d.ts +24 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +27 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/presets/registry.d.ts +5 -0
  65. package/dist/presets/registry.d.ts.map +1 -0
  66. package/dist/presets/registry.js +121 -0
  67. package/dist/presets/registry.js.map +1 -0
  68. package/dist/resolver.d.ts +17 -0
  69. package/dist/resolver.d.ts.map +1 -0
  70. package/dist/resolver.js +254 -0
  71. package/dist/resolver.js.map +1 -0
  72. package/dist/schema.d.ts +2426 -0
  73. package/dist/schema.d.ts.map +1 -0
  74. package/dist/schema.js +259 -0
  75. package/dist/schema.js.map +1 -0
  76. package/dist/services/definitions/anything-llm.d.ts +3 -0
  77. package/dist/services/definitions/anything-llm.d.ts.map +1 -0
  78. package/dist/services/definitions/anything-llm.js +39 -0
  79. package/dist/services/definitions/anything-llm.js.map +1 -0
  80. package/dist/services/definitions/appflowy.d.ts +3 -0
  81. package/dist/services/definitions/appflowy.d.ts.map +1 -0
  82. package/dist/services/definitions/appflowy.js +39 -0
  83. package/dist/services/definitions/appflowy.js.map +1 -0
  84. package/dist/services/definitions/beszel.d.ts +3 -0
  85. package/dist/services/definitions/beszel.d.ts.map +1 -0
  86. package/dist/services/definitions/beszel.js +39 -0
  87. package/dist/services/definitions/beszel.js.map +1 -0
  88. package/dist/services/definitions/browserless.d.ts +3 -0
  89. package/dist/services/definitions/browserless.d.ts.map +1 -0
  90. package/dist/services/definitions/browserless.js +77 -0
  91. package/dist/services/definitions/browserless.js.map +1 -0
  92. package/dist/services/definitions/caddy.d.ts +3 -0
  93. package/dist/services/definitions/caddy.d.ts.map +1 -0
  94. package/dist/services/definitions/caddy.js +50 -0
  95. package/dist/services/definitions/caddy.js.map +1 -0
  96. package/dist/services/definitions/chromadb.d.ts +3 -0
  97. package/dist/services/definitions/chromadb.d.ts.map +1 -0
  98. package/dist/services/definitions/chromadb.js +61 -0
  99. package/dist/services/definitions/chromadb.js.map +1 -0
  100. package/dist/services/definitions/claude-code.d.ts +3 -0
  101. package/dist/services/definitions/claude-code.d.ts.map +1 -0
  102. package/dist/services/definitions/claude-code.js +49 -0
  103. package/dist/services/definitions/claude-code.js.map +1 -0
  104. package/dist/services/definitions/code-server.d.ts +3 -0
  105. package/dist/services/definitions/code-server.d.ts.map +1 -0
  106. package/dist/services/definitions/code-server.js +61 -0
  107. package/dist/services/definitions/code-server.js.map +1 -0
  108. package/dist/services/definitions/codex.d.ts +3 -0
  109. package/dist/services/definitions/codex.d.ts.map +1 -0
  110. package/dist/services/definitions/codex.js +41 -0
  111. package/dist/services/definitions/codex.js.map +1 -0
  112. package/dist/services/definitions/coolify.d.ts +3 -0
  113. package/dist/services/definitions/coolify.d.ts.map +1 -0
  114. package/dist/services/definitions/coolify.js +44 -0
  115. package/dist/services/definitions/coolify.js.map +1 -0
  116. package/dist/services/definitions/dify.d.ts +3 -0
  117. package/dist/services/definitions/dify.d.ts.map +1 -0
  118. package/dist/services/definitions/dify.js +75 -0
  119. package/dist/services/definitions/dify.js.map +1 -0
  120. package/dist/services/definitions/docsgpt.d.ts +3 -0
  121. package/dist/services/definitions/docsgpt.d.ts.map +1 -0
  122. package/dist/services/definitions/docsgpt.js +39 -0
  123. package/dist/services/definitions/docsgpt.js.map +1 -0
  124. package/dist/services/definitions/dokploy.d.ts +3 -0
  125. package/dist/services/definitions/dokploy.d.ts.map +1 -0
  126. package/dist/services/definitions/dokploy.js +44 -0
  127. package/dist/services/definitions/dokploy.js.map +1 -0
  128. package/dist/services/definitions/dozzle.d.ts +3 -0
  129. package/dist/services/definitions/dozzle.d.ts.map +1 -0
  130. package/dist/services/definitions/dozzle.js +33 -0
  131. package/dist/services/definitions/dozzle.js.map +1 -0
  132. package/dist/services/definitions/ffmpeg.d.ts +3 -0
  133. package/dist/services/definitions/ffmpeg.d.ts.map +1 -0
  134. package/dist/services/definitions/ffmpeg.js +63 -0
  135. package/dist/services/definitions/ffmpeg.js.map +1 -0
  136. package/dist/services/definitions/flowise.d.ts +3 -0
  137. package/dist/services/definitions/flowise.d.ts.map +1 -0
  138. package/dist/services/definitions/flowise.js +39 -0
  139. package/dist/services/definitions/flowise.js.map +1 -0
  140. package/dist/services/definitions/gemini-cli.d.ts +3 -0
  141. package/dist/services/definitions/gemini-cli.d.ts.map +1 -0
  142. package/dist/services/definitions/gemini-cli.js +41 -0
  143. package/dist/services/definitions/gemini-cli.js.map +1 -0
  144. package/dist/services/definitions/gitea.d.ts +3 -0
  145. package/dist/services/definitions/gitea.d.ts.map +1 -0
  146. package/dist/services/definitions/gitea.js +45 -0
  147. package/dist/services/definitions/gitea.js.map +1 -0
  148. package/dist/services/definitions/gotify.d.ts +3 -0
  149. package/dist/services/definitions/gotify.d.ts.map +1 -0
  150. package/dist/services/definitions/gotify.js +60 -0
  151. package/dist/services/definitions/gotify.js.map +1 -0
  152. package/dist/services/definitions/grafana.d.ts +3 -0
  153. package/dist/services/definitions/grafana.d.ts.map +1 -0
  154. package/dist/services/definitions/grafana.js +61 -0
  155. package/dist/services/definitions/grafana.js.map +1 -0
  156. package/dist/services/definitions/index.d.ts +68 -0
  157. package/dist/services/definitions/index.d.ts.map +1 -0
  158. package/dist/services/definitions/index.js +198 -0
  159. package/dist/services/definitions/index.js.map +1 -0
  160. package/dist/services/definitions/kimi.d.ts +3 -0
  161. package/dist/services/definitions/kimi.d.ts.map +1 -0
  162. package/dist/services/definitions/kimi.js +41 -0
  163. package/dist/services/definitions/kimi.js.map +1 -0
  164. package/dist/services/definitions/lasuite-meet-agents.d.ts +3 -0
  165. package/dist/services/definitions/lasuite-meet-agents.d.ts.map +1 -0
  166. package/dist/services/definitions/lasuite-meet-agents.js +26 -0
  167. package/dist/services/definitions/lasuite-meet-agents.js.map +1 -0
  168. package/dist/services/definitions/lasuite-meet-backend.d.ts +3 -0
  169. package/dist/services/definitions/lasuite-meet-backend.d.ts.map +1 -0
  170. package/dist/services/definitions/lasuite-meet-backend.js +118 -0
  171. package/dist/services/definitions/lasuite-meet-backend.js.map +1 -0
  172. package/dist/services/definitions/lasuite-meet-frontend.d.ts +3 -0
  173. package/dist/services/definitions/lasuite-meet-frontend.d.ts.map +1 -0
  174. package/dist/services/definitions/lasuite-meet-frontend.js +31 -0
  175. package/dist/services/definitions/lasuite-meet-frontend.js.map +1 -0
  176. package/dist/services/definitions/librechat.d.ts +3 -0
  177. package/dist/services/definitions/librechat.d.ts.map +1 -0
  178. package/dist/services/definitions/librechat.js +47 -0
  179. package/dist/services/definitions/librechat.js.map +1 -0
  180. package/dist/services/definitions/lightpanda.d.ts +3 -0
  181. package/dist/services/definitions/lightpanda.d.ts.map +1 -0
  182. package/dist/services/definitions/lightpanda.js +59 -0
  183. package/dist/services/definitions/lightpanda.js.map +1 -0
  184. package/dist/services/definitions/litellm.d.ts +3 -0
  185. package/dist/services/definitions/litellm.d.ts.map +1 -0
  186. package/dist/services/definitions/litellm.js +41 -0
  187. package/dist/services/definitions/litellm.js.map +1 -0
  188. package/dist/services/definitions/livekit.d.ts +3 -0
  189. package/dist/services/definitions/livekit.d.ts.map +1 -0
  190. package/dist/services/definitions/livekit.js +31 -0
  191. package/dist/services/definitions/livekit.js.map +1 -0
  192. package/dist/services/definitions/matomo.d.ts +3 -0
  193. package/dist/services/definitions/matomo.d.ts.map +1 -0
  194. package/dist/services/definitions/matomo.js +75 -0
  195. package/dist/services/definitions/matomo.js.map +1 -0
  196. package/dist/services/definitions/matrix-synapse.d.ts +3 -0
  197. package/dist/services/definitions/matrix-synapse.d.ts.map +1 -0
  198. package/dist/services/definitions/matrix-synapse.js +82 -0
  199. package/dist/services/definitions/matrix-synapse.js.map +1 -0
  200. package/dist/services/definitions/mattermost.d.ts +3 -0
  201. package/dist/services/definitions/mattermost.d.ts.map +1 -0
  202. package/dist/services/definitions/mattermost.js +59 -0
  203. package/dist/services/definitions/mattermost.js.map +1 -0
  204. package/dist/services/definitions/meilisearch.d.ts +3 -0
  205. package/dist/services/definitions/meilisearch.d.ts.map +1 -0
  206. package/dist/services/definitions/meilisearch.js +76 -0
  207. package/dist/services/definitions/meilisearch.js.map +1 -0
  208. package/dist/services/definitions/minio.d.ts +3 -0
  209. package/dist/services/definitions/minio.d.ts.map +1 -0
  210. package/dist/services/definitions/minio.js +98 -0
  211. package/dist/services/definitions/minio.js.map +1 -0
  212. package/dist/services/definitions/mixpost.d.ts +3 -0
  213. package/dist/services/definitions/mixpost.d.ts.map +1 -0
  214. package/dist/services/definitions/mixpost.js +82 -0
  215. package/dist/services/definitions/mixpost.js.map +1 -0
  216. package/dist/services/definitions/motion-canvas.d.ts +3 -0
  217. package/dist/services/definitions/motion-canvas.d.ts.map +1 -0
  218. package/dist/services/definitions/motion-canvas.js +48 -0
  219. package/dist/services/definitions/motion-canvas.js.map +1 -0
  220. package/dist/services/definitions/n8n.d.ts +3 -0
  221. package/dist/services/definitions/n8n.d.ts.map +1 -0
  222. package/dist/services/definitions/n8n.js +146 -0
  223. package/dist/services/definitions/n8n.js.map +1 -0
  224. package/dist/services/definitions/nocodb.d.ts +3 -0
  225. package/dist/services/definitions/nocodb.d.ts.map +1 -0
  226. package/dist/services/definitions/nocodb.js +39 -0
  227. package/dist/services/definitions/nocodb.js.map +1 -0
  228. package/dist/services/definitions/ntfy.d.ts +3 -0
  229. package/dist/services/definitions/ntfy.d.ts.map +1 -0
  230. package/dist/services/definitions/ntfy.js +61 -0
  231. package/dist/services/definitions/ntfy.js.map +1 -0
  232. package/dist/services/definitions/ollama.d.ts +3 -0
  233. package/dist/services/definitions/ollama.d.ts.map +1 -0
  234. package/dist/services/definitions/ollama.js +61 -0
  235. package/dist/services/definitions/ollama.js.map +1 -0
  236. package/dist/services/definitions/open-webui.d.ts +3 -0
  237. package/dist/services/definitions/open-webui.d.ts.map +1 -0
  238. package/dist/services/definitions/open-webui.js +47 -0
  239. package/dist/services/definitions/open-webui.js.map +1 -0
  240. package/dist/services/definitions/opencode.d.ts +3 -0
  241. package/dist/services/definitions/opencode.d.ts.map +1 -0
  242. package/dist/services/definitions/opencode.js +47 -0
  243. package/dist/services/definitions/opencode.js.map +1 -0
  244. package/dist/services/definitions/openpanel.d.ts +3 -0
  245. package/dist/services/definitions/openpanel.d.ts.map +1 -0
  246. package/dist/services/definitions/openpanel.js +41 -0
  247. package/dist/services/definitions/openpanel.js.map +1 -0
  248. package/dist/services/definitions/outline.d.ts +3 -0
  249. package/dist/services/definitions/outline.d.ts.map +1 -0
  250. package/dist/services/definitions/outline.js +68 -0
  251. package/dist/services/definitions/outline.js.map +1 -0
  252. package/dist/services/definitions/paperless-ngx.d.ts +3 -0
  253. package/dist/services/definitions/paperless-ngx.d.ts.map +1 -0
  254. package/dist/services/definitions/paperless-ngx.js +85 -0
  255. package/dist/services/definitions/paperless-ngx.js.map +1 -0
  256. package/dist/services/definitions/playwright-server.d.ts +3 -0
  257. package/dist/services/definitions/playwright-server.d.ts.map +1 -0
  258. package/dist/services/definitions/playwright-server.js +34 -0
  259. package/dist/services/definitions/playwright-server.js.map +1 -0
  260. package/dist/services/definitions/portainer.d.ts +3 -0
  261. package/dist/services/definitions/portainer.d.ts.map +1 -0
  262. package/dist/services/definitions/portainer.js +44 -0
  263. package/dist/services/definitions/portainer.js.map +1 -0
  264. package/dist/services/definitions/postgresql.d.ts +3 -0
  265. package/dist/services/definitions/postgresql.d.ts.map +1 -0
  266. package/dist/services/definitions/postgresql.js +83 -0
  267. package/dist/services/definitions/postgresql.js.map +1 -0
  268. package/dist/services/definitions/postiz.d.ts +3 -0
  269. package/dist/services/definitions/postiz.d.ts.map +1 -0
  270. package/dist/services/definitions/postiz.js +79 -0
  271. package/dist/services/definitions/postiz.js.map +1 -0
  272. package/dist/services/definitions/prometheus.d.ts +3 -0
  273. package/dist/services/definitions/prometheus.d.ts.map +1 -0
  274. package/dist/services/definitions/prometheus.js +47 -0
  275. package/dist/services/definitions/prometheus.js.map +1 -0
  276. package/dist/services/definitions/qdrant.d.ts +3 -0
  277. package/dist/services/definitions/qdrant.d.ts.map +1 -0
  278. package/dist/services/definitions/qdrant.js +75 -0
  279. package/dist/services/definitions/qdrant.js.map +1 -0
  280. package/dist/services/definitions/redis.d.ts +3 -0
  281. package/dist/services/definitions/redis.d.ts.map +1 -0
  282. package/dist/services/definitions/redis.js +90 -0
  283. package/dist/services/definitions/redis.js.map +1 -0
  284. package/dist/services/definitions/remotion.d.ts +3 -0
  285. package/dist/services/definitions/remotion.d.ts.map +1 -0
  286. package/dist/services/definitions/remotion.js +48 -0
  287. package/dist/services/definitions/remotion.js.map +1 -0
  288. package/dist/services/definitions/rocketchat.d.ts +3 -0
  289. package/dist/services/definitions/rocketchat.d.ts.map +1 -0
  290. package/dist/services/definitions/rocketchat.js +54 -0
  291. package/dist/services/definitions/rocketchat.js.map +1 -0
  292. package/dist/services/definitions/searxng.d.ts +3 -0
  293. package/dist/services/definitions/searxng.d.ts.map +1 -0
  294. package/dist/services/definitions/searxng.js +61 -0
  295. package/dist/services/definitions/searxng.js.map +1 -0
  296. package/dist/services/definitions/stable-diffusion.d.ts +3 -0
  297. package/dist/services/definitions/stable-diffusion.d.ts.map +1 -0
  298. package/dist/services/definitions/stable-diffusion.js +44 -0
  299. package/dist/services/definitions/stable-diffusion.js.map +1 -0
  300. package/dist/services/definitions/steel-browser.d.ts +3 -0
  301. package/dist/services/definitions/steel-browser.d.ts.map +1 -0
  302. package/dist/services/definitions/steel-browser.js +68 -0
  303. package/dist/services/definitions/steel-browser.js.map +1 -0
  304. package/dist/services/definitions/tailscale.d.ts +3 -0
  305. package/dist/services/definitions/tailscale.d.ts.map +1 -0
  306. package/dist/services/definitions/tailscale.js +62 -0
  307. package/dist/services/definitions/tailscale.js.map +1 -0
  308. package/dist/services/definitions/temporal.d.ts +3 -0
  309. package/dist/services/definitions/temporal.d.ts.map +1 -0
  310. package/dist/services/definitions/temporal.js +97 -0
  311. package/dist/services/definitions/temporal.js.map +1 -0
  312. package/dist/services/definitions/traefik.d.ts +3 -0
  313. package/dist/services/definitions/traefik.d.ts.map +1 -0
  314. package/dist/services/definitions/traefik.js +52 -0
  315. package/dist/services/definitions/traefik.js.map +1 -0
  316. package/dist/services/definitions/umami.d.ts +3 -0
  317. package/dist/services/definitions/umami.d.ts.map +1 -0
  318. package/dist/services/definitions/umami.js +41 -0
  319. package/dist/services/definitions/umami.js.map +1 -0
  320. package/dist/services/definitions/uptime-kuma.d.ts +3 -0
  321. package/dist/services/definitions/uptime-kuma.d.ts.map +1 -0
  322. package/dist/services/definitions/uptime-kuma.js +46 -0
  323. package/dist/services/definitions/uptime-kuma.js.map +1 -0
  324. package/dist/services/definitions/valkey.d.ts +3 -0
  325. package/dist/services/definitions/valkey.d.ts.map +1 -0
  326. package/dist/services/definitions/valkey.js +60 -0
  327. package/dist/services/definitions/valkey.js.map +1 -0
  328. package/dist/services/definitions/watchtower.d.ts +3 -0
  329. package/dist/services/definitions/watchtower.d.ts.map +1 -0
  330. package/dist/services/definitions/watchtower.js +41 -0
  331. package/dist/services/definitions/watchtower.js.map +1 -0
  332. package/dist/services/definitions/weaviate.d.ts +3 -0
  333. package/dist/services/definitions/weaviate.d.ts.map +1 -0
  334. package/dist/services/definitions/weaviate.js +89 -0
  335. package/dist/services/definitions/weaviate.js.map +1 -0
  336. package/dist/services/definitions/whisper.d.ts +3 -0
  337. package/dist/services/definitions/whisper.d.ts.map +1 -0
  338. package/dist/services/definitions/whisper.js +55 -0
  339. package/dist/services/definitions/whisper.js.map +1 -0
  340. package/dist/services/registry.d.ts +12 -0
  341. package/dist/services/registry.d.ts.map +1 -0
  342. package/dist/services/registry.js +28 -0
  343. package/dist/services/registry.js.map +1 -0
  344. package/dist/skills/registry.d.ts +7 -0
  345. package/dist/skills/registry.d.ts.map +1 -0
  346. package/dist/skills/registry.js +111 -0
  347. package/dist/skills/registry.js.map +1 -0
  348. package/dist/types.d.ts +60 -0
  349. package/dist/types.d.ts.map +1 -0
  350. package/dist/types.js +20 -0
  351. package/dist/types.js.map +1 -0
  352. package/dist/validator.d.ts +16 -0
  353. package/dist/validator.d.ts.map +1 -0
  354. package/dist/validator.js +142 -0
  355. package/dist/validator.js.map +1 -0
  356. package/dist/version-manager.d.ts +10 -0
  357. package/dist/version-manager.d.ts.map +1 -0
  358. package/dist/version-manager.js +60 -0
  359. package/dist/version-manager.js.map +1 -0
  360. package/package.json +37 -0
  361. package/src/__snapshots__/composer.snapshot.test.ts.snap +903 -0
  362. package/src/bare-metal-partition.test.ts +63 -0
  363. package/src/bare-metal-partition.ts +64 -0
  364. package/src/composer.snapshot.test.ts +87 -0
  365. package/src/composer.test.ts +224 -0
  366. package/src/composer.ts +403 -0
  367. package/src/generate.test.ts +349 -0
  368. package/src/generate.ts +259 -0
  369. package/src/generators/bare-metal-install.test.ts +43 -0
  370. package/src/generators/bare-metal-install.ts +249 -0
  371. package/src/generators/caddy.ts +99 -0
  372. package/src/generators/env.ts +405 -0
  373. package/src/generators/grafana.ts +255 -0
  374. package/src/generators/n8n-workflows.ts +88 -0
  375. package/src/generators/native-services.ts +103 -0
  376. package/src/generators/postgres-init.ts +137 -0
  377. package/src/generators/prometheus.ts +89 -0
  378. package/src/generators/readme.ts +274 -0
  379. package/src/generators/scripts.ts +362 -0
  380. package/src/generators/skills.ts +628 -0
  381. package/src/index.ts +118 -0
  382. package/src/presets/registry.test.ts +32 -0
  383. package/src/presets/registry.ts +126 -0
  384. package/src/resolver.test.ts +204 -0
  385. package/src/resolver.ts +282 -0
  386. package/src/schema.test.ts +295 -0
  387. package/src/schema.ts +307 -0
  388. package/src/services/definitions/anything-llm.ts +46 -0
  389. package/src/services/definitions/appflowy.ts +46 -0
  390. package/src/services/definitions/beszel.ts +46 -0
  391. package/src/services/definitions/browserless.ts +84 -0
  392. package/src/services/definitions/caddy.ts +57 -0
  393. package/src/services/definitions/chromadb.ts +68 -0
  394. package/src/services/definitions/claude-code.ts +56 -0
  395. package/src/services/definitions/code-server.ts +67 -0
  396. package/src/services/definitions/codex.ts +48 -0
  397. package/src/services/definitions/coolify.ts +51 -0
  398. package/src/services/definitions/dify.ts +82 -0
  399. package/src/services/definitions/docsgpt.ts +45 -0
  400. package/src/services/definitions/dokploy.ts +51 -0
  401. package/src/services/definitions/dozzle.ts +40 -0
  402. package/src/services/definitions/ffmpeg.ts +70 -0
  403. package/src/services/definitions/flowise.ts +45 -0
  404. package/src/services/definitions/gemini-cli.ts +48 -0
  405. package/src/services/definitions/gitea.ts +52 -0
  406. package/src/services/definitions/gotify.ts +67 -0
  407. package/src/services/definitions/grafana.ts +68 -0
  408. package/src/services/definitions/index.ts +200 -0
  409. package/src/services/definitions/kimi.ts +48 -0
  410. package/src/services/definitions/lasuite-meet-agents.ts +33 -0
  411. package/src/services/definitions/lasuite-meet-backend.ts +125 -0
  412. package/src/services/definitions/lasuite-meet-frontend.ts +38 -0
  413. package/src/services/definitions/librechat.ts +54 -0
  414. package/src/services/definitions/lightpanda.ts +61 -0
  415. package/src/services/definitions/litellm.ts +48 -0
  416. package/src/services/definitions/livekit.ts +38 -0
  417. package/src/services/definitions/matomo.ts +82 -0
  418. package/src/services/definitions/matrix-synapse.ts +89 -0
  419. package/src/services/definitions/mattermost.ts +67 -0
  420. package/src/services/definitions/meilisearch.ts +83 -0
  421. package/src/services/definitions/minio.ts +105 -0
  422. package/src/services/definitions/mixpost.ts +89 -0
  423. package/src/services/definitions/motion-canvas.ts +55 -0
  424. package/src/services/definitions/n8n.ts +153 -0
  425. package/src/services/definitions/nocodb.ts +46 -0
  426. package/src/services/definitions/ntfy.ts +68 -0
  427. package/src/services/definitions/ollama.ts +68 -0
  428. package/src/services/definitions/open-webui.ts +54 -0
  429. package/src/services/definitions/opencode.ts +54 -0
  430. package/src/services/definitions/openpanel.ts +48 -0
  431. package/src/services/definitions/outline.ts +75 -0
  432. package/src/services/definitions/paperless-ngx.ts +92 -0
  433. package/src/services/definitions/playwright-server.ts +41 -0
  434. package/src/services/definitions/portainer.ts +50 -0
  435. package/src/services/definitions/postgresql.ts +90 -0
  436. package/src/services/definitions/postiz.ts +86 -0
  437. package/src/services/definitions/prometheus.ts +54 -0
  438. package/src/services/definitions/qdrant.ts +82 -0
  439. package/src/services/definitions/redis.ts +99 -0
  440. package/src/services/definitions/remotion.ts +55 -0
  441. package/src/services/definitions/rocketchat.ts +61 -0
  442. package/src/services/definitions/searxng.ts +68 -0
  443. package/src/services/definitions/stable-diffusion.ts +50 -0
  444. package/src/services/definitions/steel-browser.ts +70 -0
  445. package/src/services/definitions/tailscale.ts +69 -0
  446. package/src/services/definitions/temporal.ts +104 -0
  447. package/src/services/definitions/traefik.ts +60 -0
  448. package/src/services/definitions/umami.ts +48 -0
  449. package/src/services/definitions/uptime-kuma.ts +53 -0
  450. package/src/services/definitions/valkey.ts +67 -0
  451. package/src/services/definitions/watchtower.ts +47 -0
  452. package/src/services/definitions/weaviate.ts +96 -0
  453. package/src/services/definitions/whisper.ts +62 -0
  454. package/src/services/registry.test.ts +98 -0
  455. package/src/services/registry.ts +37 -0
  456. package/src/skills/registry.ts +126 -0
  457. package/src/types.ts +123 -0
  458. package/src/validator.test.ts +66 -0
  459. package/src/validator.ts +166 -0
  460. package/src/version-manager.ts +65 -0
  461. package/tsconfig.json +9 -0
@@ -0,0 +1,903 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`compose snapshot tests > creator preset (ffmpeg + remotion + minio + redis) 1`] = `
4
+ "services:
5
+ openclaw-gateway:
6
+ image: \${OPENCLAW_IMAGE:-ghcr.io/openclaw/openclaw:latest}
7
+ environment:
8
+ HOME: /home/node
9
+ TERM: xterm-256color
10
+ OPENCLAW_GATEWAY_TOKEN: \${OPENCLAW_GATEWAY_TOKEN}
11
+ CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
12
+ CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
13
+ CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
14
+ FFMPEG_SHARED_DIR: /home/node/.openclaw/workspace/media
15
+ MINIO_HOST: minio
16
+ MINIO_PORT: "9000"
17
+ MINIO_ACCESS_KEY: \${MINIO_ROOT_USER}
18
+ MINIO_SECRET_KEY: \${MINIO_SECRET_KEY}
19
+ REDIS_HOST: redis
20
+ REDIS_PORT: "6379"
21
+ REDIS_PASSWORD: \${REDIS_PASSWORD}
22
+ REMOTION_HOST: remotion
23
+ REMOTION_PORT: "3000"
24
+ volumes:
25
+ - \${OPENCLAW_CONFIG_DIR:-./openclaw/config}:/home/node/.openclaw
26
+ - \${OPENCLAW_WORKSPACE_DIR:-./openclaw/workspace}:/home/node/.openclaw/workspace
27
+ - ffmpeg-shared:/home/node/.openclaw/workspace/media
28
+ ports:
29
+ - \${OPENCLAW_GATEWAY_PORT:-18789}:18789
30
+ - \${OPENCLAW_BRIDGE_PORT:-18790}:18790
31
+ networks:
32
+ - openclaw-network
33
+ init: true
34
+ restart: unless-stopped
35
+ command:
36
+ - node
37
+ - dist/index.js
38
+ - gateway
39
+ - --bind
40
+ - \${OPENCLAW_GATEWAY_BIND:-lan}
41
+ - --port
42
+ - "18789"
43
+ depends_on:
44
+ minio:
45
+ condition: service_healthy
46
+ redis:
47
+ condition: service_healthy
48
+ minio:
49
+ image: minio/minio:latest
50
+ environment:
51
+ MINIO_ROOT_USER: minioadmin
52
+ MINIO_ROOT_PASSWORD: \${MINIO_ROOT_PASSWORD}
53
+ ports:
54
+ - \${MINIO_PORT_0:-9000}:9000
55
+ - \${MINIO_PORT_1:-9001}:9001
56
+ volumes:
57
+ - minio-data:/data
58
+ healthcheck:
59
+ test:
60
+ - CMD-SHELL
61
+ - mc ready local || exit 1
62
+ interval: 30s
63
+ timeout: 10s
64
+ retries: 3
65
+ start_period: 10s
66
+ restart: unless-stopped
67
+ networks:
68
+ - openclaw-network
69
+ command: server /data --console-address ':9001'
70
+ redis:
71
+ image: redis:7-alpine
72
+ environment:
73
+ REDIS_PASSWORD: \${REDIS_PASSWORD}
74
+ ports:
75
+ - \${REDIS_PORT:-6379}:6379
76
+ volumes:
77
+ - redis-data:/data
78
+ healthcheck:
79
+ test:
80
+ - CMD-SHELL
81
+ - redis-cli ping
82
+ interval: 10s
83
+ timeout: 5s
84
+ retries: 3
85
+ restart: unless-stopped
86
+ networks:
87
+ - openclaw-network
88
+ openclaw-cli:
89
+ image: \${OPENCLAW_IMAGE:-ghcr.io/openclaw/openclaw:latest}
90
+ environment:
91
+ HOME: /home/node
92
+ TERM: xterm-256color
93
+ OPENCLAW_GATEWAY_TOKEN: \${OPENCLAW_GATEWAY_TOKEN}
94
+ BROWSER: echo
95
+ CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
96
+ CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
97
+ CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
98
+ volumes:
99
+ - \${OPENCLAW_CONFIG_DIR:-./openclaw/config}:/home/node/.openclaw
100
+ - \${OPENCLAW_WORKSPACE_DIR:-./openclaw/workspace}:/home/node/.openclaw/workspace
101
+ stdin_open: true
102
+ tty: true
103
+ init: true
104
+ networks:
105
+ - openclaw-network
106
+ entrypoint:
107
+ - node
108
+ - dist/index.js
109
+ volumes:
110
+ ffmpeg-shared:
111
+ minio-data:
112
+ redis-data:
113
+ networks:
114
+ openclaw-network:
115
+ driver: bridge
116
+ "
117
+ `;
118
+
119
+ exports[`compose snapshot tests > creator preset (ffmpeg + remotion + minio + redis) 2`] = `
120
+ "services:
121
+ ffmpeg:
122
+ image: linuxserver/ffmpeg:latest
123
+ environment:
124
+ PUID: "1000"
125
+ PGID: "1000"
126
+ volumes:
127
+ - ffmpeg-shared:/data
128
+ restart: unless-stopped
129
+ networks:
130
+ - openclaw-network
131
+ command: tail -f /dev/null
132
+ profiles:
133
+ - media
134
+ remotion:
135
+ image: remotion-dev/studio:latest
136
+ ports:
137
+ - \${REMOTION_PORT:-3020}:3000
138
+ restart: unless-stopped
139
+ networks:
140
+ - openclaw-network
141
+ profiles:
142
+ - media
143
+ volumes:
144
+ ffmpeg-shared:
145
+ "
146
+ `;
147
+
148
+ exports[`compose snapshot tests > devops preset (n8n + postgresql + redis + monitoring) 1`] = `
149
+ "services:
150
+ openclaw-gateway:
151
+ image: \${OPENCLAW_IMAGE:-ghcr.io/openclaw/openclaw:latest}
152
+ environment:
153
+ HOME: /home/node
154
+ TERM: xterm-256color
155
+ OPENCLAW_GATEWAY_TOKEN: \${OPENCLAW_GATEWAY_TOKEN}
156
+ CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
157
+ CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
158
+ CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
159
+ POSTGRES_HOST: postgresql
160
+ POSTGRES_PORT: "5432"
161
+ REDIS_HOST: redis
162
+ REDIS_PORT: "6379"
163
+ REDIS_PASSWORD: \${REDIS_PASSWORD}
164
+ N8N_HOST: n8n
165
+ N8N_PORT: "5678"
166
+ N8N_WEBHOOK_URL: http://n8n:5678/
167
+ volumes:
168
+ - \${OPENCLAW_CONFIG_DIR:-./openclaw/config}:/home/node/.openclaw
169
+ - \${OPENCLAW_WORKSPACE_DIR:-./openclaw/workspace}:/home/node/.openclaw/workspace
170
+ ports:
171
+ - \${OPENCLAW_GATEWAY_PORT:-18789}:18789
172
+ - \${OPENCLAW_BRIDGE_PORT:-18790}:18790
173
+ networks:
174
+ - openclaw-network
175
+ init: true
176
+ restart: unless-stopped
177
+ command:
178
+ - node
179
+ - dist/index.js
180
+ - gateway
181
+ - --bind
182
+ - \${OPENCLAW_GATEWAY_BIND:-lan}
183
+ - --port
184
+ - "18789"
185
+ depends_on:
186
+ postgresql:
187
+ condition: service_healthy
188
+ redis:
189
+ condition: service_healthy
190
+ n8n:
191
+ condition: service_healthy
192
+ postgresql:
193
+ image: postgres:16-alpine
194
+ environment:
195
+ POSTGRES_USER: openclaw
196
+ POSTGRES_PASSWORD: \${POSTGRES_PASSWORD}
197
+ POSTGRES_DB: openclaw
198
+ ports:
199
+ - \${POSTGRESQL_PORT:-5432}:5432
200
+ volumes:
201
+ - postgres-data:/var/lib/postgresql/data
202
+ - ./postgres/init-databases.sh:/docker-entrypoint-initdb.d/init-databases.sh:ro
203
+ healthcheck:
204
+ test:
205
+ - CMD-SHELL
206
+ - pg_isready -U openclaw
207
+ interval: 10s
208
+ timeout: 5s
209
+ retries: 3
210
+ start_period: 30s
211
+ restart: unless-stopped
212
+ networks:
213
+ - openclaw-network
214
+ redis:
215
+ image: redis:7-alpine
216
+ environment:
217
+ REDIS_PASSWORD: \${REDIS_PASSWORD}
218
+ ports:
219
+ - \${REDIS_PORT:-6379}:6379
220
+ volumes:
221
+ - redis-data:/data
222
+ healthcheck:
223
+ test:
224
+ - CMD-SHELL
225
+ - redis-cli ping
226
+ interval: 10s
227
+ timeout: 5s
228
+ retries: 3
229
+ restart: unless-stopped
230
+ networks:
231
+ - openclaw-network
232
+ n8n:
233
+ image: docker.n8n.io/n8nio/n8n:latest
234
+ environment:
235
+ N8N_BASIC_AUTH_ACTIVE: "true"
236
+ N8N_BASIC_AUTH_USER: admin
237
+ N8N_BASIC_AUTH_PASSWORD: \${N8N_BASIC_AUTH_PASSWORD}
238
+ DB_TYPE: postgresdb
239
+ DB_POSTGRESDB_HOST: postgresql
240
+ DB_POSTGRESDB_PORT: "5432"
241
+ DB_POSTGRESDB_DATABASE: n8n
242
+ DB_POSTGRESDB_USER: n8n
243
+ DB_POSTGRESDB_PASSWORD: \${DB_POSTGRESDB_PASSWORD}
244
+ N8N_PORT: "5678"
245
+ WEBHOOK_URL: http://n8n:5678/
246
+ ports:
247
+ - \${N8N_PORT:-5678}:5678
248
+ volumes:
249
+ - n8n-data:/home/node/.n8n
250
+ healthcheck:
251
+ test:
252
+ - CMD-SHELL
253
+ - wget -q --spider http://localhost:5678/healthz || exit 1
254
+ interval: 30s
255
+ timeout: 10s
256
+ retries: 3
257
+ start_period: 30s
258
+ restart: unless-stopped
259
+ networks:
260
+ - openclaw-network
261
+ depends_on:
262
+ postgresql:
263
+ condition: service_healthy
264
+ openclaw-cli:
265
+ image: \${OPENCLAW_IMAGE:-ghcr.io/openclaw/openclaw:latest}
266
+ environment:
267
+ HOME: /home/node
268
+ TERM: xterm-256color
269
+ OPENCLAW_GATEWAY_TOKEN: \${OPENCLAW_GATEWAY_TOKEN}
270
+ BROWSER: echo
271
+ CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
272
+ CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
273
+ CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
274
+ volumes:
275
+ - \${OPENCLAW_CONFIG_DIR:-./openclaw/config}:/home/node/.openclaw
276
+ - \${OPENCLAW_WORKSPACE_DIR:-./openclaw/workspace}:/home/node/.openclaw/workspace
277
+ stdin_open: true
278
+ tty: true
279
+ init: true
280
+ networks:
281
+ - openclaw-network
282
+ entrypoint:
283
+ - node
284
+ - dist/index.js
285
+ volumes:
286
+ grafana-data:
287
+ n8n-data:
288
+ postgres-data:
289
+ prometheus-data:
290
+ redis-data:
291
+ uptime-kuma-data:
292
+ networks:
293
+ openclaw-network:
294
+ driver: bridge
295
+ "
296
+ `;
297
+
298
+ exports[`compose snapshot tests > devops preset (n8n + postgresql + redis + monitoring) 2`] = `
299
+ "services:
300
+ prometheus:
301
+ image: prom/prometheus:latest
302
+ ports:
303
+ - \${PROMETHEUS_PORT:-9090}:9090
304
+ volumes:
305
+ - prometheus-data:/prometheus
306
+ healthcheck:
307
+ test:
308
+ - CMD-SHELL
309
+ - wget -q --spider http://localhost:9090/-/healthy || exit 1
310
+ interval: 30s
311
+ timeout: 10s
312
+ retries: 3
313
+ start_period: 10s
314
+ restart: unless-stopped
315
+ networks:
316
+ - openclaw-network
317
+ command: --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/prometheus
318
+ profiles:
319
+ - monitoring
320
+ uptime-kuma:
321
+ image: louislam/uptime-kuma:1
322
+ ports:
323
+ - \${UPTIME_KUMA_PORT:-3001}:3001
324
+ volumes:
325
+ - uptime-kuma-data:/app/data
326
+ healthcheck:
327
+ test:
328
+ - CMD-SHELL
329
+ - wget -q --spider http://localhost:3001 || exit 1
330
+ interval: 30s
331
+ timeout: 10s
332
+ retries: 3
333
+ start_period: 15s
334
+ restart: unless-stopped
335
+ networks:
336
+ - openclaw-network
337
+ profiles:
338
+ - monitoring
339
+ grafana:
340
+ image: grafana/grafana:latest
341
+ environment:
342
+ GF_SECURITY_ADMIN_USER: admin
343
+ GF_SECURITY_ADMIN_PASSWORD: \${GF_SECURITY_ADMIN_PASSWORD}
344
+ ports:
345
+ - \${GRAFANA_PORT:-3150}:3000
346
+ volumes:
347
+ - grafana-data:/var/lib/grafana
348
+ healthcheck:
349
+ test:
350
+ - CMD-SHELL
351
+ - wget -q --spider http://localhost:3000/api/health || exit 1
352
+ interval: 30s
353
+ timeout: 10s
354
+ retries: 3
355
+ start_period: 15s
356
+ restart: unless-stopped
357
+ networks:
358
+ - openclaw-network
359
+ depends_on:
360
+ prometheus:
361
+ condition: service_healthy
362
+ profiles:
363
+ - monitoring
364
+ volumes:
365
+ grafana-data:
366
+ prometheus-data:
367
+ uptime-kuma-data:
368
+ "
369
+ `;
370
+
371
+ exports[`compose snapshot tests > full preset (many services) 1`] = `
372
+ "services:
373
+ openclaw-gateway:
374
+ image: \${OPENCLAW_IMAGE:-ghcr.io/openclaw/openclaw:latest}
375
+ environment:
376
+ HOME: /home/node
377
+ TERM: xterm-256color
378
+ OPENCLAW_GATEWAY_TOKEN: \${OPENCLAW_GATEWAY_TOKEN}
379
+ CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
380
+ CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
381
+ CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
382
+ BROWSERLESS_HOST: browserless
383
+ BROWSERLESS_PORT: "3000"
384
+ BROWSERLESS_TOKEN: \${BROWSERLESS_TOKEN}
385
+ FFMPEG_SHARED_DIR: /home/node/.openclaw/workspace/media
386
+ GOTIFY_HOST: gotify
387
+ GOTIFY_PORT: "8080"
388
+ MEILISEARCH_HOST: meilisearch
389
+ MEILISEARCH_PORT: "7700"
390
+ MEILISEARCH_MASTER_KEY: \${MEILISEARCH_MASTER_KEY}
391
+ MINIO_HOST: minio
392
+ MINIO_PORT: "9000"
393
+ MINIO_ACCESS_KEY: \${MINIO_ROOT_USER}
394
+ MINIO_SECRET_KEY: \${MINIO_SECRET_KEY}
395
+ OLLAMA_HOST: ollama
396
+ OLLAMA_PORT: "11434"
397
+ POSTGRES_HOST: postgresql
398
+ POSTGRES_PORT: "5432"
399
+ QDRANT_HOST: qdrant
400
+ QDRANT_PORT: "6333"
401
+ REDIS_HOST: redis
402
+ REDIS_PORT: "6379"
403
+ REDIS_PASSWORD: \${REDIS_PASSWORD}
404
+ REMOTION_HOST: remotion
405
+ REMOTION_PORT: "3000"
406
+ SEARXNG_HOST: searxng
407
+ SEARXNG_PORT: "8080"
408
+ WHISPER_HOST: whisper
409
+ WHISPER_PORT: "8000"
410
+ N8N_HOST: n8n
411
+ N8N_PORT: "5678"
412
+ N8N_WEBHOOK_URL: http://n8n:5678/
413
+ volumes:
414
+ - \${OPENCLAW_CONFIG_DIR:-./openclaw/config}:/home/node/.openclaw
415
+ - \${OPENCLAW_WORKSPACE_DIR:-./openclaw/workspace}:/home/node/.openclaw/workspace
416
+ - ffmpeg-shared:/home/node/.openclaw/workspace/media
417
+ ports:
418
+ - \${OPENCLAW_GATEWAY_PORT:-18789}:18789
419
+ - \${OPENCLAW_BRIDGE_PORT:-18790}:18790
420
+ networks:
421
+ - openclaw-network
422
+ init: true
423
+ restart: unless-stopped
424
+ command:
425
+ - node
426
+ - dist/index.js
427
+ - gateway
428
+ - --bind
429
+ - \${OPENCLAW_GATEWAY_BIND:-lan}
430
+ - --port
431
+ - "18789"
432
+ depends_on:
433
+ browserless:
434
+ condition: service_healthy
435
+ caddy:
436
+ condition: service_started
437
+ meilisearch:
438
+ condition: service_healthy
439
+ minio:
440
+ condition: service_healthy
441
+ postgresql:
442
+ condition: service_healthy
443
+ qdrant:
444
+ condition: service_healthy
445
+ redis:
446
+ condition: service_healthy
447
+ searxng:
448
+ condition: service_healthy
449
+ n8n:
450
+ condition: service_healthy
451
+ browserless:
452
+ image: browserless/chrome:latest
453
+ environment:
454
+ TOKEN: \${TOKEN}
455
+ MAX_CONCURRENT_SESSIONS: "5"
456
+ ports:
457
+ - \${BROWSERLESS_PORT:-3010}:3000
458
+ healthcheck:
459
+ test:
460
+ - CMD-SHELL
461
+ - wget -q --spider http://localhost:3000/ || exit 1
462
+ interval: 30s
463
+ timeout: 10s
464
+ retries: 3
465
+ start_period: 15s
466
+ restart: unless-stopped
467
+ networks:
468
+ - openclaw-network
469
+ caddy:
470
+ image: caddy:2-alpine
471
+ ports:
472
+ - \${CADDY_PORT_0:-80}:80
473
+ - \${CADDY_PORT_1:-443}:443
474
+ volumes:
475
+ - caddy-data:/data
476
+ - caddy-config:/config
477
+ restart: unless-stopped
478
+ networks:
479
+ - openclaw-network
480
+ meilisearch:
481
+ image: getmeili/meilisearch:latest
482
+ environment:
483
+ MEILI_MASTER_KEY: \${MEILI_MASTER_KEY}
484
+ ports:
485
+ - \${MEILISEARCH_PORT:-7700}:7700
486
+ volumes:
487
+ - meilisearch-data:/meili_data
488
+ healthcheck:
489
+ test:
490
+ - CMD-SHELL
491
+ - wget -q --spider http://localhost:7700/health || exit 1
492
+ interval: 30s
493
+ timeout: 10s
494
+ retries: 3
495
+ start_period: 10s
496
+ restart: unless-stopped
497
+ networks:
498
+ - openclaw-network
499
+ minio:
500
+ image: minio/minio:latest
501
+ environment:
502
+ MINIO_ROOT_USER: minioadmin
503
+ MINIO_ROOT_PASSWORD: \${MINIO_ROOT_PASSWORD}
504
+ ports:
505
+ - \${MINIO_PORT_0:-9000}:9000
506
+ - \${MINIO_PORT_1:-9001}:9001
507
+ volumes:
508
+ - minio-data:/data
509
+ healthcheck:
510
+ test:
511
+ - CMD-SHELL
512
+ - mc ready local || exit 1
513
+ interval: 30s
514
+ timeout: 10s
515
+ retries: 3
516
+ start_period: 10s
517
+ restart: unless-stopped
518
+ networks:
519
+ - openclaw-network
520
+ command: server /data --console-address ':9001'
521
+ postgresql:
522
+ image: postgres:16-alpine
523
+ environment:
524
+ POSTGRES_USER: openclaw
525
+ POSTGRES_PASSWORD: \${POSTGRES_PASSWORD}
526
+ POSTGRES_DB: openclaw
527
+ ports:
528
+ - \${POSTGRESQL_PORT:-5432}:5432
529
+ volumes:
530
+ - postgres-data:/var/lib/postgresql/data
531
+ - ./postgres/init-databases.sh:/docker-entrypoint-initdb.d/init-databases.sh:ro
532
+ healthcheck:
533
+ test:
534
+ - CMD-SHELL
535
+ - pg_isready -U openclaw
536
+ interval: 10s
537
+ timeout: 5s
538
+ retries: 3
539
+ start_period: 30s
540
+ restart: unless-stopped
541
+ networks:
542
+ - openclaw-network
543
+ qdrant:
544
+ image: qdrant/qdrant:v1.12.1
545
+ environment:
546
+ QDRANT__SERVICE__GRPC_PORT: "6334"
547
+ ports:
548
+ - \${QDRANT_PORT:-6333}:6333
549
+ volumes:
550
+ - qdrant-data:/qdrant/storage
551
+ healthcheck:
552
+ test:
553
+ - CMD-SHELL
554
+ - wget -q --spider http://localhost:6333/healthz || exit 1
555
+ interval: 30s
556
+ timeout: 10s
557
+ retries: 3
558
+ start_period: 10s
559
+ restart: unless-stopped
560
+ networks:
561
+ - openclaw-network
562
+ redis:
563
+ image: redis:7-alpine
564
+ environment:
565
+ REDIS_PASSWORD: \${REDIS_PASSWORD}
566
+ ports:
567
+ - \${REDIS_PORT:-6379}:6379
568
+ volumes:
569
+ - redis-data:/data
570
+ healthcheck:
571
+ test:
572
+ - CMD-SHELL
573
+ - redis-cli ping
574
+ interval: 10s
575
+ timeout: 5s
576
+ retries: 3
577
+ restart: unless-stopped
578
+ networks:
579
+ - openclaw-network
580
+ searxng:
581
+ image: searxng/searxng:latest
582
+ ports:
583
+ - \${SEARXNG_PORT:-8080}:8080
584
+ volumes:
585
+ - searxng-data:/etc/searxng
586
+ healthcheck:
587
+ test:
588
+ - CMD-SHELL
589
+ - wget -q --spider http://localhost:8080/ || exit 1
590
+ interval: 30s
591
+ timeout: 10s
592
+ retries: 3
593
+ start_period: 15s
594
+ restart: unless-stopped
595
+ networks:
596
+ - openclaw-network
597
+ n8n:
598
+ image: docker.n8n.io/n8nio/n8n:latest
599
+ environment:
600
+ N8N_BASIC_AUTH_ACTIVE: "true"
601
+ N8N_BASIC_AUTH_USER: admin
602
+ N8N_BASIC_AUTH_PASSWORD: \${N8N_BASIC_AUTH_PASSWORD}
603
+ DB_TYPE: postgresdb
604
+ DB_POSTGRESDB_HOST: postgresql
605
+ DB_POSTGRESDB_PORT: "5432"
606
+ DB_POSTGRESDB_DATABASE: n8n
607
+ DB_POSTGRESDB_USER: n8n
608
+ DB_POSTGRESDB_PASSWORD: \${DB_POSTGRESDB_PASSWORD}
609
+ N8N_PORT: "5678"
610
+ WEBHOOK_URL: http://n8n:5678/
611
+ ports:
612
+ - \${N8N_PORT:-5678}:5678
613
+ volumes:
614
+ - n8n-data:/home/node/.n8n
615
+ healthcheck:
616
+ test:
617
+ - CMD-SHELL
618
+ - wget -q --spider http://localhost:5678/healthz || exit 1
619
+ interval: 30s
620
+ timeout: 10s
621
+ retries: 3
622
+ start_period: 30s
623
+ restart: unless-stopped
624
+ networks:
625
+ - openclaw-network
626
+ depends_on:
627
+ postgresql:
628
+ condition: service_healthy
629
+ openclaw-cli:
630
+ image: \${OPENCLAW_IMAGE:-ghcr.io/openclaw/openclaw:latest}
631
+ environment:
632
+ HOME: /home/node
633
+ TERM: xterm-256color
634
+ OPENCLAW_GATEWAY_TOKEN: \${OPENCLAW_GATEWAY_TOKEN}
635
+ BROWSER: echo
636
+ CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
637
+ CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
638
+ CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
639
+ volumes:
640
+ - \${OPENCLAW_CONFIG_DIR:-./openclaw/config}:/home/node/.openclaw
641
+ - \${OPENCLAW_WORKSPACE_DIR:-./openclaw/workspace}:/home/node/.openclaw/workspace
642
+ stdin_open: true
643
+ tty: true
644
+ init: true
645
+ networks:
646
+ - openclaw-network
647
+ entrypoint:
648
+ - node
649
+ - dist/index.js
650
+ volumes:
651
+ caddy-config:
652
+ caddy-data:
653
+ ffmpeg-shared:
654
+ gotify-data:
655
+ grafana-data:
656
+ meilisearch-data:
657
+ minio-data:
658
+ n8n-data:
659
+ ollama-data:
660
+ postgres-data:
661
+ prometheus-data:
662
+ qdrant-data:
663
+ redis-data:
664
+ searxng-data:
665
+ uptime-kuma-data:
666
+ networks:
667
+ openclaw-network:
668
+ driver: bridge
669
+ "
670
+ `;
671
+
672
+ exports[`compose snapshot tests > minimal preset (redis only) 1`] = `
673
+ "services:
674
+ openclaw-gateway:
675
+ image: \${OPENCLAW_IMAGE:-ghcr.io/openclaw/openclaw:latest}
676
+ environment:
677
+ HOME: /home/node
678
+ TERM: xterm-256color
679
+ OPENCLAW_GATEWAY_TOKEN: \${OPENCLAW_GATEWAY_TOKEN}
680
+ CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
681
+ CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
682
+ CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
683
+ REDIS_HOST: redis
684
+ REDIS_PORT: "6379"
685
+ REDIS_PASSWORD: \${REDIS_PASSWORD}
686
+ volumes:
687
+ - \${OPENCLAW_CONFIG_DIR:-./openclaw/config}:/home/node/.openclaw
688
+ - \${OPENCLAW_WORKSPACE_DIR:-./openclaw/workspace}:/home/node/.openclaw/workspace
689
+ ports:
690
+ - \${OPENCLAW_GATEWAY_PORT:-18789}:18789
691
+ - \${OPENCLAW_BRIDGE_PORT:-18790}:18790
692
+ networks:
693
+ - openclaw-network
694
+ init: true
695
+ restart: unless-stopped
696
+ command:
697
+ - node
698
+ - dist/index.js
699
+ - gateway
700
+ - --bind
701
+ - \${OPENCLAW_GATEWAY_BIND:-lan}
702
+ - --port
703
+ - "18789"
704
+ depends_on:
705
+ redis:
706
+ condition: service_healthy
707
+ redis:
708
+ image: redis:7-alpine
709
+ environment:
710
+ REDIS_PASSWORD: \${REDIS_PASSWORD}
711
+ ports:
712
+ - \${REDIS_PORT:-6379}:6379
713
+ volumes:
714
+ - redis-data:/data
715
+ healthcheck:
716
+ test:
717
+ - CMD-SHELL
718
+ - redis-cli ping
719
+ interval: 10s
720
+ timeout: 5s
721
+ retries: 3
722
+ restart: unless-stopped
723
+ networks:
724
+ - openclaw-network
725
+ openclaw-cli:
726
+ image: \${OPENCLAW_IMAGE:-ghcr.io/openclaw/openclaw:latest}
727
+ environment:
728
+ HOME: /home/node
729
+ TERM: xterm-256color
730
+ OPENCLAW_GATEWAY_TOKEN: \${OPENCLAW_GATEWAY_TOKEN}
731
+ BROWSER: echo
732
+ CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
733
+ CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
734
+ CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
735
+ volumes:
736
+ - \${OPENCLAW_CONFIG_DIR:-./openclaw/config}:/home/node/.openclaw
737
+ - \${OPENCLAW_WORKSPACE_DIR:-./openclaw/workspace}:/home/node/.openclaw/workspace
738
+ stdin_open: true
739
+ tty: true
740
+ init: true
741
+ networks:
742
+ - openclaw-network
743
+ entrypoint:
744
+ - node
745
+ - dist/index.js
746
+ volumes:
747
+ redis-data:
748
+ networks:
749
+ openclaw-network:
750
+ driver: bridge
751
+ "
752
+ `;
753
+
754
+ exports[`compose snapshot tests > researcher preset (qdrant + searxng + browserless + redis) 1`] = `
755
+ "services:
756
+ openclaw-gateway:
757
+ image: \${OPENCLAW_IMAGE:-ghcr.io/openclaw/openclaw:latest}
758
+ environment:
759
+ HOME: /home/node
760
+ TERM: xterm-256color
761
+ OPENCLAW_GATEWAY_TOKEN: \${OPENCLAW_GATEWAY_TOKEN}
762
+ CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
763
+ CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
764
+ CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
765
+ BROWSERLESS_HOST: browserless
766
+ BROWSERLESS_PORT: "3000"
767
+ BROWSERLESS_TOKEN: \${BROWSERLESS_TOKEN}
768
+ QDRANT_HOST: qdrant
769
+ QDRANT_PORT: "6333"
770
+ REDIS_HOST: redis
771
+ REDIS_PORT: "6379"
772
+ REDIS_PASSWORD: \${REDIS_PASSWORD}
773
+ SEARXNG_HOST: searxng
774
+ SEARXNG_PORT: "8080"
775
+ volumes:
776
+ - \${OPENCLAW_CONFIG_DIR:-./openclaw/config}:/home/node/.openclaw
777
+ - \${OPENCLAW_WORKSPACE_DIR:-./openclaw/workspace}:/home/node/.openclaw/workspace
778
+ ports:
779
+ - \${OPENCLAW_GATEWAY_PORT:-18789}:18789
780
+ - \${OPENCLAW_BRIDGE_PORT:-18790}:18790
781
+ networks:
782
+ - openclaw-network
783
+ init: true
784
+ restart: unless-stopped
785
+ command:
786
+ - node
787
+ - dist/index.js
788
+ - gateway
789
+ - --bind
790
+ - \${OPENCLAW_GATEWAY_BIND:-lan}
791
+ - --port
792
+ - "18789"
793
+ depends_on:
794
+ browserless:
795
+ condition: service_healthy
796
+ qdrant:
797
+ condition: service_healthy
798
+ redis:
799
+ condition: service_healthy
800
+ searxng:
801
+ condition: service_healthy
802
+ browserless:
803
+ image: browserless/chrome:latest
804
+ environment:
805
+ TOKEN: \${TOKEN}
806
+ MAX_CONCURRENT_SESSIONS: "5"
807
+ ports:
808
+ - \${BROWSERLESS_PORT:-3010}:3000
809
+ healthcheck:
810
+ test:
811
+ - CMD-SHELL
812
+ - wget -q --spider http://localhost:3000/ || exit 1
813
+ interval: 30s
814
+ timeout: 10s
815
+ retries: 3
816
+ start_period: 15s
817
+ restart: unless-stopped
818
+ networks:
819
+ - openclaw-network
820
+ qdrant:
821
+ image: qdrant/qdrant:v1.12.1
822
+ environment:
823
+ QDRANT__SERVICE__GRPC_PORT: "6334"
824
+ ports:
825
+ - \${QDRANT_PORT:-6333}:6333
826
+ volumes:
827
+ - qdrant-data:/qdrant/storage
828
+ healthcheck:
829
+ test:
830
+ - CMD-SHELL
831
+ - wget -q --spider http://localhost:6333/healthz || exit 1
832
+ interval: 30s
833
+ timeout: 10s
834
+ retries: 3
835
+ start_period: 10s
836
+ restart: unless-stopped
837
+ networks:
838
+ - openclaw-network
839
+ redis:
840
+ image: redis:7-alpine
841
+ environment:
842
+ REDIS_PASSWORD: \${REDIS_PASSWORD}
843
+ ports:
844
+ - \${REDIS_PORT:-6379}:6379
845
+ volumes:
846
+ - redis-data:/data
847
+ healthcheck:
848
+ test:
849
+ - CMD-SHELL
850
+ - redis-cli ping
851
+ interval: 10s
852
+ timeout: 5s
853
+ retries: 3
854
+ restart: unless-stopped
855
+ networks:
856
+ - openclaw-network
857
+ searxng:
858
+ image: searxng/searxng:latest
859
+ ports:
860
+ - \${SEARXNG_PORT:-8080}:8080
861
+ volumes:
862
+ - searxng-data:/etc/searxng
863
+ healthcheck:
864
+ test:
865
+ - CMD-SHELL
866
+ - wget -q --spider http://localhost:8080/ || exit 1
867
+ interval: 30s
868
+ timeout: 10s
869
+ retries: 3
870
+ start_period: 15s
871
+ restart: unless-stopped
872
+ networks:
873
+ - openclaw-network
874
+ openclaw-cli:
875
+ image: \${OPENCLAW_IMAGE:-ghcr.io/openclaw/openclaw:latest}
876
+ environment:
877
+ HOME: /home/node
878
+ TERM: xterm-256color
879
+ OPENCLAW_GATEWAY_TOKEN: \${OPENCLAW_GATEWAY_TOKEN}
880
+ BROWSER: echo
881
+ CLAUDE_AI_SESSION_KEY: \${CLAUDE_AI_SESSION_KEY}
882
+ CLAUDE_WEB_SESSION_KEY: \${CLAUDE_WEB_SESSION_KEY}
883
+ CLAUDE_WEB_COOKIE: \${CLAUDE_WEB_COOKIE}
884
+ volumes:
885
+ - \${OPENCLAW_CONFIG_DIR:-./openclaw/config}:/home/node/.openclaw
886
+ - \${OPENCLAW_WORKSPACE_DIR:-./openclaw/workspace}:/home/node/.openclaw/workspace
887
+ stdin_open: true
888
+ tty: true
889
+ init: true
890
+ networks:
891
+ - openclaw-network
892
+ entrypoint:
893
+ - node
894
+ - dist/index.js
895
+ volumes:
896
+ qdrant-data:
897
+ redis-data:
898
+ searxng-data:
899
+ networks:
900
+ openclaw-network:
901
+ driver: bridge
902
+ "
903
+ `;