Architect: persistent Docker container + reconciliation #1131

Closed
opened 2026-05-13 20:00:41 +00:00 by claude-desktop · 0 comments
Collaborator

As the operator, I want the architect agent to run as a persistent Docker container (claude-hooks-architect-default) so that it has the same deployment and isolation model as every other agent in the fleet.

Spec: specs/architect-dockerize.md

Acceptance criteria

Container lifecycle

  • reconcileAll() creates claude-hooks-architect-default when the architect instance row exists and no container is running.
  • reconcileOne("architect-default") is wired through POST /agents CRUD exactly like every other agent — no special-casing.
  • Container is a persistent singleton: not torn down on just restart; only recreated by just containers-rebuild architect-default.
  • Container uses the same claude-hooks:dev image as all other agents.

Volume mounts

  • Only ~/.config/claude-hooks/agent-env/architect is mounted (→ /claude-config, CLAUDE_CONFIG_DIR).
  • No ~/Workspace, process.cwd(), or any other host path is mounted.
  • docker inspect claude-hooks-architect-default confirms exactly one bind-mount.

Network

  • Container is on the same bridge network as other agents; has outbound reach to Forgejo and 192.168.1.164:4500.

Operator commands

  • just agents-sync includes architect in its reconcile pass without any extra flags.
  • just containers-rebuild (no arg) rebuilds architect alongside all other containers.
  • just containers-rebuild architect-default rebuilds only architect.
  • just render-agent-env architect-default prints the resolved env correctly.

Tests

  • Unit test: reconcileOne("architect-default") emits created when the container is absent (mock docker calls).
  • just qa passes.

Out of scope

  • The chat relay (issue #N+1) — this issue only provisions the container; the service still uses the in-process SDK path until that ships.
  • Removing host-mode infrastructure (issue #N+2) — done after the relay lands.

References

  • Spec: specs/architect-dockerize.md — "Container model" section
  • Existing reconcile: apps/server/src/infrastructure/container/container-reconcile.ts
  • docs/containers.md
As the operator, I want the architect agent to run as a persistent Docker container (`claude-hooks-architect-default`) so that it has the same deployment and isolation model as every other agent in the fleet. Spec: `specs/architect-dockerize.md` ### Acceptance criteria #### Container lifecycle - [ ] `reconcileAll()` creates `claude-hooks-architect-default` when the architect instance row exists and no container is running. - [ ] `reconcileOne("architect-default")` is wired through `POST /agents` CRUD exactly like every other agent — no special-casing. - [ ] Container is a **persistent singleton**: not torn down on `just restart`; only recreated by `just containers-rebuild architect-default`. - [ ] Container uses the same `claude-hooks:dev` image as all other agents. #### Volume mounts - [ ] Only `~/.config/claude-hooks/agent-env/architect` is mounted (→ `/claude-config`, `CLAUDE_CONFIG_DIR`). - [ ] No `~/Workspace`, `process.cwd()`, or any other host path is mounted. - [ ] `docker inspect claude-hooks-architect-default` confirms exactly one bind-mount. #### Network - [ ] Container is on the same bridge network as other agents; has outbound reach to Forgejo and `192.168.1.164:4500`. #### Operator commands - [ ] `just agents-sync` includes architect in its reconcile pass without any extra flags. - [ ] `just containers-rebuild` (no arg) rebuilds architect alongside all other containers. - [ ] `just containers-rebuild architect-default` rebuilds only architect. - [ ] `just render-agent-env architect-default` prints the resolved env correctly. #### Tests - [ ] Unit test: `reconcileOne("architect-default")` emits `created` when the container is absent (mock docker calls). - [ ] `just qa` passes. ### Out of scope - The chat relay (issue #N+1) — this issue only provisions the container; the service still uses the in-process SDK path until that ships. - Removing host-mode infrastructure (issue #N+2) — done after the relay lands. ### References - Spec: `specs/architect-dockerize.md` — "Container model" section - Existing reconcile: `apps/server/src/infrastructure/container/container-reconcile.ts` - `docs/containers.md`
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
charles/agent-hooks#1131
No description provided.