Skip to content
Skills Library
DevOps & cloud · Building & coding

render

/render

Deploys web apps, APIs, static sites, workers, cron jobs and Postgres on Render, the cloud platform configured through a render.yaml Blueprint. Use when a user asks to host an app on Render, write or fix render.yaml, wire environment variables between services, set up auto-deploy from Git, autoscale, add a custom domain, or trigger deploys with the Render API or CLI.

Repository
skills ↗
Licence
Apache-2.0
Last repository change
25.10.2026

Assessment and security

100/ 100Class: good
Format25 / 25
Frontmatter with name and description, valid name, description up to 1,024 characters, name matching the folder.
Discoverability25 / 25
Description explains when to use the skill, has a reasonable length and uses third person.
Content35 / 35
At least 150 words and at most 500 lines, headings, step lists, examples or code.
Hygiene15 / 15
No placeholders such as TODO, no Windows paths, with a licence.
Riskno signals detected in the scan
Files in this package
2
Scripts
0
HTML comments
0
URLs in SKILL.md
7
Deprecation

No signals detected. Repository changed on 25.10.2026, without references to retired models or APIs.

Licence

Apache-2.0, otwarta: można używać i zmieniać, z zachowaniem licencji i informacji o zmianach.

What it does and when to use it

Deploys web apps, APIs, static sites, workers, cron jobs and Postgres on Render, the cloud platform configured through a render.yaml Blueprint. Use when a user asks to host an app on Render, write or fix render.yaml, wire environment variables between services, set up auto-deploy from Git, autoscale, add a custom domain, or trigger deploys with the Render API or CLI.

Original author description

Deploys web apps, APIs, static sites, workers, cron jobs and Postgres on Render, the cloud platform configured through a render.yaml Blueprint. Use when a user asks to host an app on Render, write or fix render.yaml, wire environment variables between services, set up auto-deploy from Git, autoscale, add a custom domain, or trigger deploys with the Render API or CLI.

How it works

  1. Overview
  2. Instructions
  3. Examples
  4. Guidelines
Original SKILL.md headings · 208 lines, 1,036 words
SKILL.md preview
---
name: render
description: >-
  Deploys web apps, APIs, static sites, workers, cron jobs and Postgres on Render, the cloud platform configured through a render.yaml Blueprint. Use when a user asks to host an app on Render, write or fix render.yaml, wire environment variables between services, set up auto-deploy from Git, autoscale, add a custom domain, or trigger deploys with the Render API or CLI.
license: Apache-2.0
compatibility: "Render account; a Git repository (GitHub, GitLab, Bitbucket) or a Docker image"
metadata:
  author: terminal-skills
  version: "1.1.0"
  category: devops
  tags: "paas, deployment, hosting, docker, postgresql"
---

# Render — Cloud Application Platform

## Overview

Render runs web services, private services, background workers, cron jobs, static sites, Postgres and Key Value (Redis-compatible) instances. Everything can be declared in one `render.yaml` file at the repository root (a Blueprint); Render creates and updates the services from it. Services deploy from a Git branch or a Docker image.

Checked against the Blueprint spec and API docs in October 2026. Older examples use names that are now deprecated: `autoDeploy: true` (use `autoDeployTrigger`), `type: redis` (use `keyvalue`), `customDomains` (the field is `domains`), and plan names like `starter` or `standard` (current plans are named by size, such as `0.5c-512mb`, `1c-2g`).

## Instructions

### Blueprint (render.yaml)

