deploy-on-renderDeploy and operate apps on Render (Blueprint + one-click Dashboard deeplink, same flow as Codex render-deploy). Use when the user wants to deploy, host, or publish an app; create or edit render.yaml; add web, static, workers, cron, Postgres, or Key Value; get the Blueprint deeplink to deploy; trigger or verify deploys via API when RENDER_API_KEY is set; connect Render MCP via mcporter for direct service creation; or configure env vars, health checks, scaling, previews, and projects.
Install via ClawdBot CLI:
clawdbot install ojusave/deploy-on-renderDeploy and manage applications on Render using Blueprints (render.yaml), the Dashboard, or the API. This skill mirrors the Codex render-deploy flow: analyze codebase → generate/validate Blueprint → commit & push → one-click Dashboard deeplink → optional API/mcporter verify or re-deploy.
Activate when the user wants to:
render.yaml Blueprint (new or existing repo)RENDER_API_KEY is set → Prefer REST API or MCP (fastest; no user click). Use references/rest-api-deployment.md for request bodies, or mcporter if configured (see references/mcp-integration.md).Check for API key:
[ -n "$RENDER_API_KEY" ] && echo "RENDER_API_KEY is set" || echo "RENDER_API_KEY is not set"
Before deep analysis, use this short sequence to reduce friction:
Then follow Deploy to Render below (Blueprint → push → deeplink → verify).
git remote -v; if none, ask the user to create a repo on GitHub/GitLab/Bitbucket, add origin, and push.render blueprints validate render.yaml. Install: brew install render or Render CLI.RENDER_API_KEY in the environment.sync: false for API keys, passwords, and tokens; the user fills them in the Dashboard.render blueprints validate render.yaml or use the Validate Blueprint API so invalid YAML is never pushed.references/codebase-analysis.md (detect runtime, build/start commands, env vars)references/blueprint-spec.md (root keys, service types, env vars, validation)references/rest-api-deployment.md (direct API create service: ownerId, request bodies, type mapping)references/mcp-integration.md (Render MCP tools, mcporter usage, supported runtimes/plans/regions)references/post-deploy-checks.md (verify deploy status and health via API)references/troubleshooting-basics.md (build/startup/runtime failures)assets/ (example Blueprints: node-express.yaml, python-web.yaml, static-site.yaml, web-with-postgres.yaml)render.yaml at the root of the Git repository (required).services, databases, envVarGroups, projects, ungrouped, previews.generation, previews.expireAfterDays.Validation: render blueprints validate render.yaml (Render CLI v2.7.0+), or the Validate Blueprint API endpoint.
| type | Purpose |
|------------|--------|
| web | Public HTTP app or static site (use runtime: static for static) |
| pserv | Private service (internal hostname only, no public URL) |
| worker | Background worker (runs continuously, e.g. job queues) |
| cron | Scheduled job (cron expression; runs and exits) |
| keyvalue | Render Key Value instance (Redis/Valkey-compatible; defined in services) |
Note: Private services use pserv, not private. Key Value is a service with type: keyvalue; do not use a separate root key for it in new Blueprints (some older blueprints use keyValueStores and fromKeyValueStore—prefer the official format).
Use runtime (preferred; env is deprecated): node, python, elixir, go, ruby, rust, docker, image, static. For static sites: type: web, runtime: static, and staticPublishPath (e.g. ./build or ./dist) required.
services:
- type: web
name: my-app
runtime: node
buildCommand: npm install
startCommand: npm start
envVars:
- key: NODE_ENV
value: production
Python example: runtime: python, buildCommand: pip install -r requirements.txt, startCommand: uvicorn app.main:app --host 0.0.0.0 --port $PORT (or gunicorn). Set PYTHON_VERSION / NODE_VERSION in envVars when needed.
- type: web
name: my-blog
runtime: static
buildCommand: yarn build
staticPublishPath: ./build
Optional: headers, routes (redirects/rewrites). See Static Sites.
key + value (never hardcode secrets).fromDatabase.name + fromDatabase.property (e.g. connectionString).fromService.type + fromService.name + fromService.property (e.g. connectionString, host, port, hostport) or fromService.envVarKey for another service’s env var.sync: false (user is prompted in Dashboard on first create; add new secrets manually later). Cannot be used inside env var groups.generateValue: true (base64 256-bit value).fromGroup: to attach an env var group.Env groups cannot reference other services (no fromDatabase/fromService in groups) and cannot use sync: false. Put secrets and DB/KV references in service-level envVars, or reference a group and add service-specific vars alongside.
databases:
- name: my-db
plan: basic-256mb
databaseName: my_app
user: my_user
region: oregon
postgresMajorVersion: "18"
Plans (current): free, basic-256mb, basic-1gb, basic-4gb, pro-, accelerated-. Legacy: starter, standard, pro, pro plus (no new DBs on legacy). Optional: diskSizeGB, ipAllowList, readReplicas, highAvailability.enabled. Reference in services: fromDatabase.name, property: connectionString.
Key Value instances are services with type: keyvalue (or deprecated redis). ipAllowList is required: use [] for internal-only, or - source: 0.0.0.0/0 to allow external.
services:
- type: keyvalue
name: my-cache
ipAllowList:
- source: 0.0.0.0/0
description: everywhere
plan: free
maxmemoryPolicy: allkeys-lru
Reference in another service: fromService.type: keyvalue, fromService.name: my-cache, property: connectionString. Policies: allkeys-lru (caching), noeviction (job queues), etc. See Key Value.
Note: Some repos use root-level keyValueStores and fromKeyValueStore; the official spec uses services + fromService. Prefer the official form for new Blueprints.
- type: cron
name: my-cron
runtime: python
schedule: "0 * * * *"
buildCommand: "true"
startCommand: python scripts/daily.py
envVars: []
schedule is a cron expression (minute hour day month weekday). buildCommand is required (use "true" if no build). Free plan not available for cron/worker/pserv.
Share vars across services. No fromDatabase/fromService/sync: false inside groups—only literal values or generateValue: true.
envVarGroups:
- name: app-env
envVars:
- key: CONCURRENCY
value: "2"
- key: APP_SECRET
generateValue: true
services:
- type: web
name: api
envVars:
- fromGroup: app-env
- key: DATABASE_URL
fromDatabase:
name: my-db
property: connectionString
healthCheckPath: /health for zero-downtime deploys.region: oregon (default), ohio, virginia, frankfurt, singapore (set at create; cannot change later).preDeployCommand runs after build, before start (e.g. migrations).numInstances: 2.scaling.minInstances, scaling.maxInstances, scaling.targetCPUPercent or scaling.targetMemoryPercent. Not available with persistent disks.disk.name, disk.mountPath, disk.sizeGB (web, pserv, worker).rootDir, buildFilter.paths / buildFilter.ignoredPaths, dockerfilePath / dockerContext.runtime: docker (build from Dockerfile) or runtime: image (pull from registry). Use dockerCommand instead of startCommand when needed.previews.generation: off | manual | automatic, optional previews.expireAfterDays. Per-service previews.generation, previews.numInstances, previews.plan.projects with environments (each lists services, databases, envVarGroups). Use for staging/production. Optional ungrouped for resources not in any environment.Web service with fromDatabase for Postgres and fromService for Key Value. Add one databases entry and one type: keyvalue service; reference both from the web service envVars. See assets/web-with-postgres.yaml for Postgres; add a keyvalue service and fromService for Redis URL.
Multiple services in one Blueprint: type: web for the API, type: worker for a background processor, type: cron for scheduled jobs. Share envVarGroups or repeat env vars; use fromDatabase/fromService for shared DB/Redis. All use the same branch and buildCommand/startCommand as appropriate per runtime.
Set root-level previews.generation: automatic (or manual). Optionally previews.expireAfterDays: 7. Each PR gets a preview URL; per-service overrides with previews.generation, previews.numInstances, or previews.plan when needed.
plan: free | starter | standard | pro | pro plus (and for web/pserv/worker: pro max, pro ultra). Omit to keep existing or default to starter for new. Free not available for pserv, worker, cron.
render.yaml.To use the Render API from the agent (verify deploys, trigger deploys, list services/logs):
RENDER_API_KEY in the environment (e.g. skills.entries.render.env or process env).Authorization: Bearer $RENDER_API_KEY on all requests.Goal: get the app deployed by generating a Blueprint, then one-click via Dashboard deeplink; optionally trigger or verify via API when the user has RENDER_API_KEY.
references/codebase-analysis.md to determine runtime, build/start commands, env vars, and datastores.render.yaml at repo root (see Blueprint sections above and references/blueprint-spec.md). Use sync: false for secrets. See assets/ for examples.render blueprints validate render.yaml (install: brew install render or Render CLI install).Render reads the Blueprint from the Git remote. The file must be committed and pushed.
git add render.yaml
git commit -m "Add Render deployment configuration"
git push origin main
If there is no Git remote, stop and ask the user to create a repo on GitHub/GitLab/Bitbucket, add it as origin, and push. Without a pushed repo, the Dashboard deeplink will not work.
Get the repo URL and build the Blueprint deeplink:
git remote get-url origin
If the URL is SSH, convert to HTTPS (Render needs HTTPS for the deeplink):
| SSH | HTTPS |
|-----|--------|
| git@github.com:user/repo.git | https://github.com/user/repo |
| git@gitlab.com:user/repo.git | https://gitlab.com/user/repo |
| git@bitbucket.org:user/repo.git | https://bitbucket.org/user/repo |
Pattern: replace git@ with https://, remove .git suffix.
Deeplink format:
https://dashboard.render.com/blueprint/new?repo=<REPO_HTTPS_URL>
Example: https://dashboard.render.com/blueprint/new?repo=https://github.com/username/my-app
Give the user this checklist:
render.yaml is in the repo at the root (they just pushed it).sync: false).Deployment starts automatically. User can monitor in the Dashboard.
If the user has set RENDER_API_KEY (e.g. in skills.entries.render.env or process env), the agent can verify after the user has applied the Blueprint:
GET https://api.render.com/v1/services — Header: Authorization: Bearer $RENDER_API_KEY. Find the service by name.GET https://api.render.com/v1/services/{serviceId}/deploys?limit=1 — Check for status: "live" to confirm success.Example (exec tool or curl):
curl -s -H "Authorization: Bearer $RENDER_API_KEY" "https://api.render.com/v1/services" | head -100
curl -s -H "Authorization: Bearer $RENDER_API_KEY" "https://api.render.com/v1/services/{serviceId}/deploys?limit=1"
For a short checklist and common fixes, use references/post-deploy-checks.md and references/troubleshooting-basics.md.
RENDER_API_KEY, trigger a new deploy:https://api.render.com/v1/services/{serviceId}/deploysAuthorization: Bearer $RENDER_API_KEY{ "clearCache": "do_not_clear" } or "clear"RENDER_DEPLOY_HOOK_URL); then the agent can run curl -X POST "$RENDER_DEPLOY_HOOK_URL" to trigger a deploy.So: OpenClaw can deploy by (1) creating render.yaml, (2) having the user push and click the Blueprint deeplink (one-click), and optionally (3) triggering or verifying deploys via API or deploy hook when credentials are available.
OpenClaw does not load MCP servers from config. Use one of:
Use RENDER_API_KEY and the Render REST API (curl/exec): create services, list services, trigger deploys, list deploys, list logs. Request bodies and endpoints: references/rest-api-deployment.md.
If the user has mcporter and Render configured (URL https://mcp.render.com/mcp, Bearer $RENDER_API_KEY), the agent can call Render MCP tools directly. Tool list and example commands: references/mcp-integration.md.
Example:
mcporter call render.list_services
mcporter call render.create_web_service name=my-api runtime=node buildCommand="npm ci" startCommand="npm start" repo=https://github.com/user/repo branch=main plan=free
Workspace must be set first (e.g. user: “Set my Render workspace to MyTeam”). Use mcporter list render --schema to see current tools and parameters.
render.yaml with services (and optionally databases, envVarGroups, projects). Use runtime and official Key Value form (type: keyvalue in services, fromService for references).sync: false for secrets in service envVars only; tell user to set them in Dashboard. Never put secrets in env groups.ipAllowList (required).render blueprints validate render.yaml or API.https://dashboard.render.com/blueprint/new?repo=) to deploy. Optionally verify or re-deploy via API if RENDER_API_KEY is set.sync: false and document which env vars the user must set.runtime (not deprecated env). For Python/Node set PYTHON_VERSION/NODE_VERSION in envVars when required.fromService with correct type (e.g. keyvalue, pserv).AI Usage Analysis
Analysis is being generated… refresh in a few seconds.
Automatically update Clawdbot and all installed skills once daily. Runs via cron, checks for updates, applies them, and messages the user with a summary of what changed.
Full desktop computer use for headless Linux servers. Xvfb + XFCE virtual desktop with xdotool automation. 17 actions (click, type, scroll, screenshot, drag,...
Essential Docker commands and workflows for container management, image operations, and debugging.
Tool discovery and shell one-liner reference for sysadmin, DevOps, and security tasks. AUTO-CONSULT this skill when the user is: troubleshooting network issues, debugging processes, analyzing logs, working with SSL/TLS, managing DNS, testing HTTP endpoints, auditing security, working with containers, writing shell scripts, or asks 'what tool should I use for X'. Source: github.com/trimstray/the-book-of-secret-knowledge
Deploy applications and manage projects with complete CLI reference. Commands for deployments, projects, domains, environment variables, and live documentation access.
Monitor topics of interest and proactively alert when important developments occur. Use when user wants automated monitoring of specific subjects (e.g., product releases, price changes, news topics, technology updates). Supports scheduled web searches, AI-powered importance scoring, smart alerts vs weekly digests, and memory-aware contextual summaries.