@better-openclaw/core 1.0.24 → 1.0.25

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 (170) hide show
  1. package/dist/addon-stack.cjs +673 -0
  2. package/dist/addon-stack.cjs.map +1 -0
  3. package/dist/addon-stack.d.cts +23 -0
  4. package/dist/addon-stack.d.cts.map +1 -0
  5. package/dist/addon-stack.d.mts +23 -0
  6. package/dist/addon-stack.d.mts.map +1 -0
  7. package/dist/addon-stack.mjs +671 -0
  8. package/dist/addon-stack.mjs.map +1 -0
  9. package/dist/addon-stack.test.cjs +349 -0
  10. package/dist/addon-stack.test.cjs.map +1 -0
  11. package/dist/addon-stack.test.d.cts +1 -0
  12. package/dist/addon-stack.test.d.mts +1 -0
  13. package/dist/addon-stack.test.mjs +349 -0
  14. package/dist/addon-stack.test.mjs.map +1 -0
  15. package/dist/bare-metal-partition.test.cjs +20 -20
  16. package/dist/bare-metal-partition.test.cjs.map +1 -1
  17. package/dist/bare-metal-partition.test.mjs +2 -2
  18. package/dist/composer.cjs +4 -0
  19. package/dist/composer.cjs.map +1 -1
  20. package/dist/composer.d.cts +24 -1
  21. package/dist/composer.d.cts.map +1 -1
  22. package/dist/composer.d.mts +24 -1
  23. package/dist/composer.d.mts.map +1 -1
  24. package/dist/composer.mjs +1 -1
  25. package/dist/composer.mjs.map +1 -1
  26. package/dist/composer.snapshot.test.cjs +20 -20
  27. package/dist/composer.snapshot.test.cjs.map +1 -1
  28. package/dist/composer.snapshot.test.mjs +2 -2
  29. package/dist/composer.test.cjs +53 -53
  30. package/dist/composer.test.cjs.map +1 -1
  31. package/dist/composer.test.mjs +2 -2
  32. package/dist/deployers/strip-host-ports.test.cjs +26 -26
  33. package/dist/deployers/strip-host-ports.test.cjs.map +1 -1
  34. package/dist/deployers/strip-host-ports.test.mjs +1 -1
  35. package/dist/generate.cjs +2 -2
  36. package/dist/generate.mjs +3 -3
  37. package/dist/generate.test.cjs +55 -55
  38. package/dist/generate.test.cjs.map +1 -1
  39. package/dist/generate.test.mjs +1 -1
  40. package/dist/generators/bare-metal-install.test.cjs +18 -18
  41. package/dist/generators/bare-metal-install.test.cjs.map +1 -1
  42. package/dist/generators/bare-metal-install.test.mjs +1 -1
  43. package/dist/generators/caddy.test.cjs +13 -13
  44. package/dist/generators/caddy.test.cjs.map +1 -1
  45. package/dist/generators/caddy.test.mjs +1 -1
  46. package/dist/generators/clone-repos.test.cjs +27 -27
  47. package/dist/generators/clone-repos.test.cjs.map +1 -1
  48. package/dist/generators/clone-repos.test.mjs +1 -1
  49. package/dist/generators/env.test.cjs +17 -17
  50. package/dist/generators/env.test.cjs.map +1 -1
  51. package/dist/generators/env.test.mjs +1 -1
  52. package/dist/generators/health-check.test.cjs +39 -39
  53. package/dist/generators/health-check.test.cjs.map +1 -1
  54. package/dist/generators/health-check.test.mjs +1 -1
  55. package/dist/generators/scripts.test.cjs +39 -39
  56. package/dist/generators/scripts.test.cjs.map +1 -1
  57. package/dist/generators/scripts.test.mjs +1 -1
  58. package/dist/generators/traefik.test.cjs +32 -32
  59. package/dist/generators/traefik.test.cjs.map +1 -1
  60. package/dist/generators/traefik.test.mjs +1 -1
  61. package/dist/index.cjs +20 -4
  62. package/dist/index.d.cts +5 -4
  63. package/dist/index.d.mts +5 -4
  64. package/dist/index.mjs +7 -6
  65. package/dist/migrations.test.cjs +16 -16
  66. package/dist/migrations.test.cjs.map +1 -1
  67. package/dist/migrations.test.mjs +1 -1
  68. package/dist/presets/registry.test.cjs +14 -14
  69. package/dist/presets/registry.test.cjs.map +1 -1
  70. package/dist/presets/registry.test.mjs +1 -1
  71. package/dist/resolver.test.cjs +95 -95
  72. package/dist/resolver.test.cjs.map +1 -1
  73. package/dist/resolver.test.mjs +1 -1
  74. package/dist/{schema-eX44HhRp.d.mts → schema-CKBRu-Rt.d.cts} +295 -2
  75. package/dist/schema-CKBRu-Rt.d.cts.map +1 -0
  76. package/dist/{schema-tn5RK8CM.d.cts → schema-Dn-_Jpb6.d.mts} +295 -2
  77. package/dist/schema-Dn-_Jpb6.d.mts.map +1 -0
  78. package/dist/schema.cjs +138 -1
  79. package/dist/schema.cjs.map +1 -1
  80. package/dist/schema.d.cts +2 -2
  81. package/dist/schema.d.mts +2 -2
  82. package/dist/schema.mjs +130 -2
  83. package/dist/schema.mjs.map +1 -1
  84. package/dist/schema.test.cjs +86 -86
  85. package/dist/schema.test.cjs.map +1 -1
  86. package/dist/schema.test.mjs +1 -1
  87. package/dist/services/definitions/browserless.cjs +4 -1
  88. package/dist/services/definitions/browserless.cjs.map +1 -1
  89. package/dist/services/definitions/browserless.mjs +4 -1
  90. package/dist/services/definitions/browserless.mjs.map +1 -1
  91. package/dist/services/definitions/convex.cjs +43 -1
  92. package/dist/services/definitions/convex.cjs.map +1 -1
  93. package/dist/services/definitions/convex.mjs +43 -1
  94. package/dist/services/definitions/convex.mjs.map +1 -1
  95. package/dist/services/definitions/grafana.cjs +11 -1
  96. package/dist/services/definitions/grafana.cjs.map +1 -1
  97. package/dist/services/definitions/grafana.mjs +11 -1
  98. package/dist/services/definitions/grafana.mjs.map +1 -1
  99. package/dist/services/definitions/meilisearch.cjs +11 -1
  100. package/dist/services/definitions/meilisearch.cjs.map +1 -1
  101. package/dist/services/definitions/meilisearch.mjs +11 -1
  102. package/dist/services/definitions/meilisearch.mjs.map +1 -1
  103. package/dist/services/definitions/minio.cjs +3 -1
  104. package/dist/services/definitions/minio.cjs.map +1 -1
  105. package/dist/services/definitions/minio.mjs +3 -1
  106. package/dist/services/definitions/minio.mjs.map +1 -1
  107. package/dist/services/definitions/n8n.cjs +11 -1
  108. package/dist/services/definitions/n8n.cjs.map +1 -1
  109. package/dist/services/definitions/n8n.mjs +11 -1
  110. package/dist/services/definitions/n8n.mjs.map +1 -1
  111. package/dist/services/definitions/ollama.cjs +3 -1
  112. package/dist/services/definitions/ollama.cjs.map +1 -1
  113. package/dist/services/definitions/ollama.mjs +3 -1
  114. package/dist/services/definitions/ollama.mjs.map +1 -1
  115. package/dist/services/definitions/qdrant.cjs +3 -1
  116. package/dist/services/definitions/qdrant.cjs.map +1 -1
  117. package/dist/services/definitions/qdrant.mjs +3 -1
  118. package/dist/services/definitions/qdrant.mjs.map +1 -1
  119. package/dist/services/definitions/searxng.cjs +8 -1
  120. package/dist/services/definitions/searxng.cjs.map +1 -1
  121. package/dist/services/definitions/searxng.mjs +8 -1
  122. package/dist/services/definitions/searxng.mjs.map +1 -1
  123. package/dist/services/definitions/uptime-kuma.cjs +8 -1
  124. package/dist/services/definitions/uptime-kuma.cjs.map +1 -1
  125. package/dist/services/definitions/uptime-kuma.mjs +8 -1
  126. package/dist/services/definitions/uptime-kuma.mjs.map +1 -1
  127. package/dist/services/registry.test.cjs +36 -36
  128. package/dist/services/registry.test.cjs.map +1 -1
  129. package/dist/services/registry.test.mjs +1 -1
  130. package/dist/{vi.2VT5v0um-C_jmO7m2.mjs → test.CTcmp4Su-ClCHJ3FA.mjs} +6793 -6403
  131. package/dist/test.CTcmp4Su-ClCHJ3FA.mjs.map +1 -0
  132. package/dist/{vi.2VT5v0um-iVBt6Fyq.cjs → test.CTcmp4Su-DlzTarwH.cjs} +6793 -6403
  133. package/dist/test.CTcmp4Su-DlzTarwH.cjs.map +1 -0
  134. package/dist/track-analytics.test.cjs +28 -28
  135. package/dist/track-analytics.test.cjs.map +1 -1
  136. package/dist/track-analytics.test.mjs +1 -1
  137. package/dist/types.cjs.map +1 -1
  138. package/dist/types.d.cts +10 -2
  139. package/dist/types.d.cts.map +1 -1
  140. package/dist/types.d.mts +10 -2
  141. package/dist/types.d.mts.map +1 -1
  142. package/dist/types.mjs.map +1 -1
  143. package/dist/validator.test.cjs +15 -15
  144. package/dist/validator.test.cjs.map +1 -1
  145. package/dist/validator.test.mjs +2 -2
  146. package/dist/version-manager.test.cjs +37 -37
  147. package/dist/version-manager.test.cjs.map +1 -1
  148. package/dist/version-manager.test.mjs +1 -1
  149. package/package.json +4 -4
  150. package/src/__snapshots__/composer.snapshot.test.ts.snap +5 -0
  151. package/src/addon-stack.test.ts +490 -0
  152. package/src/addon-stack.ts +998 -0
  153. package/src/composer.ts +4 -4
  154. package/src/index.ts +20 -2
  155. package/src/schema.ts +183 -0
  156. package/src/services/definitions/browserless.ts +3 -0
  157. package/src/services/definitions/convex.ts +31 -0
  158. package/src/services/definitions/grafana.ts +9 -0
  159. package/src/services/definitions/meilisearch.ts +9 -0
  160. package/src/services/definitions/minio.ts +2 -0
  161. package/src/services/definitions/n8n.ts +9 -0
  162. package/src/services/definitions/ollama.ts +2 -0
  163. package/src/services/definitions/qdrant.ts +2 -0
  164. package/src/services/definitions/searxng.ts +3 -0
  165. package/src/services/definitions/uptime-kuma.ts +3 -0
  166. package/src/types.ts +18 -0
  167. package/dist/schema-eX44HhRp.d.mts.map +0 -1
  168. package/dist/schema-tn5RK8CM.d.cts.map +0 -1
  169. package/dist/vi.2VT5v0um-C_jmO7m2.mjs.map +0 -1
  170. package/dist/vi.2VT5v0um-iVBt6Fyq.cjs.map +0 -1
