Fly Deploy
Deploy a starter app to Fly.io with flyctl.
Skill metadata
| Source | Optional — install with vibeos skills install official/web-development/fly-deploy |
| Path | optional-skills/web-development/fly-deploy |
| Version | 1.0.0 |
| Author | VibeOS |
| License | MIT |
| Platforms | linux, macos |
| Tags | fly, flyio, deploy, hosting, internet, docker |
| Related skills | internet-starter, ship-web-service, deploy-presets, browser-network-assert |
Reference: full SKILL.md
info
The following is the complete skill definition that VibeOS loads when this skill is triggered. This is what the agent sees as instructions when the skill is active.
Fly Deploy
Ship an internet-starter (or similar) app to Fly.io with flyctl.
Secrets only via fly secrets / .env — never invent tokens in chat.
When to Use
- User wants a durable public URL (not Cloudflare temporary)
- After local health is green (
vibeos project servers,browser-network-assert)
Prerequisites
flyctlinstalled (curl -L https://fly.io/install.sh | shor brew)- User logged in:
fly auth login(orFLY_API_TOKENin.env) - App has a
Dockerfile(FastAPI starter includes one) or a Fly-compatible build - Install this optional skill:
vibeos skills install official/web-development/fly-deploy
How to Run
From the app root (e.g. apps/api or a FastAPI starter):
# once per app
fly launch --no-deploy --name <app-name> --region <region>
# review fly.toml, then:
fly deploy 2>&1 | tee /tmp/fly-deploy.log
python3 scripts/parse_fly_deploy.py /tmp/fly-deploy.log
Resolve scripts/parse_fly_deploy.py to this skill’s absolute path. JSON fields:
app, url, hostname, deployed.
Verify:
python3 …/browser-network-assert/scripts/assert_network.py \
--probe "$URL/health" --require-ok /health --max-5xx 0
Quick Reference
| Step | Command |
|---|---|
| Login | fly auth whoami |
| Launch | fly launch --no-deploy |
| Secrets | fly secrets set KEY=value |
| Deploy | fly deploy |
| Parse URL | parse_fly_deploy.py |
| Health | assert_network.py --probe …/health |
Procedure
- Local health green; do not deploy broken apps.
- Prefer staging app name (
*-staging) when unsure. - Set secrets from
.env.examplekeys the user provides — never invent. - Capture deploy log; parse URL; probe health remotely.
- Report URL + health result.
Pitfalls
- Do not commit
FLY_API_TOKEN. - Do not enable billing/scale surprises without asking.
- Next.js on Fly needs a Node Dockerfile — FastAPI starter is the default path; for Next, add a production Dockerfile first or use another host.
Verification
parse_fly_deploy.pyexits 0 with"deployed": true.- Remote
/healthreturns 2xx viaassert_network.py.