mac-proxy: name the shared ward-tailnet docker network for carry reach #402
Labels
No labels
burndown-2026-06
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/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/infrastructure#402
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?
What
Give the standing
mac-proxySOCKS5 box a stable, explicitly-named docker network so other containers (ward agent carries) can attach to it and dial it by name. Part of the standing-shared-proxy design in agentic-os#291.Why
ward carries on Docker Desktop cannot reach the tailnet-only Ollama tower. mac-proxy already runs as a
restart: unless-stoppeduserspace tailscale SOCKS5 box inside the same LinuxKit VM/daemon as the carries, already listening on0.0.0.0:1055. A carry only needs to share a user-defined docker network with it to resolvemac-proxyby name (the default bridge does no name resolution). Compose already stands up a user-defined network for this stack - this issue just pins its name so ward can attach deterministically.Change
In
ansible/roles/mac-proxy/files/compose.yaml:tailscaleservice to it:restart: unless-stopped, the127.0.0.1:1055:1055host publish (Mac-host tools keep using that),0.0.0.0:1055listener,tag:proxykey from SSM.In
ansible/roles/mac-proxy/tasks/main.yml:docker compose up -dcreates the named network. If the role does an explicit readiness check, optionally assert theward-tailnetnetwork exists after converge.Out of scope / contract
ward-tailnetis the shared contract with the ward side (the carry attaches with--network ward-tailnetand dialssocks5h://mac-proxy:1055). Do not rename it without updating coilyco-flight-deck/ward. Tracked under agentic-os#291.tag:proxy -> kai-tower-3026:11434is already merged/applied (infrastructure#400), and the key already lives at/coilysiren/mac-proxy/ts-authkey.Done when
docker network inspect ward-tailnetexists after the role converges, with themac-proxycontainer attached, and host-sidecurl --proxy socks5h://127.0.0.1:1055 ...still works.docs/FEATURES.mdfor the role notes the sharedward-tailnetnetwork and its consumer (ward carries).🔒 Reserved by
ward agent --driver claude— containerward-infrastructure-issue-402-claude-5d82e994on hostdocker-desktopis carrying this issue (reserved 2026-06-25T21:56:12Z). Concurrentward agentruns are blocked until it finishes or the reservation goes stale (2h0m0s TTL);--forceoverrides.— Claude (she/her), via
ward agentSmaller change than the title suggests, in the best way. The compose edit was three lines: a
networks: [ward-tailnet]on the service plus a top-level network pinned withname: ward-tailnetso docker doesn't prefix it. I added adocker network inspectassertion to the role so a converge that silently drops the network fails loud, which felt right for a cross-repo contract.The one thing that fought back was nothing about the proxy at all - it was the pre-commit gate. The
code-commentshook rejects YAML comments below the top header block (a key-sorter would drift them), so my inline rationale next to thenetworks:stanza had to move up top and get trimmed under the 90-char cap. And the container was missingtrufflehogand couldn't provision uv's python into the root-owned/opt/uv, so I installed trufflehog locally and pointedUV_PYTHON_INSTALL_DIRat$HOMEto get pylint green. Worth flagging as a container-image rough edge, not a code one.Confidence is high on the infra side: YAML validates, all hooks pass, CI lint + secret scan are green on the merge. The part I can't verify from here is the live end-to-end - that a real ward carry attaches to
ward-tailnetand dialssocks5h://mac-proxy:1055through to the tower. That handshake lives on the ward side (agentic-os#291) and on a real Docker Desktop converge, so it's the natural follow-up to actually exercise.