In this capsule you'll put the three platforms side by side with concrete data. You've deployed your AI app on Render (capsule 02), Railway (capsule 03) and Fly.io (capsule 04). Now it's time to compare in a structured way: real pricing, free tier limits, features, limitations for AI workloads, database support, auto-scaling, deploy times, and developer experience. The tables in this capsule are the ones you consult when you need to choose a platform for a project.
Why it matters: Generic online comparisons say "all three are good." That doesn't help you. You need to know: which has the longer timeout for AI? Which supports WebSockets for streaming? Which is cheaper for an MVP running 24/7? Which scales to multi-region without complex configuration? This capsule answers with numbers, not opinions.
⚠️ Limiting for long inference. Streaming mandatory for responses > 30s
Railway
5 minutes
✅ Enough for most AI workloads
Fly.io
Configurable (default 60s)
✅ Adjustable as needed
Memory Limits
Platform
Free
Minimum paid
Maximum
Render
512 MB
512 MB (Starter)
8 GB (Pro Plus)
Railway
Variable (~512 MB)
Configurable
32 GB (Pro)
Fly.io
256 MB
256 MB (shared)
16 GB+ (dedicated)
WebSocket and Streaming
Feature
Render
Railway
Fly.io
WebSocket
⚠️ Starter+ (not on Free)
✅ Supported
✅ Supported
Server-Sent Events (SSE)
✅ Supported
✅ Supported
✅ Supported
LLM token streaming
⚠️ SSE works, WS limited
✅ Full support
✅ Full support
Cold Start
Platform
With sleep enabled
Without sleep
Render Free
15,000-45,000ms
N/A (always sleeps)
Render Starter
N/A (always running)
0ms
Railway (sleep)
2,000-8,000ms
0ms
Fly.io (auto-stop)
300-2,000ms
0ms
Fly.io (min=1)
N/A (always running)
0ms
Container Size and Build
Aspect
Render
Railway
Fly.io
Max image size
No documented limit
No documented limit
10 GB
Build timeout
30 minutes
30 minutes
Not documented (long)
Build cache
✅ Docker layer cache
✅ Nixpacks cache (aggressive)
✅ Docker layer cache
Build speed
Medium
Fast (Nixpacks)
Medium
Comparison: Developer Experience
Setup Time (first time)
Step
Render
Railway
Fly.io
Create account
1 min (GitHub OAuth)
1 min (GitHub OAuth)
2 min (email + card)
First deploy
3-5 min (dashboard)
2-3 min (CLI)
5-7 min (CLI + config)
Custom domain
5 min
3 min
5 min
Total setup
~10 min
~6 min
~12 min
Daily workflow
Action
Render
Railway
Fly.io
Deploy
git push (auto)
git push or railway up
flyctl deploy
View logs
Dashboard → Logs
railway logs or Dashboard
flyctl logs or Dashboard
Add a variable
Dashboard → Env
railway variables set
flyctl secrets set
Add a database
Dashboard → New → PostgreSQL
railway add
flyctl postgres create
Scale
Dashboard → Settings
Dashboard → Settings
flyctl scale count N
SSH to the container
❌
❌
flyctl ssh console
Connect to DB locally
❌ (copy URL manually)
railway connect postgres
flyctl postgres connect
CLI Power
Capability
Render
Railway
Fly.io
Official CLI
❌ (REST API only)
✅ Complete
✅ Complete
Deploy from terminal
❌
✅ railway up
✅ flyctl deploy
Variables from terminal
❌
✅ railway variables
✅ flyctl secrets
Logs from terminal
❌
✅ railway logs
✅ flyctl logs
DB connect from terminal
❌
✅ railway connect
✅ flyctl postgres connect
Comparison: When to Choose Each One
Quick-Reference Decision
Do you want absolute simplicity + predictable pricing?
→ Render
Do you want the best developer experience + fast prototypes?
→ Railway
Do you need multi-region or low global latency?
→ Fly.io
Do you have a team and need preview environments?
→ Railway
Minimal budget and you don't mind cold start?
→ Fly.io (most generous free tier on CPU)
AI app with token streaming?
→ Railway or Fly.io (better WebSocket support)
Enterprise, compliance, guaranteed SLA?
→ None of the three — use AWS
Concrete scenarios for AI
Scenario
Best option
Why
MVP AI chatbot, 1 developer
Railway
Fastest deploy, excellent CLI
Inference API, team of 3
Railway
Preview environments, add-ons
RAG app for a global company
Fly.io
Multi-region, low latency
Demo for investors
Render
Predictable, easy to explain
Personal project, $0/month
Fly.io
Most generous free tier (3 VMs)
App with long streaming
Fly.io
Configurable timeout, native WS
Early-stage startup, $50/month budget
Railway
Good DX/price ratio
AI app + PostgreSQL + Redis
Railway
Integrated add-ons, automatic variables
Need to self-host an LLM
None
You need a GPU → RunPod, Lambda Labs
Summary Table: The Big Picture
Dimension
Render
Railway
Fly.io
AWS (Lambda)
Philosophy
Simplicity
Developer Experience
Edge Computing
Full control
Deploy time
3-5 min
2-3 min
5-7 min
30-60 min
Free tier
Limited (sleep)
$5 credit
3 free VMs
1M requests/month
Pricing model
Fixed plan
Pay-per-use
Pay-per-use
Pay-per-use
Cost $$ (AI app)
~$21/month
~$25-30/month
~$10-15/month
~$15-40/month
Multi-region
❌
❌
✅
✅ (with config)
Request timeout
30s
5 min
Configurable
15 min
WebSocket
Starter+
✅
✅
⚠️ (API GW)
Cold start
15-45s (free)
2-8s
0.3-2s
1-10s
CLI
❌
✅✅
✅✅
✅ (aws cli)
Databases
PG, Redis
PG, Redis, MySQL, Mongo
PG, Redis
RDS, ElastiCache
Complexity
Low
Low
Medium
High
Vendor lock-in
Low
Low
Medium
High
GPU
❌
❌
❌
✅ (SageMaker)
Hands-On Exercises
Exercise 1: Personalized evaluation matrix
Create an evaluation table for YOUR specific use case. Define 5 criteria with weights and rate each platform from 1 to 5.
See solution
# platform_evaluation.py
criteria = {
"Monthly cost": 25,
"Developer experience": 20,
"Deploy time": 15,
"AI support (timeout, RAM)": 20,
"Future scalability": 20,
}
scores = {
"Render": {
"Monthly cost": (3, "$21/month — predictable but not the cheapest"),
"Developer experience": (3, "Simple dashboard, no CLI"),
"Deploy time": (4, "Git push → auto deploy"),
"AI support (timeout, RAM)": (2, "30s timeout is limiting"),
"Future scalability": (3, "Horizontal scaling, but single region"),
},
"Railway": {
"Monthly cost": (3, "$25-30/month — flexible but less predictable"),
"Developer experience": (5, "Excellent CLI, preview envs, add-ons"),
"Deploy time": (5, "railway up — the fastest"),
"AI support (timeout, RAM)": (4, "5 min timeout, up to 32 GB RAM"),
"Future scalability": (3, "Auto-scaling, but single region"),
},
"Fly.io": {
"Monthly cost": (4, "$10-15/month — the cheapest"),
"Developer experience": (3, "Powerful CLI but more initial setup"),
"Deploy time": (3, "flyctl deploy — medium"),
"AI support (timeout, RAM)": (4, "Configurable timeout, native WS"),
"Future scalability": (5, "Native multi-region, edge"),
},
}
print("=== Platform Evaluation ===\n")
print(f"{'Criterion':<30}{'Weight':>4}{'Render':>8}{'Railway':>8}{'Fly.io':>8}")
print("-" * 70)
totals = {"Render": 0, "Railway": 0, "Fly.io": 0}
for criterion, weight in criteria.items():
print(f"{criterion:<30}{weight:>4}", end="")
for platform in ["Render", "Railway", "Fly.io"]:
score, _ = scores[platform][criterion]
weighted = weight * score
totals[platform] += weighted
print(f" {weighted:>6}", end="")
print()
print("-" * 70)
print(f"{'TOTAL':<30}{sum(criteria.values()):>4}", end="")
for platform in ["Render", "Railway", "Fly.io"]:
print(f" {totals[platform]:>6}", end="")
print()
max_possible = sum(criteria.values()) * 5print(f"\nMaximum possible: {max_possible}")
winner = max(totals, key=totals.get)
print(f"Winner: {winner} ({totals[winner]}/{max_possible})")
Exercise 2: Comparative latency benchmark
Run a benchmark that measures the health check and inference latency on all three platforms simultaneously.
## Typical output
--- Render ---
compute $7.00/month
postgresql $7.00/month
redis $7.00/month
openai_api $180.00/month
TOTAL monthly $201.00/month
TOTAL 6 months $1206.00
--- Railway ---
base $5.00/month
compute $25.41/month
openai_api $180.00/month
TOTAL monthly $210.41/month
TOTAL 6 months $1262.46
--- Fly.io ---
compute_vm $1.94/month
ram_extra $4.46/month
postgresql $1.94/month
volume $0.15/month
openai_api $180.00/month
TOTAL monthly $188.49/month
TOTAL 6 months $1130.94
Note: The OpenAI API cost dominates in every case.
The difference between platforms (~$20/month) is marginal
compared to $180/month of API cost.
Exercise 4: Document limitations for your specific case
For each platform, document the 3 most impactful limitations for YOUR specific AI app and the workarounds you'd use.
See solution
# Limitations for DocuSearch AI (RAG + GPT-4o-mini)## Render1.**30s timeout:** My /ask endpoint usually takes ~2-3s, but complex
queries with a lot of RAG context can take 10-15s. If I add
streaming, I could easily hit 30s.
→ Workaround: Implement mandatory SSE streaming for /ask
2.**No CLI:** For quick hotfixes, I need to go to the dashboard.
Deploy is via git push, which is fine, but managing variables
and viewing logs requires the browser.
→ Workaround: Use the Render API with curl/scripts
3.**PostgreSQL Free: 97 days.** If I use the free tier for development,
I lose data every ~3 months.
→ Workaround: Starter ($7/month) or export data periodically
## Railway1.**Unpredictable pricing:** With 3K requests/day, the cost varies by
CPU usage. A traffic spike = an unexpected bill.
→ Workaround: Configure resource limits and billing alerts
2.**Single region:** My users are in Latin America. Railway doesn't
let me choose a nearby region (São Paulo not directly available).
→ Workaround: Accept the extra latency or use Fly.io for those users
3.**Trial $5 lasts a short time:** For testing, the $5 runs out in ~5-7 days
with the app running. I need Hobby ($5/month) from day 1.
→ Workaround: Immediate upgrade to Hobby
## Fly.io1.**Region-locked volumes:** If I scale to multi-region, each region needs
its own volume. I can't share cache across regions.
→ Workaround: Use Redis (Upstash) for shared cache, volumes only
for local data
2.**More initial setup:** flyctl launch + fly.toml + secrets + deploy is
more steps than railway up.
→ Workaround: Script the setup in a Makefile
3.**Variable shared CPU:** On shared, CPU performance fluctuates.
Embedding generation can be slow during peak hours.
→ Workaround: Pre-generate embeddings offline, use dedicated CPU ($31/month)
if performance is critical
Troubleshooting
Problem 1: "Which is the cheapest for my case?"
Solution: It depends on the usage pattern. For a 24/7 app with 1 GB RAM:
If you want predictability: Render ($21/month with PG + Redis)
If you want the absolute minimum: Fly.io (~$10/month)
If you want a DX/cost balance: Railway (~$25/month)
In every case, the LLM API cost (OpenAI) dominates the bill. The difference between platforms is marginal.
Problem 2: "My app needs streaming and Render's timeout isn't enough"
Solution: Use SSE (Server-Sent Events) on Render — SSE timeouts are different from normal HTTP requests. Alternative: switch to Railway (5 min timeout) or Fly.io (configurable).
Problem 3: "I need PostgreSQL with pgvector for embeddings"
Solution:
Render: pgvector available on Standard+ plan ($20/month)
Railway: pgvector available with the PostgreSQL plugin
Fly.io: Fly Postgres supports pgvector (you need to configure the extension)
Alternative: Use a dedicated vector service (Pinecone, Qdrant Cloud)
Problem 4: "Is there vendor lock-in?"
Solution: Minimal in all three. Your app is a Docker container — it works on any platform that runs containers. What "ties" you are: