Skip to content

chore(fleet): scope tailnet policy for the laptop opencode serve endpoint (amd-6:443) #1377

Open

Description

@dezren39

From the #1363 close-out (2026-10-27): the laptop opencode background service is now published to the tailnet via Tailscale Serve (https://amd-6.raptor-pumpkinseed.ts.net/ → 127.0.0.1:13420, tailnet-only, password auth enforced — 401 unauthenticated verified). The remaining hardening is policy-side:

  • Today, any device the tailnet policy admits can attempt the endpoint; the opencode server password is the only gate. The tailnet (raptor-pumpkinseed) also carries many enrolled, mostly-offline codex-environment nodes that have no business reaching the opencode API.
  • Scope the tailnet policy (admin console — grants/ACLs) so only the devices that need the opencode API (the Muse sandbox device muse, Drew's own devices) can reach amd-6:443. Keep the aggregator route (amd-6:4870 consumers) working — check what else reaches amd-6 before narrowing.

Acceptance: policy updated in the admin console; sandbox still reaches the serve route (200 with auth); a non-authorized device class can no longer connect; the change + test result commented here. This needs Drew or an admin-console session — it cannot be done from the laptop CLI.

Acceptance criteria

  • Tailnet policy (admin console grants/ACLs) is updated so only the named device classes (the muse sandbox device and Drew's own devices) can reach amd-6:443.
  • Post-change verification is commented here: the sandbox still reaches the serve route (200 with auth), and a non-authorized device class can no longer connect.
  • Other consumers of amd-6 (e.g. the aggregator route on :4870) are checked before narrowing and still work after.

Activity

  1. developing-today commented on Oct 27, 2026

    @developing-today
    Contributor
  2. added
    kind/infrastructureInfrastructure / host-portability work
    priority/normalOrdinary priority (the default)
    effort/sSmall: expected under 2 hours of work
    user/reviewNeeds a user-look: Muse reviews first and handles what it can
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 27, 2026
  3. dezren39 commented on Oct 27, 2026

    @dezren39
    MemberAuthor

    Intake review

    Related: from the #1363 close-out; #1378 (pointing fleet job bodies at the serve route) increases the endpoint's importance, which is what makes this hardening timely.

    Notes: the endpoint is already password-gated (401 unauthenticated verified); this is defence-in-depth on the policy side. The issue itself states it needs Drew or an admin-console session — hence user/review.

    Risks: narrowing policy before inventorying amd-6 consumers could break the aggregator route; the criteria include that check.

    Suggested approach: Drew/admin-console session; inventory amd-6 reachability first, then scope, then verify both directions.

    — fleet monitor intake enrichment, 2026-10-27.

  4. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed on Nov 1, 2026
  5. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    event: picked_up
    task: 2563 (repo-health-code-pilot, openchamber scheduled lane)
    state: Claimed triage; revalidating current endpoint and policy access.

  6. 14 remaining items

  7. added
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    queue/blockedQueue or user escalation state
    on Nov 4, 2026
  8. developing-today commented on Nov 7, 2026

    @developing-today
    Contributor

    Picked up by repo-worker-code-g — working this now. (Fleet queue fallback mode: the queue backend is down, so this issue's comments carry the claim. The claim stays live while repo-worker-code-g posts progress markers; after 30 minutes of silence any other worker may pick this up.)

  9. developing-today commented on Nov 7, 2026

    @developing-today
    Contributor

    Progress from repo-worker-code-g: triage review: acceptance says admin-console/Drew-only; checking for any gitops policy route + prior decisions

  10. developing-today commented on Nov 7, 2026

    @developing-today
    Contributor

    🤖 Agent note · triaged — packet defect CONFIRMED, escalated

    • Agent: queue worker (repo-worker-code), lane code-g — FALLBACK MODE (queue backend down, code#6619)
    • Fresh verification (2026-11-07, laptop tailscale serve status on amd-6): the opencode serve route is https://amd-6.raptor-pumpkinseed.ts.net:4096 → 127.0.0.1:13420. The :443 route (bare host) proxies 127.0.0.1:4870 — the aggregator. This matches the 2026-11-01 blocked note on task 2563 and is still true today.
    • Defect: issue chore(fleet): scope tailnet policy for the laptop opencode serve endpoint (amd-6:443) #1377 as written scopes "amd-6:443" for the opencode API. Acting on it literally would narrow the aggregator route (the very consumer criterion 3 says to keep working) and leave the opencode route on :4096 untouched. Correct target: amd-6:4096.
    • user/review discharged by this review: the remaining step is not a judgement call — the issue's own acceptance states the policy edit "needs Drew or an admin-console session; it cannot be done from the laptop CLI". No GitOps policy file exists in this repo (searched origin/main) and no fleet tooling edits tailnet grants. Escalating to user/escalated with the correction attached.
    • For Drew (the decision/action): in the Tailscale admin console, scope grants so only the muse sandbox device + your own devices can reach amd-6:4096 (opencode). Leave :443 (aggregator :4870), :8443 (→3773) and the tcp forwards (18760/19222/3000) as they are unless you intend otherwise. Post-change checks: sandbox reaches :4096 with auth (200/401 challenge), a codex-environment node can no longer connect to :4096.
  11. added
    user/escalatedQueue or user escalation state
    status/blockedQueue or user escalation state
    and removed
    user/reviewNeeds a user-look: Muse reviews first and handles what it can
    on Nov 7, 2026
  12. developing-today commented on Nov 7, 2026

    @developing-today
    Contributor

    Released by repo-worker-code-g (outcome: free). Triaged: packet defect CONFIRMED fresh 2026-11-07 — opencode serve is amd-6:4096 (not :443; :443 is the aggregator :4870). Corrected target recorded on #1377; remainder is a Drew/admin-console grants edit only (no repo/GitOps route), escalated user/escalated + status/blocked.

  13. added
    queue/queuedHas a queued task in the Supabase agent queue
    and removed
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    on Nov 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

effort/sSmall: expected under 2 hours of workkind/infrastructureInfrastructure / host-portability workmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedmeta/follow-upFollow-up spun out of earlier workmode/onlineFully doable remotely: design, config, code, cloudpriority/normalOrdinary priority (the default)queue/queuedHas a queued task in the Supabase agent queuesource/creatorFiled by the new-issue-creator jobstatus/blockedQueue or user escalation statetask/triageQueue packet kind: verify, reproduce, and route this itemuser/escalatedQueue or user escalation state

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions