Skip to main content
skill CX Codex

render-disks — Claude Code skill: persistent disks on Render

A skill for attaching and managing persistent disks on Render: mount paths, sizing, snapshots and file transfers. Useful when a service must keep uploads across deploys.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add render-oss/skills --skill render-disks -a claude-code
Open on GitHub

What render-disks does

Render's default filesystem is ephemeral. Anything written outside a disk's mount path disappears on the next deploy or restart. This skill gives the agent the rules for attaching a persistent disk, picking a mount path and size, and it explains why a disk-backed service runs as a single instance — horizontal scaling and zero-downtime deploys are off the table.

Inside are Blueprint instructions (disk with name, mountPath, sizeGB), snapshot and restore handling, and file transfers via SCP with SSH or Magic-Wormhole. Before touching a config the skill tells the agent to fetch the current Render docs through references/persistent-disks.md instead of trusting model memory. For relational data or cache state it points to Render Postgres and Render Key Value rather than a self-managed database on disk.

Disk capacity can grow but never shrink, so start with the smallest size that covers observed usage. For a small upload service the docs name a 1–5 GB starting range. One more thing worth knowing: a disk snapshot is the wrong tool for recovering a self-managed database such as MySQL, since a filesystem snapshot can restore an inconsistent state — use native backups like mysqldump and test the restore path.

What it helps with

  • attach a persistent disk to a Render service
  • set a mount path for uploads and CMS media
  • find out why a service can't scale horizontally
  • restore files from a disk snapshot
  • pick a disk size you won't need to shrink

Example prompts for the agent

  • Attach a persistent disk to my Render upload service and point writes at the mount path
  • Why can't my Render service use zero-downtime deploys?
  • Help me restore data from a disk snapshot

How to install render-disks

1Skills CLI (Vercel)

npx skills add render-oss/skills --skill render-disks -a claude-code

2Manually: put the files in place

~/.claude/skills/render-disks/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/render-disks/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about render-disks

How do I install render-disks in Claude?

Run npx skills add render-oss/skills --skill render-disks -a claude-code. The skill lands at ~/.claude/skills/render-disks/SKILL.md.

What does render-disks do?

It helps the agent attach and configure persistent disks on Render: mount path, sizing, snapshots, file transfers and the limits that come with a single-instance service.

Can I recover a MySQL database from a disk snapshot?

No. A filesystem snapshot can restore an inconsistent or corrupted database state, so the skill recommends native backups such as mysqldump with a tested restore procedure.

Source text

SKILL.md · MIT
---
name: render-disks
description: >-
  Attaches and manages persistent disks on Render services—mount paths, sizing,
  snapshots, file transfers, and single-instance constraints. Use when the user
  needs persistent storage, file uploads, a custom database on disk, CMS media
  storage, or needs to understand why their service can't scale horizontally
  or use zero-downtime deploys.
  Trigger terms: persistent disk, disk, storage, mount path, sizeGB, SSD,
  file uploads, snapshots, disk restore, ephemeral filesystem.
license: MIT
compatibility: Render paid web services, private services, and background workers
metadata:
  author: Render
  version: "1.0.0"
  category: storage
---

# Render Persistent Disks

Persistent disks preserve files written beneath a service's configured mount path across deploys and restarts.

Before designing, configuring, resizing, transferring data to, snapshotting, restoring, or troubleshooting a disk, read `references/persistent-disks.md`.

## When to Use

- Storing **file uploads**, CMS media, or user-generated content
- Running a **self-managed database** (MySQL, MongoDB, ClickHouse) on Render
- Deploying **stateful infrastructure** (Elasticsearch, Kafka, RabbitMQ, Mattermost)
- Understanding **why scaling is blocked** or **zero-downtime deploys are disabled**
- **Restoring data** from a disk snapshot

For managed databases, prefer **Render Postgres** (render-postgres) or **Key Value** (render-keyvalue) over self-managed alternatives on disk.

## Core Decisions

- Render's default filesystem is ephemeral. Only files written beneath a disk's mount path persist across deploys and restarts.
- A disk-backed service is single-instance: it cannot use horizontal scaling or zero-downtime deploys.
- If file storage must be shared by scaled instances, use external object storage such as S3 or R2. Use Render Postgres for relational data and Render Key Value for managed cache or queue state.
- Choose the smallest current disk size that accommodates observed usage because capacity can increase but cannot decrease. For a small upload service, 1–5 GB is a reasonable starting range when supported by the current limits.

## Blueprint Setup

For a native Node.js upload service, mount a subdirectory such as `/opt/render/project/src/uploads`, not the source root itself, and configure the application to write uploads there:

```yaml
services:
  - type: web
    name: uploads
    runtime: node
    buildCommand: npm ci
    startCommand: npm start
    disk:
      name: uploads-data
      mountPath: /opt/render/project/src/uploads
      sizeGB: 5
```

Fetch the current disk documentation and Blueprint specification through `references/persistent-disks.md` before finalizing the mount path or size.

## Database Backups and File Recovery

Do not use a disk snapshot to recover a self-managed database such as MySQL: a filesystem snapshot can restore an inconsistent or corrupted database state. Use database-native backups such as `mysqldump` and test their restore procedure. Move backup files off the service with a currently supported transfer method such as SCP with SSH or Magic-Wormhole. Snapshot restores replace the entire disk and permanently discard changes made after the selected snapshot.

## References

| Document | Contents |
|----------|----------|
| `references/persistent-disks.md` | Current disk constraints, configuration, sizing, snapshots, restores, and transfers |

## Related Skills

- **render-web-services** — Deploy lifecycle, health checks (disk disables zero-downtime)
- **render-private-services** — Internal services with disks (Elasticsearch, MySQL)
- **render-blueprints** — `disk` field reference in `render.yaml`
- **render-postgres** — Managed database alternative (no disk management needed)

<!-- shared:documentation-retrieval -->
## Current documentation retrieval

Whenever this skill directs you to consult current Render documentation:

1. Retrieve the linked Markdown document directly with an available URL-fetching tool or HTTP client, such as `curl`. Do not substitute web-search summaries for the document.
2. Confirm that retrieval succeeded and returned the expected document, then read its contents. Saving a file or printing its path is not sufficient.
3. If the request fails or your tool cannot read the Markdown response, open and read the linked HTML version instead.
4. If neither version can be retrieved, disclose that the current reference is unavailable and follow any topic-specific fallback in the skill. Use bundled guidance only for stable constraints, and do not guess at changeable platform details.

When a task requires multiple references, apply this workflow to each one and distinguish the documents you verified from those that remain unavailable.
<!-- /shared:documentation-retrieval -->

© Render · MIT · render-oss/skills

Similar skills

Everything for DevOps and infrastructure →

From the same set14

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor