
Exporte o que o Railway sabe
Variáveis por serviço com railway variables --kv; um pg_dump de cada banco de dados. Descarte as entradas RAILWAY_*: a Skiffly fornece os equivalentes SKIFFLY_*.

Migração · Railway → Skiffly
Os conceitos correspondem um a um: workspace, projeto, ambiente, serviço, ${{Postgres.DATABASE_URL}}. A maioria dos documentos de API roda sem alterações e os comandos da CLI têm os mesmos nomes. O que muda é a quem você paga e onde seus dados ficam.
Exportar, fazer deploy, virar a chave. O terminal abaixo é a migração inteira, do começo ao fim.

Variáveis por serviço com railway variables --kv; um pg_dump de cada banco de dados. Descarte as entradas RAILWAY_*: a Skiffly fornece os equivalentes SKIFFLY_*.

skiffly init em cada repositório, depois skiffly up. Defina as variáveis, faça deploy do template de Postgres, restaure o dump através do skiffly connect.

Teste no domínio *.skiffly.cloud gerado, adicione o domínio personalizado, troque o CNAME quando o certificado for emitido. Mantenha o Railway rodando até o DNS propagar.

Variáveis por serviço com railway variables --kv; um pg_dump de cada banco de dados. Descarte as entradas RAILWAY_*: a Skiffly fornece os equivalentes SKIFFLY_*.

skiffly init em cada repositório, depois skiffly up. Defina as variáveis, faça deploy do template de Postgres, restaure o dump através do skiffly connect.

Teste no domínio *.skiffly.cloud gerado, adicione o domínio personalizado, troque o CNAME quando o certificado for emitido. Mantenha o Railway rodando até o DNS propagar.
# 1. export
railway variables --kv > vars.env
pg_dump "$RAILWAY_DATABASE_URL" -Fc -f db.dump
# 2. deploy
skiffly init && skiffly up
skiffly deploy --template postgres
skiffly connect postgres --print # → pg_restore -d <url> db.dump
skiffly variables set --skip-deploys $(grep -v '^RAILWAY_' vars.env | xargs)
skiffly variables set 'DATABASE_URL=${{Postgres.DATABASE_URL}}'
skiffly redeploy
# 3. cut over
skiffly domain app.example.com # prints the CNAME + TXT recordsskiffly up, skiffly logs -f, skiffly variables set, skiffly domain, skiffly connect. Mesmos nomes da CLI do Railway onde o recurso existe.
Aponte o Claude Code, o Cursor ou o Codex para o servidor MCP da Skiffly e deixe o agente fazer a migração: skiffly mcp install claude. Os nomes das ferramentas espelham o servidor MCP do Railway.
projects, deployments(input:), variables, serviceInstanceUpdate, templateDeployV2 e os demais campos compatíveis funcionam como estão. Troque o endpoint e o token.
Um railway.ts do railway/iac vira .skiffly/skiffly.ts com defineRailway → defineSkiffly. Todo o resto mantém o nome.
$PORT (padrão 8080 quando não definida).*.railway.internal ou de rede privada IPv6.
Um app e um banco de dados sem cartão para testar o build. Recarregue quando estiver pronto para a virada.