Epic: dockerized local dev harness (aos-published image, ward-driven devcontainer) #220

Closed
opened 2026-06-16 01:57:42 +00:00 by coilysiren · 1 comment
Owner

Dockerized local dev harness

Umbrella for moving Kai's local dev onto a single, fleet-wide dev container driven by ward, with the image published by aos.

Decision (settled)

aos publishes the dev image as a built artifact. It is the analog of the ward/coily brew binaries: a thing you pull, not build-from-source on demand. This dissolves the bootstrapping problem (no repo needs cloning to know how to run its container) and keeps a single image so configuration cannot drift across repos.

Seam split

  • aos owns the environment. Dockerfile lives wholly in aos. aos CI builds and publishes coilyco-flight-deck/agentic-os:<tag>. aos also owns the mount-eligibility manifest (which repos a given harness may mount on a given host), extended out of the existing agentic_os.generators.generate_agent_compose scope logic so there is one source of truth.
  • ward owns the orchestration. ward container verb family - generated embedded compose, mount + env computation (including the ~/.aws / SSM passthrough), the wrapper that replaces Kai's 10-20 word bash aliases. ward references the image by published tag, never a Dockerfile path. A --build escape hatch points at the aos checkout if present, for iterating on the image itself.
  • infra owns rollout only. Pull the image, keep ward current, converge the manifest. The old per-repo local-iter loop is deleted, not relocated.
  • Default mount set (always-on, task-independent) - lore (agent knowledge), aos (doctrine + the repo the harness is edited in), aosk (operating context). All stay cloned on host and mount by default.
  • aosk - no impl ticket of its own, but it is a default mount (above).

Transparency is per-surface (maps onto existing dispatch surfaces)

  • interactive / consult - transparent. claude runs inside the container, repos bind-mounted, edits + git + ~/.aws persist on host. Container is invisible plumbing. This is v0.
  • headless / cascade - opaque. claude runs detached in-container, operator reads the log. Highest payoff (isolation, reproducibility) but iterating on headless is annoying, so deferred.

v0 scope

Transparent interactive container only - ward container up/exec replacing the alias stack. Headless-in-container deferred. Services and coilyco-bridge/deploy stay host-native in v0 (separate axis, compose-of-services is a later effort).

Children

Build order

aos #221 + #222 are foundational (image + manifest). ward #98 depends on both. infra #347 depends on both. v0 is done when ward container up/exec runs claude transparently against mounted repos with working ~/.aws/SSM.

## Dockerized local dev harness Umbrella for moving Kai's local dev onto a single, fleet-wide dev container driven by `ward`, with the image published by aos. ### Decision (settled) **aos publishes the dev image as a built artifact.** It is the analog of the ward/coily brew binaries: a thing you pull, not build-from-source on demand. This dissolves the bootstrapping problem (no repo needs cloning to know how to run its container) and keeps a single image so configuration cannot drift across repos. ### Seam split - **aos owns the environment.** Dockerfile lives wholly in aos. aos CI builds and publishes `coilyco-flight-deck/agentic-os:<tag>`. aos also owns the **mount-eligibility manifest** (which repos a given harness may mount on a given host), extended out of the existing `agentic_os.generators.generate_agent_compose` scope logic so there is one source of truth. - **ward owns the orchestration.** `ward container` verb family - generated embedded compose, mount + env computation (including the `~/.aws` / SSM passthrough), the wrapper that replaces Kai's 10-20 word bash aliases. ward references the image by **published tag**, never a Dockerfile path. A `--build` escape hatch points at the aos checkout if present, for iterating on the image itself. - **infra owns rollout only.** Pull the image, keep ward current, converge the manifest. The old per-repo local-iter loop is deleted, not relocated. - **Default mount set (always-on, task-independent)** - `lore` (agent knowledge), `aos` (doctrine + the repo the harness is edited in), `aosk` (operating context). All stay cloned on host and mount by default. - **aosk** - no impl ticket of its own, but it is a default mount (above). ### Transparency is per-surface (maps onto existing dispatch surfaces) - **interactive / consult - transparent.** claude runs inside the container, repos bind-mounted, edits + git + `~/.aws` persist on host. Container is invisible plumbing. This is v0. - **headless / cascade - opaque.** claude runs detached in-container, operator reads the log. Highest payoff (isolation, reproducibility) but iterating on headless is annoying, so **deferred**. ### v0 scope Transparent interactive container only - `ward container up/exec` replacing the alias stack. Headless-in-container deferred. Services and `coilyco-bridge/deploy` stay host-native in v0 (separate axis, compose-of-services is a later effort). ### Children - [ ] aos #221 - Publish container image (https://forgejo.coilysiren.me/coilyco-flight-deck/agentic-os/issues/221) - [ ] aos #222 - Emit mount-eligibility manifest from `generate_agent_compose` (https://forgejo.coilysiren.me/coilyco-flight-deck/agentic-os/issues/222) - [ ] ward #98 - `ward container` verb family, transparent interactive v0 (https://forgejo.coilysiren.me/coilyco-flight-deck/ward/issues/98) - [ ] infra #347 - Converge dev-harness rollout, delete per-repo local-iter loop (https://forgejo.coilysiren.me/coilyco-flight-deck/infrastructure/issues/347) ### Build order aos #221 + #222 are foundational (image + manifest). ward #98 depends on both. infra #347 depends on both. v0 is done when `ward container up/exec` runs claude transparently against mounted repos with working `~/.aws`/SSM.
coilysiren added
P3
and removed
P2
labels 2026-06-17 08:39:12 +00:00
Author
Owner

Goose triage - 2026-06-17

  • Tier: P2 (score 85) - Critical infrastructure upgrade with clear ownership and execution plan
  • Mode: consult - Ambiguous scope, pending design decisions, external access needed

Auto-generated by ward exec goose-triage (qwen3-coder:30b), edited in place on each run. Labels are the conclusion; this is the why.

<!-- goose-triage --> **Goose triage** - 2026-06-17 - **Tier:** `P2` (score 85) - Critical infrastructure upgrade with clear ownership and execution plan - **Mode:** `consult` - Ambiguous scope, pending design decisions, external access needed <sub>Auto-generated by `ward exec goose-triage` (qwen3-coder:30b), edited in place on each run. Labels are the conclusion; this is the why.</sub>
coilysiren added
P4
and removed
P2
labels 2026-07-01 04:29:25 +00:00
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#220
No description provided.