@better-openclaw/core 1.0.7 → 1.0.9

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 (112) hide show
  1. package/dist/bare-metal-partition.d.mts.map +1 -1
  2. package/dist/bare-metal-partition.mjs +1 -0
  3. package/dist/bare-metal-partition.mjs.map +1 -1
  4. package/dist/composer.d.mts.map +1 -1
  5. package/dist/composer.mjs +11 -1
  6. package/dist/composer.mjs.map +1 -1
  7. package/dist/errors.d.mts +17 -0
  8. package/dist/errors.d.mts.map +1 -0
  9. package/dist/errors.mjs +24 -0
  10. package/dist/errors.mjs.map +1 -0
  11. package/dist/generate.d.mts +4 -3
  12. package/dist/generate.d.mts.map +1 -1
  13. package/dist/generate.mjs +13 -5
  14. package/dist/generate.mjs.map +1 -1
  15. package/dist/generators/traefik.d.mts +19 -0
  16. package/dist/generators/traefik.d.mts.map +1 -0
  17. package/dist/generators/traefik.mjs +86 -0
  18. package/dist/generators/traefik.mjs.map +1 -0
  19. package/dist/generators/traefik.test.d.mts +1 -0
  20. package/dist/generators/traefik.test.mjs +69 -0
  21. package/dist/generators/traefik.test.mjs.map +1 -0
  22. package/dist/index.d.mts +4 -2
  23. package/dist/index.mjs +4 -2
  24. package/dist/migrations.d.mts +14 -0
  25. package/dist/migrations.d.mts.map +1 -0
  26. package/dist/migrations.mjs +33 -0
  27. package/dist/migrations.mjs.map +1 -0
  28. package/dist/migrations.test.d.mts +1 -0
  29. package/dist/migrations.test.mjs +42 -0
  30. package/dist/migrations.test.mjs.map +1 -0
  31. package/dist/resolver.d.mts +6 -1
  32. package/dist/resolver.d.mts.map +1 -1
  33. package/dist/resolver.mjs +21 -3
  34. package/dist/resolver.mjs.map +1 -1
  35. package/dist/schema.d.mts +9 -0
  36. package/dist/schema.d.mts.map +1 -1
  37. package/dist/schema.mjs +4 -1
  38. package/dist/schema.mjs.map +1 -1
  39. package/dist/services/definitions/caddy.mjs +20 -1
  40. package/dist/services/definitions/caddy.mjs.map +1 -1
  41. package/dist/services/definitions/cal-com.d.mts +7 -0
  42. package/dist/services/definitions/cal-com.d.mts.map +1 -0
  43. package/dist/services/definitions/cal-com.mjs +88 -0
  44. package/dist/services/definitions/cal-com.mjs.map +1 -0
  45. package/dist/services/definitions/comfyui.d.mts +7 -0
  46. package/dist/services/definitions/comfyui.d.mts.map +1 -0
  47. package/dist/services/definitions/comfyui.mjs +83 -0
  48. package/dist/services/definitions/comfyui.mjs.map +1 -0
  49. package/dist/services/definitions/desktop-environment.d.mts +7 -0
  50. package/dist/services/definitions/desktop-environment.d.mts.map +1 -0
  51. package/dist/services/definitions/desktop-environment.mjs +153 -0
  52. package/dist/services/definitions/desktop-environment.mjs.map +1 -0
  53. package/dist/services/definitions/grafana.mjs +13 -1
  54. package/dist/services/definitions/grafana.mjs.map +1 -1
  55. package/dist/services/definitions/index.d.mts +7 -1
  56. package/dist/services/definitions/index.d.mts.map +1 -1
  57. package/dist/services/definitions/index.mjs +14 -2
  58. package/dist/services/definitions/index.mjs.map +1 -1
  59. package/dist/services/definitions/neo4j.d.mts +7 -0
  60. package/dist/services/definitions/neo4j.d.mts.map +1 -0
  61. package/dist/services/definitions/neo4j.mjs +91 -0
  62. package/dist/services/definitions/neo4j.mjs.map +1 -0
  63. package/dist/services/definitions/stream-gateway.d.mts +7 -0
  64. package/dist/services/definitions/stream-gateway.d.mts.map +1 -0
  65. package/dist/services/definitions/stream-gateway.mjs +133 -0
  66. package/dist/services/definitions/stream-gateway.mjs.map +1 -0
  67. package/dist/services/definitions/traefik.mjs +0 -1
  68. package/dist/services/definitions/traefik.mjs.map +1 -1
  69. package/dist/services/definitions/xyops.d.mts +7 -0
  70. package/dist/services/definitions/xyops.d.mts.map +1 -0
  71. package/dist/services/definitions/xyops.mjs +86 -0
  72. package/dist/services/definitions/xyops.mjs.map +1 -0
  73. package/dist/types.d.mts +8 -1
  74. package/dist/types.d.mts.map +1 -1
  75. package/dist/types.mjs +10 -0
  76. package/dist/types.mjs.map +1 -1
  77. package/dist/validator.mjs +11 -0
  78. package/dist/validator.mjs.map +1 -1
  79. package/dist/version-manager.d.mts +1 -1
  80. package/dist/version-manager.d.mts.map +1 -1
  81. package/dist/version-manager.mjs +11 -5
  82. package/dist/version-manager.mjs.map +1 -1
  83. package/dist/version-manager.test.d.mts +1 -0
  84. package/dist/version-manager.test.mjs +102 -0
  85. package/dist/version-manager.test.mjs.map +1 -0
  86. package/package.json +1 -1
  87. package/src/__snapshots__/composer.snapshot.test.ts.snap +15 -1
  88. package/src/bare-metal-partition.ts +1 -0
  89. package/src/composer.ts +22 -1
  90. package/src/errors.ts +23 -0
  91. package/src/generate.ts +22 -4
  92. package/src/generators/traefik.test.ts +97 -0
  93. package/src/generators/traefik.ts +104 -0
  94. package/src/index.ts +7 -1
  95. package/src/migrations.test.ts +36 -0
  96. package/src/migrations.ts +49 -0
  97. package/src/resolver.ts +37 -3
  98. package/src/schema.ts +3 -0
  99. package/src/services/definitions/caddy.ts +23 -1
  100. package/src/services/definitions/cal-com.ts +91 -0
  101. package/src/services/definitions/comfyui.ts +90 -0
  102. package/src/services/definitions/desktop-environment.ts +163 -0
  103. package/src/services/definitions/grafana.ts +16 -1
  104. package/src/services/definitions/index.ts +18 -0
  105. package/src/services/definitions/neo4j.ts +96 -0
  106. package/src/services/definitions/stream-gateway.ts +148 -0
  107. package/src/services/definitions/traefik.ts +0 -2
  108. package/src/services/definitions/xyops.ts +94 -0
  109. package/src/types.ts +7 -1
  110. package/src/validator.ts +16 -0
  111. package/src/version-manager.test.ts +134 -0
  112. package/src/version-manager.ts +12 -5
