Skip to content
Two boats side by side at night: a wooden skiff with a glowing teal sail and a lantern, and a plain grey boat with a limp sail

Comparison · updated September 2026

Railway's workflow, predictable billing.

Skiffly keeps what makes Railway pleasant: connect a repo, get a service with a domain, wire databases with ${{Postgres.DATABASE_URL}}. It changes the parts that hurt small teams: you pay from a prepaid balance, with the payment method you have, on EU-only nodes we own.

Why switch

Why people switch

A bill you can see coming

Top up $20 and watch the runway. We warn at 20% and at zero, hold for 3 days, then pause. Nothing is deleted and no invoice arrives.

Pay how you can

Not everyone has a card that works with US billing. PayPal and stablecoins top up the same balance at the exchange rate at confirmation, with no fee from us.

Data stays in the EU

Our own nodes in Finland. No hyperscaler in the path, no transfer outside the EU, backups in EU object storage.

Nothing new to learn

The GraphQL fields, CLI commands and MCP tools mirror Railway where the feature exists. ${{Postgres.DATABASE_URL}} references, PR environments, templates: same shapes.

Migration

Migrate in 10 minutes

Three commands for the app, one dump and restore for the database. The guide walks through variables, domains and the things to check before cutting over.

A dockside crane lowers a glowing crate into a small skiff moored at a night pier
01 · EXPORT

Export from Railway

Variables with one command, a dump of each database. Drop the platform-specific entries: Skiffly provides the SKIFFLY_* equivalents.

A boat shed lit warm amber from inside, a skiff on the slipway with a few sparks and a teal glow
02 · BUILD

Build on Skiffly

skiffly init && skiffly up builds the same repository with Railpack, every service in its own sandbox. Set the variables, deploy the Postgres template, restore the dump.

A lighthouse sweeps its beam over a skiff with a teal sail moored at a jetty with a lit signpost
03 · CUT OVER

Move the domain

Test on the generated *.skiffly.cloud domain, add the custom one, switch the CNAME once the certificate is issued. Keep Railway running until DNS has propagated.

terminal
$ railway variables --kv > vars.env   # export from Railway
$ skiffly init && skiffly up          # build the repo on Skiffly
$ skiffly variables set --skip-deploys $(grep -v '^RAILWAY_' vars.env | xargs)
Where Railway is ahead

More regions, a larger template catalog, log drains and a longer track record. Skiffly is a younger product with one EU region and no SLA yet: right for side projects, startups and agencies that value predictable cost over global reach.

Full migration guide
Compare

Side by side

What we know about ourselves is exact; what we say about others is deliberately general. Check their pricing page for current numbers.

How you paySkiffly · Card, PayPal or crypto (USDT, USDC, BTC, ETH), all into a prepaid balanceRailway · Card
Billing modelSkiffly · Prepaid balance drawn per minute; 3-day grace period, then pause. Never an invoice.Railway · Usage billed monthly in arrears
Free tier without a cardSkiffly · Yes: one app plus one database, 512 MB / 1 vCPU each; the app sleeps after 10 min idle, 50 vCPU·h a month; static sites never sleepRailway · Time-limited trial; see their pricing page
EU hostingSkiffly · EU only: our own nodes in Helsinki, Finland; volumes, logs and backups stay in the EURailway · Multiple regions on hyperscaler infrastructure, EU among them
Workload isolationSkiffly · Own kernel per service: gVisor by default, Kata microVM on request; private network per projectRailway · Not disclosed
API / CLI / MCPSkiffly · Railway-compatible GraphQL fields, same CLI command names, MCP server with matching tool namesRailway · Railway GraphQL API, CLI, MCP server
BackupsSkiffly · Included: daily volume snapshots, 7 daily / 4 weekly / 3 monthly, plus Postgres and MySQL dumpsRailway · Volume backups; see their docs for retention
App SleepingSkiffly · Optional per service; ~10 min idle, wakes on the next request, not billed while asleepRailway · Available
MemorySkiffly · $8 / GB-month, per minute, from the balanceRailway · See their pricing page
CPUSkiffly · $15 / vCPU-month, any fractionRailway · See their pricing page
DatabasesSkiffly · Postgres, MySQL, Redis, MongoDB, ClickHouse and 130+ more templates; you pay for the resources, not per add-onRailway · Database templates
RegionsSkiffly · One EU region today; more EU regions planned, no multi-region promisesRailway · Several worldwide

Statements about Railway describe the product in general terms as of September 2026 and may be out of date; see their pricing and documentation for specifics. Skiffly figures come from our pricing page.

FAQ

Questions before switching

Will my Railway API scripts and MCP setup work?
Documents that use projects, deployments(input:), variables, serviceInstanceUpdate, serviceInstanceDeployV2, customDomainCreate and templateDeployV2 run unchanged against https://api.skiffly.dev/graphql; change the endpoint and the token. The MCP server uses the same tool names where the feature exists.
Does my railway.json / railway.toml carry over?
No: Skiffly does not read those files. Build command, start command, health check, restart policy and cron go on the service (dashboard, MCP update-service, or .skiffly/skiffly.ts). A railway.ts from railway/iac ports with defineRailway → defineSkiffly.
What about private networking and *.railway.internal?
Services in the same environment reach each other by slug (http://api:8080) over IPv4. RAILWAY_PRIVATE_DOMAIN becomes SKIFFLY_PRIVATE_DOMAIN; there is no IPv6 private network.
What does Skiffly not have?
Multiple regions, log drains, outgoing webhooks, functions, buckets and sandboxes. Staged changes do not exist: changes apply immediately. If you depend on one of these, wait for it or keep that workload where it is.
Dawn over open water: a skiff with a teal sail heads for the horizon along a dashed chart line drawn on the sea

Try the switch on the free tier

No card. One app and one database, a domain with TLS, and the same commands you would use in production.