Skip to content

Scale to zero — this service is idle by default - #1

Merged
Sbussiso merged 1 commit into
masterfrom
scale-to-zero
Sep 9, 2026
Merged

Scale to zero — this service is idle by default#1
Sbussiso merged 1 commit into
masterfrom
scale-to-zero

Conversation

@Sbussiso

@Sbussiso Sbussiso commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Self-hosted installs push on a 30-minute background tick. Today, with no self-hosted installs, it serves nothing.

The comment justifying always-warm reached the opposite conclusion from the same facts — that ticks "arrive on their own schedule, not in response to user traffic" was treated as a reason to stay warm, when it's exactly what makes the workload intermittent. It also claimed "no real cost benefit at this service's expected traffic"; at 48 requests/day per install the machine is idle ~95% of the time.

Verified, not assumed:

  • Boot is ~3s, inside Fly's ~8s proxy window for an auto-started machine. This is the check that matters: the Sentinel AI agent needs 10s, missed that window, and had every wakeup fail with RemoteDisconnected until it was kept warm.
  • A failed push is fail-soft and lossless. push_pending_changes never raises, and cursors only advance on confirmed success — a missed cycle's data waits for the next tick. The operator's local SQLite stays the source of truth throughout.

🤖 Generated with Claude Code

Self-hosted installs push on a 30-minute background tick, so this is
idle by design. Today, with no self-hosted installs, it serves nothing.

The comment justifying always-warm reached the opposite conclusion from
the same facts: that ticks "arrive on their own schedule, not in
response to user traffic" was treated as a reason to stay warm, when it
is exactly what makes the workload intermittent. It also asserted "no
real cost benefit at this service's expected traffic" — at 48 requests
a day per install the machine is idle ~95% of the time.

Verified rather than assumed:

  - Boot is ~3s, inside Fly's ~8s proxy window for an auto-started
    machine. (The Sentinel AI agent needs 10s, missed that window, and
    had every wakeup fail until it was kept warm — this is the check
    that matters.)
  - A failed push is fail-soft and lossless: push_pending_changes never
    raises, and cursors only advance on confirmed success, so a missed
    cycle's data simply waits for the next tick. The operator's local
    SQLite remains the source of truth throughout.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Sbussiso
Sbussiso merged commit e86c75c into master Sep 9, 2026
1 check passed
@Sbussiso
Sbussiso deleted the scale-to-zero branch September 9, 2026 20:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant