Migrate from Render

Switch from Render to RaidFrame for flat pricing, built-in queues, and MCP integration.

Overview

Render and RaidFrame have similar developer experience — Docker support, managed databases, auto-deploys from GitHub. The migration is quick. The gains: flat pricing (no usage surprises), built-in queues and storage, database branching, MCP/AI integration, and traffic mirroring.

Step 1: Install the CLI

curl -fsSL https://get.raidframe.com | sh
rf auth login

Step 2: Export from Render

Environment Variables

In the Render dashboard, go to your service → Environment → copy all variables. Or use their API:

# Export Render env vars (via Render API)
curl -s -H "Authorization: Bearer $RENDER_TOKEN" \
  "https://api.render.com/v1/services/$SERVICE_ID/env-vars" | \
  jq -r '.[] | "\(.key)=\(.value)"' > .env

# Import to RaidFrame
rf env push

Database

# Get Render Postgres connection string from dashboard
# External Connection String → copy it

pg_dump $RENDER_POSTGRES_URL > backup.sql

rf add postgres
rf db import main backup.sql

Step 3: Convert Configuration

render.yaml → raidframe.yaml

# Render (render.yaml)
services:
  - type: web
    name: api
    runtime: docker
    dockerfilePath: ./Dockerfile
    envVars:
      - key: NODE_ENV
        value: production
    scaling:
      minInstances: 1
      maxInstances: 5
    healthCheckPath: /health

  - type: worker
    name: processor
    runtime: docker
    dockerfilePath: ./worker/Dockerfile

  - type: cron
    name: cleanup
    runtime: docker
    schedule: "0 3 * * *"
    dockerCommand: node scripts/cleanup.js

databases:
  - name: mydb
    plan: standard

redis:
  - name: cache
    plan: standard

Becomes:

# RaidFrame (raidframe.yaml)
services:
  api:
    type: web
    build:
      dockerfile: Dockerfile
    port: 3000
    health_check:
      path: /health
    scaling:
      min: 1
      max: 5

  processor:
    type: worker
    build:
      context: ./worker

  cleanup:
    type: cron
    schedule: "0 3 * * *"
    command: node scripts/cleanup.js

databases:
  main:
    engine: postgres
    plan: standard

  cache:
    engine: redis
    plan: standard

env:
  shared:
    NODE_ENV: production

Step 4: Deploy

rf deploy

Step 5: Move Domain

rf domains add myapp.com

Update DNS from Render's CNAME to RaidFrame's.

Render → RaidFrame Mapping

RenderRaidFrame
render.yamlraidframe.yaml
Web Servicetype: web
Private Servicetype: web (private by default on internal network)
Background Workertype: worker
Cron Jobtype: cron
Render Postgresrf add postgres
Render Redisrf add redis
Render Dashboardrf CLI + dashboard
Blueprint deploysrf deploy
Preview EnvironmentsAutomatic per PR
Auto-deploy from GitAutomatic from main

What You Gain

FeatureRenderRaidFrame
PricingUsage-based, per-seat ($19/seat)Flat per-service
Free tier spin-down15-min idle → sleepConfigurable (or always-on)
Job queuesNot built-inBuilt-in with retry + dead-letter
Object storageNot built-inS3-compatible, built-in
EmailNot built-inBuilt-in transactional email
SearchNot built-inManaged full-text search
Database branchingNot availableFork, test, merge
Traffic mirroringNot availableMirror prod → staging
Chaos engineeringNot availableBuilt-in resilience testing
MCP/AI integrationNot availableManage infra from AI assistants
VPN tunnelNot availableWireGuard mesh
SSH into containersPaid plans onlyAll plans
Canary deploymentsNot availableGradual rollout with auto-rollback
Cost intelligenceBasic billingForecasting + right-sizing

Common Migration Issues

Render Disk

If you're using Render's persistent disk, move files to RaidFrame object storage:

rf add storage
# Download from your Render service, upload to storage

Render Private Services

Render's "Private Services" (no public URL, internal only) map to RaidFrame worker services. Internal communication uses service.internal hostnames automatically.

Build Command

If you specified a custom build command in Render, add it to your Dockerfile or raidframe.yaml:

services:
  web:
    build:
      dockerfile: Dockerfile
      args:
        BUILD_CMD: "npm run build"

Auto-Deploy Branch

Render auto-deploys from a specific branch. Set the same on RaidFrame:

deploy:
  production:
    branch: main
    auto: true