@better-openclaw/core 1.0.13 → 1.0.15

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 (109) hide show
  1. package/dist/composer.mjs.map +1 -1
  2. package/dist/generate.d.mts.map +1 -1
  3. package/dist/generate.mjs +11 -0
  4. package/dist/generate.mjs.map +1 -1
  5. package/dist/generators/env.d.mts.map +1 -1
  6. package/dist/generators/env.mjs +21 -1
  7. package/dist/generators/env.mjs.map +1 -1
  8. package/dist/generators/get-shit-done.d.mts +10 -0
  9. package/dist/generators/get-shit-done.d.mts.map +1 -0
  10. package/dist/generators/get-shit-done.mjs +38 -0
  11. package/dist/generators/get-shit-done.mjs.map +1 -0
  12. package/dist/generators/openclaw-json.d.mts +11 -0
  13. package/dist/generators/openclaw-json.d.mts.map +1 -0
  14. package/dist/generators/openclaw-json.mjs +410 -0
  15. package/dist/generators/openclaw-json.mjs.map +1 -0
  16. package/dist/index.d.mts +2 -2
  17. package/dist/resolver.mjs +3 -1
  18. package/dist/resolver.mjs.map +1 -1
  19. package/dist/schema.d.mts +81 -1
  20. package/dist/schema.d.mts.map +1 -1
  21. package/dist/schema.mjs +28 -2
  22. package/dist/schema.mjs.map +1 -1
  23. package/dist/services/definitions/authentik.d.mts +7 -0
  24. package/dist/services/definitions/authentik.d.mts.map +1 -0
  25. package/dist/services/definitions/authentik.mjs +105 -0
  26. package/dist/services/definitions/authentik.mjs.map +1 -0
  27. package/dist/services/definitions/crowdsec.d.mts +7 -0
  28. package/dist/services/definitions/crowdsec.d.mts.map +1 -0
  29. package/dist/services/definitions/crowdsec.mjs +62 -0
  30. package/dist/services/definitions/crowdsec.mjs.map +1 -0
  31. package/dist/services/definitions/ghost.d.mts +7 -0
  32. package/dist/services/definitions/ghost.d.mts.map +1 -0
  33. package/dist/services/definitions/ghost.mjs +58 -0
  34. package/dist/services/definitions/ghost.mjs.map +1 -0
  35. package/dist/services/definitions/homeassistant.d.mts +7 -0
  36. package/dist/services/definitions/homeassistant.d.mts.map +1 -0
  37. package/dist/services/definitions/homeassistant.mjs +61 -0
  38. package/dist/services/definitions/homeassistant.mjs.map +1 -0
  39. package/dist/services/definitions/immich.d.mts +7 -0
  40. package/dist/services/definitions/immich.d.mts.map +1 -0
  41. package/dist/services/definitions/immich.mjs +92 -0
  42. package/dist/services/definitions/immich.mjs.map +1 -0
  43. package/dist/services/definitions/index.d.mts +14 -1
  44. package/dist/services/definitions/index.d.mts.map +1 -1
  45. package/dist/services/definitions/index.mjs +27 -1
  46. package/dist/services/definitions/index.mjs.map +1 -1
  47. package/dist/services/definitions/jellyfin.d.mts +7 -0
  48. package/dist/services/definitions/jellyfin.d.mts.map +1 -0
  49. package/dist/services/definitions/jellyfin.mjs +62 -0
  50. package/dist/services/definitions/jellyfin.mjs.map +1 -0
  51. package/dist/services/definitions/jenkins.d.mts +7 -0
  52. package/dist/services/definitions/jenkins.d.mts.map +1 -0
  53. package/dist/services/definitions/jenkins.mjs +62 -0
  54. package/dist/services/definitions/jenkins.mjs.map +1 -0
  55. package/dist/services/definitions/loki.d.mts +7 -0
  56. package/dist/services/definitions/loki.d.mts.map +1 -0
  57. package/dist/services/definitions/loki.mjs +51 -0
  58. package/dist/services/definitions/loki.mjs.map +1 -0
  59. package/dist/services/definitions/milvus.d.mts +7 -0
  60. package/dist/services/definitions/milvus.d.mts.map +1 -0
  61. package/dist/services/definitions/milvus.mjs +75 -0
  62. package/dist/services/definitions/milvus.mjs.map +1 -0
  63. package/dist/services/definitions/nextcloud.d.mts +7 -0
  64. package/dist/services/definitions/nextcloud.d.mts.map +1 -0
  65. package/dist/services/definitions/nextcloud.mjs +80 -0
  66. package/dist/services/definitions/nextcloud.mjs.map +1 -0
  67. package/dist/services/definitions/pentagi.mjs.map +1 -1
  68. package/dist/services/definitions/pentestagent.mjs.map +1 -1
  69. package/dist/services/definitions/signoz.d.mts +7 -0
  70. package/dist/services/definitions/signoz.d.mts.map +1 -0
  71. package/dist/services/definitions/signoz.mjs +54 -0
  72. package/dist/services/definitions/signoz.mjs.map +1 -0
  73. package/dist/services/definitions/supabase.d.mts +7 -0
  74. package/dist/services/definitions/supabase.d.mts.map +1 -0
  75. package/dist/services/definitions/supabase.mjs +69 -0
  76. package/dist/services/definitions/supabase.mjs.map +1 -0
  77. package/dist/services/definitions/vaultwarden.d.mts +7 -0
  78. package/dist/services/definitions/vaultwarden.d.mts.map +1 -0
  79. package/dist/services/definitions/vaultwarden.mjs +63 -0
  80. package/dist/services/definitions/vaultwarden.mjs.map +1 -0
  81. package/dist/types.d.mts +6 -2
  82. package/dist/types.d.mts.map +1 -1
  83. package/dist/types.mjs.map +1 -1
  84. package/package.json +1 -1
  85. package/src/composer.ts +1 -1
  86. package/src/generate.ts +15 -0
  87. package/src/generators/env.ts +26 -0
  88. package/src/generators/get-shit-done.ts +43 -0
  89. package/src/generators/openclaw-json.ts +406 -0
  90. package/src/index.ts +2 -0
  91. package/src/resolver.ts +2 -0
  92. package/src/schema.ts +23 -0
  93. package/src/services/definitions/authentik.ts +106 -0
  94. package/src/services/definitions/crowdsec.ts +66 -0
  95. package/src/services/definitions/ghost.ts +60 -0
  96. package/src/services/definitions/homeassistant.ts +65 -0
  97. package/src/services/definitions/immich.ts +93 -0
  98. package/src/services/definitions/index.ts +39 -0
  99. package/src/services/definitions/jellyfin.ts +66 -0
  100. package/src/services/definitions/jenkins.ts +67 -0
  101. package/src/services/definitions/loki.ts +53 -0
  102. package/src/services/definitions/milvus.ts +84 -0
  103. package/src/services/definitions/nextcloud.ts +81 -0
  104. package/src/services/definitions/pentagi.ts +2 -1
  105. package/src/services/definitions/pentestagent.ts +2 -1
  106. package/src/services/definitions/signoz.ts +54 -0
  107. package/src/services/definitions/supabase.ts +73 -0
  108. package/src/services/definitions/vaultwarden.ts +68 -0
  109. package/src/types.ts +6 -0
