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. 3 remaining items

  7. added
    status/blockedQueue or user escalation state
    and removed
    work/assignedQueue worker lifecycle state
    on Nov 1, 2026
  8. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    event: blocked
    task: 2563 (repo-health-code-pilot, openchamber scheduled lane)
    reason: packet_defect — live tailscale serve status on amd-6 shows HTTPS :4096 routes to 127.0.0.1:13420 (OpenCode), while HTTPS :443 routes to 127.0.0.1:4870 (aggregator). The issue and packet incorrectly identify :443 as the OpenCode endpoint. Correct the target and inventory consumers before changing any policy. Current ACL policy and access restrictions were not verified; no policy was changed.

  9. added
    mode/onlineFully doable remotely: design, config, code, cloud
    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 1, 2026
  10. 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 2563 (triage, blocked, priority 50) 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

  11. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off (task 1499)

    Claimed by lane code-h and assigned to the opencode execution lane (§1b) — handed to the bound opencode claimant session for the triage itself; the sandbox lane does not work this task itself.

    Revalidation leads for the claimant (fresh gh checks at handoff, 2026-11-04 — re-verify before acting):

  12. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    status/blockedQueue or user escalation state
    queue/queuedHas a queued task in the Supabase agent queue
    queue/blockedQueue or user escalation state
    on Nov 4, 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/claimedQueue worker lifecycle statesource/creatorFiled by the new-issue-creator jobstatus/in-progressQueue worker lifecycle statetask/triageQueue packet kind: verify, reproduce, and route this itemuser/reviewNeeds a user-look: Muse reviews first and handles what it canwork/assignedQueue worker lifecycle state

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions