diff --git a/app/Models/Service.php b/app/Models/Service.php index 2309f5485..84c047bb7 100644 --- a/app/Models/Service.php +++ b/app/Models/Service.php @@ -881,7 +881,7 @@ public function extraFields() ], ]); } - if ($SERVICE_PASSWORD_LINKDING) { + if ($SERVICE_PASSWORD_LINKDING) { $data = $data->merge([ 'Superuser Password' => [ 'key' => data_get($SERVICE_PASSWORD_LINKDING, 'key'), @@ -1118,6 +1118,40 @@ public function extraFields() } $fields->put('Sessy', $data->toArray()); break; + case $image->contains('coollabsio/openclaw'): + $data = collect([]); + $username = $this->environment_variables()->where('key', 'AUTH_USERNAME')->first(); + $password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_OPENCLAW')->first(); + $gateway_token = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_64_GATEWAYTOKEN')->first(); + if ($username) { + $data = $data->merge([ + 'Username' => [ + 'key' => data_get($username, 'key'), + 'value' => data_get($username, 'value'), + 'readonly' => true, + ], + ]); + } + if ($password) { + $data = $data->merge([ + 'Password' => [ + 'key' => data_get($password, 'key'), + 'value' => data_get($password, 'value'), + 'isPassword' => true, + ], + ]); + } + if ($gateway_token) { + $data = $data->merge([ + 'Gateway Token' => [ + 'key' => data_get($gateway_token, 'key'), + 'value' => data_get($gateway_token, 'value'), + 'isPassword' => true, + ], + ]); + } + $fields->put('Openclaw', $data->toArray()); + break; default: $data = collect([]); $admin_user = $this->environment_variables()->where('key', 'SERVICE_USER_ADMIN')->first(); diff --git a/package-lock.json b/package-lock.json index 9629c85f1..6244197fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -949,8 +949,7 @@ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@tailwindcss/forms": { "version": "0.5.10", @@ -1403,7 +1402,8 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.5.0.tgz", "integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/asynckit": { "version": "0.4.0", @@ -1556,7 +1556,6 @@ "integrity": "sha512-+kjUJnZGwzewFDw951CDWcwj35vMNf2fcj7xQWOctq1F2i1jkDdVvdFG9kM/BEChymCH36KgjnW0NsL58JYRxw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.4.1", @@ -1571,7 +1570,6 @@ "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10.0.0" } @@ -2332,6 +2330,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -2408,6 +2407,7 @@ "integrity": "sha512-wp3HqIIUc1GRyu1XrP6m2dgyE9MoCsXVsWNlohj0rjSkLf+a0jLvEyVubdg58oMk7bhjBWnFClgp8jfAa6Ak4Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "tweetnacl": "^1.0.3" } @@ -2512,7 +2512,6 @@ "integrity": "sha512-bPMmpy/5WWKHea5Y/jYAP6k74A+hvmRCQaJuJB6I/ML5JZq/KfNieUVo/3Mh7SAqn7TyFdIo6wqYHInG1MU1bQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.4.1" @@ -2557,7 +2556,8 @@ "version": "4.1.18", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/tapable": { "version": "2.3.0", @@ -2609,6 +2609,7 @@ "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -2708,6 +2709,7 @@ "integrity": "sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.26", "@vue/compiler-sfc": "3.5.26", @@ -2730,7 +2732,6 @@ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10.0.0" }, @@ -2752,7 +2753,6 @@ "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz", "integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==", "dev": true, - "peer": true, "engines": { "node": ">=0.4.0" } diff --git a/public/svgs/openclaw.svg b/public/svgs/openclaw.svg new file mode 100644 index 000000000..7bfb7fc4d --- /dev/null +++ b/public/svgs/openclaw.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/templates/compose/openclaw.yaml b/templates/compose/openclaw.yaml new file mode 100644 index 000000000..a16f24aa7 --- /dev/null +++ b/templates/compose/openclaw.yaml @@ -0,0 +1,87 @@ +# documentation: https://github.com/coollabsio/openclaw +# slogan: AI-powered coding assistant with multi-provider support and browser automation. +# category: ai +# tags: ai, coding, assistant, llm, anthropic, openai, automation +# logo: svgs/openclaw.svg +# port: 8080 + +services: + openclaw: + image: "coollabsio/openclaw:2026.2.6" + environment: + - SERVICE_FQDN_OPENCLAW_8080 + - AUTH_USERNAME=$SERVICE_USER_OPENCLAW + - AUTH_PASSWORD=$SERVICE_PASSWORD_OPENCLAW + - OPENCLAW_GATEWAY_TOKEN=$SERVICE_PASSWORD_64_GATEWAYTOKEN + - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} + - OPENAI_API_KEY=${OPENAI_API_KEY} + - OPENROUTER_API_KEY=${OPENROUTER_API_KEY} + - GEMINI_API_KEY=${GEMINI_API_KEY} + - XAI_API_KEY=${XAI_API_KEY} + - GROQ_API_KEY=${GROQ_API_KEY} + - MISTRAL_API_KEY=${MISTRAL_API_KEY} + - CEREBRAS_API_KEY=${CEREBRAS_API_KEY} + - VENICE_API_KEY=${VENICE_API_KEY} + - MOONSHOT_API_KEY=${MOONSHOT_API_KEY} + - KIMI_API_KEY=${KIMI_API_KEY} + - MINIMAX_API_KEY=${MINIMAX_API_KEY} + - ZAI_API_KEY=${ZAI_API_KEY} + - AI_GATEWAY_API_KEY=${AI_GATEWAY_API_KEY} + - OPENCODE_API_KEY=${OPENCODE_API_KEY} + - SYNTHETIC_API_KEY=${SYNTHETIC_API_KEY} + - COPILOT_GITHUB_TOKEN=${COPILOT_GITHUB_TOKEN} + - XIAOMI_API_KEY=${XIAOMI_API_KEY} + - OPENCLAW_PRIMARY_MODEL=${OPENCLAW_PRIMARY_MODEL} + - DEEPGRAM_API_KEY=${DEEPGRAM_API_KEY} + - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} + - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} + - AWS_REGION=${AWS_REGION:-us-east-1} + - AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN} + - BEDROCK_PROVIDER_FILTER=${BEDROCK_PROVIDER_FILTER:-anthropic} + - OLLAMA_BASE_URL=${OLLAMA_BASE_URL} + - PORT=8080 + - OPENCLAW_GATEWAY_PORT=18789 + - OPENCLAW_GATEWAY_BIND=${OPENCLAW_GATEWAY_BIND:-loopback} + - OPENCLAW_STATE_DIR=/data/.openclaw + - OPENCLAW_WORKSPACE_DIR=/data/workspace + - BROWSER_CDP_URL=http://browser:9223 + - BROWSER_DEFAULT_PROFILE=${BROWSER_DEFAULT_PROFILE:-openclaw} + - BROWSER_EVALUATE_ENABLED=${BROWSER_EVALUATE_ENABLED:-true} + - BROWSER_SNAPSHOT_MODE=${BROWSER_SNAPSHOT_MODE:-efficient} + - BROWSER_REMOTE_TIMEOUT_MS=${BROWSER_REMOTE_TIMEOUT_MS:-1500} + - BROWSER_REMOTE_HANDSHAKE_TIMEOUT_MS=${BROWSER_REMOTE_HANDSHAKE_TIMEOUT_MS:-3000} + - HOOKS_ENABLED=${HOOKS_ENABLED:-false} + - HOOKS_PATH=${HOOKS_PATH:-/hooks} + - MOONSHOT_BASE_URL=${MOONSHOT_BASE_URL:-https://api.moonshot.ai/v1} + - KIMI_BASE_URL=${KIMI_BASE_URL:-https://api.moonshot.ai/anthropic} + - TELEGRAM_BOT_TOKEN=$TELEGRAM_BOT_TOKEN + - DISCORD_BOT_TOKEN=$DISCORD_BOT_TOKEN + - SLACK_BOT_TOKEN=$SLACK_BOT_TOKEN + - SLACK_APP_TOKEN=$SLACK_APP_TOKEN + - WHATSAPP_ENABLED=$WHATSAPP_ENABLED + - OPENCLAW_DOCKER_APT_PACKAGES=$OPENCLAW_DOCKER_APT_PACKAGES + volumes: + - "openclaw-data:/data" + depends_on: + browser: + condition: service_healthy + healthcheck: + test: ["CMD", "curl", "-sf", "http://127.0.0.1:8080/healthz"] + interval: 10s + timeout: 10s + retries: 5 + browser: + image: "coollabsio/openclaw-browser:latest" + environment: + - PUID=1000 + - PGID=1000 + - TZ=Etc/UTC + - CHROME_CLI=--remote-debugging-port=9222 + volumes: + - "browser-data:/config" + shm_size: 2g + healthcheck: + test: ["CMD-SHELL", "bash -c ':> /dev/tcp/127.0.0.1/9222' || exit 1"] + interval: 5s + timeout: 5s + retries: 10 diff --git a/templates/service-templates-latest.json b/templates/service-templates-latest.json index 6c84a937e..cc5767672 100644 --- a/templates/service-templates-latest.json +++ b/templates/service-templates-latest.json @@ -3396,6 +3396,24 @@ "minversion": "0.0.0", "port": "8080" }, + "openclaw": { + "documentation": "https://github.com/coollabsio/openclaw?utm_source=coolify.io", + "slogan": "AI-powered coding assistant with multi-provider support and browser automation.", + "compose": "c2VydmljZXM6CiAgb3BlbmNsYXc6CiAgICBpbWFnZTogJ2Nvb2xsYWJzaW8vb3BlbmNsYXc6MjAyNi4yLjYnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fT1BFTkNMQVdfODA4MAogICAgICAtIEFVVEhfVVNFUk5BTUU9JFNFUlZJQ0VfVVNFUl9PUEVOQ0xBVwogICAgICAtIEFVVEhfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfT1BFTkNMQVcKICAgICAgLSBPUEVOQ0xBV19HQVRFV0FZX1RPS0VOPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0dBVEVXQVlUT0tFTgogICAgICAtICdBTlRIUk9QSUNfQVBJX0tFWT0ke0FOVEhST1BJQ19BUElfS0VZfScKICAgICAgLSAnT1BFTkFJX0FQSV9LRVk9JHtPUEVOQUlfQVBJX0tFWX0nCiAgICAgIC0gJ09QRU5ST1VURVJfQVBJX0tFWT0ke09QRU5ST1VURVJfQVBJX0tFWX0nCiAgICAgIC0gJ0dFTUlOSV9BUElfS0VZPSR7R0VNSU5JX0FQSV9LRVl9JwogICAgICAtICdYQUlfQVBJX0tFWT0ke1hBSV9BUElfS0VZfScKICAgICAgLSAnR1JPUV9BUElfS0VZPSR7R1JPUV9BUElfS0VZfScKICAgICAgLSAnTUlTVFJBTF9BUElfS0VZPSR7TUlTVFJBTF9BUElfS0VZfScKICAgICAgLSAnQ0VSRUJSQVNfQVBJX0tFWT0ke0NFUkVCUkFTX0FQSV9LRVl9JwogICAgICAtICdWRU5JQ0VfQVBJX0tFWT0ke1ZFTklDRV9BUElfS0VZfScKICAgICAgLSAnTU9PTlNIT1RfQVBJX0tFWT0ke01PT05TSE9UX0FQSV9LRVl9JwogICAgICAtICdLSU1JX0FQSV9LRVk9JHtLSU1JX0FQSV9LRVl9JwogICAgICAtICdNSU5JTUFYX0FQSV9LRVk9JHtNSU5JTUFYX0FQSV9LRVl9JwogICAgICAtICdaQUlfQVBJX0tFWT0ke1pBSV9BUElfS0VZfScKICAgICAgLSAnQUlfR0FURVdBWV9BUElfS0VZPSR7QUlfR0FURVdBWV9BUElfS0VZfScKICAgICAgLSAnT1BFTkNPREVfQVBJX0tFWT0ke09QRU5DT0RFX0FQSV9LRVl9JwogICAgICAtICdTWU5USEVUSUNfQVBJX0tFWT0ke1NZTlRIRVRJQ19BUElfS0VZfScKICAgICAgLSAnQ09QSUxPVF9HSVRIVUJfVE9LRU49JHtDT1BJTE9UX0dJVEhVQl9UT0tFTn0nCiAgICAgIC0gJ1hJQU9NSV9BUElfS0VZPSR7WElBT01JX0FQSV9LRVl9JwogICAgICAtICdPUEVOQ0xBV19QUklNQVJZX01PREVMPSR7T1BFTkNMQVdfUFJJTUFSWV9NT0RFTH0nCiAgICAgIC0gJ0RFRVBHUkFNX0FQSV9LRVk9JHtERUVQR1JBTV9BUElfS0VZfScKICAgICAgLSAnQVdTX0FDQ0VTU19LRVlfSUQ9JHtBV1NfQUNDRVNTX0tFWV9JRH0nCiAgICAgIC0gJ0FXU19TRUNSRVRfQUNDRVNTX0tFWT0ke0FXU19TRUNSRVRfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ0FXU19SRUdJT049JHtBV1NfUkVHSU9OOi11cy1lYXN0LTF9JwogICAgICAtICdBV1NfU0VTU0lPTl9UT0tFTj0ke0FXU19TRVNTSU9OX1RPS0VOfScKICAgICAgLSAnQkVEUk9DS19QUk9WSURFUl9GSUxURVI9JHtCRURST0NLX1BST1ZJREVSX0ZJTFRFUjotYW50aHJvcGljfScKICAgICAgLSAnT0xMQU1BX0JBU0VfVVJMPSR7T0xMQU1BX0JBU0VfVVJMfScKICAgICAgLSBQT1JUPTgwODAKICAgICAgLSBPUEVOQ0xBV19HQVRFV0FZX1BPUlQ9MTg3ODkKICAgICAgLSAnT1BFTkNMQVdfR0FURVdBWV9CSU5EPSR7T1BFTkNMQVdfR0FURVdBWV9CSU5EOi1sb29wYmFja30nCiAgICAgIC0gT1BFTkNMQVdfU1RBVEVfRElSPS9kYXRhLy5vcGVuY2xhdwogICAgICAtIE9QRU5DTEFXX1dPUktTUEFDRV9ESVI9L2RhdGEvd29ya3NwYWNlCiAgICAgIC0gJ0JST1dTRVJfQ0RQX1VSTD1odHRwOi8vYnJvd3Nlcjo5MjIzJwogICAgICAtICdCUk9XU0VSX0RFRkFVTFRfUFJPRklMRT0ke0JST1dTRVJfREVGQVVMVF9QUk9GSUxFOi1vcGVuY2xhd30nCiAgICAgIC0gJ0JST1dTRVJfRVZBTFVBVEVfRU5BQkxFRD0ke0JST1dTRVJfRVZBTFVBVEVfRU5BQkxFRDotdHJ1ZX0nCiAgICAgIC0gJ0JST1dTRVJfU05BUFNIT1RfTU9ERT0ke0JST1dTRVJfU05BUFNIT1RfTU9ERTotZWZmaWNpZW50fScKICAgICAgLSAnQlJPV1NFUl9SRU1PVEVfVElNRU9VVF9NUz0ke0JST1dTRVJfUkVNT1RFX1RJTUVPVVRfTVM6LTE1MDB9JwogICAgICAtICdCUk9XU0VSX1JFTU9URV9IQU5EU0hBS0VfVElNRU9VVF9NUz0ke0JST1dTRVJfUkVNT1RFX0hBTkRTSEFLRV9USU1FT1VUX01TOi0zMDAwfScKICAgICAgLSAnSE9PS1NfRU5BQkxFRD0ke0hPT0tTX0VOQUJMRUQ6LWZhbHNlfScKICAgICAgLSAnSE9PS1NfUEFUSD0ke0hPT0tTX1BBVEg6LS9ob29rc30nCiAgICAgIC0gJ01PT05TSE9UX0JBU0VfVVJMPSR7TU9PTlNIT1RfQkFTRV9VUkw6LWh0dHBzOi8vYXBpLm1vb25zaG90LmFpL3YxfScKICAgICAgLSAnS0lNSV9CQVNFX1VSTD0ke0tJTUlfQkFTRV9VUkw6LWh0dHBzOi8vYXBpLm1vb25zaG90LmFpL2FudGhyb3BpY30nCiAgICAgIC0gVEVMRUdSQU1fQk9UX1RPS0VOPSRURUxFR1JBTV9CT1RfVE9LRU4KICAgICAgLSBESVNDT1JEX0JPVF9UT0tFTj0kRElTQ09SRF9CT1RfVE9LRU4KICAgICAgLSBTTEFDS19CT1RfVE9LRU49JFNMQUNLX0JPVF9UT0tFTgogICAgICAtIFNMQUNLX0FQUF9UT0tFTj0kU0xBQ0tfQVBQX1RPS0VOCiAgICAgIC0gV0hBVFNBUFBfRU5BQkxFRD0kV0hBVFNBUFBfRU5BQkxFRAogICAgICAtIE9QRU5DTEFXX0RPQ0tFUl9BUFRfUEFDS0FHRVM9JE9QRU5DTEFXX0RPQ0tFUl9BUFRfUEFDS0FHRVMKICAgIHZvbHVtZXM6CiAgICAgIC0gJ29wZW5jbGF3LWRhdGE6L2RhdGEnCiAgICBkZXBlbmRzX29uOgogICAgICBicm93c2VyOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1zZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwODAvaGVhbHRoeicKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogNQogIGJyb3dzZXI6CiAgICBpbWFnZTogJ2Nvb2xsYWJzaW8vb3BlbmNsYXctYnJvd3NlcjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSBUWj1FdGMvVVRDCiAgICAgIC0gQ0hST01FX0NMST0tLXJlbW90ZS1kZWJ1Z2dpbmctcG9ydD05MjIyCiAgICB2b2x1bWVzOgogICAgICAtICdicm93c2VyLWRhdGE6L2NvbmZpZycKICAgIHNobV9zaXplOiAyZwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICJiYXNoIC1jICc6PiAvZGV2L3RjcC8xMjcuMC4wLjEvOTIyMicgfHwgZXhpdCAxIgogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMTAK", + "tags": [ + "ai", + "coding", + "assistant", + "llm", + "anthropic", + "openai", + "automation" + ], + "category": "ai", + "logo": "svgs/openclaw.svg", + "minversion": "0.0.0", + "port": "8080" + }, "openpanel": { "documentation": "https://openpanel.dev/docs?utm_source=coolify.io", "slogan": "Open source alternative to Mixpanel and Plausible for product analytics", diff --git a/templates/service-templates.json b/templates/service-templates.json index de9c7a041..ccbedb589 100644 --- a/templates/service-templates.json +++ b/templates/service-templates.json @@ -3396,6 +3396,24 @@ "minversion": "0.0.0", "port": "8080" }, + "openclaw": { + "documentation": "https://github.com/coollabsio/openclaw?utm_source=coolify.io", + "slogan": "AI-powered coding assistant with multi-provider support and browser automation.", + "compose": "c2VydmljZXM6CiAgb3BlbmNsYXc6CiAgICBpbWFnZTogJ2Nvb2xsYWJzaW8vb3BlbmNsYXc6MjAyNi4yLjYnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fT1BFTkNMQVdfODA4MAogICAgICAtIEFVVEhfVVNFUk5BTUU9JFNFUlZJQ0VfVVNFUl9PUEVOQ0xBVwogICAgICAtIEFVVEhfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfT1BFTkNMQVcKICAgICAgLSBPUEVOQ0xBV19HQVRFV0FZX1RPS0VOPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0dBVEVXQVlUT0tFTgogICAgICAtICdBTlRIUk9QSUNfQVBJX0tFWT0ke0FOVEhST1BJQ19BUElfS0VZfScKICAgICAgLSAnT1BFTkFJX0FQSV9LRVk9JHtPUEVOQUlfQVBJX0tFWX0nCiAgICAgIC0gJ09QRU5ST1VURVJfQVBJX0tFWT0ke09QRU5ST1VURVJfQVBJX0tFWX0nCiAgICAgIC0gJ0dFTUlOSV9BUElfS0VZPSR7R0VNSU5JX0FQSV9LRVl9JwogICAgICAtICdYQUlfQVBJX0tFWT0ke1hBSV9BUElfS0VZfScKICAgICAgLSAnR1JPUV9BUElfS0VZPSR7R1JPUV9BUElfS0VZfScKICAgICAgLSAnTUlTVFJBTF9BUElfS0VZPSR7TUlTVFJBTF9BUElfS0VZfScKICAgICAgLSAnQ0VSRUJSQVNfQVBJX0tFWT0ke0NFUkVCUkFTX0FQSV9LRVl9JwogICAgICAtICdWRU5JQ0VfQVBJX0tFWT0ke1ZFTklDRV9BUElfS0VZfScKICAgICAgLSAnTU9PTlNIT1RfQVBJX0tFWT0ke01PT05TSE9UX0FQSV9LRVl9JwogICAgICAtICdLSU1JX0FQSV9LRVk9JHtLSU1JX0FQSV9LRVl9JwogICAgICAtICdNSU5JTUFYX0FQSV9LRVk9JHtNSU5JTUFYX0FQSV9LRVl9JwogICAgICAtICdaQUlfQVBJX0tFWT0ke1pBSV9BUElfS0VZfScKICAgICAgLSAnQUlfR0FURVdBWV9BUElfS0VZPSR7QUlfR0FURVdBWV9BUElfS0VZfScKICAgICAgLSAnT1BFTkNPREVfQVBJX0tFWT0ke09QRU5DT0RFX0FQSV9LRVl9JwogICAgICAtICdTWU5USEVUSUNfQVBJX0tFWT0ke1NZTlRIRVRJQ19BUElfS0VZfScKICAgICAgLSAnQ09QSUxPVF9HSVRIVUJfVE9LRU49JHtDT1BJTE9UX0dJVEhVQl9UT0tFTn0nCiAgICAgIC0gJ1hJQU9NSV9BUElfS0VZPSR7WElBT01JX0FQSV9LRVl9JwogICAgICAtICdPUEVOQ0xBV19QUklNQVJZX01PREVMPSR7T1BFTkNMQVdfUFJJTUFSWV9NT0RFTH0nCiAgICAgIC0gJ0RFRVBHUkFNX0FQSV9LRVk9JHtERUVQR1JBTV9BUElfS0VZfScKICAgICAgLSAnQVdTX0FDQ0VTU19LRVlfSUQ9JHtBV1NfQUNDRVNTX0tFWV9JRH0nCiAgICAgIC0gJ0FXU19TRUNSRVRfQUNDRVNTX0tFWT0ke0FXU19TRUNSRVRfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ0FXU19SRUdJT049JHtBV1NfUkVHSU9OOi11cy1lYXN0LTF9JwogICAgICAtICdBV1NfU0VTU0lPTl9UT0tFTj0ke0FXU19TRVNTSU9OX1RPS0VOfScKICAgICAgLSAnQkVEUk9DS19QUk9WSURFUl9GSUxURVI9JHtCRURST0NLX1BST1ZJREVSX0ZJTFRFUjotYW50aHJvcGljfScKICAgICAgLSAnT0xMQU1BX0JBU0VfVVJMPSR7T0xMQU1BX0JBU0VfVVJMfScKICAgICAgLSBQT1JUPTgwODAKICAgICAgLSBPUEVOQ0xBV19HQVRFV0FZX1BPUlQ9MTg3ODkKICAgICAgLSAnT1BFTkNMQVdfR0FURVdBWV9CSU5EPSR7T1BFTkNMQVdfR0FURVdBWV9CSU5EOi1sb29wYmFja30nCiAgICAgIC0gT1BFTkNMQVdfU1RBVEVfRElSPS9kYXRhLy5vcGVuY2xhdwogICAgICAtIE9QRU5DTEFXX1dPUktTUEFDRV9ESVI9L2RhdGEvd29ya3NwYWNlCiAgICAgIC0gJ0JST1dTRVJfQ0RQX1VSTD1odHRwOi8vYnJvd3Nlcjo5MjIzJwogICAgICAtICdCUk9XU0VSX0RFRkFVTFRfUFJPRklMRT0ke0JST1dTRVJfREVGQVVMVF9QUk9GSUxFOi1vcGVuY2xhd30nCiAgICAgIC0gJ0JST1dTRVJfRVZBTFVBVEVfRU5BQkxFRD0ke0JST1dTRVJfRVZBTFVBVEVfRU5BQkxFRDotdHJ1ZX0nCiAgICAgIC0gJ0JST1dTRVJfU05BUFNIT1RfTU9ERT0ke0JST1dTRVJfU05BUFNIT1RfTU9ERTotZWZmaWNpZW50fScKICAgICAgLSAnQlJPV1NFUl9SRU1PVEVfVElNRU9VVF9NUz0ke0JST1dTRVJfUkVNT1RFX1RJTUVPVVRfTVM6LTE1MDB9JwogICAgICAtICdCUk9XU0VSX1JFTU9URV9IQU5EU0hBS0VfVElNRU9VVF9NUz0ke0JST1dTRVJfUkVNT1RFX0hBTkRTSEFLRV9USU1FT1VUX01TOi0zMDAwfScKICAgICAgLSAnSE9PS1NfRU5BQkxFRD0ke0hPT0tTX0VOQUJMRUQ6LWZhbHNlfScKICAgICAgLSAnSE9PS1NfUEFUSD0ke0hPT0tTX1BBVEg6LS9ob29rc30nCiAgICAgIC0gJ01PT05TSE9UX0JBU0VfVVJMPSR7TU9PTlNIT1RfQkFTRV9VUkw6LWh0dHBzOi8vYXBpLm1vb25zaG90LmFpL3YxfScKICAgICAgLSAnS0lNSV9CQVNFX1VSTD0ke0tJTUlfQkFTRV9VUkw6LWh0dHBzOi8vYXBpLm1vb25zaG90LmFpL2FudGhyb3BpY30nCiAgICAgIC0gVEVMRUdSQU1fQk9UX1RPS0VOPSRURUxFR1JBTV9CT1RfVE9LRU4KICAgICAgLSBESVNDT1JEX0JPVF9UT0tFTj0kRElTQ09SRF9CT1RfVE9LRU4KICAgICAgLSBTTEFDS19CT1RfVE9LRU49JFNMQUNLX0JPVF9UT0tFTgogICAgICAtIFNMQUNLX0FQUF9UT0tFTj0kU0xBQ0tfQVBQX1RPS0VOCiAgICAgIC0gV0hBVFNBUFBfRU5BQkxFRD0kV0hBVFNBUFBfRU5BQkxFRAogICAgICAtIE9QRU5DTEFXX0RPQ0tFUl9BUFRfUEFDS0FHRVM9JE9QRU5DTEFXX0RPQ0tFUl9BUFRfUEFDS0FHRVMKICAgIHZvbHVtZXM6CiAgICAgIC0gJ29wZW5jbGF3LWRhdGE6L2RhdGEnCiAgICBkZXBlbmRzX29uOgogICAgICBicm93c2VyOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1zZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwODAvaGVhbHRoeicKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogNQogIGJyb3dzZXI6CiAgICBpbWFnZTogJ2Nvb2xsYWJzaW8vb3BlbmNsYXctYnJvd3NlcjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSBUWj1FdGMvVVRDCiAgICAgIC0gQ0hST01FX0NMST0tLXJlbW90ZS1kZWJ1Z2dpbmctcG9ydD05MjIyCiAgICB2b2x1bWVzOgogICAgICAtICdicm93c2VyLWRhdGE6L2NvbmZpZycKICAgIHNobV9zaXplOiAyZwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICJiYXNoIC1jICc6PiAvZGV2L3RjcC8xMjcuMC4wLjEvOTIyMicgfHwgZXhpdCAxIgogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMTAK", + "tags": [ + "ai", + "coding", + "assistant", + "llm", + "anthropic", + "openai", + "automation" + ], + "category": "ai", + "logo": "svgs/openclaw.svg", + "minversion": "0.0.0", + "port": "8080" + }, "openpanel": { "documentation": "https://openpanel.dev/docs?utm_source=coolify.io", "slogan": "Open source alternative to Mixpanel and Plausible for product analytics",