@@ -0,0 +1,65 @@
1
+ import type { ServiceDefinition } from "../../types.js";
2
+
3
+ export const homeassistantDefinition: ServiceDefinition = {
4
+ id: "homeassistant",
5
+ name: "Home Assistant",
6
+ description: "Open source home automation that puts local control and privacy first.",
7
+ category: "automation",
8
+ icon: "🏠",
9
+
10
+ image: "ghcr.io/home-assistant/home-assistant",
11
+ imageTag: "stable",
12
+ ports: [
13
+ {
14
+ host: 8123,
15
+ container: 8123,
16
+ description: "Home Assistant Web Interface",
17
+ exposed: true,
18
+ },
19
+ ],
20
+ volumes: [
21
+ {
22
+ name: "homeassistant_config",
23
+ containerPath: "/config",
24
+ description: "Home Assistant configuration directory",
25
+ },
26
+ {
27
+ name: "/etc/localtime",
28
+ containerPath: "/etc/localtime",
29
+ description: "Timezone sync",
30
+ },
31
+ ],
32
+ environment: [
33
+ {
34
+ key: "TZ",
35
+ defaultValue: "UTC",
36
+ secret: false,
37
+ description: "Timezone mapping",
38
+ required: false,
39
+ },
40
+ ],
41
+ healthcheck: {
42
+ test: "curl --fail http://localhost:8123/ || exit 1",
43
+ interval: "30s",
44
+ timeout: "10s",
45
+ retries: 3,
46
+ startPeriod: "30s",
47
+ },
48
+ dependsOn: [],
49
+ restartPolicy: "unless-stopped",
50
+ networks: ["openclaw-network"],
51
+
52
+ skills: [],
53
+ openclawEnvVars: [],
54
+
55
+ docsUrl: "https://www.home-assistant.io/docs/",
56
+ tags: ["smarthome", "automation", "iot", "local-first"],
57
+ maturity: "stable",
58
+
59
+ requires: [],
60
+ recommends: [],
61
+ conflictsWith: [],
62
+
63
+ minMemoryMB: 1024,
64
+ gpuRequired: false,
65
+ };
@@ -0,0 +1,93 @@
1
+ import type { ServiceDefinition } from "../../types.js";
2
+
3
+ export const immichDefinition: ServiceDefinition = {
4
+ id: "immich",
5
+ name: "Immich",
6
+ description: "High performance self-hosted photo and video management solution.",
7
+ category: "media",
8
+ icon: "📸",
9
+
10
+ image: "ghcr.io/immich-app/immich-server",
11
+ imageTag: "release",
12
+ ports: [
13
+ {
14
+ host: 2283,
15
+ container: 2283,
16
+ description: "Immich Web Interface",
17
+ exposed: true,
18
+ },
19
+ ],
20
+ volumes: [
21
+ {
22
+ name: "immich_upload",
23
+ containerPath: "/usr/src/app/upload",
24
+ description: "Persistent Immich photos/videos storage",
25
+ },
26
+ {
27
+ name: "/etc/localtime",
28
+ containerPath: "/etc/localtime",
29
+ description: "Host timezone synchronization",
30
+ },
31
+ ],
32
+ environment: [
33
+ {
34
+ key: "DB_HOSTNAME",
35
+ defaultValue: "postgres",
36
+ secret: false,
37
+ description: "Database hostname",
38
+ required: true,
39
+ },
40
+ {
41
+ key: "DB_USERNAME",
42
+ defaultValue: "postgres",
43
+ secret: false,
44
+ description: "Database user",
45
+ required: true,
46
+ },
47
+ {
48
+ key: "DB_PASSWORD",
49
+ defaultValue: "postgres",
50
+ secret: true,
51
+ description: "Database password",
52
+ required: true,
53
+ },
54
+ {
55
+ key: "DB_DATABASE_NAME",
56
+ defaultValue: "immich",
57
+ secret: false,
58
+ description: "Database name",
59
+ required: true,
60
+ },
61
+ {
62
+ key: "REDIS_HOSTNAME",
63
+ defaultValue: "redis",
64
+ secret: false,
65
+ description: "Redis hostname",
66
+ required: true,
67
+ },
68
+ ],
69
+ healthcheck: {
70
+ test: "curl --fail http://localhost:2283/api/server-info/ping || exit 1",
71
+ interval: "30s",
72
+ timeout: "10s",
73
+ retries: 3,
74
+ startPeriod: "30s",
75
+ },
76
+ dependsOn: ["postgresql", "redis"],
77
+ restartPolicy: "unless-stopped",
78
+ networks: ["openclaw-network"],
79
+
80
+ skills: [],
81
+ openclawEnvVars: [],
82
+
83
+ docsUrl: "https://immich.app/docs/overview/introduction",
84
+ tags: ["media", "photos", "videos", "gallery", "backup"],
85
+ maturity: "stable",
86
+
87
+ requires: ["postgresql", "redis"],
88
+ recommends: [],
89
+ conflictsWith: [],
90
+
91
+ minMemoryMB: 1024,
92
+ gpuRequired: false,
93
+ };
@@ -1,5 +1,6 @@
1
1
  export { anythingLlmDefinition } from "./anything-llm.js";
2
2
  export { appflowyDefinition } from "./appflowy.js";
3
+ export { authentikDefinition } from "./authentik.js";
3
4
  export { beszelDefinition } from "./beszel.js";
4
5
  export { browserlessDefinition } from "./browserless.js";
5
6
  export { caddyDefinition } from "./caddy.js";
@@ -12,6 +13,7 @@ export { comfyuiDefinition } from "./comfyui.js";
12
13
  export { convexDefinition } from "./convex.js";
13
14
  export { convexDashboardDefinition } from "./convex-dashboard.js";
14
15
  export { coolifyDefinition } from "./coolify.js";
16
+ export { crowdsecDefinition } from "./crowdsec.js";
15
17
  export { desktopEnvironmentDefinition } from "./desktop-environment.js";
16
18
  export { difyDefinition } from "./dify.js";
17
19
  export { docsgptDefinition } from "./docsgpt.js";
@@ -20,10 +22,15 @@ export { dozzleDefinition } from "./dozzle.js";
20
22
  export { ffmpegDefinition } from "./ffmpeg.js";
21
23
  export { flowiseDefinition } from "./flowise.js";
22
24
  export { geminiCliDefinition } from "./gemini-cli.js";
25
+ export { ghostDefinition } from "./ghost.js";
23
26
  export { giteaDefinition } from "./gitea.js";
