From c460ca69d6d99f5ac1570baa6a47df319a18c533 Mon Sep 17 00:00:00 2001 From: GeoSegun Date: Sun, 10 May 2026 23:18:46 +0100 Subject: [PATCH 01/17] feat: add OpenClaw deployment example and template Add examples/openclaw with saturn deployment recipe, Node/OpenClaw start script, optional OPENCLAW_HOME detection, and skills placeholder docs. Register the recipe in hosted and enterprise template manifests with weight 1950. Document gallery thumbnail follow-up for dedicated artwork. Append CHANGELOG.md with this addition. --- .saturn/templates-enterprise.json | 6 +++++ .saturn/templates-hosted.json | 6 +++++ examples/openclaw/.saturn/saturn.json | 17 ++++++++++++ examples/openclaw/.saturn/start | 22 ++++++++++++++++ examples/openclaw/README.md | 37 +++++++++++++++++++++++++++ examples/openclaw/skills/README.md | 13 ++++++++++ 6 files changed, 101 insertions(+) create mode 100644 examples/openclaw/.saturn/saturn.json create mode 100755 examples/openclaw/.saturn/start create mode 100644 examples/openclaw/README.md create mode 100644 examples/openclaw/skills/README.md diff --git a/.saturn/templates-enterprise.json b/.saturn/templates-enterprise.json index ceba4247..ab3b3304 100644 --- a/.saturn/templates-enterprise.json +++ b/.saturn/templates-enterprise.json @@ -107,6 +107,12 @@ "thumbnail_image_url": "https://saturn-public-assets.s3.us-east-2.amazonaws.com/example-thumbnails/weights_and_biases.png", "weight": 1900, "recipe_path": "examples/wandb/.saturn/saturn.json" + }, + { + "title": "OpenClaw (Deployment)", + "thumbnail_image_url": "https://saturn-public-assets.s3.us-east-2.amazonaws.com/example-thumbnails/api-icon.png", + "weight": 1950, + "recipe_path": "examples/openclaw/.saturn/saturn.json" } ] } diff --git a/.saturn/templates-hosted.json b/.saturn/templates-hosted.json index ceba4247..ab3b3304 100644 --- a/.saturn/templates-hosted.json +++ b/.saturn/templates-hosted.json @@ -107,6 +107,12 @@ "thumbnail_image_url": "https://saturn-public-assets.s3.us-east-2.amazonaws.com/example-thumbnails/weights_and_biases.png", "weight": 1900, "recipe_path": "examples/wandb/.saturn/saturn.json" + }, + { + "title": "OpenClaw (Deployment)", + "thumbnail_image_url": "https://saturn-public-assets.s3.us-east-2.amazonaws.com/example-thumbnails/api-icon.png", + "weight": 1950, + "recipe_path": "examples/openclaw/.saturn/saturn.json" } ] } diff --git a/examples/openclaw/.saturn/saturn.json b/examples/openclaw/.saturn/saturn.json new file mode 100644 index 00000000..d3b83bbe --- /dev/null +++ b/examples/openclaw/.saturn/saturn.json @@ -0,0 +1,17 @@ +{ + "name": "example-openclaw", + "image_uri": "public.ecr.aws/saturncloud/saturn-python:2022.06.01", + "description": "Deploy OpenClaw agent gateway on Saturn Cloud (Node.js 22, dashboard on port 8000).", + "working_directory": "/home/jovyan/examples/examples/openclaw", + "git_repositories": [ + { + "url": "https://github.com/saturncloud/examples", + "path": "/home/jovyan/examples" + } + ], + "deployment": { + "instance_type": "medium", + "command": "bash .saturn/start" + }, + "version": "2022.01.06" +} diff --git a/examples/openclaw/.saturn/start b/examples/openclaw/.saturn/start new file mode 100755 index 00000000..102840ab --- /dev/null +++ b/examples/openclaw/.saturn/start @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +# * Installs Node.js 22 and OpenClaw, then runs the headless gateway on port 8000 (Saturn deployment routing). + +set -euo pipefail + +export DEBIAN_FRONTEND=noninteractive + +curl -fsSL https://deb.nodesource.com/setup_22.x | bash - +apt-get install -y nodejs + +npm install -g openclaw@latest + +if [[ -d "/home/jovyan/workspace/.openclaw" ]]; then + export OPENCLAW_HOME="/home/jovyan/workspace/.openclaw" +elif [[ -d "${PWD}/.openclaw" ]]; then + export OPENCLAW_HOME="${PWD}/.openclaw" +fi + +export PORT="${PORT:-8000}" +export HOST="${HOST:-0.0.0.0}" + +exec openclaw gateway --headless --port "${PORT}" --host "${HOST}" diff --git a/examples/openclaw/README.md b/examples/openclaw/README.md new file mode 100644 index 00000000..c98e0681 --- /dev/null +++ b/examples/openclaw/README.md @@ -0,0 +1,37 @@ +# OpenClaw on Saturn Cloud + +This example deploys [OpenClaw](https://docs.openclaw.ai/) as a **Saturn Cloud deployment**: the start script installs Node.js 22 and OpenClaw, then runs `openclaw gateway --headless` bound to **port 8000** and **0.0.0.0** so the dashboard is reachable via Saturn’s external URL. + +## Before you start + +- Saturn Cloud account +- LLM credentials via resource **environment variables** (do not commit secrets), for example `ANTHROPIC_API_KEY` or `OPENAI_API_KEY` / `OPENAI_BASE_URL` +- A messaging integration configured inside OpenClaw (for example Discord); see OpenClaw docs + +## Configure secrets + +In the resource UI, add your provider keys under **Environment Variables**. They are injected at runtime and should not appear in this repository. + +## Optional: existing OpenClaw config + +If you already have `config.json` (and optional skills) from a local install: + +1. Upload them under `/home/jovyan/workspace/.openclaw/` on the resource **or** place `.openclaw/` next to this example in the cloned repo path. +2. The start script sets `OPENCLAW_HOME` automatically when one of those directories exists. + +## Enable the dashboard URL + +Turn on the deployment **external URL** in Saturn Cloud so you can open the OpenClaw dashboard in a browser and finish onboarding if you are not using an uploaded `config.json`. + +## Custom skills + +See `skills/README.md`. Restart the deployment after changing skills or config. + +## References + +- OpenClaw documentation: https://docs.openclaw.ai/ +- Saturn Cloud deployments: https://saturncloud.io/docs/ + +## Maintainer note (gallery thumbnail) + +The default template entry uses the shared deployment thumbnail (`api-icon.png`) until `example-thumbnails/openclaw.png` (500×250) is published under `saturn-public-assets`, then update `.saturn/templates-*.json` to point at that URL. diff --git a/examples/openclaw/skills/README.md b/examples/openclaw/skills/README.md new file mode 100644 index 00000000..91d97569 --- /dev/null +++ b/examples/openclaw/skills/README.md @@ -0,0 +1,13 @@ +# Custom skills (optional) + +Place OpenClaw skill directories here (each with a `SKILL.md`). Point OpenClaw at this path in your configuration, for example: + +```json +{ + "skills": { + "customPath": "/home/jovyan/examples/examples/openclaw/skills" + } +} +``` + +Use persistent workspace storage if you prefer skills outside this cloned repository (see the example `README.md`). From 9fe12af4543eef9bf3a4264b71690c734f8f72a9 Mon Sep 17 00:00:00 2001 From: GeoSegun Date: Sun, 10 May 2026 23:18:46 +0100 Subject: [PATCH 02/17] fix(openclaw): align example with WhatsApp/SSH blog workflow Use sleep infinity as deployment command per setup-first guide; remove NodeSource/npm headless gateway start script. Rewrite README for env vars, official install.sh, onboarding on port 8000, foreground gateway, and persistence caveats. Shorten optional skills note. --- CHANGELOG.md | 6 +++ examples/openclaw/.saturn/saturn.json | 4 +- examples/openclaw/.saturn/start | 22 --------- examples/openclaw/README.md | 68 ++++++++++++++++++++------- examples/openclaw/skills/README.md | 12 +---- 5 files changed, 60 insertions(+), 52 deletions(-) create mode 100644 CHANGELOG.md delete mode 100755 examples/openclaw/.saturn/start diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..9539ce42 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,6 @@ +# Changelog + +## Unreleased + +- Add OpenClaw deployment example and default template (hosted and enterprise). +- OpenClaw example: align deployment with blog (sleep infinity, SSH/install workflow; remove auto gateway start script). diff --git a/examples/openclaw/.saturn/saturn.json b/examples/openclaw/.saturn/saturn.json index d3b83bbe..12bbf4ef 100644 --- a/examples/openclaw/.saturn/saturn.json +++ b/examples/openclaw/.saturn/saturn.json @@ -1,7 +1,7 @@ { "name": "example-openclaw", "image_uri": "public.ecr.aws/saturncloud/saturn-python:2022.06.01", - "description": "Deploy OpenClaw agent gateway on Saturn Cloud (Node.js 22, dashboard on port 8000).", + "description": "OpenClaw on Saturn Cloud: deployment stays up with sleep infinity; install and run the gateway over SSH (WhatsApp-oriented workflow).", "working_directory": "/home/jovyan/examples/examples/openclaw", "git_repositories": [ { @@ -11,7 +11,7 @@ ], "deployment": { "instance_type": "medium", - "command": "bash .saturn/start" + "command": "sleep infinity" }, "version": "2022.01.06" } diff --git a/examples/openclaw/.saturn/start b/examples/openclaw/.saturn/start deleted file mode 100755 index 102840ab..00000000 --- a/examples/openclaw/.saturn/start +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash -# * Installs Node.js 22 and OpenClaw, then runs the headless gateway on port 8000 (Saturn deployment routing). - -set -euo pipefail - -export DEBIAN_FRONTEND=noninteractive - -curl -fsSL https://deb.nodesource.com/setup_22.x | bash - -apt-get install -y nodejs - -npm install -g openclaw@latest - -if [[ -d "/home/jovyan/workspace/.openclaw" ]]; then - export OPENCLAW_HOME="/home/jovyan/workspace/.openclaw" -elif [[ -d "${PWD}/.openclaw" ]]; then - export OPENCLAW_HOME="${PWD}/.openclaw" -fi - -export PORT="${PORT:-8000}" -export HOST="${HOST:-0.0.0.0}" - -exec openclaw gateway --headless --port "${PORT}" --host "${HOST}" diff --git a/examples/openclaw/README.md b/examples/openclaw/README.md index c98e0681..aeb676ef 100644 --- a/examples/openclaw/README.md +++ b/examples/openclaw/README.md @@ -1,37 +1,69 @@ # OpenClaw on Saturn Cloud -This example deploys [OpenClaw](https://docs.openclaw.ai/) as a **Saturn Cloud deployment**: the start script installs Node.js 22 and OpenClaw, then runs `openclaw gateway --headless` bound to **port 8000** and **0.0.0.0** so the dashboard is reachable via Saturn’s external URL. +This example matches the **setup-first** workflow from the Saturn Cloud blog: create a **Deployment** that keeps running with `sleep infinity`, then install and operate OpenClaw **over SSH** (official installer, onboarding, WhatsApp plugin, foreground gateway). The deployment command does **not** start OpenClaw automatically. -## Before you start +For the full walkthrough with screenshots, see the Saturn Cloud blog post **How to Deploy OpenClaw on Saturn Cloud** on https://saturncloud.io (same steps as this example). -- Saturn Cloud account -- LLM credentials via resource **environment variables** (do not commit secrets), for example `ANTHROPIC_API_KEY` or `OPENAI_API_KEY` / `OPENAI_BASE_URL` -- A messaging integration configured inside OpenClaw (for example Discord); see OpenClaw docs +## What this recipe provides -## Configure secrets +| In the template | You do manually (SSH / UI) | +|-----------------|----------------------------| +| `saturn-python` image, **medium** instance | Generate gateway token (`openssl rand -hex 32`) | +| **`sleep infinity`** so the deployment stays alive | Set env vars in Saturn deployment **Details** | +| Clone path under `working_directory` | Enable **SSH**, external URL on port **8000**, subdomain | +| | Install OpenClaw via **install.sh**, run **onboard**, configure WhatsApp | +| | Run **`openclaw gateway`** in a terminal session (foreground) | -In the resource UI, add your provider keys under **Environment Variables**. They are injected at runtime and should not appear in this repository. +## Deployment settings (summary) -## Optional: existing OpenClaw config +Create a **Deployment** (not Jupyter) with: -If you already have `config.json` (and optional skills) from a local install: +- **Image:** `saturncloud/saturn-python` (this recipe uses the equivalent `public.ecr.aws/saturncloud/saturn-python` tag from examples). +- **Command:** `sleep infinity` — keeps the container running while you configure OpenClaw in SSH (same as this repo’s `saturn.json`). +- **External URL:** enabled, routed to container port **8000**. +- **Allow SSH connections:** enabled. +- **Custom subdomain:** set a unique value for your public URL. -1. Upload them under `/home/jovyan/workspace/.openclaw/` on the resource **or** place `.openclaw/` next to this example in the cloned repo path. -2. The start script sets `OPENCLAW_HOME` automatically when one of those directories exists. +## Environment variables -## Enable the dashboard URL +Add in the deployment **Details** (never commit secrets): -Turn on the deployment **external URL** in Saturn Cloud so you can open the OpenClaw dashboard in a browser and finish onboarding if you are not using an uploaded `config.json`. +```bash +OPENAI_API_KEY=YOUR_OPENAI_API_KEY +OPENCLAW_GATEWAY_TOKEN=YOUR_GATEWAY_TOKEN # from openssl rand -hex 32 +OPENCLAW_PUBLIC_ORIGIN=https://your-subdomain.community.saturnenterprise.io +WHATSAPP_OWNER_E164=+1234567890 +``` -## Custom skills +Use your real deployment URL for `OPENCLAW_PUBLIC_ORIGIN` (no trailing slash). `WHATSAPP_OWNER_E164` is the allowed sender number for WhatsApp DMs. -See `skills/README.md`. Restart the deployment after changing skills or config. +## After SSH connects + +1. Check Node: `node -v` / `npm -v` (install Node only if missing). +2. Install OpenClaw: + + ```bash + curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash -s -- --no-onboard + ``` + +3. Run non-interactive onboarding (port **8000**, token from env), then set `gateway.controlUi.allowedOrigins` — exact flags are in the blog post. +4. Install and configure **WhatsApp** (`plugins`, `channels login`, QR scan) per the blog. +5. Start the gateway in **Terminal 1:** `openclaw gateway` (foreground). Use **Terminal 2** for `openclaw devices approve` when the browser asks. +6. Do **not** rely on `openclaw gateway restart` for this setup (no systemd service). + +## Persistence warning + +Without persistent storage for `~/.openclaw`, redeploys can lose WhatsApp session, device approvals, and config. Plan storage before changing the deployment command away from `sleep infinity` after setup. + +## Optional custom skills + +See `skills/README.md` if you add OpenClaw skills under this clone path. ## References -- OpenClaw documentation: https://docs.openclaw.ai/ -- Saturn Cloud deployments: https://saturncloud.io/docs/ +- OpenClaw docs: https://openclaw.ai/docs +- Saturn Cloud SSH: https://saturncloud.io/docs/user-guide/how-to/access/ide_ssh/ ## Maintainer note (gallery thumbnail) -The default template entry uses the shared deployment thumbnail (`api-icon.png`) until `example-thumbnails/openclaw.png` (500×250) is published under `saturn-public-assets`, then update `.saturn/templates-*.json` to point at that URL. +Template manifests use `example-thumbnails/api-icon.png` until `example-thumbnails/openclaw.png` (500×250) exists on `saturn-public-assets`; then update `.saturn/templates-*.json`. diff --git a/examples/openclaw/skills/README.md b/examples/openclaw/skills/README.md index 91d97569..e908c3e5 100644 --- a/examples/openclaw/skills/README.md +++ b/examples/openclaw/skills/README.md @@ -1,13 +1,5 @@ # Custom skills (optional) -Place OpenClaw skill directories here (each with a `SKILL.md`). Point OpenClaw at this path in your configuration, for example: +OpenClaw skills are folders with a `SKILL.md`. If you configure OpenClaw to load skills from this repository path, place them here. Most users following the WhatsApp blog workflow configure channels and plugins before adding custom skills. -```json -{ - "skills": { - "customPath": "/home/jovyan/examples/examples/openclaw/skills" - } -} -``` - -Use persistent workspace storage if you prefer skills outside this cloned repository (see the example `README.md`). +See https://openclaw.ai/docs for skills and plugins. From ebf21e307375ec0e871be778db75df483d83c0be Mon Sep 17 00:00:00 2001 From: GeoSegun Date: Sun, 10 May 2026 23:18:46 +0100 Subject: [PATCH 03/17] chore: drop CHANGELOG; shorten OpenClaw recipe description --- CHANGELOG.md | 6 ------ examples/openclaw/.saturn/saturn.json | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) delete mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 9539ce42..00000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,6 +0,0 @@ -# Changelog - -## Unreleased - -- Add OpenClaw deployment example and default template (hosted and enterprise). -- OpenClaw example: align deployment with blog (sleep infinity, SSH/install workflow; remove auto gateway start script). diff --git a/examples/openclaw/.saturn/saturn.json b/examples/openclaw/.saturn/saturn.json index 12bbf4ef..6a46cb07 100644 --- a/examples/openclaw/.saturn/saturn.json +++ b/examples/openclaw/.saturn/saturn.json @@ -1,7 +1,7 @@ { "name": "example-openclaw", "image_uri": "public.ecr.aws/saturncloud/saturn-python:2022.06.01", - "description": "OpenClaw on Saturn Cloud: deployment stays up with sleep infinity; install and run the gateway over SSH (WhatsApp-oriented workflow).", + "description": "Deploy OpenClaw on Saturn Cloud.", "working_directory": "/home/jovyan/examples/examples/openclaw", "git_repositories": [ { From 02a50a4ec99044943dc1660f266ae0b1e94648ad Mon Sep 17 00:00:00 2001 From: GeoSegun Date: Sun, 10 May 2026 23:18:46 +0100 Subject: [PATCH 04/17] docs(openclaw): shorten README; link saturncloud.io blog post --- examples/openclaw/README.md | 69 +++++-------------------------------- 1 file changed, 8 insertions(+), 61 deletions(-) diff --git a/examples/openclaw/README.md b/examples/openclaw/README.md index aeb676ef..9c3efdc1 100644 --- a/examples/openclaw/README.md +++ b/examples/openclaw/README.md @@ -1,69 +1,16 @@ # OpenClaw on Saturn Cloud -This example matches the **setup-first** workflow from the Saturn Cloud blog: create a **Deployment** that keeps running with `sleep infinity`, then install and operate OpenClaw **over SSH** (official installer, onboarding, WhatsApp plugin, foreground gateway). The deployment command does **not** start OpenClaw automatically. +This example is a **Deployment** with `sleep infinity` so you can install and run [OpenClaw](https://openclaw.ai/docs) over SSH. For the full guide (resource options, env vars, install, WhatsApp, gateway, and troubleshooting), see the blog: -For the full walkthrough with screenshots, see the Saturn Cloud blog post **How to Deploy OpenClaw on Saturn Cloud** on https://saturncloud.io (same steps as this example). - -## What this recipe provides - -| In the template | You do manually (SSH / UI) | -|-----------------|----------------------------| -| `saturn-python` image, **medium** instance | Generate gateway token (`openssl rand -hex 32`) | -| **`sleep infinity`** so the deployment stays alive | Set env vars in Saturn deployment **Details** | -| Clone path under `working_directory` | Enable **SSH**, external URL on port **8000**, subdomain | -| | Install OpenClaw via **install.sh**, run **onboard**, configure WhatsApp | -| | Run **`openclaw gateway`** in a terminal session (foreground) | - -## Deployment settings (summary) - -Create a **Deployment** (not Jupyter) with: - -- **Image:** `saturncloud/saturn-python` (this recipe uses the equivalent `public.ecr.aws/saturncloud/saturn-python` tag from examples). -- **Command:** `sleep infinity` — keeps the container running while you configure OpenClaw in SSH (same as this repo’s `saturn.json`). -- **External URL:** enabled, routed to container port **8000**. -- **Allow SSH connections:** enabled. -- **Custom subdomain:** set a unique value for your public URL. +[https://saturncloud.io/blog/how-to-deploy-openclaw-on-saturncloud/](https://saturncloud.io/blog/how-to-deploy-openclaw-on-saturncloud/) ## Environment variables -Add in the deployment **Details** (never commit secrets): - -```bash -OPENAI_API_KEY=YOUR_OPENAI_API_KEY -OPENCLAW_GATEWAY_TOKEN=YOUR_GATEWAY_TOKEN # from openssl rand -hex 32 -OPENCLAW_PUBLIC_ORIGIN=https://your-subdomain.community.saturnenterprise.io -WHATSAPP_OWNER_E164=+1234567890 -``` - -Use your real deployment URL for `OPENCLAW_PUBLIC_ORIGIN` (no trailing slash). `WHATSAPP_OWNER_E164` is the allowed sender number for WhatsApp DMs. - -## After SSH connects - -1. Check Node: `node -v` / `npm -v` (install Node only if missing). -2. Install OpenClaw: - - ```bash - curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash -s -- --no-onboard - ``` - -3. Run non-interactive onboarding (port **8000**, token from env), then set `gateway.controlUi.allowedOrigins` — exact flags are in the blog post. -4. Install and configure **WhatsApp** (`plugins`, `channels login`, QR scan) per the blog. -5. Start the gateway in **Terminal 1:** `openclaw gateway` (foreground). Use **Terminal 2** for `openclaw devices approve` when the browser asks. -6. Do **not** rely on `openclaw gateway restart` for this setup (no systemd service). - -## Persistence warning - -Without persistent storage for `~/.openclaw`, redeploys can lose WhatsApp session, device approvals, and config. Plan storage before changing the deployment command away from `sleep infinity` after setup. - -## Optional custom skills - -See `skills/README.md` if you add OpenClaw skills under this clone path. - -## References - -- OpenClaw docs: https://openclaw.ai/docs -- Saturn Cloud SSH: https://saturncloud.io/docs/user-guide/how-to/access/ide_ssh/ +Set these in the deployment **Details** (do not commit secrets). The blog explains each value and how to generate `OPENCLAW_GATEWAY_TOKEN`. -## Maintainer note (gallery thumbnail) +- `OPENAI_API_KEY` +- `OPENCLAW_GATEWAY_TOKEN` +- `OPENCLAW_PUBLIC_ORIGIN` +- `WHATSAPP_OWNER_E164` -Template manifests use `example-thumbnails/api-icon.png` until `example-thumbnails/openclaw.png` (500×250) exists on `saturn-public-assets`; then update `.saturn/templates-*.json`. +Optional custom skills: see `skills/README.md`. From da0c08ee3d717d9d3764614b34b1b039028786f2 Mon Sep 17 00:00:00 2001 From: GeoSegun Date: Sun, 10 May 2026 23:18:46 +0100 Subject: [PATCH 05/17] chore(openclaw): add gallery thumbnail asset and wire template URL - Resize source image to 500x250 as _img/openclaw.png for S3 upload - Point hosted/enterprise templates at example-thumbnails/openclaw.png - Document publish path in README; add CODEOWNERS for examples/openclaw/ --- .github/CODEOWNERS | 2 ++ .saturn/templates-enterprise.json | 2 +- .saturn/templates-hosted.json | 2 +- examples/openclaw/README.md | 2 ++ examples/openclaw/_img/openclaw.png | Bin 0 -> 73227 bytes 5 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 examples/openclaw/_img/openclaw.png diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 8160a695..4b8ca5ad 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -12,3 +12,5 @@ .ci/* @jsignell .github/* @jsignell Makefile @jsignell + +examples/openclaw/ @jnolis @jsignell diff --git a/.saturn/templates-enterprise.json b/.saturn/templates-enterprise.json index ab3b3304..782e53fc 100644 --- a/.saturn/templates-enterprise.json +++ b/.saturn/templates-enterprise.json @@ -110,7 +110,7 @@ }, { "title": "OpenClaw (Deployment)", - "thumbnail_image_url": "https://saturn-public-assets.s3.us-east-2.amazonaws.com/example-thumbnails/api-icon.png", + "thumbnail_image_url": "https://saturn-public-assets.s3.us-east-2.amazonaws.com/example-thumbnails/openclaw.png", "weight": 1950, "recipe_path": "examples/openclaw/.saturn/saturn.json" } diff --git a/.saturn/templates-hosted.json b/.saturn/templates-hosted.json index ab3b3304..782e53fc 100644 --- a/.saturn/templates-hosted.json +++ b/.saturn/templates-hosted.json @@ -110,7 +110,7 @@ }, { "title": "OpenClaw (Deployment)", - "thumbnail_image_url": "https://saturn-public-assets.s3.us-east-2.amazonaws.com/example-thumbnails/api-icon.png", + "thumbnail_image_url": "https://saturn-public-assets.s3.us-east-2.amazonaws.com/example-thumbnails/openclaw.png", "weight": 1950, "recipe_path": "examples/openclaw/.saturn/saturn.json" } diff --git a/examples/openclaw/README.md b/examples/openclaw/README.md index 9c3efdc1..fc405c5b 100644 --- a/examples/openclaw/README.md +++ b/examples/openclaw/README.md @@ -14,3 +14,5 @@ Set these in the deployment **Details** (do not commit secrets). The blog explai - `WHATSAPP_OWNER_E164` Optional custom skills: see `skills/README.md`. + +Gallery thumbnail source: `_img/openclaw.png` (500×250). Publish to `saturn-public-assets` as `example-thumbnails/openclaw.png` so the template URL resolves. diff --git a/examples/openclaw/_img/openclaw.png b/examples/openclaw/_img/openclaw.png new file mode 100644 index 0000000000000000000000000000000000000000..59b15e4982d5f65c63556e1116560357d76f9d7f GIT binary patch literal 73227 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%0A39}f()xHW_JvSTll0PONxU73U)(1z^ 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 Date: Sun, 10 May 2026 23:18:47 +0100 Subject: [PATCH 06/17] chore: drop redundant CODEOWNERS entry for openclaw (use catch-all) --- .github/CODEOWNERS | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 4b8ca5ad..8160a695 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -12,5 +12,3 @@ .ci/* @jsignell .github/* @jsignell Makefile @jsignell - -examples/openclaw/ @jnolis @jsignell From 1be0af5538b1302405b6bb4000838273bd64608b Mon Sep 17 00:00:00 2001 From: GeoSegun Date: Sun, 10 May 2026 23:18:47 +0100 Subject: [PATCH 07/17] docs(openclaw): remove gallery thumbnail publishing details from README --- examples/openclaw/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/examples/openclaw/README.md b/examples/openclaw/README.md index fc405c5b..9c3efdc1 100644 --- a/examples/openclaw/README.md +++ b/examples/openclaw/README.md @@ -14,5 +14,3 @@ Set these in the deployment **Details** (do not commit secrets). The blog explai - `WHATSAPP_OWNER_E164` Optional custom skills: see `skills/README.md`. - -Gallery thumbnail source: `_img/openclaw.png` (500×250). Publish to `saturn-public-assets` as `example-thumbnails/openclaw.png` so the template URL resolves. From f358eb23babb260a9f34c374683e59357c4ecefb Mon Sep 17 00:00:00 2001 From: GeoSegun Date: Mon, 11 May 2026 05:42:02 +0100 Subject: [PATCH 08/17] feat(openclaw): saturn-python 2025.05.01 and large (r5.large 16GB) --- examples/openclaw/.saturn/saturn.json | 4 ++-- examples/openclaw/README.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/openclaw/.saturn/saturn.json b/examples/openclaw/.saturn/saturn.json index 6a46cb07..81e1d120 100644 --- a/examples/openclaw/.saturn/saturn.json +++ b/examples/openclaw/.saturn/saturn.json @@ -1,6 +1,6 @@ { "name": "example-openclaw", - "image_uri": "public.ecr.aws/saturncloud/saturn-python:2022.06.01", + "image_uri": "public.ecr.aws/saturncloud/saturn-python:2025.05.01", "description": "Deploy OpenClaw on Saturn Cloud.", "working_directory": "/home/jovyan/examples/examples/openclaw", "git_repositories": [ @@ -10,7 +10,7 @@ } ], "deployment": { - "instance_type": "medium", + "instance_type": "large", "command": "sleep infinity" }, "version": "2022.01.06" diff --git a/examples/openclaw/README.md b/examples/openclaw/README.md index 9c3efdc1..1656bc47 100644 --- a/examples/openclaw/README.md +++ b/examples/openclaw/README.md @@ -1,6 +1,6 @@ # OpenClaw on Saturn Cloud -This example is a **Deployment** with `sleep infinity` so you can install and run [OpenClaw](https://openclaw.ai/docs) over SSH. For the full guide (resource options, env vars, install, WhatsApp, gateway, and troubleshooting), see the blog: +This example is a **Deployment** with `sleep infinity` so you can install and run [OpenClaw](https://openclaw.ai/docs) over SSH. The recipe uses **`saturn-python:2025.05.01`** and instance size **`large`** (AWS **r5.large**: 2 vCPU, 16 GB RAM). For the full guide (resource options, env vars, install, WhatsApp, gateway, and troubleshooting), see the blog: [https://saturncloud.io/blog/how-to-deploy-openclaw-on-saturncloud/](https://saturncloud.io/blog/how-to-deploy-openclaw-on-saturncloud/) From ac7d7f0a42c75c98fe1e6c60c913ce0d410cb63c Mon Sep 17 00:00:00 2001 From: GeoSegun Date: Mon, 11 May 2026 05:49:32 +0100 Subject: [PATCH 09/17] docs(openclaw): fix docs link; clarify skills vs optional setup --- examples/openclaw/README.md | 2 +- examples/openclaw/skills/README.md | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/openclaw/README.md b/examples/openclaw/README.md index 1656bc47..661ddf5a 100644 --- a/examples/openclaw/README.md +++ b/examples/openclaw/README.md @@ -1,6 +1,6 @@ # OpenClaw on Saturn Cloud -This example is a **Deployment** with `sleep infinity` so you can install and run [OpenClaw](https://openclaw.ai/docs) over SSH. The recipe uses **`saturn-python:2025.05.01`** and instance size **`large`** (AWS **r5.large**: 2 vCPU, 16 GB RAM). For the full guide (resource options, env vars, install, WhatsApp, gateway, and troubleshooting), see the blog: +This example is a **Deployment** with `sleep infinity` so you can install and run [OpenClaw](https://docs.openclaw.ai/) over SSH. The recipe uses **`saturn-python:2025.05.01`** and instance size **`large`** (AWS **r5.large**: 2 vCPU, 16 GB RAM). For the full guide (resource options, env vars, install, WhatsApp, gateway, and troubleshooting), see the blog: [https://saturncloud.io/blog/how-to-deploy-openclaw-on-saturncloud/](https://saturncloud.io/blog/how-to-deploy-openclaw-on-saturncloud/) diff --git a/examples/openclaw/skills/README.md b/examples/openclaw/skills/README.md index e908c3e5..a1b95fef 100644 --- a/examples/openclaw/skills/README.md +++ b/examples/openclaw/skills/README.md @@ -1,5 +1,7 @@ # Custom skills (optional) -OpenClaw skills are folders with a `SKILL.md`. If you configure OpenClaw to load skills from this repository path, place them here. Most users following the WhatsApp blog workflow configure channels and plugins before adding custom skills. +In OpenClaw, **skills** are extra capability bundles: each skill is a folder that includes a **`SKILL.md`** describing tools or workflows the agent can follow (automation, APIs, internal procedures). They are optional—WhatsApp/channel setup from the blog does not require custom skills. -See https://openclaw.ai/docs for skills and plugins. +If you use skills, configure OpenClaw to load this directory (see OpenClaw configuration for `skills` / custom paths). + +Documentation: https://docs.openclaw.ai/ From e2052ff2cc4ffacc1c8c1ce25d3d9fad047cb04c Mon Sep 17 00:00:00 2001 From: GeoSegun Date: Mon, 11 May 2026 05:53:39 +0100 Subject: [PATCH 10/17] refactor(openclaw): drop optional skills folder; add _img README for CI --- examples/openclaw/README.md | 2 -- examples/openclaw/_img/README.md | 3 +++ examples/openclaw/skills/README.md | 7 ------- 3 files changed, 3 insertions(+), 9 deletions(-) create mode 100644 examples/openclaw/_img/README.md delete mode 100644 examples/openclaw/skills/README.md diff --git a/examples/openclaw/README.md b/examples/openclaw/README.md index 661ddf5a..84513d9a 100644 --- a/examples/openclaw/README.md +++ b/examples/openclaw/README.md @@ -12,5 +12,3 @@ Set these in the deployment **Details** (do not commit secrets). The blog explai - `OPENCLAW_GATEWAY_TOKEN` - `OPENCLAW_PUBLIC_ORIGIN` - `WHATSAPP_OWNER_E164` - -Optional custom skills: see `skills/README.md`. diff --git a/examples/openclaw/_img/README.md b/examples/openclaw/_img/README.md new file mode 100644 index 00000000..509535c4 --- /dev/null +++ b/examples/openclaw/_img/README.md @@ -0,0 +1,3 @@ +# Gallery thumbnail + +Source asset (`openclaw.png`, 500×250) for publishing to `saturn-public-assets` as `example-thumbnails/openclaw.png`. diff --git a/examples/openclaw/skills/README.md b/examples/openclaw/skills/README.md deleted file mode 100644 index a1b95fef..00000000 --- a/examples/openclaw/skills/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Custom skills (optional) - -In OpenClaw, **skills** are extra capability bundles: each skill is a folder that includes a **`SKILL.md`** describing tools or workflows the agent can follow (automation, APIs, internal procedures). They are optional—WhatsApp/channel setup from the blog does not require custom skills. - -If you use skills, configure OpenClaw to load this directory (see OpenClaw configuration for `skills` / custom paths). - -Documentation: https://docs.openclaw.ai/ From a464c294956af7c521503ce17358f83a74fb339f Mon Sep 17 00:00:00 2001 From: GeoSegun Date: Mon, 11 May 2026 05:56:24 +0100 Subject: [PATCH 11/17] docs(openclaw): document template gallery thumbnail URL --- examples/openclaw/README.md | 8 ++++++++ examples/openclaw/_img/README.md | 8 +++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/examples/openclaw/README.md b/examples/openclaw/README.md index 84513d9a..fa0117fe 100644 --- a/examples/openclaw/README.md +++ b/examples/openclaw/README.md @@ -12,3 +12,11 @@ Set these in the deployment **Details** (do not commit secrets). The blog explai - `OPENCLAW_GATEWAY_TOKEN` - `OPENCLAW_PUBLIC_ORIGIN` - `WHATSAPP_OWNER_E164` + +## Template gallery thumbnail + +The catalog uses: + +https://saturn-public-assets.s3.us-east-2.amazonaws.com/example-thumbnails/openclaw.png + +(Source file in this repo: `_img/openclaw.png`.) diff --git a/examples/openclaw/_img/README.md b/examples/openclaw/_img/README.md index 509535c4..4c9c2dab 100644 --- a/examples/openclaw/_img/README.md +++ b/examples/openclaw/_img/README.md @@ -1,3 +1,9 @@ # Gallery thumbnail -Source asset (`openclaw.png`, 500×250) for publishing to `saturn-public-assets` as `example-thumbnails/openclaw.png`. +Source asset: **`openclaw.png`** (500×250). + +Published gallery URL (same path as `.saturn/templates-*.json`): + +https://saturn-public-assets.s3.us-east-2.amazonaws.com/example-thumbnails/openclaw.png + +Upload `openclaw.png` to bucket **`saturn-public-assets`**, prefix **`example-thumbnails/`**, so that URL returns HTTP 200. From af5957dccf5859c049c8019fcaee3bde52dd5daa Mon Sep 17 00:00:00 2001 From: GeoSegun Date: Mon, 11 May 2026 05:58:34 +0100 Subject: [PATCH 12/17] docs(openclaw): embed gallery thumbnail URL in recipe description Recipe schema disallows extra keys; thumbnail lives in description string. --- examples/openclaw/.saturn/saturn.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/openclaw/.saturn/saturn.json b/examples/openclaw/.saturn/saturn.json index 81e1d120..c233fe77 100644 --- a/examples/openclaw/.saturn/saturn.json +++ b/examples/openclaw/.saturn/saturn.json @@ -1,7 +1,7 @@ { "name": "example-openclaw", "image_uri": "public.ecr.aws/saturncloud/saturn-python:2025.05.01", - "description": "Deploy OpenClaw on Saturn Cloud.", + "description": "Deploy OpenClaw on Saturn Cloud. Gallery thumbnail: https://saturn-public-assets.s3.us-east-2.amazonaws.com/example-thumbnails/openclaw.png", "working_directory": "/home/jovyan/examples/examples/openclaw", "git_repositories": [ { From 60a96c3e65cd15172a47c6e7c68b6250592a5133 Mon Sep 17 00:00:00 2001 From: GeoSegun Date: Mon, 11 May 2026 06:03:35 +0100 Subject: [PATCH 13/17] refactor(openclaw): remove _img asset; drop thumbnail from recipe description Gallery URL remains in .saturn/templates-*.json only. --- examples/openclaw/.saturn/saturn.json | 2 +- examples/openclaw/README.md | 8 -------- examples/openclaw/_img/README.md | 9 --------- examples/openclaw/_img/openclaw.png | Bin 73227 -> 0 bytes 4 files changed, 1 insertion(+), 18 deletions(-) delete mode 100644 examples/openclaw/_img/README.md delete mode 100644 examples/openclaw/_img/openclaw.png diff --git a/examples/openclaw/.saturn/saturn.json b/examples/openclaw/.saturn/saturn.json index c233fe77..81e1d120 100644 --- a/examples/openclaw/.saturn/saturn.json +++ b/examples/openclaw/.saturn/saturn.json @@ -1,7 +1,7 @@ { "name": "example-openclaw", "image_uri": "public.ecr.aws/saturncloud/saturn-python:2025.05.01", - "description": "Deploy OpenClaw on Saturn Cloud. Gallery thumbnail: https://saturn-public-assets.s3.us-east-2.amazonaws.com/example-thumbnails/openclaw.png", + "description": "Deploy OpenClaw on Saturn Cloud.", "working_directory": "/home/jovyan/examples/examples/openclaw", "git_repositories": [ { diff --git a/examples/openclaw/README.md b/examples/openclaw/README.md index fa0117fe..84513d9a 100644 --- a/examples/openclaw/README.md +++ b/examples/openclaw/README.md @@ -12,11 +12,3 @@ Set these in the deployment **Details** (do not commit secrets). The blog explai - `OPENCLAW_GATEWAY_TOKEN` - `OPENCLAW_PUBLIC_ORIGIN` - `WHATSAPP_OWNER_E164` - -## Template gallery thumbnail - -The catalog uses: - -https://saturn-public-assets.s3.us-east-2.amazonaws.com/example-thumbnails/openclaw.png - -(Source file in this repo: `_img/openclaw.png`.) diff --git a/examples/openclaw/_img/README.md b/examples/openclaw/_img/README.md deleted file mode 100644 index 4c9c2dab..00000000 --- a/examples/openclaw/_img/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Gallery thumbnail - -Source asset: **`openclaw.png`** (500×250). - -Published gallery URL (same path as `.saturn/templates-*.json`): - -https://saturn-public-assets.s3.us-east-2.amazonaws.com/example-thumbnails/openclaw.png - -Upload `openclaw.png` to bucket **`saturn-public-assets`**, prefix **`example-thumbnails/`**, so that URL returns HTTP 200. diff --git a/examples/openclaw/_img/openclaw.png b/examples/openclaw/_img/openclaw.png deleted file mode 100644 index 59b15e4982d5f65c63556e1116560357d76f9d7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73227 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%0A39}f()xHW_JvSTll0PONxU73U)(1z^ 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 Date: Mon, 11 May 2026 06:09:01 +0100 Subject: [PATCH 14/17] ci: use Python 3.11 on GitHub Actions (3.7 unavailable) setup-python@v5; workflows validated against scripts that support 3.x. --- .github/workflows/generate-templates.yml | 4 ++-- .github/workflows/validate-examples.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/generate-templates.yml b/.github/workflows/generate-templates.yml index 1339f44c..8b890ecc 100644 --- a/.github/workflows/generate-templates.yml +++ b/.github/workflows/generate-templates.yml @@ -21,9 +21,9 @@ jobs: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: - python-version: 3.7 + python-version: "3.11" - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v1 with: diff --git a/.github/workflows/validate-examples.yml b/.github/workflows/validate-examples.yml index 84545dd8..16255576 100644 --- a/.github/workflows/validate-examples.yml +++ b/.github/workflows/validate-examples.yml @@ -23,9 +23,9 @@ jobs: steps: - uses: actions/checkout@v2 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: - python-version: 3.7 + python-version: "3.11" - name: Set up R uses: r-lib/actions/setup-r@v2 with: From 9be0b929004e6826ba6059d27e1850edeffe1343 Mon Sep 17 00:00:00 2001 From: GeoSegun Date: Mon, 11 May 2026 06:29:33 +0100 Subject: [PATCH 15/17] Revert "ci: use Python 3.11 on GitHub Actions (3.7 unavailable)" This reverts commit c07a55b4248a95d10f84d3da11cc0ffcadd103de. --- .github/workflows/generate-templates.yml | 4 ++-- .github/workflows/validate-examples.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/generate-templates.yml b/.github/workflows/generate-templates.yml index 8b890ecc..1339f44c 100644 --- a/.github/workflows/generate-templates.yml +++ b/.github/workflows/generate-templates.yml @@ -21,9 +21,9 @@ jobs: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v2 with: - python-version: "3.11" + python-version: 3.7 - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v1 with: diff --git a/.github/workflows/validate-examples.yml b/.github/workflows/validate-examples.yml index 16255576..84545dd8 100644 --- a/.github/workflows/validate-examples.yml +++ b/.github/workflows/validate-examples.yml @@ -23,9 +23,9 @@ jobs: steps: - uses: actions/checkout@v2 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v2 with: - python-version: "3.11" + python-version: 3.7 - name: Set up R uses: r-lib/actions/setup-r@v2 with: From d6d9d7283930768d29d5b85d05bd12f22b676dba Mon Sep 17 00:00:00 2001 From: GeoSegun Date: Mon, 11 May 2026 23:04:26 +0100 Subject: [PATCH 16/17] feat(openclaw): enhance deployment setup and configuration Updated the README to clarify the deployment process for OpenClaw, including environment variable requirements and startup commands. Added a new bootstrap script to automate installation and configuration of OpenClaw, including AI provider detection and optional WhatsApp and Telegram integration. Modified the saturn.json to reflect the new command and environment variables for deployment. --- .../openclaw/.saturn/bootstrap-openclaw.sh | 136 ++++++++++++++++++ examples/openclaw/.saturn/saturn.json | 15 +- examples/openclaw/README.md | 52 ++++++- 3 files changed, 195 insertions(+), 8 deletions(-) create mode 100755 examples/openclaw/.saturn/bootstrap-openclaw.sh diff --git a/examples/openclaw/.saturn/bootstrap-openclaw.sh b/examples/openclaw/.saturn/bootstrap-openclaw.sh new file mode 100755 index 00000000..b8e68b6f --- /dev/null +++ b/examples/openclaw/.saturn/bootstrap-openclaw.sh @@ -0,0 +1,136 @@ +#!/usr/bin/env bash +set -eo pipefail + +cat > "$HOME/start-openclaw.sh" <<'SCRIPT' +#!/usr/bin/env bash +set -euo pipefail + +echo "[openclaw] starting setup..." + +: "${OPENCLAW_GATEWAY_TOKEN:?OPENCLAW_GATEWAY_TOKEN is required}" +: "${OPENCLAW_PUBLIC_ORIGIN:?OPENCLAW_PUBLIC_ORIGIN is required}" + +ENABLE_WHATSAPP="${ENABLE_WHATSAPP:-false}" +ENABLE_TELEGRAM="${ENABLE_TELEGRAM:-false}" + +ENABLE_WHATSAPP="$(echo "$ENABLE_WHATSAPP" | tr '[:upper:]' '[:lower:]')" +ENABLE_TELEGRAM="$(echo "$ENABLE_TELEGRAM" | tr '[:upper:]' '[:lower:]')" + +is_true() { + case "$1" in + true|1|yes|y|on) return 0 ;; + false|0|no|n|off|"") return 1 ;; + *) + echo "[openclaw] invalid boolean value: $1" + echo "[openclaw] use true or false" + exit 1 + ;; + esac +} + +detect_ai_provider() { + if [ -n "${OPENAI_API_KEY:-}" ]; then + AI_AUTH_CHOICE="openai-api-key" + AI_MODEL="${OPENCLAW_MODEL:-openai/gpt-5.5}" + elif [ -n "${ANTHROPIC_API_KEY:-}" ]; then + AI_AUTH_CHOICE="anthropic-api-key" + AI_MODEL="${OPENCLAW_MODEL:-anthropic/claude-sonnet-4-5}" + elif [ -n "${GEMINI_API_KEY:-}" ] || [ -n "${GOOGLE_API_KEY:-}" ]; then + AI_AUTH_CHOICE="gemini-api-key" + AI_MODEL="${OPENCLAW_MODEL:-google/gemini-3.1-pro-preview}" + elif [ -n "${MISTRAL_API_KEY:-}" ]; then + AI_AUTH_CHOICE="mistral-api-key" + AI_MODEL="${OPENCLAW_MODEL:-mistral/mistral-large-latest}" + elif [ -n "${OPENROUTER_API_KEY:-}" ]; then + AI_AUTH_CHOICE="openrouter-api-key" + AI_MODEL="${OPENCLAW_MODEL:-openrouter/auto}" + else + echo "[openclaw] No AI provider API key found." + echo "[openclaw] Set one of: OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, GOOGLE_API_KEY, MISTRAL_API_KEY, OPENROUTER_API_KEY." + exit 1 + fi + + echo "[openclaw] selected auth provider: $AI_AUTH_CHOICE" + echo "[openclaw] selected model: $AI_MODEL" +} + +detect_ai_provider + +echo "[openclaw] installing OpenClaw..." + +curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash -s -- --no-onboard + +echo "[openclaw] installed version:" +openclaw --version + +echo "[openclaw] running onboarding..." + +openclaw onboard --non-interactive \ + --mode local \ + --auth-choice "$AI_AUTH_CHOICE" \ + --secret-input-mode ref \ + --gateway-port 8000 \ + --gateway-bind lan \ + --gateway-auth token \ + --gateway-token-ref-env OPENCLAW_GATEWAY_TOKEN \ + --accept-risk \ + --skip-health + +echo "[openclaw] setting default model..." + +openclaw config set agents.defaults.model.primary "$AI_MODEL" + +echo "[openclaw] setting allowed origin..." + +openclaw config set gateway.controlUi.allowedOrigins "[\"$OPENCLAW_PUBLIC_ORIGIN\"]" --strict-json + +echo "[openclaw] disabling Control UI device pairing for template mode..." + +openclaw config set gateway.controlUi.dangerouslyDisableDeviceAuth true --strict-json + +if is_true "$ENABLE_WHATSAPP"; then + echo "[openclaw] configuring WhatsApp..." + + : "${WHATSAPP_ALLOW_FROM:?WHATSAPP_ALLOW_FROM is required when ENABLE_WHATSAPP=true}" + + openclaw plugins install @openclaw/whatsapp + + openclaw config set channels.whatsapp.dmPolicy allowlist + openclaw config set channels.whatsapp.allowFrom "$WHATSAPP_ALLOW_FROM" --strict-json + openclaw config set channels.whatsapp.groupPolicy disabled + + echo "[openclaw] WhatsApp configured." + echo "[openclaw] After the UI opens, go to Channels and scan the WhatsApp QR code." +else + echo "[openclaw] WhatsApp disabled." +fi + +if is_true "$ENABLE_TELEGRAM"; then + echo "[openclaw] configuring Telegram..." + + : "${TELEGRAM_BOT_TOKEN:?TELEGRAM_BOT_TOKEN is required when ENABLE_TELEGRAM=true}" + : "${TELEGRAM_ALLOW_FROM:?TELEGRAM_ALLOW_FROM is required when ENABLE_TELEGRAM=true}" + + openclaw config set channels.telegram.enabled true + openclaw config set channels.telegram.botToken "$TELEGRAM_BOT_TOKEN" + + openclaw config set channels.telegram.dmPolicy allowlist + openclaw config set channels.telegram.allowFrom "$TELEGRAM_ALLOW_FROM" --strict-json + openclaw config set channels.telegram.groupPolicy disabled + + echo "[openclaw] Telegram configured." + echo "[openclaw] Message your Telegram bot from the allowlisted Telegram user ID." +else + echo "[openclaw] Telegram disabled." +fi + +echo "[openclaw] starting gateway on port 8000..." + +exec openclaw gateway +SCRIPT + +chmod +x "$HOME/start-openclaw.sh" + +echo "Created $HOME/start-openclaw.sh" + +exec "$HOME/start-openclaw.sh" diff --git a/examples/openclaw/.saturn/saturn.json b/examples/openclaw/.saturn/saturn.json index 81e1d120..f4659b1b 100644 --- a/examples/openclaw/.saturn/saturn.json +++ b/examples/openclaw/.saturn/saturn.json @@ -2,6 +2,17 @@ "name": "example-openclaw", "image_uri": "public.ecr.aws/saturncloud/saturn-python:2025.05.01", "description": "Deploy OpenClaw on Saturn Cloud.", + "environment_variables": { + "ANTHROPIC_API_KEY": "", + "ENABLE_TELEGRAM": "false", + "ENABLE_WHATSAPP": "false", + "OPENCLAW_GATEWAY_TOKEN": "", + "OPENCLAW_MODEL": "anthropic/claude-sonnet-4-5", + "OPENCLAW_PUBLIC_ORIGIN": "https://your-subdomain.community.saturnenterprise.io", + "TELEGRAM_ALLOW_FROM": "[\"123456789\"]", + "TELEGRAM_BOT_TOKEN": "", + "WHATSAPP_ALLOW_FROM": "[\"+1234567890\"]" + }, "working_directory": "/home/jovyan/examples/examples/openclaw", "git_repositories": [ { @@ -11,7 +22,7 @@ ], "deployment": { "instance_type": "large", - "command": "sleep infinity" + "command": "bash .saturn/bootstrap-openclaw.sh" }, "version": "2022.01.06" -} +} \ No newline at end of file diff --git a/examples/openclaw/README.md b/examples/openclaw/README.md index 84513d9a..44f7da05 100644 --- a/examples/openclaw/README.md +++ b/examples/openclaw/README.md @@ -1,14 +1,54 @@ # OpenClaw on Saturn Cloud -This example is a **Deployment** with `sleep infinity` so you can install and run [OpenClaw](https://docs.openclaw.ai/) over SSH. The recipe uses **`saturn-python:2025.05.01`** and instance size **`large`** (AWS **r5.large**: 2 vCPU, 16 GB RAM). For the full guide (resource options, env vars, install, WhatsApp, gateway, and troubleshooting), see the blog: +This example runs [OpenClaw](https://docs.openclaw.ai/) as a **Deployment**: on start it installs OpenClaw (once), applies onboarding and configuration from environment variables, then runs `openclaw gateway` on port **8000**. The recipe uses **`saturn-python:2025.05.01`** and instance size **`large`** (AWS **r5.large**: 2 vCPU, 16 GB RAM). + +For the full guide (resource options, QR flows, troubleshooting), see: [https://saturncloud.io/blog/how-to-deploy-openclaw-on-saturncloud/](https://saturncloud.io/blog/how-to-deploy-openclaw-on-saturncloud/) +## Startup + +`deployment.command`: **`bash .saturn/bootstrap-openclaw.sh`** (runs from **`working_directory`**). + ## Environment variables -Set these in the deployment **Details** (do not commit secrets). The blog explains each value and how to generate `OPENCLAW_GATEWAY_TOKEN`. +Set values in the deployment **Details** (never commit secrets). + +### Required + +| Variable | Description | +|----------|-------------| +| `OPENCLAW_GATEWAY_TOKEN` | Gateway authentication token (`--gateway-token-ref-env`). | +| `OPENCLAW_PUBLIC_ORIGIN` | Control UI allowed origin, e.g. `https://your-subdomain.community.saturnenterprise.io`. | + +### AI provider + +Set **one** API key; that determines the provider. Optional model override: **`OPENCLAW_MODEL`**. + +| Variable | Description | +|----------|-------------| +| `OPENAI_API_KEY` | OpenAI (`openai-api-key`). | +| `ANTHROPIC_API_KEY` | Anthropic (`anthropic-api-key`). | +| `GEMINI_API_KEY` or `GOOGLE_API_KEY` | Gemini (`gemini-api-key`). | +| `MISTRAL_API_KEY` | Mistral (`mistral-api-key`). | +| `OPENROUTER_API_KEY` | OpenRouter (`openrouter-api-key`). | +| `OPENCLAW_MODEL` | Primary model id (defaults depend on provider if unset). | + +### WhatsApp (optional) + +When **`ENABLE_WHATSAPP=true`**: + +| Variable | Description | +|----------|-------------| +| `ENABLE_WHATSAPP` | `true` / `false`. | +| `WHATSAPP_ALLOW_FROM` | JSON array string, e.g. `["+1234567890"]`. | + +### Telegram (optional) + +When **`ENABLE_TELEGRAM=true`**: -- `OPENAI_API_KEY` -- `OPENCLAW_GATEWAY_TOKEN` -- `OPENCLAW_PUBLIC_ORIGIN` -- `WHATSAPP_OWNER_E164` +| Variable | Description | +|----------|-------------| +| `ENABLE_TELEGRAM` | `true` / `false`. | +| `TELEGRAM_BOT_TOKEN` | Bot token from BotFather. | +| `TELEGRAM_ALLOW_FROM` | JSON array string, e.g. `["123456789"]`. | From 32f01cc522bfd56173b7a0c99503e3fe5a55cdeb Mon Sep 17 00:00:00 2001 From: GeoSegun Date: Thu, 14 May 2026 01:56:06 +0100 Subject: [PATCH 17/17] fix(openclaw): update deployment description to reflect beta status --- examples/openclaw/.saturn/saturn.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/openclaw/.saturn/saturn.json b/examples/openclaw/.saturn/saturn.json index f4659b1b..1b0d10fd 100644 --- a/examples/openclaw/.saturn/saturn.json +++ b/examples/openclaw/.saturn/saturn.json @@ -1,7 +1,7 @@ { "name": "example-openclaw", "image_uri": "public.ecr.aws/saturncloud/saturn-python:2025.05.01", - "description": "Deploy OpenClaw on Saturn Cloud.", + "description": "Deploy OpenClaw Beta on Saturn Cloud.", "environment_variables": { "ANTHROPIC_API_KEY": "", "ENABLE_TELEGRAM": "false",