Improvements to PaaS UI settings

We just shipped many more settings forms that are tweakable via dashboard UI per-app!

These take effect immediately upon saving which means some changes require deploying the app.

As for the updated fly.toml

  • If you have a connected GitHub repo: we will create a PR you can merge
  • If you don’t have a connected GitHub repo: we will advise you to run fly config save -a APP_NAME on your terminal to save the current state.

This is far from all what a fly.toml can do but hopefully this will let one scale their apps better

Also we updated out machines list page to let you tweak more than scale for process groups! The “Edit app scale” button became a cog in the group name to make things easier to manage per group.


Extensive list of changes

Yes I asked a LLM to scan my commits, sorry if this feels robot-y:

Manage more of your fly.toml directly from the app dashboard

  • Edit the [deploy] section from the Configuration page: pick a deploy strategy (rolling, immediate, canary, blue/green), set a release command, tweak wait_timeout, release_command_timeout, and max_unavailable.
  • Edit top-level app settings from the same page: primary region, kill signal, kill timeout, console command, and swap size.
  • Configure a per-process-group restart policy (always, never, on-failure) and retry count from the process group scaling form.

Better guardrails and hints

  • min_machines_running warnings now count only machines in your primary region, so you see accurate under-scaled warnings.
  • If your app has mounted volumes, the Configuration page will tell you upfront that the “canary” deploy strategy isn’t compatible.

Better consistency with flyctl

  • Duration fields (kill_timeout, wait_timeout, release_command_timeout) accept the same units as flyctl: ms, s, m, h.
  • Kill signal is now a free-form field with common suggestions rather than a rigid dropdown — pick anything valid (SIGABRT, SIGHUP, etc.), not just the six defaults.
  • The on-failure restart policy — the platform default — is now a first-class option you can select explicitly and see round-trip through the form.
  • max_unavailable is preserved for canary deploys (previously only kept for rolling).

Under the hood

  • Config PRs now cover the new [deploy], [[restart]], and top-level scalar changes.
  • All the new fields are validated at the form level with clear, actionable error messages before we ever hit the API.