24
27
  export { gotifyDefinition } from "./gotify.js";
25
28
  export { grafanaDefinition } from "./grafana.js";
26
29
  export { hexstrikeDefinition } from "./hexstrike.js";
30
+ export { homeassistantDefinition } from "./homeassistant.js";
31
+ export { immichDefinition } from "./immich.js";
32
+ export { jellyfinDefinition } from "./jellyfin.js";
33
+ export { jenkinsDefinition } from "./jenkins.js";
27
34
  export { kimiDefinition } from "./kimi.js";
28
35
  export { lasuiteMeetAgentsDefinition } from "./lasuite-meet-agents.js";
29
36
  export { lasuiteMeetBackendDefinition } from "./lasuite-meet-backend.js";
@@ -32,16 +39,19 @@ export { librechatDefinition } from "./librechat.js";
32
39
  export { lightpandaDefinition } from "./lightpanda.js";
33
40
  export { litellmDefinition } from "./litellm.js";
34
41
  export { livekitDefinition } from "./livekit.js";
42
+ export { lokiDefinition } from "./loki.js";
35
43
  export { matomoDefinition } from "./matomo.js";
36
44
  export { matrixSynapseDefinition } from "./matrix-synapse.js";
37
45
  export { mattermostDefinition } from "./mattermost.js";
38
46
  export { meilisearchDefinition } from "./meilisearch.js";
47
+ export { milvusDefinition } from "./milvus.js";
39
48
  export { minioDefinition } from "./minio.js";
40
49
  export { missionControlDefinition } from "./mission-control.js";
41
50
  export { mixpostDefinition } from "./mixpost.js";
42
51
  export { motionCanvasDefinition } from "./motion-canvas.js";
43
52
  export { n8nDefinition } from "./n8n.js";
44
53
  export { neo4jDefinition } from "./neo4j.js";
54
+ export { nextcloudDefinition } from "./nextcloud.js";
45
55
  export { nocodbDefinition } from "./nocodb.js";
46
56
  export { ntfyDefinition } from "./ntfy.js";
47
57
  export { ollamaDefinition } from "./ollama.js";
@@ -63,10 +73,12 @@ export { remotionDefinition } from "./remotion.js";
63
73
  export { rocketchatDefinition } from "./rocketchat.js";
64
74
  export { scraplingDefinition } from "./scrapling.js";
65
75
  export { searxngDefinition } from "./searxng.js";
76
+ export { signozDefinition } from "./signoz.js";
66
77
  export { solidityGuardDefinition } from "./solidityguard.js";
67
78
  export { stableDiffusionDefinition } from "./stable-diffusion.js";
68
79
  export { steelBrowserDefinition } from "./steel-browser.js";
69
80
  export { streamGatewayDefinition } from "./stream-gateway.js";
81
+ export { supabaseDefinition } from "./supabase.js";
70
82
  export { tailscaleDefinition } from "./tailscale.js";
71
83
  export { temporalDefinition } from "./temporal.js";
72
84
  export { traefikDefinition } from "./traefik.js";
@@ -74,6 +86,7 @@ export { umamiDefinition } from "./umami.js";
74
86
  export { uptimeKumaDefinition } from "./uptime-kuma.js";
75
87
  export { usesendDefinition } from "./usesend.js";
76
88
  export { valkeyDefinition } from "./valkey.js";
89
+ export { vaultwardenDefinition } from "./vaultwarden.js";
77
90
  export { watchtowerDefinition } from "./watchtower.js";
78
91
  export { weaviateDefinition } from "./weaviate.js";
79
92
  export { whisperDefinition } from "./whisper.js";
@@ -82,6 +95,7 @@ export { xyopsDefinition } from "./xyops.js";
82
95
  import type { ServiceDefinition } from "../../types.js";
83
96
  import { anythingLlmDefinition } from "./anything-llm.js";
84
97
  import { appflowyDefinition } from "./appflowy.js";
98
+ import { authentikDefinition } from "./authentik.js";
85
99
  import { beszelDefinition } from "./beszel.js";
86
100
  import { browserlessDefinition } from "./browserless.js";
