From flyio-pack
Tunes Fly.io apps for performance: suspend/resume to cut cold starts, VM sizing, multi-region low latency, Postgres PgBouncer pooling, concurrency limits.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin flyio-packThis skill is limited to using the following tools:
Optimize Fly.io performance: eliminate cold starts, right-size VMs, leverage multi-region for low latency, and tune concurrency settings.
Deploys, scales, and manages Fly.io apps: configure fly.toml, run flyctl for secrets/regions/lifecycle, handle Docker builds and multi-region scaling.
Provides quick reference for Fly.io PaaS deployments including fly.toml config, global distribution, scaling patterns, secrets management, health checks, and troubleshooting. Auto-loads on fly.toml detection.
Deploys and manages Fly.io apps using Docker containers, Fly Machines, fly.toml configs, databases, volumes, secrets. Supports fly launch/deploy, debugging, multi-region setups for Python/Node/Rails/Django apps.
Share bugs, ideas, or general feedback.
Optimize Fly.io performance: eliminate cold starts, right-size VMs, leverage multi-region for low latency, and tune concurrency settings.
# fly.toml — suspend instead of stop for faster resume (~100ms vs ~5s)
[http_service]
auto_stop_machines = "suspend" # Suspend to RAM, not full stop
auto_start_machines = true
min_machines_running = 1 # Always-warm in primary region
# For latency-critical: keep machines running in all regions
# min_machines_running applies globally
# Check current allocation
fly scale show -a my-app
# Start small, scale up based on metrics
fly scale vm shared-cpu-1x --memory 256 # Start here
fly scale vm shared-cpu-1x --memory 512 # If memory-constrained
fly scale vm shared-cpu-2x --memory 1024 # If CPU-bound
fly scale vm performance-2x --memory 4096 # For compute-heavy workloads
| Workload | VM | Memory | When |
|---|---|---|---|
| Static site / API proxy | shared-cpu-1x | 256mb | Low traffic |
| Node.js API | shared-cpu-1x | 512mb | Most apps |
| Heavy processing | shared-cpu-2x | 1gb | Background jobs |
| Database / ML | performance-2x | 4gb | Compute-intensive |
# Deploy close to your users
fly scale count 1 --region iad # US East
fly scale count 1 --region lhr # Europe
fly scale count 1 --region nrt # Asia Pacific
# Fly automatically routes to nearest region via Anycast
# Verify: curl with timing
curl -w "DNS: %{time_namelookup}s, Connect: %{time_connect}s, Total: %{time_total}s\n" \
-o /dev/null -s https://my-app.fly.dev/health
// Use connection pooling for Fly Postgres
// PgBouncer runs on port 5433 (pooled) vs 5432 (direct)
const pooledUrl = process.env.DATABASE_URL?.replace(':5432/', ':5433/');
// Prisma: add pgbouncer=true
// DATABASE_URL="postgres://user:pass@my-db.internal:5433/db?pgbouncer=true"
[http_service.concurrency]
type = "requests" # or "connections"
hard_limit = 250 # Max before rejecting
soft_limit = 200 # Start scaling at this point
For cost optimization, see flyio-cost-tuning.