Migrate from Railway

Move your Railway project to RaidFrame with flat pricing and more features.

Overview

Railway and RaidFrame are similar in developer experience — both support Docker, databases, and environment variables. The migration is straightforward. The main gains: flat pricing (no per-seat charges), built-in queues, cron, object storage, and MCP integration.

Step 1: Install the CLI

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

Step 2: Export from Railway

Environment Variables

# In your Railway project directory
railway variables --json > railway-env.json

Database

# Get your Railway Postgres connection string
railway connect postgres

# Export
pg_dump $RAILWAY_DATABASE_URL > backup.sql

Step 3: Initialize on RaidFrame

rf init
Detected: Dockerfile
Project name: my-app

✓ raidframe.yaml generated

Import Environment Variables

# Import from Railway export
rf env push --file railway-env.json

Or set manually:

rf env set $(cat .env | grep -v '^#' | xargs)

Step 4: Add Databases

rf add postgres
rf db import main backup.sql

rf add redis  # if you were using Railway Redis

Step 5: Deploy

rf deploy

Railway → RaidFrame Mapping

RailwayRaidFrame
railway uprf deploy
railway linkrf link
railway logsrf logs
railway variablesrf env list
railway connectrf db connect
railway.tomlraidframe.yaml
Railway Postgresrf add postgres
Railway Redisrf add redis

What You Gain

  • No per-seat pricing — Railway charges $5/seat/mo. RaidFrame pricing is per service.
  • Built-in cron jobs — no workaround with separate services
  • Job queues — native queues with retry and dead-letter
  • Object storage — S3-compatible, no external provider
  • Email sending — built-in transactional email
  • Database branching — fork databases for testing
  • MCP integration — manage infrastructure from your AI coding assistant
  • Traffic mirroring — test new versions against real traffic
  • Chaos engineering — built-in resilience testing

railway.toml → raidframe.yaml

# Railway (railway.toml)
[build]
builder = "DOCKERFILE"
dockerfilePath = "Dockerfile"

[deploy]
healthcheckPath = "/health"
restartPolicyType = "ON_FAILURE"

Becomes:

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