```yaml
services:
  - type: web
    name: api-server
    runtime: node
    region: oregon                  # oregon | ohio | virginia | frankfurt | singapore
    plan: 1c-2g                     # free | 0.5c-512mb | 1c-2g | 2c-4g | ...
    buildCommand: npm ci && npm run build
    startCommand: npm start
    autoDeployTrigger: commit       # commit | checksPass | off
    healthCheckPath: /health
    domains:
      - api.shopwave.io
    envVars:
      - key: NODE_ENV
        value: production
      - key: DATABASE_URL
        fromDatabase:
          name: main-db
          property: connectionString
      - key: REDIS_URL
        fromService:
          type: keyvalue
          name: redis-cache
          property: connectionString
      - key: JWT_SECRET
        generateValue: true         # random value created once
      - key: SENTRY_DSN
        sync: false                 # asked for in the dashboard, never stored in Git
      - fromGroup: shared-config
    scaling:                        # autoscaling needs a Pro workspace or higher
      minInstances: 1
      maxInstances: 5
      targetCPUPercent: 60
      targetMemoryPercent: 70

  - type: worker
    name: job-processor
    runtime: node
    buildCommand: npm ci && npm run build
    startCommand: npm run worker
    envVars:
      - fromGroup: shared-config
      - key: DATABASE_URL
        fromDatabase:
          name: main-db
          property: connectionString

  - type: web
    name: frontend
    runtime: static
    buildCommand: cd frontend && npm ci && npm run build
    staticPublishPath: frontend/dist
    headers:
      - path: /*
        name: Cache-Control
        value: public, max-age=31536000, immutable
      - path: /index.html
        name: Cache-Control
        value: no-cache
    routes:
      - type: rewrite
        source: /*
        destination: /index.html

  - type: cron
    name: daily-cleanup
    runtime: node
    buildCommand: npm ci
    startCommand: npm run cleanup
    schedule: "0 3 * * *"           # UTC

  - type: pserv                     # private service, reachable only inside the workspace network
    name: internal-api
    runtime: docker
    dockerfilePath: ./Dockerfile
    envVars:
      - key: PORT
        value: "3001"

  - type: keyvalue
    name: redis-cache
    plan: 1g
    ipAllowList: []                 # required; empty = internal connections only

databases:
  - name: main-db
    plan: 1c-2g
    databaseName: shopwave
    postgresMajorVersion: "17"      # a string
    ipAllowList: []

envVarGroups:
  - name: shared-config
    envVars:
      - key: LOG_LEVEL
        value: info
      - key: CORS_ORIGIN
        value: https://shopwave.io
```

Runtimes: `node`, `python`, `ruby`, `go`, `elixir`, `rust`, `docker`, `image` (prebuilt image) and `static`. Env var groups cannot use `fromService` or `sync: false`. Pull request previews are configured with the `previews` object (`generation: automatic`). Create the Blueprint in the dashboard (New, Blueprint) and connect the repo; changes to `render.yaml` on the tracked branch sync automatically.

### Ports

A web service must bind `0.0.0.0` on the port in the `PORT` variable; the default is `10000`. Services that listen elsewhere are reported as failing to detect an open port.

### Render CLI

```bash
brew install render-oss/render/render        # or: winget install Render.CLI
render login                                 # browser sign-in; in CI set RENDER_API_KEY instead
render blueprints validate render.yaml       # check the file before pushing
render deploys create srv-cq1x9k2n8j5s73d4lm0g    # trigger a deploy
render services -o json                      # list services, non-interactive
```

Binaries are also on https://github.com/render-oss/cli/releases; do not run an installer script piped into a shell.

### Docker deployment

Set `runtime: docker` and `dockerfilePath`. A multi-stage build keeps the image small; install dev dependencies in the build stage because the build needs them:

```dockerfile
FROM node:22-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build && npm prune --omit=dev

FROM node:22-alpine
WORKDIR /app
RUN addgroup -g 1001 -S nodejs && adduser -S nodejs -u 1001 -G nodejs
COPY --from=builder --chown=nodejs:nodejs /app/dist ./dist
COPY --from=builder --chown=nodejs:nodejs /app/node_modules ./node_modules
COPY --from=builder --chown=nodejs:nodejs /app/package.json ./
USER nodejs
ENV NODE_ENV=production
CMD ["node", "dist/index.js"]
```

### REST API

Base URL `https://api.render.com/v1`, header `Authorization: Bearer $RENDER_API_KEY`; create the key in Account Settings. OpenAPI spec: https://api.render.com/openapi.json.

```typescript
const headers = {
  Authorization: `Bearer ${process.env.RENDER_API_KEY}`,
  "Content-Type": "application/json",
};
const serviceId = process.env.RENDER_SERVICE_ID;

// POST /services/{id}/deploys  (clearCache: "clear" | "do_not_clear"; optional commitId)
const deploy = await fetch(`https://api.render.com/v1/services/${serviceId}/deploys`, {
  method: "POST",
  headers,
  body: JSON.stringify({ clearCache: "do_not_clear" }),
}).then((r) => r.json());

