Skip to content

design(cluster): egress strategy for 2 Gbps home fiber — budgets, tunnel topology, failure matrix #5030

Open
0 of 1 issue completed

Description

@dezren39

Purpose

Design the egress policy for the basement cluster before anything popular lands on it: how traffic splits between Cloudflare, Turso, Tailscale and the direct home link, with a written budget per traffic class. Child of #1091 (cloud extension — egress half); absorbs #1814, which carried this content but had no home in the program structure.

The constraint: bandwidth is the scarce resource, not compute. The basement fleet has very fast CPUs, ≥3 TB RAM and ~200 TB of disks at near-zero marginal cost — behind exactly 2 Gbps symmetric home fiber.

Source: idea register 2026-10-20 (goal stand-up-lab-cluster-talm-talos-cozystack-postgres-rustfs), plus the superseded #1814 body.

What we know

  • One fiber provider (Brightspeed) in his part of Osseo: 2 Gbps up/down. A second line = 4 Gbps total — still small at scale. Cable offers 100 Mbps, more expensive (possible redundancy pickup). TriCounty Communications fiber may reach his part of Osseo → then buy both fibers.
  • Hotspot plans and Starlink investigated for emergency backup; Starlink would likely need a business plan for this use.
  • Strategy direction (Drew): "tunnel most or much of that to Cloudflare or Turso or anywhere we connect with Tailscale" — shunt bulk traffic to SaaS with cheap or free egress (e.g. Cloudflare R2's zero-egress pricing, CF cache/tunnels), compress aggressively, and only cross the home link with what must.
  • Budget guardrails: Turso $5 plan and Cloudflare $5 Workers plan in play; free tiers preferred; a $25–$30 Cloudflare plan is possible; $75 is out.

Acceptance

  • Classify the app's traffic: what can be cached at the edge (CDN), what can live on free-egress object storage (R2), what genuinely must be served from home.
  • Design the tunnel topology: cloudflared from the cluster, Tailscale links, Turso edge replicas — with per-path egress costs written down.
  • Compression plan per traffic class (static assets, API payloads, media) and the CPU cost of doing it on the Threadrippers (plenty available).
  • Failure/redundancy matrix: fiber cut, cable fallback (100 Mbps — what degrades, in what order), Starlink/hotspot emergency tier.
  • Output: a one-page egress budget model — expected GB/month per class vs the ~2 Gbps link and each SaaS allowance — kept current in the subscription/usage ledger.
  • Design recorded on this issue or a linked design doc/PR, stating the bandwidth budget against the 2 Gbps symmetric constraint and what happens when it is exceeded.
  • Follow-up implementation issues filed and linked for any build work the design calls for.

Open questions

  • Is TriCounty fiber actually available at the address? (Needs an address check.)
  • Which SaaS egress allowances are we already paying for but not using (ties into the cloud ideation ledger)?

Program rules

Part of the basement cluster program (#1817), project home planning/roadmaps/basement-cluster.md. No HashiCorp anything; everything bootstrappable from config, no hand-built state.

Activity

  1. added
    area/infraInfrastructure, deployment, and operations
    effort/lLarge: multi-day or open-ended; expect staged check-ins
    kind/infrastructureInfrastructure / host-portability work
    on Nov 3, 2026
  2. added
    queue/queuedHas a queued task in the Supabase agent queue
    source/creatorFiled by the new-issue-creator job
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 3, 2026
  3. developing-today commented on Nov 3, 2026

    @developing-today
    Contributor

    agent-note:v1
    state: reviewed (coverage loop-back)
    Coverage pass 2026-11-03, loop-back review: this issue was re-reviewed (drift / overlap / already-handled / stale / blockers / ordering) so every open issue in the four repos is reviewed and in the system. Verdict: still live; in the system as task 8629 (triage, queued, priority 40) in repo-health-code-pilot. Labels audited and synced. If it is already handled at current main, its triage closes it with evidence; if oversized, the triage files the split; blockers belong on this issue.
    Found via: coverage loop-back 2026-11-03

  4. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 3, 2026
  5. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  6. 28 remaining items

  7. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

    • Agent: fleet monitor (repo-fleet-monitor)
    • Session / ID: task 8809 · repo-fleet-monitor run 2026-11-03 18:12 CST
    • Found via: monitor reconciliation
    • Task: Claim evaporated — task 8809 returned to queued and unclaimed in repo-health-code-pilot after the holding run ended without a terminal verb (checkpoint stage: handed_off). Labels reset to the truth: queue/queued + status/needs-triage. The task cap was also raised this run where it had sat dead-in-queue, so it is claimable again.
    • Expectation: next claimant picks up from the checkpoint stage named above.
  8. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 4, 2026
  9. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  10. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  11. added
    meta/protocol-gapAn agent touched this without the required agent-note comment or labels; needs review of why
    on Nov 4, 2026
  12. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · attention — protocol gap (missing agent note)

    • Agent: fleet monitor (repo-fleet-monitor)
    • Session / ID: cron repo-fleet-monitor run 2026-11-04 04:12 CST
    • Found via: monitor reconciliation (protocol checks, Duty 4)
    • Task: flag missing agent note
    • Expectation: the holding agent posts the required agent-note:v1 at its next transition and the review lane looks at why the protocol was not followed

    This item carries work/* / queue/claimed labels but has NO comment containing agent-note:v1 — the holding agent did not leave the required agent note (lifecycle protocol §2/§6). Flagged with user/review + meta/protocol-gap. The gap itself needs a human/Muse review of why the protocol was not followed.

  13. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    Agent note — picked up (OpenChamber scheduled lane)

  14. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    Agent note — done (OpenChamber scheduled lane)

    • Agent: queue worker (repo-worker-code), lane 9aca43b4-5439-4939-9f71-323f5d32521b
    • Session / ID: queue task 8809, completed at 2026-11-04T18:36:52Z
    • Found via: atomic queue claim in repo-health-code-pilot.
    • Completed: kept the egress design and linked implementation follow-up impl(cluster): establish measured egress budgets and alerting #5203; added a dated per-direction capacity and per-class budget model to the subscription tracker at /home/user/hatch-personal/workspace/ai-subscriptions/master-tracker.md.
    • Review: 70/85/95% stages are reasonable for measured class budgets. For a provider with a hard allowance wall, hold/pause optional sync earlier to cover alert latency and in-flight usage; do not wait for 95% as the first protective action.
    • Remaining unknowns: no deployed workload means monthly per-class GB stays unknown; current Cloudflare/Turso/Tailscale account usage and TriCounty address availability were not refreshed. They remain named unknowns rather than invented values; impl(cluster): establish measured egress budgets and alerting #5203 tracks measurement and alerts.
    • No code changes, PR, or CI. Issue design(cluster): egress strategy for 2 Gbps home fiber — budgets, tunnel topology, failure matrix #5030 remains open for owner review; queue task 8809 is complete.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area/infraInfrastructure, deployment, and operationseffort/lLarge: multi-day or open-ended; expect staged check-inskind/infrastructureInfrastructure / host-portability workmeta/protocol-gapAn agent touched this without the required agent-note comment or labels; needs review of whysource/creatorFiled by the new-issue-creator jobtask/triageQueue packet kind: verify, reproduce, and route this itemuser/reviewNeeds a user-look: Muse reviews first and handles what it can

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions