[meta] Editable architect on the agents roster — 5-story tracker #1203

Open
opened 2026-05-15 12:44:11 +00:00 by architect · 0 comments
Collaborator

Tracker for the "make architect editable from /agents/roster, kill the legacy host-mode infrastructure" work. Five stories, sequenced bottom-up: land the relay first so the host-mode plumbing can disappear, then drop the UI specialcase, then add the architect-only Routing fields.

Architect now runs in a persistent Docker container (claude-hooks-architect-default) per specs/architect-dockerize.md. The role: "host" flag is the last load-bearing vestige of the old in-process world. Once the chat / spec endpoints relay through docker exec like every other agent, every host_mode branch in the codebase becomes dead weight.

Stories

Implementation order:

  1. #1198 — AR-3 — Relay /architect/chat and /architect/spec to docker exec. Deletes the in-process SDK path. After this, nothing live reads role === "host".
  2. #1199 — AR-4 — Drop role: "host" and is_host_mode. Architect's role becomes "planner". No backward compat — config loader rejects old payloads.
  3. #1200 — AR-5 — Delete HOST_MODE_TYPES, HostContainerLifecycle, getArchitectWorker host filter, dockerRun host_mode branch. Mount profile becomes uniform across types.
  4. #1201 — AR-1 — Drop the architect filter from /agents/roster and delete the isHost branch in TypeGroupCard. Architect renders identically to every other type.
  5. #1202 — AR-2BreakdownRulesSection for architect-only fields (example_prompts, label_rules, assignee_rules, default_assignee).

What dies vs. what survives

Dies: role: "host" · is_host_mode · HOST_MODE_TYPES · HostContainerLifecycle · getArchitectWorker's host filter · dockerRun's host_mode branch · TypeGroupCard::isHost · roster filter · in-process chat path.

Survives: dispatchable: false on architect's factory config (a normal knob — architect doesn't take webhook-routed work) · the BreakdownRulesSection for architect's own fields · the singleton-by-default factory image (one architect ships; operator can scale up if they want).

Out of scope

  • Reworking the per-type container config schema. A mounts: "credentials-only" | "full" knob was considered and rejected in favour of uniform mounts (extra binds on architect are harmless).
  • Migration shim for old configs carrying role: "host". Pre-launch — operator regenerates.
  • The broader DB-backed per-scope agent-config rework (specs/agent-config-customization.md, specs/agent-config-ux-rethink.md). This tracker rides on top of the existing PUT /config/agents flow.

References

  • specs/architect-dockerize.md — the provisioning half; AR-3 is the missing relay half.
  • apps/server/src/shared/config/agents-default-config.ts::architect — factory shape, source of truth for the editable field list.
  • apps/web/src/routes/agents.roster.tsx — where the roster filter lives.
Tracker for the "make architect editable from /agents/roster, kill the legacy host-mode infrastructure" work. Five stories, sequenced bottom-up: land the relay first so the host-mode plumbing can disappear, then drop the UI specialcase, then add the architect-only Routing fields. Architect now runs in a persistent Docker container (`claude-hooks-architect-default`) per `specs/architect-dockerize.md`. The `role: "host"` flag is the last load-bearing vestige of the old in-process world. Once the chat / spec endpoints relay through `docker exec` like every other agent, every `host_mode` branch in the codebase becomes dead weight. ## Stories Implementation order: 1. **#1198 — AR-3** — Relay `/architect/chat` and `/architect/spec` to docker exec. Deletes the in-process SDK path. After this, nothing live reads `role === "host"`. 2. **#1199 — AR-4** — Drop `role: "host"` and `is_host_mode`. Architect's role becomes `"planner"`. No backward compat — config loader rejects old payloads. 3. **#1200 — AR-5** — Delete `HOST_MODE_TYPES`, `HostContainerLifecycle`, `getArchitectWorker` host filter, `dockerRun` host_mode branch. Mount profile becomes uniform across types. 4. **#1201 — AR-1** — Drop the architect filter from `/agents/roster` and delete the `isHost` branch in `TypeGroupCard`. Architect renders identically to every other type. 5. **#1202 — AR-2** — `BreakdownRulesSection` for architect-only fields (`example_prompts`, `label_rules`, `assignee_rules`, `default_assignee`). ## What dies vs. what survives **Dies:** `role: "host"` · `is_host_mode` · `HOST_MODE_TYPES` · `HostContainerLifecycle` · `getArchitectWorker`'s host filter · `dockerRun`'s host_mode branch · `TypeGroupCard::isHost` · roster filter · in-process chat path. **Survives:** `dispatchable: false` on architect's factory config (a normal knob — architect doesn't take webhook-routed work) · the `BreakdownRulesSection` for architect's own fields · the singleton-by-default factory image (one architect ships; operator can scale up if they want). ## Out of scope - Reworking the per-type `container` config schema. A `mounts: "credentials-only" | "full"` knob was considered and rejected in favour of uniform mounts (extra binds on architect are harmless). - Migration shim for old configs carrying `role: "host"`. Pre-launch — operator regenerates. - The broader DB-backed per-scope agent-config rework (`specs/agent-config-customization.md`, `specs/agent-config-ux-rethink.md`). This tracker rides on top of the existing `PUT /config/agents` flow. ## References - `specs/architect-dockerize.md` — the provisioning half; AR-3 is the missing relay half. - `apps/server/src/shared/config/agents-default-config.ts::architect` — factory shape, source of truth for the editable field list. - `apps/web/src/routes/agents.roster.tsx` — where the roster filter lives.
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#1203
No description provided.