@@ -80,6 +80,13 @@ const convexDefinition = {
80
80
  secret: true,
81
81
  description: "Admin key for CLI access. Generate with: docker compose exec convex ./generate_admin_key.sh",
82
82
  required: false
83
+ },
84
+ {
85
+ key: "CONVEX_INSTANCE_SECRET",
86
+ defaultValue: "${INSTANCE_SECRET}",
87
+ secret: true,
88
+ description: "Convex instance secret used by Mission Control (synced with INSTANCE_SECRET)",
89
+ required: false
83
90
  }
84
91
  ],
85
92
  healthcheck: {
@@ -111,7 +118,42 @@ const convexDefinition = {
111
118
  mandatory: true,
112
119
  removalWarning: "Convex is the backend for Mission Control. Without it, Mission Control will not be able to store or retrieve any data and will be completely non-functional.",
113
120
  minMemoryMB: 256,
114
- gpuRequired: false
121
+ gpuRequired: false,
122
+ capDropCompatible: false,
123
+ envQuirks: [
124
+ {
125
+ key: "DISABLE_BEACON",
126
+ issue: "empty_string_crashes",
127
+ fix: {
128
+ type: "set_value",
129
+ value: "true"
130
+ }
131
+ },
132
+ {
133
+ key: "INSTANCE_SECRET",
134
+ issue: "min_length",
135
+ fix: {
136
+ type: "generate_hex",
137
+ minBytes: 32
138
+ }
139
+ },
140
+ {
141
+ key: "CONVEX_SELF_HOSTED_ADMIN_KEY",
142
+ issue: "min_length",
143
+ fix: {
144
+ type: "generate_hex",
145
+ minBytes: 32
146
+ }
147
+ },
148
+ {
149
+ key: "INSTANCE_SECRET",
150
+ issue: "must_sync",
151
+ fix: {
152
+ type: "sync_with",
153
+ syncKey: "CONVEX_INSTANCE_SECRET"
154
+ }
155
+ }
156
+ ]
115
157
  };
116
158
  //#endregion
117
159
  exports.convexDefinition = convexDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"convex.cjs","names":[],"sources":["../../../src/services/definitions/convex.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const convexDefinition: ServiceDefinition = {\n\tid: \"convex\",\n\tname: \"Convex\",\n\tdescription:\n\t\t\"Self-hosted Convex reactive backend. Real-time database, server functions, and file storage in a single service. Required by Mission Control.\",\n\tcategory: \"database\",\n\ticon: \"⚡\",\n\n\timage: \"ghcr.io/get-convex/convex-backend\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3210,\n\t\t\tcontainer: 3210,\n\t\t\tdescription: \"Convex API (client connections & CLI)\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 3211,\n\t\t\tcontainer: 3211,\n\t\t\tdescription: \"Convex HTTP actions / site proxy\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"convex-data\",\n\t\t\tcontainerPath: \"/convex/data\",\n\t\t\tdescription: \"Convex data directory (SQLite by default)\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"CONVEX_CLOUD_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3210\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for the Convex API endpoint\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SITE_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3211\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for Convex HTTP actions\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_NAME\",\n\t\t\tdefaultValue: \"openclaw-convex\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Instance name for this Convex deployment\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Instance secret (generate a random value for production)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DATABASE_URL\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Optional Postgres connection string for production (leave empty to use SQLite)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"RUST_LOG\",\n\t\t\tdefaultValue: \"info\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Log level for the Convex backend (debug, info, warn, error)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DISABLE_BEACON\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Set to any value to disable anonymous usage telemetry\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SELF_HOSTED_ADMIN_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription:\n\t\t\t\t\"Admin key for CLI access. Generate with: docker compose exec convex ./generate_admin_key.sh\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -f http://localhost:3210/version\",\n\t\tinterval: \"5s\",\n\t\ttimeout: \"5s\",\n\t\tretries: 5,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/get-convex/convex-backend\",\n\tselfHostedDocsUrl: \"https://github.com/get-convex/convex-backend/blob/main/self-hosted/README.md\",\n\ttags: [\"convex\", \"database\", \"reactive\", \"real-time\", \"backend\", \"self-hosted\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"convex-dashboard\"],\n\tconflictsWith: [],\n\tmandatory: true,\n\tremovalWarning:\n\t\t\"Convex is the backend for Mission Control. Without it, Mission Control will not be able to store or retrieve any data and will be completely non-functional.\",\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n};\n"],"mappings":";;AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aACC;GACD,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,mBAAmB;CACnB,MAAM;EAAC;EAAU;EAAY;EAAY;EAAa;EAAW;EAAc;CAC/E,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,mBAAmB;CAChC,eAAe,EAAE;CACjB,WAAW;CACX,gBACC;CAED,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"convex.cjs","names":[],"sources":["../../../src/services/definitions/convex.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const convexDefinition: ServiceDefinition = {\n\tid: \"convex\",\n\tname: \"Convex\",\n\tdescription:\n\t\t\"Self-hosted Convex reactive backend. Real-time database, server functions, and file storage in a single service. Required by Mission Control.\",\n\tcategory: \"database\",\n\ticon: \"⚡\",\n\n\timage: \"ghcr.io/get-convex/convex-backend\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3210,\n\t\t\tcontainer: 3210,\n\t\t\tdescription: \"Convex API (client connections & CLI)\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 3211,\n\t\t\tcontainer: 3211,\n\t\t\tdescription: \"Convex HTTP actions / site proxy\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"convex-data\",\n\t\t\tcontainerPath: \"/convex/data\",\n\t\t\tdescription: \"Convex data directory (SQLite by default)\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"CONVEX_CLOUD_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3210\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for the Convex API endpoint\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SITE_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3211\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for Convex HTTP actions\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_NAME\",\n\t\t\tdefaultValue: \"openclaw-convex\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Instance name for this Convex deployment\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Instance secret (generate a random value for production)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DATABASE_URL\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Optional Postgres connection string for production (leave empty to use SQLite)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"RUST_LOG\",\n\t\t\tdefaultValue: \"info\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Log level for the Convex backend (debug, info, warn, error)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DISABLE_BEACON\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Set to any value to disable anonymous usage telemetry\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SELF_HOSTED_ADMIN_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription:\n\t\t\t\t\"Admin key for CLI access. Generate with: docker compose exec convex ./generate_admin_key.sh\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_INSTANCE_SECRET\",\n\t\t\tdefaultValue: \"${INSTANCE_SECRET}\",\n\t\t\tsecret: true,\n\t\t\tdescription:\n\t\t\t\t\"Convex instance secret used by Mission Control (synced with INSTANCE_SECRET)\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -f http://localhost:3210/version\",\n\t\tinterval: \"5s\",\n\t\ttimeout: \"5s\",\n\t\tretries: 5,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/get-convex/convex-backend\",\n\tselfHostedDocsUrl: \"https://github.com/get-convex/convex-backend/blob/main/self-hosted/README.md\",\n\ttags: [\"convex\", \"database\", \"reactive\", \"real-time\", \"backend\", \"self-hosted\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"convex-dashboard\"],\n\tconflictsWith: [],\n\tmandatory: true,\n\tremovalWarning:\n\t\t\"Convex is the backend for Mission Control. Without it, Mission Control will not be able to store or retrieve any data and will be completely non-functional.\",\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n\tcapDropCompatible: false,\n\tenvQuirks: [\n\t\t{\n\t\t\tkey: \"DISABLE_BEACON\",\n\t\t\tissue: \"empty_string_crashes\" as const,\n\t\t\tfix: { type: \"set_value\" as const, value: \"true\" },\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tissue: \"min_length\" as const,\n\t\t\tfix: { type: \"generate_hex\" as const, minBytes: 32 },\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SELF_HOSTED_ADMIN_KEY\",\n\t\t\tissue: \"min_length\" as const,\n\t\t\tfix: { type: \"generate_hex\" as const, minBytes: 32 },\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tissue: \"must_sync\" as const,\n\t\t\tfix: { type: \"sync_with\" as const, syncKey: \"CONVEX_INSTANCE_SECRET\" },\n\t\t},\n\t],\n};\n"],"mappings":";;AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aACC;GACD,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aACC;GACD,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,mBAAmB;CACnB,MAAM;EAAC;EAAU;EAAY;EAAY;EAAa;EAAW;EAAc;CAC/E,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,mBAAmB;CAChC,eAAe,EAAE;CACjB,WAAW;CACX,gBACC;CAED,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;EACV;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAsB,OAAO;IAAQ;GAClD;EACD;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAyB,UAAU;IAAI;GACpD;EACD;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAyB,UAAU;IAAI;GACpD;EACD;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAsB,SAAS;IAA0B;GACtE;EACD;CACD"}