87
101
  import { caddyDefinition } from "./caddy.js";
@@ -94,6 +108,7 @@ import { comfyuiDefinition } from "./comfyui.js";
94
108
  import { convexDefinition } from "./convex.js";
95
109
  import { convexDashboardDefinition } from "./convex-dashboard.js";
96
110
  import { coolifyDefinition } from "./coolify.js";
111
+ import { crowdsecDefinition } from "./crowdsec.js";
97
112
  import { desktopEnvironmentDefinition } from "./desktop-environment.js";
98
113
  import { difyDefinition } from "./dify.js";
99
114
  import { docsgptDefinition } from "./docsgpt.js";
@@ -102,10 +117,15 @@ import { dozzleDefinition } from "./dozzle.js";
102
117
  import { ffmpegDefinition } from "./ffmpeg.js";
103
118
  import { flowiseDefinition } from "./flowise.js";
104
119
  import { geminiCliDefinition } from "./gemini-cli.js";
120
+ import { ghostDefinition } from "./ghost.js";
105
121
  import { giteaDefinition } from "./gitea.js";
106
122
  import { gotifyDefinition } from "./gotify.js";
107
123
  import { grafanaDefinition } from "./grafana.js";
108
124
  import { hexstrikeDefinition } from "./hexstrike.js";
125
+ import { homeassistantDefinition } from "./homeassistant.js";
126
+ import { immichDefinition } from "./immich.js";
127
+ import { jellyfinDefinition } from "./jellyfin.js";
128
+ import { jenkinsDefinition } from "./jenkins.js";
109
129
  import { kimiDefinition } from "./kimi.js";
110
130
  import { lasuiteMeetAgentsDefinition } from "./lasuite-meet-agents.js";
111
131
  import { lasuiteMeetBackendDefinition } from "./lasuite-meet-backend.js";
@@ -114,16 +134,19 @@ import { librechatDefinition } from "./librechat.js";
114
134
  import { lightpandaDefinition } from "./lightpanda.js";
115
135
  import { litellmDefinition } from "./litellm.js";
116
136
  import { livekitDefinition } from "./livekit.js";
137
+ import { lokiDefinition } from "./loki.js";
117
138
  import { matomoDefinition } from "./matomo.js";
118
139
  import { matrixSynapseDefinition } from "./matrix-synapse.js";
119
140
  import { mattermostDefinition } from "./mattermost.js";
120
141
  import { meilisearchDefinition } from "./meilisearch.js";
142
+ import { milvusDefinition } from "./milvus.js";
121
143
  import { minioDefinition } from "./minio.js";
122
144
  import { missionControlDefinition } from "./mission-control.js";
123
145
  import { mixpostDefinition } from "./mixpost.js";
124
146
  import { motionCanvasDefinition } from "./motion-canvas.js";
125
147
  import { n8nDefinition } from "./n8n.js";
126
148
  import { neo4jDefinition } from "./neo4j.js";
149
+ import { nextcloudDefinition } from "./nextcloud.js";
127
150
  import { nocodbDefinition } from "./nocodb.js";
128
151
  import { ntfyDefinition } from "./ntfy.js";
129
152
  import { ollamaDefinition } from "./ollama.js";
@@ -145,10 +168,12 @@ import { remotionDefinition } from "./remotion.js";
145
168
  import { rocketchatDefinition } from "./rocketchat.js";
146
169
  import { scraplingDefinition } from "./scrapling.js";
147
170
  import { searxngDefinition } from "./searxng.js";
171
+ import { signozDefinition } from "./signoz.js";
148
172
  import { solidityGuardDefinition } from "./solidityguard.js";
149
173
  import { stableDiffusionDefinition } from "./stable-diffusion.js";
150
174
  import { steelBrowserDefinition } from "./steel-browser.js";
151
175
  import { streamGatewayDefinition } from "./stream-gateway.js";
176
+ import { supabaseDefinition } from "./supabase.js";
152
177
  import { tailscaleDefinition } from "./tailscale.js";
153
178
  import { temporalDefinition } from "./temporal.js";
154
179
  import { traefikDefinition } from "./traefik.js";
@@ -156,6 +181,7 @@ import { umamiDefinition } from "./umami.js";
156
181
  import { uptimeKumaDefinition } from "./uptime-kuma.js";
157
182
  import { usesendDefinition } from "./usesend.js";
158
183
  import { valkeyDefinition } from "./valkey.js";
184
+ import { vaultwardenDefinition } from "./vaultwarden.js";
159
185
  import { watchtowerDefinition } from "./watchtower.js";
