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.
How this skill is triggered — by the user, by Claude, or both
Slash command
/flyio-pack:flyio-performance-tuningThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Optimize Fly.io performance: eliminate cold starts, right-size VMs, leverage multi-region for low latency, and tune concurrency settings.
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:[email protected]: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.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin flyio-packDeploys, scales, and manages Fly.io apps: configure fly.toml, run flyctl for secrets/regions/lifecycle, handle Docker builds and multi-region scaling.
Deploy, configure, and manage applications on the Fly.io platform using flyctl CLI, fly.toml configuration, Fly Machines, Fly Volumes, private networking, secrets, health checks, autoscaling, and GitHub Actions CI/CD. Use when deploying any application to Fly.io, writing or modifying fly.toml configuration, managing Fly Machines or Volumes, configuring networking (public services, private 6PN, Flycast, custom domains, TLS), setting secrets, configuring health checks, setting up autostop/autostart or metrics-based autoscaling, deploying with GitHub Actions, managing Fly Postgres databases, or preparing an app for production on Fly.io.
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.