@@ -79,6 +79,13 @@ const convexDefinition = {
79
79
  secret: true,
80
80
  description: "Admin key for CLI access. Generate with: docker compose exec convex ./generate_admin_key.sh",
81
81
  required: false
82
+ },
83
+ {
84
+ key: "CONVEX_INSTANCE_SECRET",
85
+ defaultValue: "${INSTANCE_SECRET}",
86
+ secret: true,
87
+ description: "Convex instance secret used by Mission Control (synced with INSTANCE_SECRET)",
88
+ required: false
82
89
  }
83
90
  ],
84
91
  healthcheck: {
@@ -110,7 +117,42 @@ const convexDefinition = {
110
117
  mandatory: true,
111
118
  removalWarning: "Convex is the backend for Mission Control. Without it, Mission Control will not be able to store or retrieve any data and will be completely non-functional.",
112
119
  minMemoryMB: 256,
113
- gpuRequired: false
120
+ gpuRequired: false,
121
+ capDropCompatible: false,
122
+ envQuirks: [
123
+ {
124
+ key: "DISABLE_BEACON",
125
+ issue: "empty_string_crashes",
126
+ fix: {
127
+ type: "set_value",
128
+ value: "true"
129
+ }
130
+ },
131
+ {
132
+ key: "INSTANCE_SECRET",
133
+ issue: "min_length",
134
+ fix: {
135
+ type: "generate_hex",
136
+ minBytes: 32
137
+ }
138
+ },
139
+ {
140
+ key: "CONVEX_SELF_HOSTED_ADMIN_KEY",
141
+ issue: "min_length",
142
+ fix: {
143
+ type: "generate_hex",
144
+ minBytes: 32
145
+ }
146
+ },
147
+ {
148
+ key: "INSTANCE_SECRET",
149
+ issue: "must_sync",
150
+ fix: {
151
+ type: "sync_with",
152
+ syncKey: "CONVEX_INSTANCE_SECRET"
153
+ }
154
+ }
155
+ ]
114
156
  };
115
157
  //#endregion
116
158
  export { convexDefinition };
@@ -1 +1 @@
1
- {"version":3,"file":"convex.mjs","names":[],"sources":["../../../src/services/definitions/convex.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const convexDefinition: ServiceDefinition = {\n\tid: \"convex\",\n\tname: \"Convex\",\n\tdescription:\n\t\t\"Self-hosted Convex reactive backend. Real-time database, server functions, and file storage in a single service. Required by Mission Control.\",\n\tcategory: \"database\",\n\ticon: \"⚡\",\n\n\timage: \"ghcr.io/get-convex/convex-backend\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3210,\n\t\t\tcontainer: 3210,\n\t\t\tdescription: \"Convex API (client connections & CLI)\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 3211,\n\t\t\tcontainer: 3211,\n\t\t\tdescription: \"Convex HTTP actions / site proxy\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"convex-data\",\n\t\t\tcontainerPath: \"/convex/data\",\n\t\t\tdescription: \"Convex data directory (SQLite by default)\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"CONVEX_CLOUD_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3210\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for the Convex API endpoint\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SITE_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3211\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for Convex HTTP actions\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_NAME\",\n\t\t\tdefaultValue: \"openclaw-convex\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Instance name for this Convex deployment\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Instance secret (generate a random value for production)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DATABASE_URL\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Optional Postgres connection string for production (leave empty to use SQLite)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"RUST_LOG\",\n\t\t\tdefaultValue: \"info\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Log level for the Convex backend (debug, info, warn, error)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DISABLE_BEACON\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Set to any value to disable anonymous usage telemetry\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SELF_HOSTED_ADMIN_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription:\n\t\t\t\t\"Admin key for CLI access. Generate with: docker compose exec convex ./generate_admin_key.sh\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -f http://localhost:3210/version\",\n\t\tinterval: \"5s\",\n\t\ttimeout: \"5s\",\n\t\tretries: 5,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/get-convex/convex-backend\",\n\tselfHostedDocsUrl: \"https://github.com/get-convex/convex-backend/blob/main/self-hosted/README.md\",\n\ttags: [\"convex\", \"database\", \"reactive\", \"real-time\", \"backend\", \"self-hosted\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"convex-dashboard\"],\n\tconflictsWith: [],\n\tmandatory: true,\n\tremovalWarning:\n\t\t\"Convex is the backend for Mission Control. Without it, Mission Control will not be able to store or retrieve any data and will be completely non-functional.\",\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aACC;GACD,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,mBAAmB;CACnB,MAAM;EAAC;EAAU;EAAY;EAAY;EAAa;EAAW;EAAc;CAC/E,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,mBAAmB;CAChC,eAAe,EAAE;CACjB,WAAW;CACX,gBACC;CAED,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"convex.mjs","names":[],"sources":["../../../src/services/definitions/convex.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const convexDefinition: ServiceDefinition = {\n\tid: \"convex\",\n\tname: \"Convex\",\n\tdescription:\n\t\t\"Self-hosted Convex reactive backend. Real-time database, server functions, and file storage in a single service. Required by Mission Control.\",\n\tcategory: \"database\",\n\ticon: \"⚡\",\n\n\timage: \"ghcr.io/get-convex/convex-backend\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3210,\n\t\t\tcontainer: 3210,\n\t\t\tdescription: \"Convex API (client connections & CLI)\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 3211,\n\t\t\tcontainer: 3211,\n\t\t\tdescription: \"Convex HTTP actions / site proxy\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"convex-data\",\n\t\t\tcontainerPath: \"/convex/data\",\n\t\t\tdescription: \"Convex data directory (SQLite by default)\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"CONVEX_CLOUD_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3210\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for the Convex API endpoint\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SITE_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3211\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for Convex HTTP actions\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_NAME\",\n\t\t\tdefaultValue: \"openclaw-convex\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Instance name for this Convex deployment\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Instance secret (generate a random value for production)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DATABASE_URL\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Optional Postgres connection string for production (leave empty to use SQLite)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"RUST_LOG\",\n\t\t\tdefaultValue: \"info\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Log level for the Convex backend (debug, info, warn, error)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DISABLE_BEACON\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Set to any value to disable anonymous usage telemetry\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SELF_HOSTED_ADMIN_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription:\n\t\t\t\t\"Admin key for CLI access. Generate with: docker compose exec convex ./generate_admin_key.sh\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_INSTANCE_SECRET\",\n\t\t\tdefaultValue: \"${INSTANCE_SECRET}\",\n\t\t\tsecret: true,\n\t\t\tdescription:\n\t\t\t\t\"Convex instance secret used by Mission Control (synced with INSTANCE_SECRET)\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -f http://localhost:3210/version\",\n\t\tinterval: \"5s\",\n\t\ttimeout: \"5s\",\n\t\tretries: 5,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/get-convex/convex-backend\",\n\tselfHostedDocsUrl: \"https://github.com/get-convex/convex-backend/blob/main/self-hosted/README.md\",\n\ttags: [\"convex\", \"database\", \"reactive\", \"real-time\", \"backend\", \"self-hosted\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"convex-dashboard\"],\n\tconflictsWith: [],\n\tmandatory: true,\n\tremovalWarning:\n\t\t\"Convex is the backend for Mission Control. Without it, Mission Control will not be able to store or retrieve any data and will be completely non-functional.\",\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n\tcapDropCompatible: false,\n\tenvQuirks: [\n\t\t{\n\t\t\tkey: \"DISABLE_BEACON\",\n\t\t\tissue: \"empty_string_crashes\" as const,\n\t\t\tfix: { type: \"set_value\" as const, value: \"true\" },\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tissue: \"min_length\" as const,\n\t\t\tfix: { type: \"generate_hex\" as const, minBytes: 32 },\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SELF_HOSTED_ADMIN_KEY\",\n\t\t\tissue: \"min_length\" as const,\n\t\t\tfix: { type: \"generate_hex\" as const, minBytes: 32 },\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tissue: \"must_sync\" as const,\n\t\t\tfix: { type: \"sync_with\" as const, syncKey: \"CONVEX_INSTANCE_SECRET\" },\n\t\t},\n\t],\n};\n"],"mappings":";AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aACC;GACD,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aACC;GACD,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,mBAAmB;CACnB,MAAM;EAAC;EAAU;EAAY;EAAY;EAAa;EAAW;EAAc;CAC/E,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,mBAAmB;CAChC,eAAe,EAAE;CACjB,WAAW;CACX,gBACC;CAED,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;EACV;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAsB,OAAO;IAAQ;GAClD;EACD;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAyB,UAAU;IAAI;GACpD;EACD;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAyB,UAAU;IAAI;GACpD;EACD;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAsB,SAAS;IAA0B;GACtE;EACD;CACD"}
@@ -68,7 +68,17 @@ const grafanaDefinition = {
68
68
  recommends: [],
69
69
  conflictsWith: [],
70
70
  minMemoryMB: 256,
71
- gpuRequired: false
71
+ gpuRequired: false,
72
+ capDropCompatible: true,
73
+ proxyPath: "/grafana",
74
+ envQuirks: [{
75
+ key: "GF_SECURITY_ADMIN_PASSWORD",
76
+ issue: "min_length",
77
+ fix: {
78
+ type: "generate_base64url",
79
+ minBytes: 16
80
+ }
81
+ }]
72
82
  };
73
83
  //#endregion
74
84
  exports.grafanaDefinition = grafanaDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"grafana.cjs","names":[],"sources":["../../../src/services/definitions/grafana.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const grafanaDefinition: ServiceDefinition = {\n\tid: \"grafana\",\n\tname: \"Grafana\",\n\tdescription:\n\t\t\"Open-source analytics and interactive visualization platform for metrics, logs, and traces with rich dashboards and alerting.\",\n\tcategory: \"monitoring\",\n\ticon: \"📊\",\n\n\timage: \"grafana/grafana\",\n\timageTag: \"12.4.0\",\n\tports: [\n\t\t{\n\t\t\thost: 3150,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"Grafana web interface\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"grafana-data\",\n\t\t\tcontainerPath: \"/var/lib/grafana\",\n\t\t\tdescription: \"Persistent Grafana dashboards, plugins, and data\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_USER\",\n\t\t\tdefaultValue: \"admin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana admin username\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Grafana admin password\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:3000/api/health || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"GRAFANA_HOST\",\n\t\t\tdefaultValue: \"grafana\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana hostname\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"GRAFANA_PORT\",\n\t\t\tdefaultValue: \"3000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana internal port\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://grafana.com/docs/grafana/latest/\",\n\ttags: [\"dashboards\", \"visualization\", \"metrics\", \"monitoring\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"prometheus\"],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n};\n"],"mappings":";;AAEA,MAAa,oBAAuC;CACnD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAc;EAAiB;EAAW;EAAa;CAC9D,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"grafana.cjs","names":[],"sources":["../../../src/services/definitions/grafana.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const grafanaDefinition: ServiceDefinition = {\n\tid: \"grafana\",\n\tname: \"Grafana\",\n\tdescription:\n\t\t\"Open-source analytics and interactive visualization platform for metrics, logs, and traces with rich dashboards and alerting.\",\n\tcategory: \"monitoring\",\n\ticon: \"📊\",\n\n\timage: \"grafana/grafana\",\n\timageTag: \"12.4.0\",\n\tports: [\n\t\t{\n\t\t\thost: 3150,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"Grafana web interface\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"grafana-data\",\n\t\t\tcontainerPath: \"/var/lib/grafana\",\n\t\t\tdescription: \"Persistent Grafana dashboards, plugins, and data\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_USER\",\n\t\t\tdefaultValue: \"admin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana admin username\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Grafana admin password\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:3000/api/health || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"GRAFANA_HOST\",\n\t\t\tdefaultValue: \"grafana\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana hostname\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"GRAFANA_PORT\",\n\t\t\tdefaultValue: \"3000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana internal port\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://grafana.com/docs/grafana/latest/\",\n\ttags: [\"dashboards\", \"visualization\", \"metrics\", \"monitoring\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"prometheus\"],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n\tcapDropCompatible: true,\n\tproxyPath: \"/grafana\",\n\tenvQuirks: [\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_PASSWORD\",\n\t\t\tissue: \"min_length\" as const,\n\t\t\tfix: { type: \"generate_base64url\" as const, minBytes: 16 },\n\t\t},\n\t],\n};\n"],"mappings":";;AAEA,MAAa,oBAAuC;CACnD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAc;EAAiB;EAAW;EAAa;CAC9D,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX,WAAW,CACV;EACC,KAAK;EACL,OAAO;EACP,KAAK;GAAE,MAAM;GAA+B,UAAU;GAAI;EAC1D,CACD;CACD"}
@@ -67,7 +67,17 @@ const grafanaDefinition = {
67
67
  recommends: [],
68
68
  conflictsWith: [],
69
69
  minMemoryMB: 256,
70
- gpuRequired: false
70
+ gpuRequired: false,
71
+ capDropCompatible: true,
72
+ proxyPath: "/grafana",
73
+ envQuirks: [{
74
+ key: "GF_SECURITY_ADMIN_PASSWORD",
75
+ issue: "min_length",
76
+ fix: {
77
+ type: "generate_base64url",
78
+ minBytes: 16
79
+ }
80
+ }]
71
81
  };
72
82
  //#endregion
73
83
  export { grafanaDefinition };
@@ -1 +1 @@
1
- {"version":3,"file":"grafana.mjs","names":[],"sources":["../../../src/services/definitions/grafana.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const grafanaDefinition: ServiceDefinition = {\n\tid: \"grafana\",\n\tname: \"Grafana\",\n\tdescription:\n\t\t\"Open-source analytics and interactive visualization platform for metrics, logs, and traces with rich dashboards and alerting.\",\n\tcategory: \"monitoring\",\n\ticon: \"📊\",\n\n\timage: \"grafana/grafana\",\n\timageTag: \"12.4.0\",\n\tports: [\n\t\t{\n\t\t\thost: 3150,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"Grafana web interface\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"grafana-data\",\n\t\t\tcontainerPath: \"/var/lib/grafana\",\n\t\t\tdescription: \"Persistent Grafana dashboards, plugins, and data\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_USER\",\n\t\t\tdefaultValue: \"admin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana admin username\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Grafana admin password\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:3000/api/health || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"GRAFANA_HOST\",\n\t\t\tdefaultValue: \"grafana\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana hostname\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"GRAFANA_PORT\",\n\t\t\tdefaultValue: \"3000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana internal port\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://grafana.com/docs/grafana/latest/\",\n\ttags: [\"dashboards\", \"visualization\", \"metrics\", \"monitoring\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"prometheus\"],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,oBAAuC;CACnD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAc;EAAiB;EAAW;EAAa;CAC9D,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"grafana.mjs","names":[],"sources":["../../../src/services/definitions/grafana.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const grafanaDefinition: ServiceDefinition = {\n\tid: \"grafana\",\n\tname: \"Grafana\",\n\tdescription:\n\t\t\"Open-source analytics and interactive visualization platform for metrics, logs, and traces with rich dashboards and alerting.\",\n\tcategory: \"monitoring\",\n\ticon: \"📊\",\n\n\timage: \"grafana/grafana\",\n\timageTag: \"12.4.0\",\n\tports: [\n\t\t{\n\t\t\thost: 3150,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"Grafana web interface\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"grafana-data\",\n\t\t\tcontainerPath: \"/var/lib/grafana\",\n\t\t\tdescription: \"Persistent Grafana dashboards, plugins, and data\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_USER\",\n\t\t\tdefaultValue: \"admin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana admin username\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Grafana admin password\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:3000/api/health || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"GRAFANA_HOST\",\n\t\t\tdefaultValue: \"grafana\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana hostname\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"GRAFANA_PORT\",\n\t\t\tdefaultValue: \"3000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana internal port\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://grafana.com/docs/grafana/latest/\",\n\ttags: [\"dashboards\", \"visualization\", \"metrics\", \"monitoring\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"prometheus\"],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n\tcapDropCompatible: true,\n\tproxyPath: \"/grafana\",\n\tenvQuirks: [\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_PASSWORD\",\n\t\t\tissue: \"min_length\" as const,\n\t\t\tfix: { type: \"generate_base64url\" as const, minBytes: 16 },\n\t\t},\n\t],\n};\n"],"mappings":";AAEA,MAAa,oBAAuC;CACnD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAc;EAAiB;EAAW;EAAa;CAC9D,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX,WAAW,CACV;EACC,KAAK;EACL,OAAO;EACP,KAAK;GAAE,MAAM;GAA+B,UAAU;GAAI;EAC1D,CACD;CACD"}
@@ -71,7 +71,17 @@ const meilisearchDefinition = {
71
71
  recommends: [],
72
72
  conflictsWith: [],
73
73
  minMemoryMB: 256,
74
- gpuRequired: false
74
+ gpuRequired: false,
75
+ capDropCompatible: true,
76
+ proxyPath: "/meilisearch",
77
+ envQuirks: [{
78
+ key: "MEILI_MASTER_KEY",
79
+ issue: "min_length",
80
+ fix: {
81
+ type: "generate_base64url",
82
+ minBytes: 24
83
+ }
84
+ }]
75
85
  };
76
86
  //#endregion
77
87
  exports.meilisearchDefinition = meilisearchDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"meilisearch.cjs","names":[],"sources":["../../../src/services/definitions/meilisearch.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const meilisearchDefinition: ServiceDefinition = {\n\tid: \"meilisearch\",\n\tname: \"Meilisearch\",\n\tdescription:\n\t\t\"Lightning-fast, typo-tolerant full-text search engine with an intuitive API, perfect for building instant search experiences.\",\n\tcategory: \"search\",\n\ticon: \"🔎\",\n\n\timage: \"getmeili/meilisearch\",\n\timageTag: \"v1.35.1\",\n\tports: [\n\t\t{\n\t\t\thost: 7700,\n\t\t\tcontainer: 7700,\n\t\t\tdescription: \"Meilisearch HTTP API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"meilisearch-data\",\n\t\t\tcontainerPath: \"/meili_data\",\n\t\t\tdescription: \"Persistent Meilisearch index and data storage\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"MEILI_MASTER_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Master key for Meilisearch API authentication\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:7700/health || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 5,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"MEILISEARCH_HOST\",\n\t\t\tdefaultValue: \"meilisearch\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Meilisearch hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MEILISEARCH_PORT\",\n\t\t\tdefaultValue: \"7700\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Meilisearch port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MEILISEARCH_MASTER_KEY\",\n\t\t\tdefaultValue: \"${MEILI_MASTER_KEY}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Meilisearch master key for OpenClaw (references service key)\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://www.meilisearch.com/docs\",\n\ttags: [\"full-text-search\", \"instant-search\", \"typo-tolerant\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n};\n"],"mappings":";;AAEA,MAAa,wBAA2C;CACvD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAoB;EAAkB;EAAgB;CAC7D,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"meilisearch.cjs","names":[],"sources":["../../../src/services/definitions/meilisearch.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const meilisearchDefinition: ServiceDefinition = {\n\tid: \"meilisearch\",\n\tname: \"Meilisearch\",\n\tdescription:\n\t\t\"Lightning-fast, typo-tolerant full-text search engine with an intuitive API, perfect for building instant search experiences.\",\n\tcategory: \"search\",\n\ticon: \"🔎\",\n\n\timage: \"getmeili/meilisearch\",\n\timageTag: \"v1.35.1\",\n\tports: [\n\t\t{\n\t\t\thost: 7700,\n\t\t\tcontainer: 7700,\n\t\t\tdescription: \"Meilisearch HTTP API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"meilisearch-data\",\n\t\t\tcontainerPath: \"/meili_data\",\n\t\t\tdescription: \"Persistent Meilisearch index and data storage\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"MEILI_MASTER_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Master key for Meilisearch API authentication\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:7700/health || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 5,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"MEILISEARCH_HOST\",\n\t\t\tdefaultValue: \"meilisearch\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Meilisearch hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MEILISEARCH_PORT\",\n\t\t\tdefaultValue: \"7700\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Meilisearch port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MEILISEARCH_MASTER_KEY\",\n\t\t\tdefaultValue: \"${MEILI_MASTER_KEY}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Meilisearch master key for OpenClaw (references service key)\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://www.meilisearch.com/docs\",\n\ttags: [\"full-text-search\", \"instant-search\", \"typo-tolerant\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n\tcapDropCompatible: true,\n\tproxyPath: \"/meilisearch\",\n\tenvQuirks: [\n\t\t{\n\t\t\tkey: \"MEILI_MASTER_KEY\",\n\t\t\tissue: \"min_length\" as const,\n\t\t\tfix: { type: \"generate_base64url\" as const, minBytes: 24 },\n\t\t},\n\t],\n};\n"],"mappings":";;AAEA,MAAa,wBAA2C;CACvD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAoB;EAAkB;EAAgB;CAC7D,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX,WAAW,CACV;EACC,KAAK;EACL,OAAO;EACP,KAAK;GAAE,MAAM;GAA+B,UAAU;GAAI;EAC1D,CACD;CACD"}
@@ -70,7 +70,17 @@ const meilisearchDefinition = {
70
70
  recommends: [],
71
71
  conflictsWith: [],
72
72
  minMemoryMB: 256,
73
- gpuRequired: false
73
+ gpuRequired: false,
74
+ capDropCompatible: true,
75
+ proxyPath: "/meilisearch",
76
+ envQuirks: [{
77
+ key: "MEILI_MASTER_KEY",
78
+ issue: "min_length",
79
+ fix: {
80
+ type: "generate_base64url",
81
+ minBytes: 24
82
+ }
83
+ }]
74
84
  };
75
85
  //#endregion
76
86
  export { meilisearchDefinition };
@@ -1 +1 @@
1
- {"version":3,"file":"meilisearch.mjs","names":[],"sources":["../../../src/services/definitions/meilisearch.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const meilisearchDefinition: ServiceDefinition = {\n\tid: \"meilisearch\",\n\tname: \"Meilisearch\",\n\tdescription:\n\t\t\"Lightning-fast, typo-tolerant full-text search engine with an intuitive API, perfect for building instant search experiences.\",\n\tcategory: \"search\",\n\ticon: \"🔎\",\n\n\timage: \"getmeili/meilisearch\",\n\timageTag: \"v1.35.1\",\n\tports: [\n\t\t{\n\t\t\thost: 7700,\n\t\t\tcontainer: 7700,\n\t\t\tdescription: \"Meilisearch HTTP API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"meilisearch-data\",\n\t\t\tcontainerPath: \"/meili_data\",\n\t\t\tdescription: \"Persistent Meilisearch index and data storage\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"MEILI_MASTER_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Master key for Meilisearch API authentication\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:7700/health || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 5,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"MEILISEARCH_HOST\",\n\t\t\tdefaultValue: \"meilisearch\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Meilisearch hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MEILISEARCH_PORT\",\n\t\t\tdefaultValue: \"7700\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Meilisearch port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MEILISEARCH_MASTER_KEY\",\n\t\t\tdefaultValue: \"${MEILI_MASTER_KEY}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Meilisearch master key for OpenClaw (references service key)\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://www.meilisearch.com/docs\",\n\ttags: [\"full-text-search\", \"instant-search\", \"typo-tolerant\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,wBAA2C;CACvD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAoB;EAAkB;EAAgB;CAC7D,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"meilisearch.mjs","names":[],"sources":["../../../src/services/definitions/meilisearch.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const meilisearchDefinition: ServiceDefinition = {\n\tid: \"meilisearch\",\n\tname: \"Meilisearch\",\n\tdescription:\n\t\t\"Lightning-fast, typo-tolerant full-text search engine with an intuitive API, perfect for building instant search experiences.\",\n\tcategory: \"search\",\n\ticon: \"🔎\",\n\n\timage: \"getmeili/meilisearch\",\n\timageTag: \"v1.35.1\",\n\tports: [\n\t\t{\n\t\t\thost: 7700,\n\t\t\tcontainer: 7700,\n\t\t\tdescription: \"Meilisearch HTTP API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"meilisearch-data\",\n\t\t\tcontainerPath: \"/meili_data\",\n\t\t\tdescription: \"Persistent Meilisearch index and data storage\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"MEILI_MASTER_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Master key for Meilisearch API authentication\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:7700/health || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 5,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"MEILISEARCH_HOST\",\n\t\t\tdefaultValue: \"meilisearch\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Meilisearch hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MEILISEARCH_PORT\",\n\t\t\tdefaultValue: \"7700\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Meilisearch port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MEILISEARCH_MASTER_KEY\",\n\t\t\tdefaultValue: \"${MEILI_MASTER_KEY}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Meilisearch master key for OpenClaw (references service key)\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://www.meilisearch.com/docs\",\n\ttags: [\"full-text-search\", \"instant-search\", \"typo-tolerant\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n\tcapDropCompatible: true,\n\tproxyPath: \"/meilisearch\",\n\tenvQuirks: [\n\t\t{\n\t\t\tkey: \"MEILI_MASTER_KEY\",\n\t\t\tissue: \"min_length\" as const,\n\t\t\tfix: { type: \"generate_base64url\" as const, minBytes: 24 },\n\t\t},\n\t],\n};\n"],"mappings":";AAEA,MAAa,wBAA2C;CACvD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAoB;EAAkB;EAAgB;CAC7D,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX,WAAW,CACV;EACC,KAAK;EACL,OAAO;EACP,KAAK;GAAE,MAAM;GAA+B,UAAU;GAAI;EAC1D,CACD;CACD"}
@@ -95,7 +95,9 @@ const minioDefinition = {
95
95
  recommends: [],
96
96
  conflictsWith: [],
97
97
  minMemoryMB: 256,
98
- gpuRequired: false
98
+ gpuRequired: false,
99
+ capDropCompatible: true,
100
+ proxyPath: "/minio"
99
101
  };
100
102
  //#endregion
101
103
  exports.minioDefinition = minioDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"minio.cjs","names":[],"sources":["../../../src/services/definitions/minio.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const minioDefinition: ServiceDefinition = {\n\tid: \"minio\",\n\tname: \"MinIO\",\n\tdescription:\n\t\t\"S3-compatible high-performance object storage for storing assets, backups, and large files with a built-in web console.\",\n\tcategory: \"storage\",\n\ticon: \"💾\",\n\n\timage: \"minio/minio\",\n\timageTag: \"RELEASE.2025-04-22T22-12-26Z\",\n\tports: [\n\t\t{\n\t\t\thost: 9000,\n\t\t\tcontainer: 9000,\n\t\t\tdescription: \"MinIO S3-compatible API\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 9001,\n\t\t\tcontainer: 9001,\n\t\t\tdescription: \"MinIO web console\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"minio-data\",\n\t\t\tcontainerPath: \"/data\",\n\t\t\tdescription: \"Persistent MinIO object storage data\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"MINIO_ROOT_USER\",\n\t\t\tdefaultValue: \"minioadmin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"MinIO root user (access key)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MINIO_ROOT_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"MinIO root password (secret key, minimum 8 characters)\",\n\t\t\trequired: true,\n\t\t\tvalidation: \"^.{8,}$\",\n\t\t},\n\t],\n\tcommand: \"server /data --console-address ':9001'\",\n\thealthcheck: {\n\t\ttest: \"mc ready local || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"minio-storage\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"MINIO_HOST\",\n\t\t\tdefaultValue: \"minio\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"MinIO hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MINIO_PORT\",\n\t\t\tdefaultValue: \"9000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"MinIO API port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MINIO_ACCESS_KEY\",\n\t\t\tdefaultValue: \"${MINIO_ROOT_USER}\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"MinIO access key for OpenClaw (references root user)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MINIO_SECRET_KEY\",\n\t\t\tdefaultValue: \"${MINIO_ROOT_PASSWORD}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"MinIO secret key for OpenClaw (references root password)\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://min.io/docs/minio/container/index.html\",\n\ttags: [\"s3\", \"object-storage\", \"assets\", \"backup\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n};\n"],"mappings":";;AAEA,MAAa,kBAAqC;CACjD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,YAAY;EACZ,CACD;CACD,SAAS;CACT,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAiB,aAAa;EAAM,CAAC;CACzD,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAM;EAAkB;EAAU;EAAS;CAClD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"minio.cjs","names":[],"sources":["../../../src/services/definitions/minio.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const minioDefinition: ServiceDefinition = {\n\tid: \"minio\",\n\tname: \"MinIO\",\n\tdescription:\n\t\t\"S3-compatible high-performance object storage for storing assets, backups, and large files with a built-in web console.\",\n\tcategory: \"storage\",\n\ticon: \"💾\",\n\n\timage: \"minio/minio\",\n\timageTag: \"RELEASE.2025-04-22T22-12-26Z\",\n\tports: [\n\t\t{\n\t\t\thost: 9000,\n\t\t\tcontainer: 9000,\n\t\t\tdescription: \"MinIO S3-compatible API\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 9001,\n\t\t\tcontainer: 9001,\n\t\t\tdescription: \"MinIO web console\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"minio-data\",\n\t\t\tcontainerPath: \"/data\",\n\t\t\tdescription: \"Persistent MinIO object storage data\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"MINIO_ROOT_USER\",\n\t\t\tdefaultValue: \"minioadmin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"MinIO root user (access key)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MINIO_ROOT_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"MinIO root password (secret key, minimum 8 characters)\",\n\t\t\trequired: true,\n\t\t\tvalidation: \"^.{8,}$\",\n\t\t},\n\t],\n\tcommand: \"server /data --console-address ':9001'\",\n\thealthcheck: {\n\t\ttest: \"mc ready local || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"minio-storage\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"MINIO_HOST\",\n\t\t\tdefaultValue: \"minio\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"MinIO hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MINIO_PORT\",\n\t\t\tdefaultValue: \"9000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"MinIO API port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MINIO_ACCESS_KEY\",\n\t\t\tdefaultValue: \"${MINIO_ROOT_USER}\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"MinIO access key for OpenClaw (references root user)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MINIO_SECRET_KEY\",\n\t\t\tdefaultValue: \"${MINIO_ROOT_PASSWORD}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"MinIO secret key for OpenClaw (references root password)\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://min.io/docs/minio/container/index.html\",\n\ttags: [\"s3\", \"object-storage\", \"assets\", \"backup\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n\tcapDropCompatible: true,\n\tproxyPath: \"/minio\",\n};\n"],"mappings":";;AAEA,MAAa,kBAAqC;CACjD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,YAAY;EACZ,CACD;CACD,SAAS;CACT,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAiB,aAAa;EAAM,CAAC;CACzD,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAM;EAAkB;EAAU;EAAS;CAClD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX"}
@@ -94,7 +94,9 @@ const minioDefinition = {
94
94
  recommends: [],
95
95
  conflictsWith: [],
96
96
  minMemoryMB: 256,
97
- gpuRequired: false
97
+ gpuRequired: false,
98
+ capDropCompatible: true,
99
+ proxyPath: "/minio"
98
100
  };
99
101
  //#endregion
100
102
  export { minioDefinition };
@@ -1 +1 @@
1
- {"version":3,"file":"minio.mjs","names":[],"sources":["../../../src/services/definitions/minio.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const minioDefinition: ServiceDefinition = {\n\tid: \"minio\",\n\tname: \"MinIO\",\n\tdescription:\n\t\t\"S3-compatible high-performance object storage for storing assets, backups, and large files with a built-in web console.\",\n\tcategory: \"storage\",\n\ticon: \"💾\",\n\n\timage: \"minio/minio\",\n\timageTag: \"RELEASE.2025-04-22T22-12-26Z\",\n\tports: [\n\t\t{\n\t\t\thost: 9000,\n\t\t\tcontainer: 9000,\n\t\t\tdescription: \"MinIO S3-compatible API\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 9001,\n\t\t\tcontainer: 9001,\n\t\t\tdescription: \"MinIO web console\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"minio-data\",\n\t\t\tcontainerPath: \"/data\",\n\t\t\tdescription: \"Persistent MinIO object storage data\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"MINIO_ROOT_USER\",\n\t\t\tdefaultValue: \"minioadmin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"MinIO root user (access key)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MINIO_ROOT_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"MinIO root password (secret key, minimum 8 characters)\",\n\t\t\trequired: true,\n\t\t\tvalidation: \"^.{8,}$\",\n\t\t},\n\t],\n\tcommand: \"server /data --console-address ':9001'\",\n\thealthcheck: {\n\t\ttest: \"mc ready local || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"minio-storage\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"MINIO_HOST\",\n\t\t\tdefaultValue: \"minio\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"MinIO hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MINIO_PORT\",\n\t\t\tdefaultValue: \"9000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"MinIO API port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MINIO_ACCESS_KEY\",\n\t\t\tdefaultValue: \"${MINIO_ROOT_USER}\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"MinIO access key for OpenClaw (references root user)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MINIO_SECRET_KEY\",\n\t\t\tdefaultValue: \"${MINIO_ROOT_PASSWORD}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"MinIO secret key for OpenClaw (references root password)\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://min.io/docs/minio/container/index.html\",\n\ttags: [\"s3\", \"object-storage\", \"assets\", \"backup\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,kBAAqC;CACjD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,YAAY;EACZ,CACD;CACD,SAAS;CACT,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAiB,aAAa;EAAM,CAAC;CACzD,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAM;EAAkB;EAAU;EAAS;CAClD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"minio.mjs","names":[],"sources":["../../../src/services/definitions/minio.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const minioDefinition: ServiceDefinition = {\n\tid: \"minio\",\n\tname: \"MinIO\",\n\tdescription:\n\t\t\"S3-compatible high-performance object storage for storing assets, backups, and large files with a built-in web console.\",\n\tcategory: \"storage\",\n\ticon: \"💾\",\n\n\timage: \"minio/minio\",\n\timageTag: \"RELEASE.2025-04-22T22-12-26Z\",\n\tports: [\n\t\t{\n\t\t\thost: 9000,\n\t\t\tcontainer: 9000,\n\t\t\tdescription: \"MinIO S3-compatible API\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 9001,\n\t\t\tcontainer: 9001,\n\t\t\tdescription: \"MinIO web console\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"minio-data\",\n\t\t\tcontainerPath: \"/data\",\n\t\t\tdescription: \"Persistent MinIO object storage data\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"MINIO_ROOT_USER\",\n\t\t\tdefaultValue: \"minioadmin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"MinIO root user (access key)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MINIO_ROOT_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"MinIO root password (secret key, minimum 8 characters)\",\n\t\t\trequired: true,\n\t\t\tvalidation: \"^.{8,}$\",\n\t\t},\n\t],\n\tcommand: \"server /data --console-address ':9001'\",\n\thealthcheck: {\n\t\ttest: \"mc ready local || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"minio-storage\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"MINIO_HOST\",\n\t\t\tdefaultValue: \"minio\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"MinIO hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MINIO_PORT\",\n\t\t\tdefaultValue: \"9000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"MinIO API port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MINIO_ACCESS_KEY\",\n\t\t\tdefaultValue: \"${MINIO_ROOT_USER}\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"MinIO access key for OpenClaw (references root user)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MINIO_SECRET_KEY\",\n\t\t\tdefaultValue: \"${MINIO_ROOT_PASSWORD}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"MinIO secret key for OpenClaw (references root password)\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://min.io/docs/minio/container/index.html\",\n\ttags: [\"s3\", \"object-storage\", \"assets\", \"backup\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n\tcapDropCompatible: true,\n\tproxyPath: \"/minio\",\n};\n"],"mappings":";AAEA,MAAa,kBAAqC;CACjD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,YAAY;EACZ,CACD;CACD,SAAS;CACT,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAiB,aAAa;EAAM,CAAC;CACzD,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAM;EAAkB;EAAU;EAAS;CAClD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX"}
@@ -147,7 +147,17 @@ const n8nDefinition = {
147
147
  recommends: ["redis"],
148
148
  conflictsWith: [],
149
149
  minMemoryMB: 512,
150
- gpuRequired: false
150
+ gpuRequired: false,
151
+ capDropCompatible: true,
152
+ proxyPath: "/n8n",
153
+ envQuirks: [{
154
+ key: "DB_POSTGRESDB_PASSWORD",
155
+ issue: "must_sync",
156
+ fix: {
157
+ type: "sync_with",
158
+ syncKey: "N8N_DB_PASSWORD"
159
+ }
160
+ }]
151
161
  };
152
162
  //#endregion
153
163
  exports.n8nDefinition = n8nDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"n8n.cjs","names":[],"sources":["../../../src/services/definitions/n8n.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const n8nDefinition: ServiceDefinition = {\n\tid: \"n8n\",\n\tname: \"n8n\",\n\tdescription:\n\t\t\"Workflow automation platform for connecting services, building integrations, and automating tasks with a visual node-based editor.\",\n\tcategory: \"automation\",\n\ticon: \"🔄\",\n\n\timage: \"docker.n8n.io/n8nio/n8n\",\n\timageTag: \"1.123.21\",\n\tports: [\n\t\t{\n\t\t\thost: 5678,\n\t\t\tcontainer: 5678,\n\t\t\tdescription: \"n8n web interface and API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"n8n-data\",\n\t\t\tcontainerPath: \"/home/node/.n8n\",\n\t\t\tdescription: \"Persistent n8n data and workflows\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_ACTIVE\",\n\t\t\tdefaultValue: \"true\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Enable basic authentication for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_USER\",\n\t\t\tdefaultValue: \"admin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Basic auth username for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Basic auth password for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_TYPE\",\n\t\t\tdefaultValue: \"postgresdb\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Database type for n8n persistence\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_HOST\",\n\t\t\tdefaultValue: \"postgresql\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL hostname\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PORT\",\n\t\t\tdefaultValue: \"5432\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL port\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_DATABASE\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL database name for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_USER\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL user for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PASSWORD\",\n\t\t\tdefaultValue: \"${N8N_DB_PASSWORD}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"PostgreSQL password for n8n (references Postgres password)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_PORT\",\n\t\t\tdefaultValue: \"5678\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Port n8n listens on\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"WEBHOOK_URL\",\n\t\t\tdefaultValue: \"http://n8n:5678/\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Base URL for n8n webhooks\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:5678/healthz || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"30s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"n8n-trigger\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"N8N_HOST\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_PORT\",\n\t\t\tdefaultValue: \"5678\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_WEBHOOK_URL\",\n\t\t\tdefaultValue: \"http://n8n:5678/\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n webhook URL for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://docs.n8n.io/\",\n\ttags: [\"workflow\", \"automation\", \"webhook\", \"integration\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"postgresql\"],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";;AAEA,MAAa,gBAAmC;CAC/C,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAe,aAAa;EAAM,CAAC;CACvD,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAY;EAAc;EAAW;EAAc;CAC1D,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"n8n.cjs","names":[],"sources":["../../../src/services/definitions/n8n.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const n8nDefinition: ServiceDefinition = {\n\tid: \"n8n\",\n\tname: \"n8n\",\n\tdescription:\n\t\t\"Workflow automation platform for connecting services, building integrations, and automating tasks with a visual node-based editor.\",\n\tcategory: \"automation\",\n\ticon: \"🔄\",\n\n\timage: \"docker.n8n.io/n8nio/n8n\",\n\timageTag: \"1.123.21\",\n\tports: [\n\t\t{\n\t\t\thost: 5678,\n\t\t\tcontainer: 5678,\n\t\t\tdescription: \"n8n web interface and API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"n8n-data\",\n\t\t\tcontainerPath: \"/home/node/.n8n\",\n\t\t\tdescription: \"Persistent n8n data and workflows\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_ACTIVE\",\n\t\t\tdefaultValue: \"true\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Enable basic authentication for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_USER\",\n\t\t\tdefaultValue: \"admin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Basic auth username for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Basic auth password for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_TYPE\",\n\t\t\tdefaultValue: \"postgresdb\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Database type for n8n persistence\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_HOST\",\n\t\t\tdefaultValue: \"postgresql\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL hostname\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PORT\",\n\t\t\tdefaultValue: \"5432\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL port\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_DATABASE\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL database name for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_USER\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL user for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PASSWORD\",\n\t\t\tdefaultValue: \"${N8N_DB_PASSWORD}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"PostgreSQL password for n8n (references Postgres password)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_PORT\",\n\t\t\tdefaultValue: \"5678\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Port n8n listens on\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"WEBHOOK_URL\",\n\t\t\tdefaultValue: \"http://n8n:5678/\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Base URL for n8n webhooks\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:5678/healthz || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"30s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"n8n-trigger\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"N8N_HOST\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_PORT\",\n\t\t\tdefaultValue: \"5678\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_WEBHOOK_URL\",\n\t\t\tdefaultValue: \"http://n8n:5678/\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n webhook URL for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://docs.n8n.io/\",\n\ttags: [\"workflow\", \"automation\", \"webhook\", \"integration\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"postgresql\"],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n\tcapDropCompatible: true,\n\tproxyPath: \"/n8n\",\n\tenvQuirks: [\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PASSWORD\",\n\t\t\tissue: \"must_sync\" as const,\n\t\t\tfix: { type: \"sync_with\" as const, syncKey: \"N8N_DB_PASSWORD\" },\n\t\t},\n\t],\n};\n"],"mappings":";;AAEA,MAAa,gBAAmC;CAC/C,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAe,aAAa;EAAM,CAAC;CACvD,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAY;EAAc;EAAW;EAAc;CAC1D,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX,WAAW,CACV;EACC,KAAK;EACL,OAAO;EACP,KAAK;GAAE,MAAM;GAAsB,SAAS;GAAmB;EAC/D,CACD;CACD"}
@@ -146,7 +146,17 @@ const n8nDefinition = {
146
146
  recommends: ["redis"],
147
147
  conflictsWith: [],
148
148
  minMemoryMB: 512,
149
- gpuRequired: false
149
+ gpuRequired: false,
150
+ capDropCompatible: true,
151
+ proxyPath: "/n8n",
152
+ envQuirks: [{
153
+ key: "DB_POSTGRESDB_PASSWORD",
154
+ issue: "must_sync",
155
+ fix: {
156
+ type: "sync_with",
157
+ syncKey: "N8N_DB_PASSWORD"
158
+ }
159
+ }]
150
160
  };
151
161
  //#endregion
152
162
  export { n8nDefinition };
@@ -1 +1 @@
1
- {"version":3,"file":"n8n.mjs","names":[],"sources":["../../../src/services/definitions/n8n.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const n8nDefinition: ServiceDefinition = {\n\tid: \"n8n\",\n\tname: \"n8n\",\n\tdescription:\n\t\t\"Workflow automation platform for connecting services, building integrations, and automating tasks with a visual node-based editor.\",\n\tcategory: \"automation\",\n\ticon: \"🔄\",\n\n\timage: \"docker.n8n.io/n8nio/n8n\",\n\timageTag: \"1.123.21\",\n\tports: [\n\t\t{\n\t\t\thost: 5678,\n\t\t\tcontainer: 5678,\n\t\t\tdescription: \"n8n web interface and API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"n8n-data\",\n\t\t\tcontainerPath: \"/home/node/.n8n\",\n\t\t\tdescription: \"Persistent n8n data and workflows\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_ACTIVE\",\n\t\t\tdefaultValue: \"true\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Enable basic authentication for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_USER\",\n\t\t\tdefaultValue: \"admin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Basic auth username for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Basic auth password for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_TYPE\",\n\t\t\tdefaultValue: \"postgresdb\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Database type for n8n persistence\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_HOST\",\n\t\t\tdefaultValue: \"postgresql\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL hostname\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PORT\",\n\t\t\tdefaultValue: \"5432\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL port\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_DATABASE\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL database name for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_USER\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL user for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PASSWORD\",\n\t\t\tdefaultValue: \"${N8N_DB_PASSWORD}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"PostgreSQL password for n8n (references Postgres password)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_PORT\",\n\t\t\tdefaultValue: \"5678\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Port n8n listens on\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"WEBHOOK_URL\",\n\t\t\tdefaultValue: \"http://n8n:5678/\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Base URL for n8n webhooks\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:5678/healthz || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"30s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"n8n-trigger\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"N8N_HOST\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_PORT\",\n\t\t\tdefaultValue: \"5678\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_WEBHOOK_URL\",\n\t\t\tdefaultValue: \"http://n8n:5678/\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n webhook URL for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://docs.n8n.io/\",\n\ttags: [\"workflow\", \"automation\", \"webhook\", \"integration\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"postgresql\"],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,gBAAmC;CAC/C,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAe,aAAa;EAAM,CAAC;CACvD,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAY;EAAc;EAAW;EAAc;CAC1D,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"n8n.mjs","names":[],"sources":["../../../src/services/definitions/n8n.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const n8nDefinition: ServiceDefinition = {\n\tid: \"n8n\",\n\tname: \"n8n\",\n\tdescription:\n\t\t\"Workflow automation platform for connecting services, building integrations, and automating tasks with a visual node-based editor.\",\n\tcategory: \"automation\",\n\ticon: \"🔄\",\n\n\timage: \"docker.n8n.io/n8nio/n8n\",\n\timageTag: \"1.123.21\",\n\tports: [\n\t\t{\n\t\t\thost: 5678,\n\t\t\tcontainer: 5678,\n\t\t\tdescription: \"n8n web interface and API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"n8n-data\",\n\t\t\tcontainerPath: \"/home/node/.n8n\",\n\t\t\tdescription: \"Persistent n8n data and workflows\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_ACTIVE\",\n\t\t\tdefaultValue: \"true\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Enable basic authentication for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_USER\",\n\t\t\tdefaultValue: \"admin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Basic auth username for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Basic auth password for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_TYPE\",\n\t\t\tdefaultValue: \"postgresdb\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Database type for n8n persistence\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_HOST\",\n\t\t\tdefaultValue: \"postgresql\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL hostname\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PORT\",\n\t\t\tdefaultValue: \"5432\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL port\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_DATABASE\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL database name for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_USER\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL user for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PASSWORD\",\n\t\t\tdefaultValue: \"${N8N_DB_PASSWORD}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"PostgreSQL password for n8n (references Postgres password)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_PORT\",\n\t\t\tdefaultValue: \"5678\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Port n8n listens on\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"WEBHOOK_URL\",\n\t\t\tdefaultValue: \"http://n8n:5678/\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Base URL for n8n webhooks\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:5678/healthz || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"30s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"n8n-trigger\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"N8N_HOST\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_PORT\",\n\t\t\tdefaultValue: \"5678\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_WEBHOOK_URL\",\n\t\t\tdefaultValue: \"http://n8n:5678/\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n webhook URL for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://docs.n8n.io/\",\n\ttags: [\"workflow\", \"automation\", \"webhook\", \"integration\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"postgresql\"],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n\tcapDropCompatible: true,\n\tproxyPath: \"/n8n\",\n\tenvQuirks: [\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PASSWORD\",\n\t\t\tissue: \"must_sync\" as const,\n\t\t\tfix: { type: \"sync_with\" as const, syncKey: \"N8N_DB_PASSWORD\" },\n\t\t},\n\t],\n};\n"],"mappings":";AAEA,MAAa,gBAAmC;CAC/C,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAe,aAAa;EAAM,CAAC;CACvD,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAY;EAAc;EAAW;EAAc;CAC1D,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX,WAAW,CACV;EACC,KAAK;EACL,OAAO;EACP,KAAK;GAAE,MAAM;GAAsB,SAAS;GAAmB;EAC/D,CACD;CACD"}
@@ -59,7 +59,9 @@ const ollamaDefinition = {
59
59
  recommends: [],
60
60
  conflictsWith: [],
61
61
  minMemoryMB: 2048,
62
- gpuRequired: false
62
+ gpuRequired: false,
63
+ capDropCompatible: false,
64
+ proxyPath: "/ollama"
63
65
  };
64
66
  //#endregion
65
67
  exports.ollamaDefinition = ollamaDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.cjs","names":[],"sources":["../../../src/services/definitions/ollama.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const ollamaDefinition: ServiceDefinition = {\n\tid: \"ollama\",\n\tname: \"Ollama\",\n\tdescription:\n\t\t\"Run large language models locally with an easy-to-use API. Supports a wide range of open-source models like Llama, Mistral, and more.\",\n\tcategory: \"ai\",\n\ticon: \"🦙\",\n\n\timage: \"ollama/ollama\",\n\timageTag: \"0.17.0\",\n\tports: [\n\t\t{\n\t\t\thost: 11434,\n\t\t\tcontainer: 11434,\n\t\t\tdescription: \"Ollama REST API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"ollama-data\",\n\t\t\tcontainerPath: \"/root/.ollama\",\n\t\t\tdescription: \"Persistent Ollama model storage and configuration\",\n\t\t},\n\t],\n\tenvironment: [],\n\thealthcheck: {\n\t\ttest: \"curl -f http://localhost:11434/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"30s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"ollama-local-llm\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"OLLAMA_HOST\",\n\t\t\tdefaultValue: \"ollama\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Ollama hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"OLLAMA_PORT\",\n\t\t\tdefaultValue: \"11434\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Ollama API port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://github.com/ollama/ollama\",\n\ttags: [\"llm\", \"local-ai\", \"inference\", \"language-model\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 2048,\n\tgpuRequired: false,\n};\n"],"mappings":";;AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,EAAE;CACf,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAoB,aAAa;EAAM,CAAC;CAC5D,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAO;EAAY;EAAa;EAAiB;CACxD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"ollama.cjs","names":[],"sources":["../../../src/services/definitions/ollama.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const ollamaDefinition: ServiceDefinition = {\n\tid: \"ollama\",\n\tname: \"Ollama\",\n\tdescription:\n\t\t\"Run large language models locally with an easy-to-use API. Supports a wide range of open-source models like Llama, Mistral, and more.\",\n\tcategory: \"ai\",\n\ticon: \"🦙\",\n\n\timage: \"ollama/ollama\",\n\timageTag: \"0.17.0\",\n\tports: [\n\t\t{\n\t\t\thost: 11434,\n\t\t\tcontainer: 11434,\n\t\t\tdescription: \"Ollama REST API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"ollama-data\",\n\t\t\tcontainerPath: \"/root/.ollama\",\n\t\t\tdescription: \"Persistent Ollama model storage and configuration\",\n\t\t},\n\t],\n\tenvironment: [],\n\thealthcheck: {\n\t\ttest: \"curl -f http://localhost:11434/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"30s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"ollama-local-llm\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"OLLAMA_HOST\",\n\t\t\tdefaultValue: \"ollama\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Ollama hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"OLLAMA_PORT\",\n\t\t\tdefaultValue: \"11434\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Ollama API port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://github.com/ollama/ollama\",\n\ttags: [\"llm\", \"local-ai\", \"inference\", \"language-model\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 2048,\n\tgpuRequired: false,\n\tcapDropCompatible: false,\n\tproxyPath: \"/ollama\",\n};\n"],"mappings":";;AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,EAAE;CACf,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAoB,aAAa;EAAM,CAAC;CAC5D,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAO;EAAY;EAAa;EAAiB;CACxD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX"}
@@ -58,7 +58,9 @@ const ollamaDefinition = {
58
58
  recommends: [],
59
59
  conflictsWith: [],
60
60
  minMemoryMB: 2048,
61
- gpuRequired: false
61
+ gpuRequired: false,
62
+ capDropCompatible: false,
63
+ proxyPath: "/ollama"
62
64
  };
63
65
  //#endregion
64
66
  export { ollamaDefinition };
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.mjs","names":[],"sources":["../../../src/services/definitions/ollama.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const ollamaDefinition: ServiceDefinition = {\n\tid: \"ollama\",\n\tname: \"Ollama\",\n\tdescription:\n\t\t\"Run large language models locally with an easy-to-use API. Supports a wide range of open-source models like Llama, Mistral, and more.\",\n\tcategory: \"ai\",\n\ticon: \"🦙\",\n\n\timage: \"ollama/ollama\",\n\timageTag: \"0.17.0\",\n\tports: [\n\t\t{\n\t\t\thost: 11434,\n\t\t\tcontainer: 11434,\n\t\t\tdescription: \"Ollama REST API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"ollama-data\",\n\t\t\tcontainerPath: \"/root/.ollama\",\n\t\t\tdescription: \"Persistent Ollama model storage and configuration\",\n\t\t},\n\t],\n\tenvironment: [],\n\thealthcheck: {\n\t\ttest: \"curl -f http://localhost:11434/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"30s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"ollama-local-llm\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"OLLAMA_HOST\",\n\t\t\tdefaultValue: \"ollama\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Ollama hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"OLLAMA_PORT\",\n\t\t\tdefaultValue: \"11434\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Ollama API port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://github.com/ollama/ollama\",\n\ttags: [\"llm\", \"local-ai\", \"inference\", \"language-model\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 2048,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,EAAE;CACf,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAoB,aAAa;EAAM,CAAC;CAC5D,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAO;EAAY;EAAa;EAAiB;CACxD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"ollama.mjs","names":[],"sources":["../../../src/services/definitions/ollama.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const ollamaDefinition: ServiceDefinition = {\n\tid: \"ollama\",\n\tname: \"Ollama\",\n\tdescription:\n\t\t\"Run large language models locally with an easy-to-use API. Supports a wide range of open-source models like Llama, Mistral, and more.\",\n\tcategory: \"ai\",\n\ticon: \"🦙\",\n\n\timage: \"ollama/ollama\",\n\timageTag: \"0.17.0\",\n\tports: [\n\t\t{\n\t\t\thost: 11434,\n\t\t\tcontainer: 11434,\n\t\t\tdescription: \"Ollama REST API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"ollama-data\",\n\t\t\tcontainerPath: \"/root/.ollama\",\n\t\t\tdescription: \"Persistent Ollama model storage and configuration\",\n\t\t},\n\t],\n\tenvironment: [],\n\thealthcheck: {\n\t\ttest: \"curl -f http://localhost:11434/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"30s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"ollama-local-llm\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"OLLAMA_HOST\",\n\t\t\tdefaultValue: \"ollama\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Ollama hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"OLLAMA_PORT\",\n\t\t\tdefaultValue: \"11434\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Ollama API port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://github.com/ollama/ollama\",\n\ttags: [\"llm\", \"local-ai\", \"inference\", \"language-model\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 2048,\n\tgpuRequired: false,\n\tcapDropCompatible: false,\n\tproxyPath: \"/ollama\",\n};\n"],"mappings":";AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,EAAE;CACf,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAoB,aAAa;EAAM,CAAC;CAC5D,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAO;EAAY;EAAa;EAAiB;CACxD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX"}
@@ -70,7 +70,9 @@ const qdrantDefinition = {
70
70
  recommends: ["redis"],
71
71
  conflictsWith: [],
72
72
  minMemoryMB: 512,
73
- gpuRequired: false
73
+ gpuRequired: false,
74
+ capDropCompatible: true,
75
+ proxyPath: "/qdrant"
74
76
  };
75
77
  //#endregion
76
78
  exports.qdrantDefinition = qdrantDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"qdrant.cjs","names":[],"sources":["../../../src/services/definitions/qdrant.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const qdrantDefinition: ServiceDefinition = {\n\tid: \"qdrant\",\n\tname: \"Qdrant Vector DB\",\n\tdescription:\n\t\t\"High-performance vector similarity search engine for building RAG pipelines, semantic search, and AI-powered recommendation systems.\",\n\tcategory: \"vector-db\",\n\ticon: \"🧠\",\n\n\timage: \"qdrant/qdrant\",\n\timageTag: \"v1.12.1\",\n\tports: [\n\t\t{\n\t\t\thost: 6333,\n\t\t\tcontainer: 6333,\n\t\t\tdescription: \"Qdrant REST API\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 6334,\n\t\t\tcontainer: 6334,\n\t\t\tdescription: \"Qdrant gRPC API\",\n\t\t\texposed: false,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"qdrant-data\",\n\t\t\tcontainerPath: \"/qdrant/storage\",\n\t\t\tdescription: \"Persistent Qdrant vector storage\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"QDRANT__SERVICE__GRPC_PORT\",\n\t\t\tdefaultValue: \"6334\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"gRPC port for Qdrant service\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"bash -c 'echo > /dev/tcp/localhost/6333' || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"qdrant-memory\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"QDRANT_HOST\",\n\t\t\tdefaultValue: \"qdrant\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Qdrant hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"QDRANT_PORT\",\n\t\t\tdefaultValue: \"6333\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Qdrant REST API port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://qdrant.tech/documentation/\",\n\ttags: [\"vector\", \"rag\", \"embeddings\", \"semantic-search\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";;AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAiB,aAAa;EAAM,CAAC;CACzD,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAU;EAAO;EAAc;EAAkB;CACxD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"qdrant.cjs","names":[],"sources":["../../../src/services/definitions/qdrant.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const qdrantDefinition: ServiceDefinition = {\n\tid: \"qdrant\",\n\tname: \"Qdrant Vector DB\",\n\tdescription:\n\t\t\"High-performance vector similarity search engine for building RAG pipelines, semantic search, and AI-powered recommendation systems.\",\n\tcategory: \"vector-db\",\n\ticon: \"🧠\",\n\n\timage: \"qdrant/qdrant\",\n\timageTag: \"v1.12.1\",\n\tports: [\n\t\t{\n\t\t\thost: 6333,\n\t\t\tcontainer: 6333,\n\t\t\tdescription: \"Qdrant REST API\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 6334,\n\t\t\tcontainer: 6334,\n\t\t\tdescription: \"Qdrant gRPC API\",\n\t\t\texposed: false,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"qdrant-data\",\n\t\t\tcontainerPath: \"/qdrant/storage\",\n\t\t\tdescription: \"Persistent Qdrant vector storage\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"QDRANT__SERVICE__GRPC_PORT\",\n\t\t\tdefaultValue: \"6334\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"gRPC port for Qdrant service\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"bash -c 'echo > /dev/tcp/localhost/6333' || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"qdrant-memory\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"QDRANT_HOST\",\n\t\t\tdefaultValue: \"qdrant\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Qdrant hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"QDRANT_PORT\",\n\t\t\tdefaultValue: \"6333\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Qdrant REST API port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://qdrant.tech/documentation/\",\n\ttags: [\"vector\", \"rag\", \"embeddings\", \"semantic-search\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n\tcapDropCompatible: true,\n\tproxyPath: \"/qdrant\",\n};\n"],"mappings":";;AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAiB,aAAa;EAAM,CAAC;CACzD,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAU;EAAO;EAAc;EAAkB;CACxD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX"}
@@ -69,7 +69,9 @@ const qdrantDefinition = {
69
69
  recommends: ["redis"],
70
70
  conflictsWith: [],
71
71
  minMemoryMB: 512,
72
- gpuRequired: false
72
+ gpuRequired: false,
73
+ capDropCompatible: true,
74
+ proxyPath: "/qdrant"
73
75
  };
74
76
  //#endregion
75
77
  export { qdrantDefinition };