@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.
- package/dist/composer.mjs.map +1 -1
- package/dist/generate.d.mts.map +1 -1
- package/dist/generate.mjs +11 -0
- package/dist/generate.mjs.map +1 -1
- package/dist/generators/env.d.mts.map +1 -1
- package/dist/generators/env.mjs +21 -1
- package/dist/generators/env.mjs.map +1 -1
- package/dist/generators/get-shit-done.d.mts +10 -0
- package/dist/generators/get-shit-done.d.mts.map +1 -0
- package/dist/generators/get-shit-done.mjs +38 -0
- package/dist/generators/get-shit-done.mjs.map +1 -0
- package/dist/generators/openclaw-json.d.mts +11 -0
- package/dist/generators/openclaw-json.d.mts.map +1 -0
- package/dist/generators/openclaw-json.mjs +410 -0
- package/dist/generators/openclaw-json.mjs.map +1 -0
- package/dist/index.d.mts +2 -2
- package/dist/resolver.mjs +3 -1
- package/dist/resolver.mjs.map +1 -1
- package/dist/schema.d.mts +81 -1
- package/dist/schema.d.mts.map +1 -1
- package/dist/schema.mjs +28 -2
- package/dist/schema.mjs.map +1 -1
- package/dist/services/definitions/authentik.d.mts +7 -0
- package/dist/services/definitions/authentik.d.mts.map +1 -0
- package/dist/services/definitions/authentik.mjs +105 -0
- package/dist/services/definitions/authentik.mjs.map +1 -0
- package/dist/services/definitions/crowdsec.d.mts +7 -0
- package/dist/services/definitions/crowdsec.d.mts.map +1 -0
- package/dist/services/definitions/crowdsec.mjs +62 -0
- package/dist/services/definitions/crowdsec.mjs.map +1 -0
- package/dist/services/definitions/ghost.d.mts +7 -0
- package/dist/services/definitions/ghost.d.mts.map +1 -0
- package/dist/services/definitions/ghost.mjs +58 -0
- package/dist/services/definitions/ghost.mjs.map +1 -0
- package/dist/services/definitions/homeassistant.d.mts +7 -0
- package/dist/services/definitions/homeassistant.d.mts.map +1 -0
- package/dist/services/definitions/homeassistant.mjs +61 -0
- package/dist/services/definitions/homeassistant.mjs.map +1 -0
- package/dist/services/definitions/immich.d.mts +7 -0
- package/dist/services/definitions/immich.d.mts.map +1 -0
- package/dist/services/definitions/immich.mjs +92 -0
- package/dist/services/definitions/immich.mjs.map +1 -0
- package/dist/services/definitions/index.d.mts +14 -1
- package/dist/services/definitions/index.d.mts.map +1 -1
- package/dist/services/definitions/index.mjs +27 -1
- package/dist/services/definitions/index.mjs.map +1 -1
- package/dist/services/definitions/jellyfin.d.mts +7 -0
- package/dist/services/definitions/jellyfin.d.mts.map +1 -0
- package/dist/services/definitions/jellyfin.mjs +62 -0
- package/dist/services/definitions/jellyfin.mjs.map +1 -0
- package/dist/services/definitions/jenkins.d.mts +7 -0
- package/dist/services/definitions/jenkins.d.mts.map +1 -0
- package/dist/services/definitions/jenkins.mjs +62 -0
- package/dist/services/definitions/jenkins.mjs.map +1 -0
- package/dist/services/definitions/loki.d.mts +7 -0
- package/dist/services/definitions/loki.d.mts.map +1 -0
- package/dist/services/definitions/loki.mjs +51 -0
- package/dist/services/definitions/loki.mjs.map +1 -0
- package/dist/services/definitions/milvus.d.mts +7 -0
- package/dist/services/definitions/milvus.d.mts.map +1 -0
- package/dist/services/definitions/milvus.mjs +75 -0
- package/dist/services/definitions/milvus.mjs.map +1 -0
- package/dist/services/definitions/nextcloud.d.mts +7 -0
- package/dist/services/definitions/nextcloud.d.mts.map +1 -0
- package/dist/services/definitions/nextcloud.mjs +80 -0
- package/dist/services/definitions/nextcloud.mjs.map +1 -0
- package/dist/services/definitions/pentagi.mjs.map +1 -1
- package/dist/services/definitions/pentestagent.mjs.map +1 -1
- package/dist/services/definitions/signoz.d.mts +7 -0
- package/dist/services/definitions/signoz.d.mts.map +1 -0
- package/dist/services/definitions/signoz.mjs +54 -0
- package/dist/services/definitions/signoz.mjs.map +1 -0
- package/dist/services/definitions/supabase.d.mts +7 -0
- package/dist/services/definitions/supabase.d.mts.map +1 -0
- package/dist/services/definitions/supabase.mjs +69 -0
- package/dist/services/definitions/supabase.mjs.map +1 -0
- package/dist/services/definitions/vaultwarden.d.mts +7 -0
- package/dist/services/definitions/vaultwarden.d.mts.map +1 -0
- package/dist/services/definitions/vaultwarden.mjs +63 -0
- package/dist/services/definitions/vaultwarden.mjs.map +1 -0
- package/dist/types.d.mts +6 -2
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +1 -1
- package/src/composer.ts +1 -1
- package/src/generate.ts +15 -0
- package/src/generators/env.ts +26 -0
- package/src/generators/get-shit-done.ts +43 -0
- package/src/generators/openclaw-json.ts +406 -0
- package/src/index.ts +2 -0
- package/src/resolver.ts +2 -0
- package/src/schema.ts +23 -0
- package/src/services/definitions/authentik.ts +106 -0
- package/src/services/definitions/crowdsec.ts +66 -0
- package/src/services/definitions/ghost.ts +60 -0
- package/src/services/definitions/homeassistant.ts +65 -0
- package/src/services/definitions/immich.ts +93 -0
- package/src/services/definitions/index.ts +39 -0
- package/src/services/definitions/jellyfin.ts +66 -0
- package/src/services/definitions/jenkins.ts +67 -0
- package/src/services/definitions/loki.ts +53 -0
- package/src/services/definitions/milvus.ts +84 -0
- package/src/services/definitions/nextcloud.ts +81 -0
- package/src/services/definitions/pentagi.ts +2 -1
- package/src/services/definitions/pentestagent.ts +2 -1
- package/src/services/definitions/signoz.ts +54 -0
- package/src/services/definitions/supabase.ts +73 -0
- package/src/services/definitions/vaultwarden.ts +68 -0
- 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:
|
|
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:
|
|
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
|
|