From 61bd9a2699dac7576acd710944d76f3544d3d5b6 Mon Sep 17 00:00:00 2001 From: S'Bussiso Dube <80188685+Sbussiso@users.noreply.github.com> Date: Sun, 13 Sep 2026 21:47:04 -0700 Subject: [PATCH] fly.toml said the agent scales to zero; it has not since the LiteLLM move MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The [processes] header described the agent as "scales to zero", while the service block sixty lines below sets auto_stop_machines = "off" with min_machines_running = 1, and the machine has been `started` continuously. Same failure as the cost comment fixed on 2026-09-12 — in the same file, which I clearly did not read closely enough while fixing that one. A file that contradicts itself is worse than one that says nothing, because the reader cannot tell which half is current, and here the two halves are far enough apart that you would believe the first one. The reasoning for keeping it warm is sound and already argued beside the service block: Fly's proxy gives an auto-started machine ~8s to bind and this process needed ~10s after LiteLLM landed. Scaling to zero is the shape this worker wants; it is not the shape it has, and the header now says so. Co-Authored-By: Claude Opus 5 --- fly.toml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/fly.toml b/fly.toml index 17d8122..1449264 100644 --- a/fly.toml +++ b/fly.toml @@ -32,9 +32,18 @@ primary_region = "sjc" # # app — the web tier. Owns the volume and the HLS segment cache, # always-on (min_machines_running = 1 below). -# agent — the Sentinel AI worker. No volume, scales to zero, woken by +# agent — the Sentinel AI worker. No volume, ALSO always-on, woken by # the HMAC-signed wakeup webhook over .flycast. # +# This said "scales to zero" until 2026-09-14 and had been wrong +# since the LiteLLM move: the service block below sets +# auto_stop_machines = "off" with min_machines_running = 1, and +# the machine has been `started` continuously. The reasoning for +# keeping it warm — Fly's proxy gives an auto-started machine +# only ~8s to bind, and this process needed ~10s — is argued at +# length beside that block. Scaling to zero is the shape this +# worker *wants*; it is not the shape it has. +# # The agent is a separate PROCESS GROUP rather than a thread inside the # web app on purpose: a run holds base64 frames for up to 270s, and the # segment cache is already budgeted at 384 MiB of this machine's 1 GiB