@@ -0,0 +1,91 @@
1
+ import type { ServiceDefinition } from "../../types.js";
2
+
3
+ export const calComDefinition: ServiceDefinition = {
4
+ id: "cal-com",
5
+ name: "Cal.com",
6
+ description:
7
+ "Open-source scheduling platform for appointments, meetings, and booking management with calendar integrations and customizable workflows.",
8
+ category: "automation",
9
+ icon: "📅",
10
+
11
+ image: "calcom/cal.com",
12
+ imageTag: "latest",
13
+ ports: [
14
+ {
15
+ host: 3005,
16
+ container: 3000,
17
+ description: "Cal.com web UI",
18
+ exposed: true,
19
+ },
20
+ ],
21
+ volumes: [],
22
+ environment: [
23
+ {
24
+ key: "DATABASE_URL",
25
+ defaultValue: "postgresql://calcom:${CALCOM_DB_PASSWORD}@postgresql:5432/calcom",
26
+ secret: true,
27
+ description: "PostgreSQL connection URL for Cal.com",
28
+ required: true,
29
+ },
30
+ {
31
+ key: "NEXTAUTH_SECRET",
32
+ defaultValue: "",
33
+ secret: true,
34
+ description: "NextAuth.js session encryption secret",
35
+ required: true,
36
+ },
37
+ {
38
+ key: "CALENDSO_ENCRYPTION_KEY",
39
+ defaultValue: "",
40
+ secret: true,
41
+ description: "Encryption key for calendar data at rest",
42
+ required: true,
43
+ },
44
+ {
45
+ key: "NEXT_PUBLIC_WEBAPP_URL",
46
+ defaultValue: "http://localhost:3005",
47
+ secret: false,
48
+ description: "Public URL of the Cal.com instance",
49
+ required: true,
50
+ },
51
+ ],
52
+ healthcheck: {
53
+ test: "wget -q --spider http://localhost:3000 || exit 1",
54
+ interval: "30s",
55
+ timeout: "10s",
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: "CALCOM_HOST",
67
+ defaultValue: "cal-com",
68
+ secret: false,
69
+ description: "Cal.com hostname for OpenClaw",
70
+ required: true,
71
+ },
72
+ {
73
+ key: "CALCOM_PORT",
74
+ defaultValue: "3000",
75
+ secret: false,
76
+ description: "Cal.com port for OpenClaw",
77
+ required: true,
78
+ },
79
+ ],
80
+
81
+ docsUrl: "https://cal.com/docs",
82
+ tags: ["calendar", "scheduling", "booking", "appointments"],
83
+ maturity: "beta",
84
+
85
+ requires: ["postgresql"],
86
+ recommends: ["redis"],
87
+ conflictsWith: [],
88
+
89
+ minMemoryMB: 512,
90
+ gpuRequired: false,
91
+ };
@@ -0,0 +1,90 @@
1
+ import type { ServiceDefinition } from "../../types.js";
2
+
3
+ export const comfyuiDefinition: ServiceDefinition = {
4
+ id: "comfyui",
5
+ name: "ComfyUI",
6
+ description:
7
+ "Node-based visual workflow editor for Stable Diffusion and other generative AI models. Design complex image/video generation pipelines with a drag-and-drop graph UI and a powerful REST API.",
8
+ category: "ai",
9
+ icon: "🎨",
10
+
11
+ image: "ghcr.io/ai-dock/comfyui",
12
+ imageTag: "latest",
13
+ ports: [
14
+ {
15
+ host: 8188,
16
+ container: 8188,
17
+ description: "ComfyUI Web UI & API",
18
+ exposed: true,
19
+ },
20
+ ],
21
+ volumes: [
22
+ {
23
+ name: "comfyui-models",
24
+ containerPath: "/opt/ComfyUI/models",
25
+ description: "Model checkpoint, LoRA, VAE, and ControlNet files",
26
+ },
27
+ {
28
+ name: "comfyui-output",
29
+ containerPath: "/opt/ComfyUI/output",
30
+ description: "Generated images and output files",
31
+ },
32
+ {
33
+ name: "comfyui-custom-nodes",
34
+ containerPath: "/opt/ComfyUI/custom_nodes",
35
+ description: "Community custom node extensions",
36
+ },
37
+ ],
38
+ environment: [],
39
+ healthcheck: {
40
+ test: "curl -f http://localhost:8188/system_stats || exit 1",
41
+ interval: "30s",
42
+ timeout: "10s",
43
+ retries: 3,
44
+ startPeriod: "60s",
45
+ },
46
+ dependsOn: [],
47
+ restartPolicy: "unless-stopped",
48
+ networks: ["openclaw-network"],
49
+
50
+ skills: [{ skillId: "comfyui-generate", autoInstall: true }],
51
+ openclawEnvVars: [
52
+ {
53
+ key: "COMFYUI_HOST",
54
+ defaultValue: "comfyui",
55
+ secret: false,
56
+ description: "ComfyUI hostname for OpenClaw",
57
+ required: true,
58
+ },
59
+ {
60
+ key: "COMFYUI_PORT",
61
+ defaultValue: "8188",
62
+ secret: false,
63
+ description: "ComfyUI API port for OpenClaw",
64
+ required: true,
65
+ },
66
+ ],
67
+
68
+ docsUrl: "https://github.com/comfyanonymous/ComfyUI",
69
+ selfHostedDocsUrl: "https://github.com/comfyanonymous/ComfyUI",
70
+ tags: [
71
+ "image-generation",
72
+ "ai-art",
73
+ "stable-diffusion",
74
+ "workflow",
75
+ "node-editor",
76
+ "text-to-image",
77
+ "comfyui",
78
+ ],
79
+ maturity: "experimental",
80
+
81
+ requires: [],
82
+ recommends: ["ollama"],
83
+ conflictsWith: [],
84
+
85
+ removalWarning:
86
+ "⚠️ GPU INFRASTRUCTURE REQUIRED: ComfyUI requires an NVIDIA GPU with CUDA support and the NVIDIA Container Toolkit (nvidia-docker2) installed on the host. Without GPU acceleration, image generation will be extremely slow (minutes per image). Ensure your deployment target has adequate GPU resources (minimum 4 GB VRAM, 8 GB+ recommended) before adding this service.",
87
+
88
+ minMemoryMB: 4096,
89
+ gpuRequired: true,
90
+ };
@@ -0,0 +1,163 @@
1
+ import type { ServiceDefinition } from "../../types.js";
2
+
3
+ export const desktopEnvironmentDefinition: ServiceDefinition = {
4
+ id: "desktop-environment",
5
+ name: "Desktop Environment",
6
+ description:
7
+ "Isolated KasmVNC-based Linux desktop that gives AI agents full computer-use capabilities — screen vision, mouse/keyboard control, file management, and application launching (VS Code, Chrome, Firefox). OBS Studio is pre-installed for optional recording or live-streaming.",
8
+ category: "desktop",
9
+ icon: "🖥️",
10
+
11
+ image: "kasmweb/core-ubuntu-jammy",
12
+ imageTag: "1.16.0",
13
+ ports: [
14
+ {
15
+ host: 6901,
16
+ container: 6901,
17
+ description: "KasmVNC web interface (browser-based desktop access)",
18
+ exposed: true,
19
+ },
20
+ {
21
+ host: 5900,
22
+ container: 5900,
23
+ description: "VNC protocol port (native VNC clients)",
24
+ exposed: false,
25
+ },
26
+ {
27
+ host: 4455,
28
+ container: 4455,
29
+ description: "OBS WebSocket control port (when OBS is running)",
30
+ exposed: false,
31
+ },
32
+ ],
33
+ volumes: [
34
+ {
35
+ name: "desktop-config",
36
+ containerPath: "/home/kasm-user",
37
+ description: "Desktop user home with config persistence",
38
+ },
39
+ {
40
+ name: "desktop-workspace",
41
+ containerPath: "/home/kasm-user/workspace",
42
+ description: "Shared workspace directory for files and projects",
43
+ },
44
+ ],
45
+ environment: [
46
+ {
47
+ key: "VNC_PW",
48
+ defaultValue: "changeme",
49
+ secret: true,
50
+ description: "Password for VNC / KasmVNC web access",
51
+ required: true,
52
+ },
53
+ {
54
+ key: "VNC_RESOLUTION",
55
+ defaultValue: "1920x1080",
56
+ secret: false,
57
+ description: "Desktop screen resolution (WidthxHeight)",
58
+ required: false,
59
+ },
60
+ {
61
+ key: "SSL_VNC_ONLY",
62
+ defaultValue: "false",
63
+ secret: false,
64
+ description:
65
+ "When false, allows HTTP/WS connections without SSL (useful for local/Docker networking)",
66
+ required: false,
67
+ },
68
+ {
69
+ key: "OBS_WS_PORT",
70
+ defaultValue: "4455",
71
+ secret: false,
72
+ description: "OBS WebSocket port (used when OBS is launched manually)",
73
+ required: false,
74
+ },
75
+ {
76
+ key: "OBS_PASSWORD",
77
+ defaultValue: "changeme",
78
+ secret: true,
79
+ description: "OBS WebSocket password (used when OBS is launched manually)",
80
+ required: false,
81
+ },
82
+ ],
83
+ healthcheck: {
84
+ test: "curl -sfk https://localhost:6901/ > /dev/null || curl -sf http://localhost:6901/ > /dev/null || exit 1",
85
+ interval: "10s",
86
+ timeout: "10s",
87
+ retries: 6,
88
+ startPeriod: "60s",
89
+ },
90
+ dependsOn: [],
91
+ restartPolicy: "unless-stopped",
92
+ networks: ["openclaw-network"],
93
+
94
+ deploy: {
95
+ resources: {
96
+ limits: { cpus: "4.0", memory: "8G" },
97
+ reservations: { cpus: "2.0", memory: "4G" },
98
+ },
99
+ },
100
+
101
+ skills: [{ skillId: "desktop-use", autoInstall: true }],
102
+ openclawEnvVars: [
103
+ {
104
+ key: "DESKTOP_HOST",
105
+ defaultValue: "desktop-environment",
106
+ secret: false,
107
+ description: "Hostname of the desktop-environment container",
108
+ required: true,
109
+ },
110
+ {
111
+ key: "DESKTOP_VNC_PORT",
112
+ defaultValue: "6901",
113
+ secret: false,
114
+ description: "KasmVNC web port",
115
+ required: true,
116
+ },
117
+ {
118
+ key: "DESKTOP_VNC_PASSWORD",
119
+ defaultValue: "${VNC_PW}",
120
+ secret: true,
121
+ description: "VNC password (references service password)",
122
+ required: true,
123
+ },
124
+ ],
125
+
126
+ docsUrl: "https://www.kasmweb.com/docs/latest/index.html",
127
+ tags: [
128
+ "computer-use",
129
+ "vnc",
130
+ "desktop",
131
+ "screen-capture",
132
+ "automation",
133
+ "obs",
134
+ "kasm",
135
+ ],
136
+ maturity: "experimental",
137
+
138
+ requires: [],
139
+ recommends: ["stream-gateway"],
140
+ conflictsWith: [],
141
+
142
+ removalWarning:
143
+ "⚠️ HEAVY RESOURCE USAGE: The desktop environment requires at least 4 GB RAM (8 GB recommended) and 2+ CPU cores. It runs a full Linux desktop with XFCE inside KasmVNC. OBS Studio is pre-installed but NOT auto-started — launch it manually or via agent tools when needed. Ensure your deployment target can handle these resources alongside other services.",
144
+ minMemoryMB: 4096,
145
+ gpuRequired: false,
146
+
147
+ nativeSupported: true,
148
+ nativeRecipes: [
149
+ {
150
+ platform: "linux",
151
+ installSteps: [
152
+ "command -v Xvfb >/dev/null 2>&1 || (command -v apt-get >/dev/null 2>&1 && sudo apt-get update -qq && sudo apt-get install -y -qq xvfb xfce4 xfce4-terminal tigervnc-standalone-server scrot xdotool xclip)",
153
+ "command -v obs >/dev/null 2>&1 || (sudo add-apt-repository -y ppa:obsproject/obs-studio && sudo apt-get update -qq && sudo apt-get install -y -qq obs-studio)",
154
+ ],
155
+ startCommand:
156
+ "vncserver :1 -geometry 1920x1080 -depth 24 -localhost no 2>/dev/null || Xvfb :1 -screen 0 1920x1080x24 &",
157
+ stopCommand: "vncserver -kill :1 2>/dev/null; killall Xvfb 2>/dev/null",
158
+ configPath: "/etc/vnc/xstartup",
159
+ configTemplate:
160
+ "#!/bin/sh\n# Generated for OpenClaw bare-metal desktop\nexport DISPLAY=:1\nstartxfce4 &\n",
161
+ },
162
+ ],
163
+ };
@@ -53,7 +53,22 @@ export const grafanaDefinition: ServiceDefinition = {
53
53
  networks: ["openclaw-network"],
54
54
 
55
55
  skills: [],
56
- openclawEnvVars: [],
56
+ openclawEnvVars: [
57
+ {
58
+ key: "GRAFANA_HOST",
59
+ defaultValue: "grafana",
60
+ secret: false,
61
+ description: "Grafana hostname",
62
+ required: false,
63
+ },
64
+ {
65
+ key: "GRAFANA_PORT",
66
+ defaultValue: "3000",
67
+ secret: false,
68
+ description: "Grafana internal port",
69
+ required: false,
70
+ },
71
+ ],
57
72
 
58
73
  docsUrl: "https://grafana.com/docs/grafana/latest/",
59
74
  tags: ["dashboards", "visualization", "metrics", "monitoring"],
@@ -3,13 +3,16 @@ export { appflowyDefinition } from "./appflowy.js";
3
3
  export { beszelDefinition } from "./beszel.js";
4
4
  export { browserlessDefinition } from "./browserless.js";
5
5
  export { caddyDefinition } from "./caddy.js";
6
+ export { calComDefinition } from "./cal-com.js";
6
7
  export { chromadbDefinition } from "./chromadb.js";
7
8
  export { claudeCodeDefinition } from "./claude-code.js";
8
9
  export { codeServerDefinition } from "./code-server.js";
10
+ export { comfyuiDefinition } from "./comfyui.js";
9
11
  export { convexDefinition } from "./convex.js";
10
12
  export { convexDashboardDefinition } from "./convex-dashboard.js";
11
13
  export { codexDefinition } from "./codex.js";
12
14
  export { coolifyDefinition } from "./coolify.js";
15
+ export { desktopEnvironmentDefinition } from "./desktop-environment.js";
13
16
  export { difyDefinition } from "./dify.js";
14
17
  export { docsgptDefinition } from "./docsgpt.js";
15
18
  export { dokployDefinition } from "./dokploy.js";
@@ -37,6 +40,7 @@ export { minioDefinition } from "./minio.js";
37
40
  export { mixpostDefinition } from "./mixpost.js";
38
41
  export { motionCanvasDefinition } from "./motion-canvas.js";
39
42
  export { n8nDefinition } from "./n8n.js";
43
+ export { neo4jDefinition } from "./neo4j.js";
40
44
  export { nocodbDefinition } from "./nocodb.js";
41
45
  export { ntfyDefinition } from "./ntfy.js";
42
46
  export { ollamaDefinition } from "./ollama.js";
@@ -57,6 +61,7 @@ export { rocketchatDefinition } from "./rocketchat.js";
57
61
  export { searxngDefinition } from "./searxng.js";
58
62
  export { stableDiffusionDefinition } from "./stable-diffusion.js";
59
63
  export { steelBrowserDefinition } from "./steel-browser.js";
64
+ export { streamGatewayDefinition } from "./stream-gateway.js";
60
65
  export { tailscaleDefinition } from "./tailscale.js";
61
66
  export { temporalDefinition } from "./temporal.js";
62
67
  export { traefikDefinition } from "./traefik.js";
@@ -67,6 +72,7 @@ export { valkeyDefinition } from "./valkey.js";
67
72
  export { watchtowerDefinition } from "./watchtower.js";
68
73
  export { weaviateDefinition } from "./weaviate.js";
69
74
  export { whisperDefinition } from "./whisper.js";
75
+ export { xyopsDefinition } from "./xyops.js";
70
76
 
71
77
  import type { ServiceDefinition } from "../../types.js";
72
78
  import { anythingLlmDefinition } from "./anything-llm.js";
@@ -74,13 +80,16 @@ import { appflowyDefinition } from "./appflowy.js";
74
80
  import { beszelDefinition } from "./beszel.js";
75
81
  import { browserlessDefinition } from "./browserless.js";
76
82
  import { caddyDefinition } from "./caddy.js";
83
+ import { calComDefinition } from "./cal-com.js";
77
84
  import { chromadbDefinition } from "./chromadb.js";
78
85
  import { claudeCodeDefinition } from "./claude-code.js";
79
86
  import { codeServerDefinition } from "./code-server.js";
87
+ import { comfyuiDefinition } from "./comfyui.js";
80
88
  import { convexDefinition } from "./convex.js";
81
89
  import { convexDashboardDefinition } from "./convex-dashboard.js";
82
90
  import { codexDefinition } from "./codex.js";
83
91
  import { coolifyDefinition } from "./coolify.js";
92
+ import { desktopEnvironmentDefinition } from "./desktop-environment.js";
84
93
  import { difyDefinition } from "./dify.js";
85
94
  import { docsgptDefinition } from "./docsgpt.js";
86
95
  import { dokployDefinition } from "./dokploy.js";
@@ -108,6 +117,7 @@ import { minioDefinition } from "./minio.js";
108
117
  import { mixpostDefinition } from "./mixpost.js";
109
118
  import { motionCanvasDefinition } from "./motion-canvas.js";
110
119
  import { n8nDefinition } from "./n8n.js";
120
+ import { neo4jDefinition } from "./neo4j.js";
111
121
  import { nocodbDefinition } from "./nocodb.js";
112
122
  import { ntfyDefinition } from "./ntfy.js";
113
123
  import { ollamaDefinition } from "./ollama.js";
@@ -128,6 +138,7 @@ import { rocketchatDefinition } from "./rocketchat.js";
128
138
  import { searxngDefinition } from "./searxng.js";
129
139
  import { stableDiffusionDefinition } from "./stable-diffusion.js";
130
140
  import { steelBrowserDefinition } from "./steel-browser.js";
141
+ import { streamGatewayDefinition } from "./stream-gateway.js";
131
142
  import { tailscaleDefinition } from "./tailscale.js";
132
143
  import { temporalDefinition } from "./temporal.js";
133
144
  import { traefikDefinition } from "./traefik.js";
@@ -138,6 +149,7 @@ import { valkeyDefinition } from "./valkey.js";
138
149
  import { watchtowerDefinition } from "./watchtower.js";
139
150
  import { weaviateDefinition } from "./weaviate.js";
140
151
  import { whisperDefinition } from "./whisper.js";
152
+ import { xyopsDefinition } from "./xyops.js";
141
153
 
142
154
  export const allServiceDefinitions: ServiceDefinition[] = [
143
155
  redisDefinition,
@@ -173,6 +185,7 @@ export const allServiceDefinitions: ServiceDefinition[] = [
173
185
  rocketchatDefinition,
174
186
  mattermostDefinition,
175
187
  stableDiffusionDefinition,
188
+ comfyuiDefinition,
176
189
  playwrightServerDefinition,
177
190
  openWebuiDefinition,
178
191
  librechatDefinition,
@@ -209,4 +222,9 @@ export const allServiceDefinitions: ServiceDefinition[] = [
209
222
  lasuiteMeetBackendDefinition,
210
223
  lasuiteMeetFrontendDefinition,
211
224
  lasuiteMeetAgentsDefinition,
225
+ desktopEnvironmentDefinition,
226
+ streamGatewayDefinition,
227
+ neo4jDefinition,
228
+ calComDefinition,
229
+ xyopsDefinition,
212
230
  ];
@@ -0,0 +1,96 @@
1
+ import type { ServiceDefinition } from "../../types.js";
2
+
3
+ export const neo4jDefinition: ServiceDefinition = {
4
+ id: "neo4j",
5
+ name: "Neo4j",
6
+ description:
7
+ "Graph database platform for connected data, enabling knowledge graphs, fraud detection, and relationship-driven queries with the Cypher query language.",
8
+ category: "database",
9
+ icon: "🔵",
10
+
11
+ image: "neo4j",
12
+ imageTag: "5-community",
13
+ ports: [
14
+ {
15
+ host: 7474,
16
+ container: 7474,
17
+ description: "Neo4j Browser (HTTP)",
18
+ exposed: true,
19
+ },
20
+ {
21
+ host: 7687,
22
+ container: 7687,
23
+ description: "Bolt protocol",
24
+ exposed: true,
25
+ },
26
+ ],
27
+ volumes: [
28
+ {
29
+ name: "neo4j-data",
30
+ containerPath: "/data",
31
+ description: "Persistent Neo4j data",
32
+ },
33
+ ],
34
+ environment: [
35
+ {
36
+ key: "NEO4J_AUTH",
37
+ defaultValue: "neo4j/${NEO4J_PASSWORD}",
38
+ secret: true,
39
+ description: "Neo4j authentication credentials (user/password)",
40
+ required: true,
41
+ },
42
+ ],
43
+ healthcheck: {
44
+ test: "wget -q --spider http://localhost:7474 || exit 1",
45
+ interval: "30s",
46
+ timeout: "10s",
47
+ retries: 3,
48
+ startPeriod: "30s",
49
+ },
50
+ dependsOn: [],
51
+ restartPolicy: "unless-stopped",
52
+ networks: ["openclaw-network"],
53
+
54
+ skills: [],
55
+ openclawEnvVars: [
56
+ {
57
+ key: "NEO4J_HOST",
58
+ defaultValue: "neo4j",
59
+ secret: false,
60
+ description: "Neo4j hostname for OpenClaw",
61
+ required: true,
62
+ },
63
+ {
64
+ key: "NEO4J_BOLT_PORT",
65
+ defaultValue: "7687",
66
+ secret: false,
67
+ description: "Neo4j Bolt protocol port for OpenClaw",
68
+ required: true,
69
+ },
70
+ {
71
+ key: "NEO4J_HTTP_PORT",
72
+ defaultValue: "7474",
73
+ secret: false,
74
+ description: "Neo4j HTTP port for OpenClaw",
75
+ required: true,
76
+ },
77
+ {
78
+ key: "NEO4J_PASSWORD",
79
+ defaultValue: "",
80
+ secret: true,
81
+ description: "Neo4j password for OpenClaw",
82
+ required: true,
83
+ },
84
+ ],
85
+
86
+ docsUrl: "https://neo4j.com/docs/",
87
+ tags: ["graph", "database", "knowledge-graph", "cypher"],
88
+ maturity: "stable",
89
+
90
+ requires: [],
91
+ recommends: [],
92
+ conflictsWith: [],
93
+
94
+ minMemoryMB: 512,
95
+ gpuRequired: false,
96
+ };