Skip to main content
Percher is still being built and account creation is paused — get notified when it opens.
All deploy guides
Deploy guide · runtime = "bun"

Ship Bun HTTP in ~2 minutes.

Bun's built-in `Bun.serve` HTTP server runs on Percher's Bun runtime — same Bun image used to build everything else on the platform. Right for tiny services where you don't want any framework, just a fast handler.

Why Percher fits

  • Native HTTPS via Bun's fetch means external API calls (OpenAI, Stripe, etc.) work without `HTTPS_PROXY` configuration; Bun honors the env var natively.
  • Cold builds finish in ~10–15 s — there's no Node-vs-Bun mismatch to wrangle since the build and runtime are both Bun.

Quick start

bunx percher create my-app --template bun
cd my-app
bunx percher publish

The first command scaffolds a working Bun HTTP project plus a percher.toml. Publish builds and deploys it, then prints the live URL.

percher.toml

The canonical config for a Bun HTTP app on Percher. bunx percher init generates this automatically when it detects Bun HTTP in your project.

[app]
name = "my-server"
runtime = "bun"

[web]
port = 3000
health = "/health"

Common gotchas

  • `Bun.serve({ port: Number(process.env.PORT) || 3000 })` — read the port from env; Percher injects it.
  • Bun's `bun:sqlite` works inside the container, but a database file is lost on the next deploy unless it lives under `/app/data`, which persists. PocketBase or an external database also work.

Related docs

Ready to deploy Bun HTTP?

Start on the Free plan. No credit card, live in ~2 minutes.

Sign up free