Skip to main content
PercherPercher

Decision guide

Percher or Fly.io?

Fly.io is a global infrastructure platform: Firecracker microVMs you can place in 30-plus regions, anycast routing, per-region volumes, and a Machines API that treats every box like a primitive. It rewards power users who want low-level control and global distribution. Both Fly and Percher ship MCP servers today (flyctl bundles an `mcp` subcommand); the design distance is bigger than that one feature, though. Percher is the opposite end of the design space from Fly — one region in Germany, one container per app, no machine APIs to wire up, and MCP as the primary deploy surface (42 tools and a typed `recovery.nextAction` contract). Pick Fly if you need geo-distribution or raw infrastructure primitives; pick Percher if you want zero-config hosting your assistant can drive end-to-end through recovery loops instead of just one-shot deploys.

Who Percher is for

Percher is built for personal apps — projects you build for yourself or your close circle. It is notpositioned as production-grade or enterprise hosting today: there is no uptime SLA, no formal compliance attestation, and a single region in Germany. If you're shipping a monetised SaaS, an app for paying customers, or anything that needs an SLA, Fly.io or a higher-tier provider is the safer choice. Percher may grow into that space; it is not there now.

At a glance

FeaturePercherFly.io
Free tierFree plan (2 apps, sleep after 10 min idle)No free tier (pay-as-you-go from first machine)
Paid entry price€3/mo (Starter) — flat, per accountPay-as-you-go: per-machine, per-hour, per-GB
Pricing modelFlat monthly subscription per accountMetered: CPU-seconds, RAM-hours, bandwidth, volumes
RegionSingle region (Falkenstein, DE)30+ regions worldwide
Compute modelOne long-running container per appFirecracker microVMs via the Machines API
Built-in databaseOpt-in managed PocketBase per app via `[data] mode = "pocketbase"` (SQLite, auth, file storage)Fly Postgres (separate, regional)
Built-in authYes (when PocketBase is enabled) — auth out of the box with PocketBaseNo — bring your own
MCP serverMCP-first: 42 tools covering publish, logs, env, rollback, doctor, backups, domains and GitHub connect, plus a typed `recovery.nextAction` for chaining failures into fixesflyctl bundles `flyctl mcp` for Fly resource management (apps, machines, deploys)
Framework supportNode, Bun, Python, static, any DockerfileAny Dockerfile / OCI image
Multi-region deployNot supported (single region by design)First-class — `fly scale count N --region <r>` per region
Custom domainsYes (paid plans)Yes
Automatic SSLYes — Let's Encrypt via CaddyYes — Let's Encrypt
Networking primitivesStandard HTTPS in + outbound proxy outWireGuard private networking, anycast, fly-replay, IPv6
RollbackInstant per-deploy rollbackInstant per-deploy rollback (image-based)

When Percher is the better choice

  • You want the assistant doing more than `publish` — full operational tools (logs, env, rollback, doctor, backups, domain add) and a typed `recovery.nextAction` that turns a failed deploy into the next fix automatically.
  • Your project is small and single-region, and Fly's pay-as-you-go pricing makes the monthly bill harder to predict than a flat-rate plan.
  • You want an opt-in managed PocketBase per app (`[data] mode = "pocketbase"`) for SQLite + auth + file storage instead of standing up Fly Postgres as a separate billed service.
  • Your project must stay in the EU for data-residency reasons. Percher is single-region in Germany.
  • You want a zero-config deploy that 'just works' for a Node, Bun, Python, or static app without writing a `fly.toml`.

