Automate TP-Link Archer A20 config via Playwright (static port forwards for Tailscale) #107
Labels
No labels
burndown-2026-06
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/infrastructure#107
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Drive the TP-Link Archer A20 web admin UI (http://192.168.0.1) via Playwright so router config is declarative and re-applicable. The immediate use case is static UDP port forwards for Tailscale on each device, to survive the router's UPnP table being saturated by a LAN BitTorrent client (see #106 for the root cause).
Why this approach
Scope - in
{device_name, internal_ip, external_port, internal_port, protocol}, idempotent apply.{hostname, mac, ip}. Needed because static port forwards bind to internal IP, and devices need pinned IPs to be reliable targets.Scope - out (for now)
tailscale set --port/tailscaled --porton each device end-to-end. That belongs in a separate Ansible-style role per AGENTS. This ticket is router-config only.SSM dependencies
Needs a new SecureString param (Kai will add after this issue is firmed up):
/coilysiren/home/tplink-admin-password- admin password for the router web UI.The LAN IP
192.168.0.1is fine to hardcode (RFC1918, not opaque, no leak risk).Implementation notes
playwright(matches existingcoilysiren/*tooling stack).--headedflag for debugging the brittle parts.infrastructure/router-state.yamlor similar. Diff-first, apply-last. Audit log via coily.Where it lives
Probably
infrastructure/scripts/playwright-tplink/since this repo is canonical homelab knowledge per AGENTS, and the router is homelab infra. Could also be a standalone repo if the surface grows beyond one router.Origin
Spawned from today's mobile-SSH debug session (#106). Kai wants the router automation tracked separately so the SSH-debug issue can stay focused.
Filed by Claude.