160
186
  import { weaviateDefinition } from "./weaviate.js";
161
187
  import { whisperDefinition } from "./whisper.js";
@@ -198,6 +224,19 @@ export const allServiceDefinitions: ServiceDefinition[] = [
198
224
  comfyuiDefinition,
199
225
  playwrightServerDefinition,
200
226
  openWebuiDefinition,
227
+ homeassistantDefinition,
228
+ nextcloudDefinition,
229
+ immichDefinition,
230
+ jellyfinDefinition,
231
+ vaultwardenDefinition,
232
+ milvusDefinition,
233
+ jenkinsDefinition,
234
+ authentikDefinition,
235
+ crowdsecDefinition,
236
+ ghostDefinition,
237
+ lokiDefinition,
238
+ signozDefinition,
239
+ supabaseDefinition,
201
240
  librechatDefinition,
202
241
  anythingLlmDefinition,
203
242
  difyDefinition,
@@ -0,0 +1,66 @@
1
+ import type { ServiceDefinition } from "../../types.js";
2
+
3
+ export const jellyfinDefinition: ServiceDefinition = {
4
+ id: "jellyfin",
5
+ name: "Jellyfin",
6
+ description:
7
+ "The Free Software Media System. It puts you in control of managing and streaming your media.",
8
+ category: "media",
9
+ icon: "🎬",
10
+
11
+ image: "jellyfin/jellyfin",
12
+ imageTag: "latest",
13
+ ports: [
14
+ {
15
+ host: 8096,
16
+ container: 8096,
17
+ description: "Jellyfin Web Interface",
18
+ exposed: true,
19
+ },
20
+ ],
21
+ volumes: [
22
+ {
23
+ name: "jellyfin_config",
24
+ containerPath: "/config",
25
+ description: "Jellyfin configuration storage",
26
+ },
27
+ {
28
+ name: "jellyfin_cache",
29
+ containerPath: "/cache",
30
+ description: "Jellyfin cache storage",
31
+ },
32
+ ],
33
+ environment: [
34
+ {
35
+ key: "JELLYFIN_PublishedServerUrl",
36
+ defaultValue: "http://localhost",
37
+ secret: false,
38
+ description: "Published server URL for clients",
39
+ required: false,
40
+ },
41
+ ],
42
+ healthcheck: {
43
+ test: "curl --fail http://localhost:8096/health || exit 1",
44
+ interval: "30s",
45
+ timeout: "10s",
46
+ retries: 3,
47
+ startPeriod: "30s",
48
+ },
49
+ dependsOn: [],
50
+ restartPolicy: "unless-stopped",
51
+ networks: ["openclaw-network"],
52
+
53
+ skills: [],
54
+ openclawEnvVars: [],
55
+
56
+ docsUrl: "https://jellyfin.org/docs/",
57
+ tags: ["media", "streaming", "movies", "tv-shows", "music"],
58
+ maturity: "stable",
59
+
60
+ requires: [],
61
+ recommends: [],
62
+ conflictsWith: [],
63
+
64
+ minMemoryMB: 512,
65
+ gpuRequired: false,
66
+ };
@@ -0,0 +1,67 @@
1
+ import type { ServiceDefinition } from "../../types.js";
2
+
3
+ export const jenkinsDefinition: ServiceDefinition = {
4
+ id: "jenkins",
5
+ name: "Jenkins",
6
+ description:
7
+ "The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.",
8
+ category: "dev-tools",
9
+ icon: "🏗️",
10
+
11
+ image: "jenkins/jenkins",
12
+ imageTag: "lts",
13
+ ports: [
14
+ {
15
+ host: 8080,
16
+ container: 8080,
17
+ description: "Jenkins Web Interface",
18
+ exposed: true,
19
+ },
20
+ {
21
+ host: 50000,
22
+ container: 50000,
23
+ description: "Jenkins inbound agent port",
24
+ exposed: false,
25
+ },
26
+ ],
27
+ volumes: [
28
+ {
29
+ name: "jenkins_home",
30
+ containerPath: "/var/jenkins_home",
31
+ description: "Persistent Jenkins home directory",
32
+ },
33
+ ],
34
+ environment: [
35
+ {
36
+ key: "JAVA_OPTS",
37
+ defaultValue: "-Djenkins.install.runSetupWizard=false",
38
+ secret: false,
39
+ description: "Optional setup wrapper arguments",
40
+ required: false,
41
+ },
42
+ ],
43
+ healthcheck: {
44
+ test: "curl --fail http://localhost:8080/login || exit 1",
45
+ interval: "30s",
46
+ timeout: "10s",
47
+ retries: 3,
48
+ startPeriod: "60s",
49
+ },
50
+ dependsOn: [],
51
+ restartPolicy: "unless-stopped",
52
+ networks: ["openclaw-network"],
53
+
54
+ skills: [],
55
+ openclawEnvVars: [],
56
+
57
+ docsUrl: "https://www.jenkins.io/doc/",
58
+ tags: ["ci-cd", "automation", "build", "pipeline"],
59
+ maturity: "stable",
60
+
61
+ requires: [],
62
+ recommends: [],
63
+ conflictsWith: [],
64
+
65
+ minMemoryMB: 1024,
66
+ gpuRequired: false,
67
+ };
@@ -0,0 +1,53 @@
1
+ import type { ServiceDefinition } from "../../types.js";
2
+
3
+ export const lokiDefinition: ServiceDefinition = {
4
+ id: "loki",
5
+ name: "Loki",
6
+ description:
7
+ "Like Prometheus, but for logs. A highly available, multi-tenant log aggregation system.",
8
+ category: "monitoring",
9
+ icon: "🪵",
10
+
11
+ image: "grafana/loki",
12
+ imageTag: "latest",
13
+ ports: [
14
+ {
15
+ host: 3100,
16
+ container: 3100,
17
+ description: "Loki HTTP API interface",
18
+ exposed: true,
19
+ },
20
+ ],
21
+ volumes: [
22
+ {
23
+ name: "loki_data",
24
+ containerPath: "/loki",
25
+ description: "Loki logs and chunks storage",
26
+ },
27
+ ],
28
+ environment: [],
29
+ healthcheck: {
30
+ test: "wget -q --spider http://localhost:3100/ready || exit 1",
31
+ interval: "30s",
32
+ timeout: "10s",
33
+ retries: 3,
34
+ startPeriod: "15s",
35
+ },
36
+ dependsOn: [],
37
+ restartPolicy: "unless-stopped",
38
+ networks: ["openclaw-network"],
39
+
40
+ skills: [],
41
+ openclawEnvVars: [],
42
+
43
+ docsUrl: "https://grafana.com/docs/loki/latest/",
44
+ tags: ["logs", "aggregation", "observability", "grafana"],
45
+ maturity: "stable",
46
+
47
+ requires: [],
48
+ recommends: ["grafana", "prometheus"],
49
+ conflictsWith: [],
50
+
51
+ minMemoryMB: 512,
52
+ gpuRequired: false,
53
+ };
@@ -0,0 +1,84 @@
1
+ import type { ServiceDefinition } from "../../types.js";
2
+
3
+ export const milvusDefinition: ServiceDefinition = {
4
+ id: "milvus",
5
+ name: "Milvus",
6
+ description:
7
+ "Open-source vector database built for scalable similarity search and AI applications.",
8
+ category: "vector-db",
9
+ icon: "🗄️",
10
+
11
+ image: "milvusdb/milvus",
12
+ imageTag: "latest",
13
+ command: "milvus run standalone",
14
+ ports: [
15
+ {
16
+ host: 19530,
17
+ container: 19530,
18
+ description: "Milvus gRPC/REST API",
19
+ exposed: true,
20
+ },
21
+ {
22
+ host: 9091,
23
+ container: 9091,
24
+ description: "Milvus Management/Prometheus Metrics",
25
+ exposed: false,
26
+ },
27
+ ],
28
+ volumes: [
29
+ {
30
+ name: "milvus_volumes",
31
+ containerPath: "/var/lib/milvus",
32
+ description: "Milvus persistent data storage",
33
+ },
34
+ ],
35
+ environment: [
36
+ {
37
+ key: "ETCD_ENDPOINTS",
38
+ defaultValue: "etcd:2379",
39
+ secret: false,
40
+ description:
41
+ "etcd endpoints (standalone uses local if not provided, but explicit is better if split)",
42
+ required: false, // Standalone defaults handles this, but good practice to show
43
+ },
44
+ {
45
+ key: "MINIO_ADDRESS",
46
+ defaultValue: "minio:9000",
47
+ secret: false,
48
+ description: "MinIO endpoint for object storage",
49
+ required: false,
50
+ },
51
+ ],
52
+ healthcheck: {
53
+ test: "curl -f http://localhost:9091/healthz || exit 1",
54
+ interval: "30s",
55
+ timeout: "20s",
56
+ retries: 3,
57
+ startPeriod: "60s",
58
+ },
59
+ dependsOn: [],
60
+ restartPolicy: "unless-stopped",
61
+ networks: ["openclaw-network"],
62
+
63
+ skills: [],
64
+ openclawEnvVars: [
65
+ {
66
+ key: "MILVUS_URI",
67
+ defaultValue: "http://milvus:19530",
68
+ secret: false,
69
+ description: "Milvus connection URI for OpenClaw",
70
+ required: true,
71
+ },
72
+ ],
73
+
74
+ docsUrl: "https://milvus.io/docs",
75
+ tags: ["vector-db", "similarity-search", "embeddings", "ai"],
76
+ maturity: "stable",
77
+
78
+ requires: [],
79
+ recommends: [],
80
+ conflictsWith: [],
81
+
82
+ minMemoryMB: 2048,
83
+ gpuRequired: false,
84
+ };
@@ -0,0 +1,81 @@
1
+ import type { ServiceDefinition } from "../../types.js";
2
+
3
+ export const nextcloudDefinition: ServiceDefinition = {
4
+ id: "nextcloud",
5
+ name: "Nextcloud",
6
+ description: "Self-hosted productivity platform that keeps you in control.",
7
+ category: "storage",
8
+ icon: "☁️",
9
+
10
+ image: "nextcloud",
11
+ imageTag: "latest",
12
+ ports: [
13
+ {
14
+ host: 8080,
15
+ container: 80,
16
+ description: "Nextcloud Web Interface",
17
+ exposed: true,
18
+ },
19
+ ],
20
+ volumes: [
21
+ {
22
+ name: "nextcloud_data",
23
+ containerPath: "/var/www/html",
24
+ description: "Persistent Nextcloud data storage",
25
+ },
26
+ ],
27
+ environment: [
28
+ {
29
+ key: "MYSQL_DATABASE",
30
+ defaultValue: "nextcloud",
31
+ secret: false,
32
+ description: "Database name",
33
+ required: false,
34
+ },
35
+ {
36
+ key: "MYSQL_USER",
37
+ defaultValue: "nextcloud",
38
+ secret: false,
39
+ description: "Database user",
40
+ required: false,
41
+ },
42
+ {
43
+ key: "MYSQL_PASSWORD",
44
+ defaultValue: "nextcloud_secret",
45
+ secret: true,
46
+ description: "Database password",
47
+ required: false,
48
+ },
49
+ {
50
+ key: "MYSQL_HOST",
51
+ defaultValue: "postgres",
52
+ secret: false,
53
+ description: "Database hostname",
54
+ required: false,
55
+ },
56
+ ],
57
+ healthcheck: {
58
+ test: "curl --fail http://localhost:80/status.php || exit 1",
59
+ interval: "30s",
60
+ timeout: "10s",
61
+ retries: 3,
62
+ startPeriod: "30s",
63
+ },
64
+ dependsOn: ["postgresql"],
65
+ restartPolicy: "unless-stopped",
66
+ networks: ["openclaw-network"],
67
+
68
+ skills: [],
69
+ openclawEnvVars: [],
70
+
71
+ docsUrl: "https://nextcloud.com/",
72
+ tags: ["storage", "cloud", "productivity", "collaboration"],
73
+ maturity: "stable",
74
+
75
+ requires: [],
76
+ recommends: ["postgresql"],
77
+ conflictsWith: [],
78
+
79
+ minMemoryMB: 512,
80
+ gpuRequired: false,
81
+ };
@@ -3,7 +3,8 @@ import type { ServiceDefinition } from "../../types.js";
3
3
  export const pentagiDefinition: ServiceDefinition = {
4
4
  id: "pentagi",
5
5
  name: "PentAGI",
6
- description: "Fully autonomous AI Agents system capable of performing complex penetration testing tasks.",
6
+ description:
7
+ "Fully autonomous AI Agents system capable of performing complex penetration testing tasks.",
7
8
  category: "security",
8
9
  icon: "🕵️",
9
10
 
@@ -3,7 +3,8 @@ import type { ServiceDefinition } from "../../types.js";
3
3
  export const pentestagentDefinition: ServiceDefinition = {
4
4
  id: "pentestagent",
5
5
  name: "PentestAgent",
6
- description: "AI agent framework for black-box security testing via internal Docker isolated environments.",
6
+ description:
7
+ "AI agent framework for black-box security testing via internal Docker isolated environments.",
7
8
  category: "security",
8
9
  icon: "🔍",
9
10