Skip to content

Fly.io (playground API only)

The DO K8s runbook ships the platform end-to-end on real Kubernetes. If you only need the playground API to be reachable — no cluster, no Helm, no CRDs — Fly.io deploys the same Dockerfile directly for ~$0–2/month.

Trade-off: you lose the Helm/Temporal/operator story. Keep this path for the always-on demo URL; use kind for the full deploy-saga demo.

Terminal window
brew install flyctl
fly auth login # OAuth in browser

Fly requires a credit card on file even for the free tier — add one at https://fly.io/dashboard/YOUR-ORG/billing.

Already committed at plnt/fly.toml. Points at docker/playground-api.Dockerfile and pre-configures the workflow registry. Real backends slot in via the PLNT_PLAYGROUND_MODELS env — any OpenAI-compatible upstream (vLLM, TGI, SGLang, or a hosted provider) works.

Terminal window
cd /Users/dev16/Documents/den-agent/plnt
# create the app
fly apps create plnt-playground
# upstream API key — never a file, always a secret
fly secrets set UPSTREAM_API_KEY=sk-... --app plnt-playground
# build + push + boot the machine
fly deploy --app plnt-playground
# verify
curl -s https://plnt-playground.fly.dev/v1/models | jq
Terminal window
fly certs add playground.plnt.work --app plnt-playground
# Prints a CNAME target. In Cloudflare DNS:
# Type CNAME · Name playground · Target <printed value> · Proxy DNS only
# once DNS propagates:
fly certs check playground.plnt.work --app plnt-playground # → issued
  • Image: built from docker/playground-api.Dockerfile, ~150 MB.
  • Workflow registry: PLNT_PLAYGROUND_MODELS env in fly.toml — a JSON array with "api_key_env": "UPSTREAM_API_KEY" on each entry that proxies to a hosted provider.
  • Upstream key: fly secrets set UPSTREAM_API_KEY=... — the discovery layer reads it at startup.
  • CORS: pre-configured for https://plnt.work, https://play.plnt.work, https://playground.plnt.work.
Terminal window
cd /Users/dev16/Documents/den-agent/plnt-site
vercel env add PUBLIC_PLNT_ENDPOINT production
# paste: https://playground.plnt.work
vercel --prod
Terminal window
fly logs --app plnt-playground
fly ssh console --app plnt-playground
fly status --app plnt-playground
  • shared-cpu-1x VM, 512 MB RAM: $1.94/mo (24/7) or $0 with auto_stop_machines = "stop" and no traffic.
  • Bandwidth: 160 GB/mo free.
  • Custom cert: free.