// POST /services/{id}/scale  (ignored while autoscaling is enabled)
await fetch(`https://api.render.com/v1/services/${serviceId}/scale`, {
  method: "POST",
  headers,
  body: JSON.stringify({ numInstances: 3 }),
});
```

## Examples

### Example 1: Node API, React frontend and Postgres from one repo

Request: "I have a Node API in `/api` and a React app in `/web`. Put both on Render with a database."

Write `render.yaml` with a `type: web` Node service (`rootDir: api`, `healthCheckPath: /health`), a `type: web` `runtime: static` service (`rootDir: web`, `staticPublishPath: dist`, the SPA rewrite route) and a `databases` entry whose `connectionString` feeds `DATABASE_URL` through `fromDatabase`. Then run `render blueprints validate render.yaml`, commit and connect the repo as a Blueprint.

Result: validation prints no errors; after the first sync the dashboard shows three resources, the API at `https://api-server.onrender.com` answering `/health`.

### Example 2: Deploy fails with "no open ports detected"

Request: "Render says the deploy timed out and no open port was detected. Logs show the app listening on 3000."

Change the server to listen on `process.env.PORT` and host `0.0.0.0` (or set `PORT: "3000"` in `envVars`), then redeploy with `render deploys create srv-cq1x9k2n8j5s73d4lm0g`.

Result: the deploy goes live once `/health` returns 200.

## Guidelines

- Keep `render.yaml` the source of truth. The Blueprint does not delete dashboard-only settings it does not mention, so review diffs before syncing.
- Always set `healthCheckPath` on web services so deploys switch over only when the new instance is healthy.
- Never put secrets in YAML values: use `sync: false`, `generateValue: true` or the dashboard. Keep API keys in `RENDER_API_KEY`, not in the repo.
- Free instances are not for production: free web services spin down after 15 minutes idle (about a minute to wake), have an ephemeral filesystem, and a free Postgres expires after 30 days. Workers and cron jobs have no free plan.
- Use connection pooling (the database `connectionPool` setting or your ORM's pool); each Postgres plan has a connection limit.
- Cron schedules run in UTC. Use environment groups for config shared by several services.
Files in this package (2)
  • SKILL.md 9 KB
  • _scores.json 2 KB

Versions

RepositoryScoreLicence
This page · TerminalSkills/skills100Apache-2.0
ericrisco/rsc-harness100MIT
mgiovani/cc-arsenal100MIT
chris-peterson/fathom100MIT
gtlpanda/PandaStack100MIT
Nubaeon/empirica100MIT
dmitriyyukhanov/agent-plugins100MIT
aaditya3301/render-skill100MIT
G1Joshi/Agent-Skills100MIT

Database snapshot: 13.11.2026 · package version 9a2ca6b4299c (SHA-256 digest of the entire package)

Downloads in the last 30 days: 0 · ranking

Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.

Similar skills

  • 86devops/deploy-render
    Render 部署方法论,使用 render.yaml 蓝图和 Render CLI 部署全栈应用(Web 服务、Worker、静态站点、数据库)
  • 100render-deploy
    Deploy applications to Render by analyzing codebases, generating render.yaml Blueprints, and providing Dashboard deeplinks. Use when the user wants to deploy, host, publish, or set up their application on Render's cloud platform.
  • 100koyeb
    Koyeb is a serverless cloud platform that runs web services, workers and databases from a Git repository or Docker image, with autoscaling, multi-region deployment and a managed Postgres. Use when a user asks to deploy an app to Koyeb, use the koyeb CLI, set secrets and…
  • 100render-cli
    Installs and uses the Render CLI for deploys, logs, SSH, psql, Blueprint validation, and automation. Use when the user needs to run Render CLI commands, script deploys in CI/CD, authenticate with an API key, query services non-interactively, or troubleshoot CLI auth issues.…
  • 100vercel-cli
    Deploy apps to Vercel. Use when asked to deploy, ship, or publish a web application, or manage Vercel projects, domains, and environment variables.
  • 100render-web-services
    配置 Render web service——端口绑定、TLS、健康检查、自定义域名、自动部署、PR 预览、持久化磁盘及部署生命周期。当用户需要搭建 web service、修复健康检查失败、添加自定义域名、配置零停机部署,或排查端口绑定问题时使用。

Feedback and reports

Your message goes to Bartosz Sokoliński. An email address is needed only for a reply. See the privacy policy.