Compose infrastructure-owned private-network access into AOS agent surfaces #642

Closed
opened 2026-07-23 11:45:15 +00:00 by coilyco-ops · 3 comments
Member

Problem

A live director surface currently ships the tailscale and tailscaled binaries but has no daemon, socket, proxy route, or private DNS path. It cannot resolve kai-server or reach a private NodePort, so it can test the public Authelia gate but cannot perform private live-observe checks.

This is an AOS composition problem, not a Ward networking feature.

Ownership boundary

  • coilyco-flight-deck/ward#1495 removes all Tailscale, tailnet, SOCKS, proxy-host, network-name, and lifecycle knowledge from Ward.
  • Infrastructure owns the standing Tailscale/proxy service, its lifecycle, credentials, host convergence, and live reachability.
  • AOS owns the complete agent-side composition: selecting the infrastructure-provided network/proxy inputs, applying them to the intended role surfaces, exporting the correct client environment, and testing that composition.
  • Ward remains transport-neutral. It must not choose or default a network, hostname, alias, port, proxy protocol, or reachability target.

Historical AOS topology work is in #291 and #293. The current standalone composed-container boundary is #637. Reconcile rather than reviving stale Ward-owned behavior from coilyco-flight-deck/ward#1072.

Implement

  • Extend the AOS composed-container launcher/configuration so director and advisor surfaces receive the infrastructure-managed private-network/proxy path where their role contract calls for live observation.
  • Keep concrete topology in the AOS-owned configuration layer. If Ward must pass anything through during its governance lifecycle, it receives only opaque, explicit, provider-neutral container inputs produced by AOS.
  • Preserve the standing userspace proxy model. Do not start tailscaled in each agent container and do not require TUN or NET_ADMIN.
  • Ensure private DNS is resolved through the proxy path where applicable, rather than requiring a local Tailscale socket.
  • Add tests for generated container arguments/environment/network attachment and for the absence of Ward/Tailscale coupling.
  • Update the AOS runtime and role-surface documentation to state the ownership and observable failure modes.

Acceptance

  • A newly launched director surface can reach an infrastructure-managed private HTTP endpoint without a local tailscaled process or socket.
  • A safe live smoke test can initialize the private Bluesky MCP NodePort and list its exact read-only tool inventory without printing addresses, credentials, tokens, or Bluesky content.
  • Tests prove AOS supplies the complete composition and Ward supplies no Tailscale- or proxy-specific defaults.
  • Repo validation and pre-commit pass, and the change lands through the normal AOS workflow.

Observed 2026-07-23: both Tailscale binaries were present, tailscaled and its socket were absent, kai-server DNS failed, and ward ops tailscale status exited nonzero. That is expected evidence for missing composition, not a request to run a daemon inside the surface.

## Problem A live director surface currently ships the `tailscale` and `tailscaled` binaries but has no daemon, socket, proxy route, or private DNS path. It cannot resolve `kai-server` or reach a private NodePort, so it can test the public Authelia gate but cannot perform private live-observe checks. This is an AOS composition problem, not a Ward networking feature. ## Ownership boundary - coilyco-flight-deck/ward#1495 removes all Tailscale, tailnet, SOCKS, proxy-host, network-name, and lifecycle knowledge from Ward. - Infrastructure owns the standing Tailscale/proxy service, its lifecycle, credentials, host convergence, and live reachability. - AOS owns the complete agent-side composition: selecting the infrastructure-provided network/proxy inputs, applying them to the intended role surfaces, exporting the correct client environment, and testing that composition. - Ward remains transport-neutral. It must not choose or default a network, hostname, alias, port, proxy protocol, or reachability target. Historical AOS topology work is in #291 and #293. The current standalone composed-container boundary is #637. Reconcile rather than reviving stale Ward-owned behavior from coilyco-flight-deck/ward#1072. ## Implement - Extend the AOS composed-container launcher/configuration so director and advisor surfaces receive the infrastructure-managed private-network/proxy path where their role contract calls for live observation. - Keep concrete topology in the AOS-owned configuration layer. If Ward must pass anything through during its governance lifecycle, it receives only opaque, explicit, provider-neutral container inputs produced by AOS. - Preserve the standing userspace proxy model. Do not start `tailscaled` in each agent container and do not require TUN or `NET_ADMIN`. - Ensure private DNS is resolved through the proxy path where applicable, rather than requiring a local Tailscale socket. - Add tests for generated container arguments/environment/network attachment and for the absence of Ward/Tailscale coupling. - Update the AOS runtime and role-surface documentation to state the ownership and observable failure modes. ## Acceptance - A newly launched director surface can reach an infrastructure-managed private HTTP endpoint without a local `tailscaled` process or socket. - A safe live smoke test can initialize the private Bluesky MCP NodePort and list its exact read-only tool inventory without printing addresses, credentials, tokens, or Bluesky content. - Tests prove AOS supplies the complete composition and Ward supplies no Tailscale- or proxy-specific defaults. - Repo validation and pre-commit pass, and the change lands through the normal AOS workflow. Observed 2026-07-23: both Tailscale binaries were present, `tailscaled` and its socket were absent, `kai-server` DNS failed, and `ward ops tailscale status` exited nonzero. That is expected evidence for missing composition, not a request to run a daemon inside the surface.
Author
Member

WARDED_WORKFLOW: #643

details

Review: intentionally skipped, because the temporary Ward default is pending brokered QA.
workflow: pull-request-and-merge; review summary: in-container review gate intentionally skipped pending brokered QA.
Felt: direct and well-bounded once the launcher boundary was grounded. Confidence: high. Surprise: documentation caps required a dedicated runtime page. Follow-up: a director can run the documented read-only private MCP inventory smoke test.

WARDED_WORKFLOW: https://forgejo.coilysiren.me/coilyco-flight-deck/agentic-os/pulls/643 <details><summary>details</summary> Review: intentionally skipped, because the temporary Ward default is pending brokered QA. workflow: pull-request-and-merge; review summary: in-container review gate intentionally skipped pending brokered QA. Felt: direct and well-bounded once the launcher boundary was grounded. Confidence: high. Surprise: documentation caps required a dedicated runtime page. Follow-up: a director can run the documented read-only private MCP inventory smoke test. </details>
Author
Member

WARDED_WORKFLOW: reservation-released

release details

Run finished with WARDED_WORKFLOW: https://forgejo.coilysiren.me/coilyco-flight-deck/agentic-os/pulls/643.

ward container reap released container engineer-codex-agentic-os-642 (--harness codex): the terminal outcome supersedes the reservation, so a later redispatch no longer needs --override-reservation.

Outcome summary: #643

— Codex, via ward agent

<!-- ward-agent-reservation-released --> WARDED_WORKFLOW: reservation-released <details><summary>release details</summary> Run finished with `WARDED_WORKFLOW: https://forgejo.coilysiren.me/coilyco-flight-deck/agentic-os/pulls/643`. `ward container reap` released container `engineer-codex-agentic-os-642` (`--harness codex`): the terminal outcome supersedes the reservation, so a later redispatch no longer needs `--override-reservation`. **Outcome summary:** https://forgejo.coilysiren.me/coilyco-flight-deck/agentic-os/pulls/643 </details> <!-- ward-agent-signature --> — Codex, via `ward agent`
Author
Member

WARD-OUTCOME: blocked
workflow: pull-request-and-merge

verdict: block
confidence: high
summary: PR #643 at 477f7b1 preserves the private-access implementation and its security boundary, but the latest-main conflict resolution resurrected obsolete image documentation.
findings:

  • severity: medium
    file: docs/dev-base-image.md
    line: 43
    problem: The branch restores a 14-line Pulling an image and Not here section that current main removed, including the stale claim that a repository-owned shared runtime image is absent.
    impact: The merged documentation would contradict the new single full-image contract and reintroduce pre-refactor guidance during an image cleanup.
    conclusion: The reviewer blocked PR #643 until a fresh worker removes the resurrected image section while retaining only the private-network ownership statement in a current location. The director-only live smoke remains a separate acceptance gate.
WARD-OUTCOME: blocked workflow: pull-request-and-merge verdict: block confidence: high summary: PR #643 at `477f7b1` preserves the private-access implementation and its security boundary, but the latest-main conflict resolution resurrected obsolete image documentation. findings: - severity: medium file: docs/dev-base-image.md line: 43 problem: The branch restores a 14-line Pulling an image and Not here section that current main removed, including the stale claim that a repository-owned shared runtime image is absent. impact: The merged documentation would contradict the new single full-image contract and reintroduce pre-refactor guidance during an image cleanup. conclusion: The reviewer blocked PR #643 until a fresh worker removes the resurrected image section while retaining only the private-network ownership statement in a current location. The director-only live smoke remains a separate acceptance gate.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/agentic-os#642
No description provided.