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
**Spec selection**: `STATE.json` stores `selected_spec` and `selected_milestone` as UI references only. Active task progress uses `task_spec` and `task_milestone`, copied from `pending_task_*` when `/create_task` succeeds. Milestone display text is resolved from the spec Markdown by milestone `ID`. Keep milestone IDs stable across title edits.
61
71
72
+
**Agent adapters**: keep backend-specific CLI behavior inside `src/agents/{claude,codex,qwen}`. Shared orchestration should depend on the `SupervisorAgent` and `ExecutorAgent` traits, not on a concrete agent CLI. When adding an agent, implement both role adapters, model normalization, headless prompt transport if needed, version/config entry behavior, registration wiring, and focused tests.
73
+
74
+
**HQ checks**: `/check` calls the same MCP check handler as an Executor and therefore updates retry state. `/check --force` runs configured commands directly from HQ and does not modify `STATE.json`.
75
+
76
+
**HQ reset vs MCP reset**: HQ `/reset` force-resets from any state after confirmation when active agents may be running, clears task/answer/consultation files, and preserves selected spec/milestone. The MCP `/reset` tool is only valid from `Failed`.
|`/ask_human`| Executing, Addressing, Consultation, Reviewing | AwaitingHuman | Last-resort human fallback. Write question to QUESTION.md; agent must immediately call `/wait_for_answer` (executor) or wait for HQ to answer |
144
-
|`/respond_consult`| Consultation | — | Record the Supervisor consultation response in `CONSULT_RESPONSE.md`|
145
149
|`/answer`| AwaitingHuman | (previous state) | Provide answer to a pending question; restores previous state |
146
150
|`/heartbeat`| any claimed | — | Renew lease; call every ~30s while working |
147
151
|`/status`| any | — | Print current state + retry counters |
@@ -206,6 +210,7 @@ Executor verification is TDD-friendly: `/check` can be run as often as needed du
206
210
|---|---|
207
211
|`STATE.json`| Current `TaskState`, lease fields (`claimed_by`, `lease_until`, `last_heartbeat`), retry/cycle counters, failure reason, schema version, last-write timestamp and PID |
208
212
|`STATE.lock`| Advisory lock file for atomic claiming (do not delete) |
213
+
|`agents.json`| Runtime registry for agent sessions, statuses, PIDs, and log ownership |
209
214
|`TASK.md`| Task description written by Supervisor |
210
215
|`REVIEW.md`| Supervisor rejection notes |
211
216
|`SUBMISSION.md`| Executor's submission notes (summary, verification steps, known limitations) |
@@ -225,31 +230,47 @@ Executor verification is TDD-friendly: `/check` can be run as often as needed du
Backend-specific CLI behavior belongs in `src/agents/{claude,codex,qwen}`. Shared orchestration should use the `SupervisorAgent` and `ExecutorAgent` traits from `src/agents/mod.rs` instead of matching on a concrete CLI. New agents need both role adapters, model normalization, headless prompt transport if needed, version/config entry behavior, registration wiring, and focused tests.
@@ -29,6 +29,8 @@ Ferrus works with existing coding agents:
29
29
30
30
Agents are treated as interchangeable workers — ferrus provides the runtime, coordination, and state.
31
31
32
+
Internally, agent support is normalized through `src/agents/`: `mod.rs` defines the shared Supervisor/Executor contracts and MCP config entry shape, while `claude/`, `codex/`, and `qwen/` adapt each CLI's launch flags, model overrides, headless prompt transport, and local permission/config conventions.
33
+
32
34
> 💡 **Status**: ferrus is currently in alpha and not ready for production.
@@ -98,6 +100,9 @@ On Linux and macOS for `x86_64` and `aarch64`/`arm64`, `install.sh` downloads th
98
100
|`/task --manual`| Define a free-form task without selected milestone context |
99
101
|`/spec`| Draft, approve, and save a feature specification |
100
102
|`/milestones`| Select the current spec and milestone |
103
+
|`/reset-spec`| Clear the selected spec and milestone |
104
+
|`/check`| Run the Ferrus check gate from HQ, using the normal task-state rules |
105
+
|`/check --force`| Run configured checks from HQ without modifying state |
101
106
|`/supervisor`| Open an interactive supervisor session (no initial prompt) |
102
107
|`/executor`| Open an interactive executor session (no initial prompt) |
103
108
|`/resume`| Manually resume the executor headlessly; also recovers Consultation by relaunching both supervisor and executor |
@@ -107,8 +112,9 @@ On Linux and macOS for `x86_64` and `aarch64`/`arm64`, `install.sh` downloads th
107
112
|`/stop`| Stop all running agent sessions (prompts for confirmation) |
108
113
|`/reset`| Reset state to Idle and clear task files (prompts for confirmation) |
109
114
|`/init [--agents-path]`| Initialize ferrus in the current directory |
110
-
|`/register`| Register agent configs (same as `ferrus register`) |
111
-
|`/model`| Update the supervisor or executor model override |
115
+
|`/register [--supervisor <agent>] [--executor <agent>]`| Register Claude Code or Codex configs from HQ |
116
+
| `/model <supervisor|executor> <model>` | Update the supervisor or executor model override |
117
+
| `/model <supervisor|executor> --clear` | Clear the supervisor or executor model override |
112
118
|`/help`| List all HQ commands |
113
119
|`/quit`| Exit HQ |
114
120
@@ -151,7 +157,7 @@ Idle
151
157
└─► Reviewing ← submit (final check passed)
152
158
```
153
159
154
-
Any active Executor work state (Executing, Addressing, Checking) can pause to `Consultation` via `/consult`. HQ spawns the configured Supervisor in consultation mode, and the executor immediately calls `/wait_for_consult` to block until the Supervisor answers via `/respond_consult`.
160
+
Any active Executor work state (Executing, Addressing) can pause to `Consultation` via `/consult`. HQ spawns the configured Supervisor in consultation mode, and the executor immediately calls `/wait_for_consult` to block until the Supervisor answers via `/respond_consult`.
155
161
156
162
Any active state, including `Consultation`, can pause to `AwaitingHuman` via `/ask_human`. The agent immediately calls `/wait_for_answer` to block until the human responds. The human types their answer in the HQ terminal (raw text, no slash prefix). `/wait_for_answer` restores the previous state and returns the answer.
157
163
@@ -166,8 +172,9 @@ Any active state, including `Consultation`, can pause to `AwaitingHuman` via `/a
166
172
167
173
Scaffolds ferrus in the current project (default `--agents-path .agents`):
168
174
169
-
- Creates `ferrus.toml` with default check commands and limits
175
+
- Creates `ferrus.toml` with default limits and an empty check command list
170
176
- Creates `.ferrus/` runtime directory with all state files and `logs/`
177
+
- Creates `docs/specs/` for approved feature specifications
171
178
- Creates skill files agents load to understand their role:
172
179
-`<agents-path>/skills/ferrus/SKILL.md` — general overview
Writes agent config files so they automatically load `ferrus serve` as a tool server, and adds only the selected agents' local files to `.gitignore`. Supported agents:
196
+
Writes agent config files so they automatically load `ferrus serve` as a tool server, and adds only the selected agents' local files to `.gitignore`. At least one of `--supervisor` or `--executor` is required; each model flag requires the matching role flag. Supported agents:
0 commit comments