When Percher is the wrong choice (and Fly.io fits better)

  • You need real multi-region distribution — the same app running in São Paulo, Tokyo, and Frankfurt with local latency for each. That's Fly's whole pitch and Percher cannot match it.
  • You want low-level infrastructure primitives: WireGuard private networking, IPv6 anycast, per-region volumes, the Machines API for dynamic provisioning. Percher abstracts those away.
  • Your workload is bursty and benefits from scale-to-zero with fast Firecracker cold starts. Percher containers are long-running by design.
  • You need fine-grained control over instance types, regions, and per-region replica counts. Fly exposes those; Percher hides them.
  • You're already invested in the Fly ecosystem — Fly Postgres, Tigris object storage, Upstash add-ons — and don't want to migrate them.

Migrating from Fly.io

Fly apps are Docker-first, so the migration is mechanical in the common case: take your existing `Dockerfile`, run `bunx percher init` in the project root (it'll detect the Dockerfile and write `runtime = "docker"` in `percher.toml`), and `bunx percher publish` builds and deploys the same image Fly was building. Env vars don't move automatically — copy them from `fly secrets list` and re-set with `bunx percher env set`. Domains move with a one-time DNS update once the app is live.

What doesn't translate: anything that depends on Fly being globally distributed. If your app uses `fly-replay`, region-aware routing, or per-region volumes, you'll need to decide whether single-region in Germany is acceptable (often: yes, for European audiences) or whether you need to keep Fly. WireGuard-based private networking between Fly services becomes plain HTTPS-over-Percher-proxy on Percher. Fly Postgres has no direct equivalent — point `DATABASE_URL` at any external Postgres (Neon, Supabase, your own) and Percher's outbound proxy handles the connection.

# In your project root (with your existing Dockerfile):
fly secrets list             # copy each secret
bunx percher init            # generates percher.toml (runtime=docker)
bunx percher env set DATABASE_URL=...  # for each Fly secret
bunx percher publish         # build + deploy
bunx percher domains add yourdomain.com

FAQ

Can Percher run a multi-region app like Fly does?

No. Percher is single-region by design — every app runs on one VPS in Falkenstein, Germany. That's the trade-off for simplicity and flat-rate pricing. If you need the same app running in São Paulo, Tokyo, and Frankfurt with local latency for each, Fly is built for that and Percher isn't.

Is Percher cheaper than Fly?

For a small, single-region app, almost always — Fly's pay-as-you-go bill (per-CPU-second, per-RAM-hour, per-GB bandwidth) tends to surprise people on the upside, while Percher's flat plans (€0 / €3 / €12 / €29 per month) are predictable. For an app that genuinely needs Fly's multi-region distribution or Machines API features, the comparison breaks down — Percher cannot run that workload at all.

What about Fly Postgres?

Fly Postgres is a separate, regional managed Postgres on Fly's infrastructure. Percher has no equivalent — there is no managed Postgres on Percher today. The Percher pattern for new apps is the opt-in PocketBase sidecar (`[data] mode = "pocketbase"`) for SQLite + auth + S3-compatible file storage, and `DATABASE_URL` pointed at any external Postgres provider (Neon, Supabase, your own) when you need real Postgres. Percher's outbound HTTPS proxy handles the connection transparently.

Can I run my Fly Dockerfile on Percher?

Yes. If your `fly.toml` points at a Dockerfile, that's the path: `bunx percher init` detects it, writes `runtime = "docker"` in `percher.toml`, and `bunx percher publish` builds and runs the same image. Anything Fly-specific in the Dockerfile (rare) needs adjustment — most don't have anything Fly-specific.

How does Percher's deploy model differ from Fly's Machines API?

Fly's Machines API treats every VM as a primitive you can start, stop, and place yourself — useful for workflows like 'spin up a sandbox per request' or 'place a worker near the user's region'. Percher's model is simpler and more constrained: one app, one (or a few) long-running containers, no machine API. If your app is built around dynamic VM lifecycle, Percher is the wrong tool. If it's a normal web app, the Machines API is more power than you need.

Try Percher in under a minute

Free plan, no credit card. Bring any Node, Bun, Python, or Docker app.

Sign up freeQuick start docs

Bringing an existing app? See recommended setup or the migration walkthrough above.