You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Architect-shell support is currently inferred indirectly from builder harnesses and command-name auto-detection, producing inconsistent behavior:
shell.architect: "opencode" fails immediately with the useful error OpenCode is only supported as a builder shell, not as an architect shell.
shell.architect: "gemini" does not fail because GEMINI_HARNESS is still a valid built-in builder provider whose architect injection method does not throw, even though Gemini is now builder-only.
shell.architect: "agy" does not fail because detectHarnessFromCommand() does not recognize agy; resolveHarness() silently falls back to CLAUDE_HARNESS, so Codev can launch an unsupported command with Claude-only arguments.
Doctor warnings are insufficient: unsupported architect configurations must fail before Tower starts workspace processes. Builder support and architect support are different capabilities and should be represented explicitly.
Goal
Standardize architect selection around one authoritative capability model:
Supported architects launch with the correct harness.
Recognized builder-only harnesses fail fast when selected as architects.
Explicit, unrecognized architect commands fail fast rather than defaulting to Claude.
Scope
1. Explicit harness capabilities
Introduce a single source of truth for which built-in harnesses support architect and/or builder use (capability metadata, role-specific registries, or an equivalent typed design).
Initially, architect support is limited to the currently approved architect harnesses (claude and codex).
A known harness without architect capability must throw a clear, provider-specific error similar to the existing OpenCode error. This includes gemini, opencode, and agy until/unless Support agy (Antigravity CLI) as an architect #1063 explicitly graduates agy to supported-architect status.
Keep those providers usable in their supported non-architect roles; rejecting architect use must not regress builder or consultation behavior.
Make doctor consume the same capability source rather than maintaining a separate allow/deny chain.
2. Strict architect resolution
Preserve the normal no-config default (claude).
If the user explicitly configures shell.architect and its command cannot be recognized, throw an actionable error instead of falling back to CLAUDE_HARNESS.
Continue to support valid custom harnesses declared under harness and selected explicitly via shell.architectHarness; a configured custom harness is recognized, not an unknown command.
Reject an explicit unknown shell.architectHarness with the existing available-harness guidance.
Apply validation consistently to every architect launch/relaunch path:
afx workspace start
no-Tower afx architect
sibling architect creation
reconnect / shellper restart
Validate before creating a restart loop or partially starting workspace processes.
3. Actionable errors
Errors should identify:
the configured command/harness;
whether it is unknown or builder-only;
the supported architect choices;
how to fix .codev/config.json / ~/.codev/config.json;
for custom CLIs, how to declare and select a custom harness.
The OpenCode error is the UX baseline. gemini and agy must no longer appear to start successfully when they are not supported architects.
Acceptance criteria
With no explicit architect config, Codev still defaults to Claude.
shell.architect: "claude" and shell.architect: "codex" launch successfully with their correct role injection.
shell.architect: "opencode" fails before workspace startup with a builder-only error.
shell.architect: "gemini" fails before workspace startup with a builder-only error.
Support agy (Antigravity CLI) as an architect #1063 — possible future agy architect support. If completed, it should add architect capability through the same standardized mechanism rather than bypassing validation.
Problem
Architect-shell support is currently inferred indirectly from builder harnesses and command-name auto-detection, producing inconsistent behavior:
shell.architect: "opencode"fails immediately with the useful errorOpenCode is only supported as a builder shell, not as an architect shell.shell.architect: "gemini"does not fail becauseGEMINI_HARNESSis still a valid built-in builder provider whose architect injection method does not throw, even though Gemini is now builder-only.shell.architect: "agy"does not fail becausedetectHarnessFromCommand()does not recognizeagy;resolveHarness()silently falls back toCLAUDE_HARNESS, so Codev can launch an unsupported command with Claude-only arguments.Doctor warnings are insufficient: unsupported architect configurations must fail before Tower starts workspace processes. Builder support and architect support are different capabilities and should be represented explicitly.
Goal
Standardize architect selection around one authoritative capability model:
Scope
1. Explicit harness capabilities
architectand/orbuilderuse (capability metadata, role-specific registries, or an equivalent typed design).claudeandcodex).gemini,opencode, andagyuntil/unless Supportagy(Antigravity CLI) as an architect #1063 explicitly graduatesagyto supported-architect status.doctorconsume the same capability source rather than maintaining a separate allow/deny chain.2. Strict architect resolution
claude).shell.architectand its command cannot be recognized, throw an actionable error instead of falling back toCLAUDE_HARNESS.harnessand selected explicitly viashell.architectHarness; a configured custom harness is recognized, not an unknown command.shell.architectHarnesswith the existing available-harness guidance.afx workspace startafx architect3. Actionable errors
Errors should identify:
.codev/config.json/~/.codev/config.json;The OpenCode error is the UX baseline.
geminiandagymust no longer appear to start successfully when they are not supported architects.Acceptance criteria
shell.architect: "claude"andshell.architect: "codex"launch successfully with their correct role injection.shell.architect: "opencode"fails before workspace startup with a builder-only error.shell.architect: "gemini"fails before workspace startup with a builder-only error.shell.architect: "agy"fails before workspace startup as unsupported unless Supportagy(Antigravity CLI) as an architect #1063 has added full architect capability by implementation time.shell.architect: "my-ai") fails and never receives Claude args or Claude resume behavior.doctorreports architect support from the same source of truth as runtime validation.Related work
codexas an architect #929 / PR Support codex as an architect (PIR #929) #1059 — codex architect support; leave its current scope unchanged.agy(Antigravity CLI) as an architect #1063 — possible futureagyarchitect support. If completed, it should add architect capability through the same standardized mechanism rather than bypassing validation.agyconsultation migration.Recommended protocol
PIR: the capability design needs plan review, and the end-to-end error UX should be exercised before PR creation.