@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.
- package/dist/bare-metal-partition.d.mts.map +1 -1
- package/dist/bare-metal-partition.mjs +1 -0
- package/dist/bare-metal-partition.mjs.map +1 -1
- package/dist/composer.d.mts.map +1 -1
- package/dist/composer.mjs +11 -1
- package/dist/composer.mjs.map +1 -1
- package/dist/errors.d.mts +17 -0
- package/dist/errors.d.mts.map +1 -0
- package/dist/errors.mjs +24 -0
- package/dist/errors.mjs.map +1 -0
- package/dist/generate.d.mts +4 -3
- package/dist/generate.d.mts.map +1 -1
- package/dist/generate.mjs +13 -5
- package/dist/generate.mjs.map +1 -1
- package/dist/generators/traefik.d.mts +19 -0
- package/dist/generators/traefik.d.mts.map +1 -0
- package/dist/generators/traefik.mjs +86 -0
- package/dist/generators/traefik.mjs.map +1 -0
- package/dist/generators/traefik.test.d.mts +1 -0
- package/dist/generators/traefik.test.mjs +69 -0
- package/dist/generators/traefik.test.mjs.map +1 -0
- package/dist/index.d.mts +4 -2
- package/dist/index.mjs +4 -2
- package/dist/migrations.d.mts +14 -0
- package/dist/migrations.d.mts.map +1 -0
- package/dist/migrations.mjs +33 -0
- package/dist/migrations.mjs.map +1 -0
- package/dist/migrations.test.d.mts +1 -0
- package/dist/migrations.test.mjs +42 -0
- package/dist/migrations.test.mjs.map +1 -0
- package/dist/resolver.d.mts +6 -1
- package/dist/resolver.d.mts.map +1 -1
- package/dist/resolver.mjs +21 -3
- package/dist/resolver.mjs.map +1 -1
- package/dist/schema.d.mts +9 -0
- package/dist/schema.d.mts.map +1 -1
- package/dist/schema.mjs +4 -1
- package/dist/schema.mjs.map +1 -1
- package/dist/services/definitions/caddy.mjs +20 -1
- package/dist/services/definitions/caddy.mjs.map +1 -1
- package/dist/services/definitions/cal-com.d.mts +7 -0
- package/dist/services/definitions/cal-com.d.mts.map +1 -0
- package/dist/services/definitions/cal-com.mjs +88 -0
- package/dist/services/definitions/cal-com.mjs.map +1 -0
- package/dist/services/definitions/comfyui.d.mts +7 -0
- package/dist/services/definitions/comfyui.d.mts.map +1 -0
- package/dist/services/definitions/comfyui.mjs +83 -0
- package/dist/services/definitions/comfyui.mjs.map +1 -0
- package/dist/services/definitions/desktop-environment.d.mts +7 -0
- package/dist/services/definitions/desktop-environment.d.mts.map +1 -0
- package/dist/services/definitions/desktop-environment.mjs +153 -0
- package/dist/services/definitions/desktop-environment.mjs.map +1 -0
- package/dist/services/definitions/grafana.mjs +13 -1
- package/dist/services/definitions/grafana.mjs.map +1 -1
- package/dist/services/definitions/index.d.mts +7 -1
- package/dist/services/definitions/index.d.mts.map +1 -1
- package/dist/services/definitions/index.mjs +14 -2
- package/dist/services/definitions/index.mjs.map +1 -1
- package/dist/services/definitions/neo4j.d.mts +7 -0
- package/dist/services/definitions/neo4j.d.mts.map +1 -0
- package/dist/services/definitions/neo4j.mjs +91 -0
- package/dist/services/definitions/neo4j.mjs.map +1 -0
- package/dist/services/definitions/stream-gateway.d.mts +7 -0
- package/dist/services/definitions/stream-gateway.d.mts.map +1 -0
- package/dist/services/definitions/stream-gateway.mjs +133 -0
- package/dist/services/definitions/stream-gateway.mjs.map +1 -0
- package/dist/services/definitions/traefik.mjs +0 -1
- package/dist/services/definitions/traefik.mjs.map +1 -1
- package/dist/services/definitions/xyops.d.mts +7 -0
- package/dist/services/definitions/xyops.d.mts.map +1 -0
- package/dist/services/definitions/xyops.mjs +86 -0
- package/dist/services/definitions/xyops.mjs.map +1 -0
- package/dist/types.d.mts +8 -1
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs +10 -0
- package/dist/types.mjs.map +1 -1
- package/dist/validator.mjs +11 -0
- package/dist/validator.mjs.map +1 -1
- package/dist/version-manager.d.mts +1 -1
- package/dist/version-manager.d.mts.map +1 -1
- package/dist/version-manager.mjs +11 -5
- package/dist/version-manager.mjs.map +1 -1
- package/dist/version-manager.test.d.mts +1 -0
- package/dist/version-manager.test.mjs +102 -0
- package/dist/version-manager.test.mjs.map +1 -0
- package/package.json +1 -1
- package/src/__snapshots__/composer.snapshot.test.ts.snap +15 -1
- package/src/bare-metal-partition.ts +1 -0
- package/src/composer.ts +22 -1
- package/src/errors.ts +23 -0
- package/src/generate.ts +22 -4
- package/src/generators/traefik.test.ts +97 -0
- package/src/generators/traefik.ts +104 -0
- package/src/index.ts +7 -1
- package/src/migrations.test.ts +36 -0
- package/src/migrations.ts +49 -0
- package/src/resolver.ts +37 -3
- package/src/schema.ts +3 -0
- package/src/services/definitions/caddy.ts +23 -1
- package/src/services/definitions/cal-com.ts +91 -0
- package/src/services/definitions/comfyui.ts +90 -0
- package/src/services/definitions/desktop-environment.ts +163 -0
- package/src/services/definitions/grafana.ts +16 -1
- package/src/services/definitions/index.ts +18 -0
- package/src/services/definitions/neo4j.ts +96 -0
- package/src/services/definitions/stream-gateway.ts +148 -0
- package/src/services/definitions/traefik.ts +0 -2
- package/src/services/definitions/xyops.ts +94 -0
- package/src/types.ts +7 -1
- package/src/validator.ts +16 -0
- package/src/version-manager.test.ts +134 -0
- 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
|
+
};
|