model-orchestrator 0.1.34 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +31 -21
- package/CHANGELOG.md +51 -1
- package/README.md +127 -110
- package/bin/README.md +57 -6
- package/bin/aunx.js +7 -0
- package/bin/cli-run.mjs +21 -15
- package/bin/cli.js +376 -257
- package/docs/README.md +15 -18
- package/docs/catalog.md +228 -38
- package/docs/companions.md +28 -10
- package/docs/guarantees.md +21 -12
- package/docs/how-it-routes.md +49 -42
- package/docs/install.md +135 -33
- package/docs/part-1-beginner.md +37 -45
- package/docs/part-2-intermediate.md +34 -52
- package/docs/part-3-advanced.md +36 -26
- package/docs/security-review-history.md +38 -0
- package/llms.txt +24 -25
- package/package.json +16 -8
- package/proof/README.md +100 -0
- package/proof/gate-demo.cast +9 -0
- package/proof/gate-demo.gif +0 -0
- package/proof/results.json +198 -0
- package/proof/scripts/check-gate.js +26 -0
- package/proof/scripts/install-time.js +16 -0
- package/proof/scripts/lib.js +73 -0
- package/proof/scripts/measure.js +15 -0
- package/proof/scripts/missing-results.js +30 -0
- package/proof/scripts/record-gate.js +38 -0
- package/proof/scripts/render.js +18 -0
- package/proof/scripts/runner-overhead.js +21 -0
- package/src/README.md +9 -3
- package/src/activation-ownership.js +19 -0
- package/src/apply-companions.js +104 -0
- package/src/apply-snippets.js +60 -28
- package/src/aunx.js +262 -0
- package/src/catalog.js +253 -117
- package/src/install.js +478 -209
- package/src/plugin.js +13 -4
- package/src/postinstall.js +57 -0
- package/src/roles.js +184 -0
- package/src/uninstall.js +125 -8
- package/templates/README.md +19 -2
- package/templates/advanced/README.md +2 -2
- package/templates/advanced/vm/PRIVACY_GATES.md +17 -19
- package/templates/advanced/vm/README.md +25 -20
- package/templates/advanced/vm/box-CLAUDE.md +19 -18
- package/templates/advanced/vm/jobs/README.md +3 -1
- package/templates/advanced/vm/jobs/weekly-audit.service +3 -0
- package/templates/advanced/vm/jobs/weekly-audit.sh +2 -2
- package/templates/advanced/vm/setup-vm.sh +49 -2
- package/templates/agents/README.md +2 -2
- package/templates/agents/agy/README.md +20 -3
- package/templates/agents/agy/builder.md +11 -7
- package/templates/agents/agy/bulk-worker.md +9 -7
- package/templates/agents/agy/code-reviewer.md +13 -7
- package/templates/agents/agy/deep-planner.md +10 -7
- package/templates/agents/agy/done-verifier.md +13 -22
- package/templates/agents/agy/finding-verifier.md +14 -22
- package/templates/agents/agy/live-researcher.md +10 -7
- package/templates/agents/agy/reader.md +10 -12
- package/templates/agents/claude-code/README.md +18 -14
- package/templates/agents/claude-code/builder.md +10 -15
- package/templates/agents/claude-code/bulk-worker.md +8 -10
- package/templates/agents/claude-code/code-reviewer.md +11 -17
- package/templates/agents/claude-code/deep-planner.md +9 -11
- package/templates/agents/claude-code/done-verifier.md +12 -33
- package/templates/agents/claude-code/finding-verifier.md +13 -39
- package/templates/agents/claude-code/live-researcher.md +9 -11
- package/templates/agents/claude-code/reader.md +9 -18
- package/templates/agents/snippets/chat.md +9 -10
- package/templates/agents/snippets/claude-code.md +17 -18
- package/templates/agents/snippets/generic.md +9 -11
- package/templates/agents/snippets/route-gate.mjs +2 -2
- package/templates/agents/snippets/route-metrics.mjs +1 -1
- package/templates/agents/snippets/subagent-context.mjs +4 -4
- package/templates/beginner/ORCHESTRATOR.md +31 -36
- package/templates/beginner/README.md +1 -1
- package/templates/common/ACCEPTANCE_CHECKS.json +12 -0
- package/templates/common/CONTEXT.md +37 -0
- package/templates/common/DECISIONS.md +11 -0
- package/templates/common/README.md +24 -11
- package/templates/common/TASK_BRIEF.md +84 -0
- package/templates/common/protocols/README.md +14 -11
- package/templates/common/protocols/acceptance-checks.md +14 -0
- package/templates/common/protocols/build-protocol.md +91 -106
- package/templates/common/protocols/context-file.md +10 -0
- package/templates/common/protocols/decision-log.md +9 -0
- package/templates/common/protocols/deep-research.md +20 -34
- package/templates/common/protocols/docs-then-prove.md +13 -18
- package/templates/common/protocols/gap-analysis.md +15 -21
- package/templates/common/protocols/memory-and-record.md +21 -20
- package/templates/common/protocols/numbers-and-logic.md +20 -26
- package/templates/common/protocols/propagate.md +18 -27
- package/templates/intermediate/CLI-RUN.md +83 -113
- package/templates/intermediate/DELEGATION_MATRIX.md +9 -3
- package/templates/intermediate/README.md +3 -3
- package/templates/intermediate/RESEARCH_TRIAGE.md +23 -15
- package/templates/intermediate/ROUTING.md +54 -51
- package/templates/intermediate/TIERS.md +37 -76
- package/templates/tools/README.md +1 -1
- package/templates/tools/obsidian-tc/OBSIDIAN-TC.md +1 -1
- package/docs/audit-brief.md +0 -148
- package/scripts/README.md +0 -7
- package/scripts/gen-catalog.js +0 -81
- package/scripts/gen-plugin.js +0 -16
- package/scripts/record-demo.sh +0 -45
- package/templates/common/TASK_BUNDLE.md +0 -56
package/docs/how-it-routes.md
CHANGED
|
@@ -1,60 +1,67 @@
|
|
|
1
|
-
# How
|
|
1
|
+
# How the model router chooses work
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Your agent reads the installed routing rules and chooses a model and tools for each task. A **lane** is a tool or model that can receive work. A **tier** describes model strength and cost: planning model, working model or cheap model. [Installation](install.md) writes the rules for your selection.
|
|
4
4
|
|
|
5
5
|
## Routing by role, complexity and stakes
|
|
6
6
|
|
|
7
|
-
Role
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
- **Role selects the job:** bulk work, reading, live data, review, finding verification, definition-of-done verification, planning or building.
|
|
8
|
+
- **Complexity sets effort:** a clear transformation and an unresolved architectural choice require different reasoning.
|
|
9
|
+
- **Stakes select the model and reviewer:** security, privacy, data loss and irreversible changes need checks suited to the consequences of a mistake.
|
|
10
|
+
- **Availability limits the choice:** check tools, model names, permissions and remaining headroom before assigning work.
|
|
10
11
|
|
|
11
|
-
-
|
|
12
|
-
reasoning than the reviewer judging its output. When the plan is airtight the
|
|
13
|
-
spec is carrying the thinking.
|
|
14
|
-
- **Stakes move the tier and the reader.** Security, privacy, data loss and
|
|
15
|
-
irreversible changes buy the challenge lane, a named check, a rollback path or
|
|
16
|
-
a human yes. A one-line change to an auth check is simple and high-stakes at
|
|
17
|
-
the same time, and it is the stakes that decide.
|
|
12
|
+
`aunx route "rename this file"` prints a cheap bulk-work suggestion. `aunx route "design the auth system"` prints a deep-planning suggestion. These are keyword classifications, labelled as suggestions. An unmatched request points to `ROUTING.md` for a decision with the full context.
|
|
18
13
|
|
|
19
|
-
|
|
20
|
-
lost data, or something you can't undo. Most tasks are low-stakes and route
|
|
21
|
-
normally.
|
|
14
|
+
## Your stack: who does what
|
|
22
15
|
|
|
23
|
-
The
|
|
24
|
-
unresolved checkpoint, an irreversible change. A task that merely feels hard is
|
|
25
|
-
a deep-tier task, not an escalation.
|
|
16
|
+
Each install assigns jobs from the selected AIs' capability facts. The same inputs give the same assignment, stored in `MANIFEST.json` and rendered in the installed README, routing rules and delegation matrix. Selection order breaks ties; a detected binary is an advisory marker and leaves the assignment unchanged.
|
|
26
17
|
|
|
27
|
-
|
|
18
|
+
| Role | Selection rule |
|
|
19
|
+
|---|---|
|
|
20
|
+
| Plan | Prefer the main agent, then the largest known context capacity |
|
|
21
|
+
| Build | Require file writes and main-agent access or a headless runner; prefer the main agent, then project-rule loading and agent definitions |
|
|
22
|
+
| Review | Require a supported runner and a known model family different from the main agent; prefer read-only mode, then billing order |
|
|
23
|
+
| Verify | Use the main agent or a supported runner; prefer a different known model family, then billing order |
|
|
24
|
+
| Research | Require stated live-web access; prefer billing order |
|
|
25
|
+
| Bulk | Require a headless supported runner; prefer billing order, then known input pricing when both options are pay-per-token |
|
|
26
|
+
| Read | Prefer the main agent, then the largest known context capacity |
|
|
27
|
+
| Private | Require a runtime that keeps work on your machine |
|
|
28
|
+
| Fan-out | Show when a selected tool states that one call starts several children; prefer billing order |
|
|
29
|
+
| Long-context | Show when a selected tool's known context capacity exceeds the main agent's; prefer the largest |
|
|
28
30
|
|
|
29
|
-
|
|
30
|
-
cited line, states what would trigger the problem, then hunts for the guard,
|
|
31
|
-
caller or test that makes it impossible, and returns **CONFIRMED**,
|
|
32
|
-
**NOT_REPRODUCED** or **INCONCLUSIVE** per finding. Only CONFIRMED earns a
|
|
33
|
-
change. Use a different model family from the one that produced the finding
|
|
34
|
-
where you have one: a family asked to check its own claim tends to agree with
|
|
35
|
-
itself.
|
|
31
|
+
Billing order is local, free, subscription, then pay-per-token. Unknown prices leave ties in selection order and require checking your provider's rate. Unknown capabilities render as **unverified** and cannot satisfy a role requirement. Two inherited capabilities remain true with **UNVERIFIED against a vendor doc** beside them: Antigravity's fan-out and Grok's live-web tools. Their current vendor behavior needs verification.
|
|
36
32
|
|
|
37
|
-
|
|
33
|
+
When a separate lane is unavailable, the main agent carries the job at its named tier. Review and private work are exceptions: the table says **none selected**. A fresh-context review on your main agent is a self-check; independent review needs a known different model family. If the main agent's family is unknown, independence is unverified. With no local runtime, keep private work off the selected lanes.
|
|
38
34
|
|
|
39
|
-
`
|
|
35
|
+
`aunx route` reads the assigned role from the current manifest, even if you preserve edited routing documents during an upgrade. Pass `--dir PATH` for a custom rules folder. It tries that manifest, then `./ai-orchestrator/MANIFEST.json`, then `./MANIFEST.json`. With no usable manifest it keeps the generic suggestion and adds an install notice. It reads bounded regular JSON files and executes no project code.
|
|
40
36
|
|
|
41
|
-
##
|
|
37
|
+
## Verify a review finding
|
|
42
38
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
39
|
+
When a review returns a finding, use the assigned verification role to read the cited line, state the trigger and look for a caller, guard or test that disproves it. Where an agent set is installed, `finding-verifier` supplies this prompt. It returns **CONFIRMED**, **NOT_REPRODUCED** or **INCONCLUSIVE**. A confirmed finding gets a repair and a regression check capable of failing before the fix.
|
|
40
|
+
|
|
41
|
+
Use a different model family for the review when one is available. The build protocol has one audit step: the reviewer checks the build against its scope, while a companion reviewer checks the scope against the user's ask. Fix verification follows the reproduced regression; a second full audit pass is outside that sequence.
|
|
42
|
+
|
|
43
|
+
## Check completion and digest many files
|
|
44
|
+
|
|
45
|
+
Use the verification role to probe the artifact named in a definition of done. Where installed, `done-verifier` supplies this prompt and returns MET, NOT_MET or UNVERIFIABLE. On Claude Code it has Bash for read-only probes, so that behavior is instructed by its prompt rather than restricted by the tool grant. It has no file-editing tools. Antigravity's command-execution policy blocks commands for that agent.
|
|
46
|
+
|
|
47
|
+
The read role digests many files into a cited answer. Where installed, `reader` supplies this prompt; its tool grants contain neither Bash nor file-editing tools. Use the bulk role when the job includes classification or writing.
|
|
48
|
+
|
|
49
|
+
## Choose and record model and effort
|
|
50
|
+
|
|
51
|
+
Agent definitions specify planning, working or cheap model tiers and use your plan's configured model. Every current plan mapping is unverified, so generated definitions omit `model:`. Claude Code can use `CLAUDE_CODE_SUBAGENT_MODEL`; a manual `model:` line can pin a verified choice. Antigravity defaults to its inherited model. Support for Claude Code's `xhigh` and `max` effort on every plan is UNVERIFIED.
|
|
52
|
+
|
|
53
|
+
Probe your vendor's current roster, then request the model and effort the task needs. Replace `<lane>` with a supported CLI named in your stack table. These examples use `--effort`; for a lane whose runner does not support that flag, omit it and configure the model directly:
|
|
47
54
|
|
|
48
55
|
```bash
|
|
49
|
-
|
|
50
|
-
|
|
56
|
+
aunx cli-run '<lane>' --brief TASK_BRIEF.md --model '<model-id>' --effort high
|
|
57
|
+
# Direct form from the installed rules folder:
|
|
58
|
+
node bin/cli-run.mjs '<lane>' --brief TASK_BRIEF.md --model '<model-id>' --effort high
|
|
59
|
+
aunx cli-run --doctor
|
|
60
|
+
# Direct form: node bin/cli-run.mjs --doctor
|
|
51
61
|
```
|
|
52
62
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
(grok) reports a model id in its own output and the other four report none, so
|
|
57
|
-
an actual field would be present for one lane and missing for four, and it
|
|
58
|
-
would be a provider-supplied string, which the durable log deliberately never
|
|
59
|
-
holds.
|
|
63
|
+
Explicit flags override defaults in `bin/lanes.json`. Without either, the vendor CLI uses its own configuration. The runner records what was requested and the source of each request: `flag`, `lanes.json` or `lane_default`. These fields describe requested settings; the vendor's own reporting is the place to verify the actual model used.
|
|
64
|
+
|
|
65
|
+
## Share facts once, then scope each worker
|
|
60
66
|
|
|
67
|
+
Use `aunx context CONTEXT.md` to scaffold one context file for the run. Use `aunx brief new TASK_BRIEF.md` to quote the ask, name the output, bound edits, list checks and record what the worker has and lacks. Every worker reads the same context file; each brief defines its own section and reports coverage against it.
|
package/docs/install.md
CHANGED
|
@@ -2,35 +2,66 @@
|
|
|
2
2
|
|
|
3
3
|
Everything the installer asks, writes and accepts as a flag. The short version is in the [README](../README.md).
|
|
4
4
|
|
|
5
|
+
## Install walkthrough
|
|
6
|
+
|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
This recording shows the published 0.1.x installer. Version 1.0 detects your tools and asks for one confirmation. Companions start unselected, and third-party installation instructions are printed for you to run. Re-record from the published release with `bash scripts/record-demo.sh`.
|
|
10
|
+
|
|
5
11
|
## What a run does
|
|
6
12
|
|
|
7
13
|
|
|
8
|
-
The installer
|
|
14
|
+
The installer detects the AI binaries on your PATH, proposes a setup and shows **Your stack: who does what** before writing. The default flow asks exactly one question:
|
|
15
|
+
|
|
16
|
+
```text
|
|
17
|
+
Write these files?
|
|
18
|
+
[Y/n/e] (e to change anything above):
|
|
19
|
+
```
|
|
9
20
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
21
|
+
- **Confirm:** press Enter or `y` to write the displayed files and apply the displayed project activation changes. Existing files changed outside the rules folder get backups. `n` exits without writing.
|
|
22
|
+
- **Edit:** enter `e`, choose one setting and return to the summary. The edit menu includes activation, level, AIs, main agent, companions, paths and plans; level 3 also includes API providers. Turn activation off here or pass `--no-apply`.
|
|
23
|
+
- **No detected tools:** answer "Which AIs do you have access to?" first, then confirm. This path asks two questions.
|
|
24
|
+
- **Defaults:** one selected tool starts at level 1; several tools including a supported worker start at level 2, subject to each tool's minimum level. Level 3 requires an explicit choice. Companions and API providers start unselected.
|
|
25
|
+
- **Main agent:** capability ranking prefers project-rule-loading subagents, then an agent-definition surface, then a CLI with a project rules file. Ties keep selection order.
|
|
26
|
+
- **Overrides:** explicit flags take precedence and appear in the plan. Existing recorded plans and automatic-effort consent survive a rerun.
|
|
13
27
|
|
|
14
|
-
|
|
28
|
+
The installer never writes a secret, runs no third-party installer, and preserves existing documents by default. `--force` explicitly replaces them. Interactive activation updates the main agent's project rules and supported settings with backups; `--yes` requires `--apply-snippets` for those changes. The summary lists every project file it will change before confirmation.
|
|
15
29
|
|
|
16
|
-
|
|
30
|
+
`MANIFEST.json` and `bin/lanes.json` are machine-owned and refreshed on every run. Runtime files upgrade when their content matches the previous installed hash; edited or unverifiable copies stay and are named. `--upgrade-runtime` replaces runtime files only. `--update-docs` applies the same hash check to generated documents, preserving your edits. Docs and protocols go to `--dir` (default `./ai-orchestrator`). Supported subagent definitions and Claude Code hook scripts go to `--project` (default the current directory); their locations appear in the summary.
|
|
17
31
|
|
|
18
|
-
|
|
32
|
+
Every non-dry install runs a compact local health check. The final **What's left for you** section lists remaining actions, such as sign-ins or a chat app's paste step, and says when nothing remains. The generated `README.md` explains activation for the selected main agent and level. [Uninstall](#uninstall) removes recorded activation changes as well as unedited managed files.
|
|
19
33
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
34
|
+
The manifest's `roles` assignment is refreshed on every run. If a changed assignment leaves edited documents in place, the installer names that difference: `aunx route` uses the current manifest while those documents retain your edits. Use `--update-docs` to regenerate unchanged managed documents.
|
|
35
|
+
|
|
36
|
+
## Project activation
|
|
37
|
+
|
|
38
|
+
Interactive installs apply activation by default as part of the one confirmation. Turn it off with `--no-apply` or the edit screen. Headless `--yes` preserves 0.1.x behavior: add `--apply-snippets` to apply activation; without it, project rules and settings remain untouched.
|
|
39
|
+
|
|
40
|
+
- **Rules:** the catalog selects the main agent's project rules file: `CLAUDE.md`, `AGENTS.md`, `GEMINI.md` or `QWEN.md`. A block between `<!-- model-orchestrator:start -->` and `<!-- model-orchestrator:end -->` is created or replaced in place, keeping every byte outside it. Incomplete or duplicate markers are refused before writing.
|
|
41
|
+
- **Hooks:** a Claude Code main agent gets its generated hooks merged into `.claude/settings.json`, preserving existing keys and hooks. A command with the same arguments already present in that event is kept once. Invalid JSON exits 2, names the file and writes nothing.
|
|
42
|
+
- **Companions:** a Claude Code main agent gets selected tools registered in the project's `.mcp.json` when activation is enabled. Existing settings and server names stay; a conflicting server entry becomes a printed step. Other main agents retain manual registration steps because the catalog has no verified project config target for them. `obsidian-tc` also needs your actual configuration path. No global config is changed.
|
|
43
|
+
- **Backups:** existing files changed during application get sibling `<name>.bak-YYYYMMDDTHHMMSS` backups, including generated files replaced on a rerun. Each path is printed; unchanged and newly created files need no backup. Existing backups are preserved.
|
|
44
|
+
- **Preview:** `--dry` and `--dry-run` list the proposed writes and backups without changing files or running the health check. For a headless activation preview, pass `--yes --apply-snippets --dry` with your selection and paths.
|
|
45
|
+
- **Manual surfaces:** a chat app keeps one paste step. A main agent without a catalog-supported project rules file keeps its instruction step. `--no-apply` leaves the relevant rules, hook and companion merge steps in the final list.
|
|
46
|
+
- **Removal:** the manifest records the applied block and added hook and MCP entries. Uninstall removes unchanged owned entries and preserves surrounding content, existing entries and backups. Edited owned content is kept and named for review.
|
|
26
47
|
|
|
27
48
|
```bash
|
|
28
49
|
npx model-orchestrator --yes --level 2 --ais claude-code,codex --primary claude-code --project . --dir ./ai-orchestrator --apply-snippets
|
|
29
50
|
```
|
|
30
51
|
|
|
52
|
+
## Health check and sign-in
|
|
53
|
+
|
|
54
|
+
Every non-dry install runs the existing runner's `--doctor` presence check automatically, with no network or prompt sent. A missing CLI is reported alongside its installation command; the installer never runs that command. `--doctor --run` remains an explicit live check through your own vendor sign-ins.
|
|
55
|
+
|
|
56
|
+
Sign-in status is checked only when the catalog records a reliable command. Codex uses `codex login status`; a confirmed session removes its sign-in from **What's left for you**, and a confirmed sign-out prints a direct "sign in to Codex" step. Claude Code uses `claude auth status` and trusts only a confirmed sign-in the same way, but never a confirmed sign-out: an author-machine probe found a working, signed-in session that still reports a JSON sign-out, so any result other than a confirmed sign-in keeps the conditional "if you have not signed in yet" step for Claude Code. Every other CLI gets that same conditional step followed by its sign-in instruction. The installer never runs a login flow.
|
|
57
|
+
|
|
58
|
+
Start a fresh agent session in the displayed project to load the installed rules. For a later presence check, use `aunx cli-run --doctor`, or at level 2 and up `node ./ai-orchestrator/bin/cli-run.mjs --doctor` with your chosen rules path.
|
|
59
|
+
|
|
31
60
|
## Plans and automatic effort
|
|
32
61
|
|
|
33
|
-
State known subscription plans with `--plans codex=pro-20x,agy=ultra-5x
|
|
62
|
+
State known subscription plans with `--plans codex=pro-20x,agy=ultra-5x`, or choose subscription plans from the edit menu. The generated guidance uses plan headroom to allocate volume only. Every catalog plan currently has an unverified model mapping, so agent definitions omit `model:` and use your tool's configuration. Probe the available models before dispatching work. Claude Code also honors `CLAUDE_CODE_SUBAGENT_MODEL`; a manual `model:` line can set a verified choice. Plan support for `xhigh` and `max` effort remains UNVERIFIED.
|
|
63
|
+
|
|
64
|
+
`--effort-auto` is explicit consent to set `auto` only for selected high or max headroom CLI lanes. Auto chooses medium below 4,000 prompt characters and high otherwise, never higher. An audit lane may impose its own effort floor; check its configuration. Name `xhigh` explicitly for security-critical or irreversible work. The default install skips plan and effort questions; choosing plans in the edit menu enables the effort choice in that same step.
|
|
34
65
|
## The two folders every run writes to
|
|
35
66
|
|
|
36
67
|
An install has two targets, and a scripted run should set both.
|
|
@@ -38,26 +69,45 @@ An install has two targets, and a scripted run should set both.
|
|
|
38
69
|
| Flag | Default | What lands there |
|
|
39
70
|
|---|---|---|
|
|
40
71
|
| `--dir` | `./ai-orchestrator` | the docs, protocols and (level 2+) `bin/cli-run.mjs`. Named after what it contains, not after this package, so a project can hold one without looking like a checkout of it. Pass `--dir ./model-orchestrator` if you prefer the package name. |
|
|
41
|
-
| `--project` | the current directory | the
|
|
72
|
+
| `--project` | the current directory | the main agent's supported subagent definitions: `.claude/agents/` for Claude Code or `.agents/agents/` for Antigravity; Claude Code's hook scripts in `.claude/hooks/`. With activation enabled, the catalog-supported rules file, Claude Code's `.claude/settings.json` and selected companion entries in its `.mcp.json` are merged with backups. |
|
|
42
73
|
|
|
43
|
-
`--project` defaulting to the current directory is the one that surprises people: run the command from your home folder with Claude Code as the
|
|
74
|
+
`--project` defaulting to the current directory is the one that surprises people: run the command from your home folder with Claude Code as the main agent and the subagent and hook files land in your home folder. The installer prints the resolved project path in the plan and says when you left it at the default. Set it.
|
|
44
75
|
|
|
45
76
|
Rules inside the project use project-relative snippet paths, so moving the whole project preserves them. Rules outside the project use absolute paths and carry a relocation note. After moving those rules, re-run the installer or set `MODEL_ORCHESTRATOR_RULES_DIR` for the installed rule-reading hooks, and update your agent instruction paths. An absolute override names the new folder; a relative override is relative to `CLAUDE_PROJECT_DIR`. `route-metrics` reads no rules and keeps its home-directory log. The separately installed Claude Code plugin keeps its existing default-path lookup.
|
|
46
77
|
|
|
47
|
-
##
|
|
78
|
+
## Headless installation
|
|
79
|
+
|
|
80
|
+
`--yes` requires both `--level` and `--ais`, giving scripted installs an explicit selection. It never prompts and applies project activation only with `--apply-snippets`. Detection-based inference applies to the interactive flow. All existing flags remain available, including `--primary`, `--tools`, `--plans`, `--apis`, `--no-tools` and `--no-install`.
|
|
48
81
|
|
|
49
82
|
```bash
|
|
50
83
|
# both targets set: docs in ./ai-orchestrator, subagents into ./my-app/.claude/agents
|
|
51
84
|
npx model-orchestrator --yes --level 2 --ais claude-code,codex,grok --primary claude-code \
|
|
52
85
|
--dir ./ai-orchestrator --project ./my-app
|
|
53
|
-
#
|
|
54
|
-
# Add --
|
|
86
|
+
# Companions default to none, including with --yes.
|
|
87
|
+
# Add --tools codecalc,obsidian-tc,context7 to write their guides and snippets.
|
|
55
88
|
|
|
56
89
|
npx model-orchestrator --yes --level 3 --ais claude-code,codex,agy,grok,hermes,qwen,ollama --apis anthropic,openrouter --dry # print the plan, write nothing
|
|
57
90
|
npx model-orchestrator --yes --level 2 --ais claude-code,codex --project ~/my-app --dir ~/my-app/ai-orchestrator --no-tools # subagents into ~/my-app/.claude/agents
|
|
58
91
|
npx model-orchestrator --yes --level 2 --ais claude-code,codex,grok --primary claude-code --dir ./ai-orchestrator --project . --update-docs # added a lane: regenerate the docs you never edited
|
|
59
92
|
```
|
|
60
93
|
|
|
94
|
+
## Upgrading from 0.1.x
|
|
95
|
+
|
|
96
|
+
Use the same project and rules folder as your existing install. Preview first:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
npx model-orchestrator@1 --yes --level 2 --ais claude-code,codex --primary claude-code --project . --dir ./ai-orchestrator --update-docs --dry
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
- **Documents:** `--update-docs` replaces only files matching their recorded installed hashes. The former brief filename migrates to `TASK_BRIEF.md` when unedited. An edited legacy brief stays and is named so you can move your changes deliberately.
|
|
103
|
+
- **Runtime:** unchanged managed runtime files upgrade automatically. Use `--upgrade-runtime` when you intend to replace an edited runtime; it leaves document edits alone.
|
|
104
|
+
- **Companions:** existing codecalc guides and snippets stay managed. New installs select none unless you pass `--tools`. `--uninstall` still removes companion files only when unedited.
|
|
105
|
+
- **Activation:** interactive reruns apply the main agent's catalog-supported project rules and settings with backups; turn this off with `--no-apply`. Headless reruns require `--apply-snippets` for activation changes.
|
|
106
|
+
- **Compatibility:** every 0.1.x installer flag remains accepted. `--no-tools` and `--no-install` remain accepted for older scripts.
|
|
107
|
+
- **Verification:** remove `--dry` to apply. The health check runs automatically; start a fresh agent session to load the updated rules.
|
|
108
|
+
|
|
109
|
+
The installer writes its own files and the displayed project activation changes. Missing selected CLIs and companions appear in one **Install these yourself** block with official commands and links.
|
|
110
|
+
|
|
61
111
|
## Uninstall
|
|
62
112
|
|
|
63
113
|
Use the same `--dir` and `--project` paths you installed with. The uninstall reads `MANIFEST.json` under `--dir` and checks every recorded path before removing any file.
|
|
@@ -71,42 +121,94 @@ npx model-orchestrator --uninstall --dir ./ai-orchestrator --project ./my-app
|
|
|
71
121
|
|
|
72
122
|
- **Unedited files:** removed when their content hash matches the manifest.
|
|
73
123
|
- **Edited files:** kept and listed by path, with the manifest retained so you can review them.
|
|
124
|
+
- **Applied activation:** an unchanged recorded rules block and the exact hook or MCP entries added by the installer are removed. Existing entries and surrounding content stay. An edited owned entry stays and is named; the manifest remains for a later retry.
|
|
125
|
+
- **Backups:** existing project files changed during cleanup get backups. Timestamped backups stay for a reviewed restore.
|
|
74
126
|
- **Other files:** anything outside the manifest stays, including your own files in shared `.claude/agents/` and `.claude/hooks/` folders.
|
|
75
127
|
- **Directories:** removed only when the manifest records that the installer created them and they are empty after removal. Older manifests leave directories in place because they carry no directory ownership record.
|
|
76
128
|
- **Manifest:** removed last, only when every managed file has been removed.
|
|
77
129
|
- **Path safety:** an absolute path, traversal entry, or symlink is refused before any removal. Entries must stay inside their declared `--dir` or `--project` root.
|
|
130
|
+
- **Global configuration:** installation and uninstall refuse home-level agent rules and global agent folders such as `~/.claude` and `~/.codex`. Choose a project directory below your home folder for project activation.
|
|
78
131
|
- **Missing manifest:** exits 2 and names the expected `MANIFEST.json` path.
|
|
79
132
|
- **Target paths:** `--dir` and `--project` must match the installation paths in the manifest. A mismatch exits 2 before removal.
|
|
80
133
|
- **Preview:** `--dry` (or `--dry-run`) lists the planned removals and writes nothing.
|
|
81
134
|
|
|
82
|
-
|
|
135
|
+
Manually pasted activation from an older install has no ownership record, so the command prints its cleanup steps. Applied blocks use `<!-- model-orchestrator:start -->` and `<!-- model-orchestrator:end -->`. Review any retained entry or backup before changing it so later edits survive.
|
|
83
136
|
|
|
84
137
|
## What gets written (level 3, everything)
|
|
85
138
|
|
|
139
|
+
The tree shows the activation alternatives. Each install writes the main agent's snippet and its supported agent set; companion files appear when selected. Paths beginning with `<project>/` are relative to `--project`, separate from the rules folder.
|
|
140
|
+
|
|
86
141
|
```
|
|
87
142
|
ai-orchestrator/
|
|
88
143
|
README.md start here, written for your level and your AIs
|
|
89
144
|
ORCHESTRATOR.md single-agent routing rules (level 1)
|
|
90
|
-
|
|
91
|
-
|
|
145
|
+
TASK_BRIEF.md the brief every delegation carries
|
|
146
|
+
CONTEXT.md shared facts every delegation reads
|
|
147
|
+
ACCEPTANCE_CHECKS.json executable acceptance checks
|
|
148
|
+
DECISIONS.md the decision log: Did / Why / Serves / Rejected
|
|
149
|
+
protocols/ acceptance-checks · build-protocol · context-file · decision-log · deep-research · docs-then-prove · gap-analysis · memory-and-record · numbers-and-logic · propagate
|
|
92
150
|
CODECALC.md OBSIDIAN-TC.md CONTEXT7.md mcp/ companion-tool install docs + per-agent registration snippets (if selected)
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
151
|
+
CLAUDE.snippet.md rules block for CLAUDE.md (Claude Code main agent)
|
|
152
|
+
settings.hooks.snippet.json hooks for .claude/settings.json (Claude Code main agent)
|
|
153
|
+
GEMINI.snippet.md rules block for GEMINI.md (Antigravity main agent)
|
|
154
|
+
AGENTS.snippet.md rules block for AGENTS.md (Codex main agent)
|
|
155
|
+
QWEN.snippet.md rules block for QWEN.md (Qwen Code main agent)
|
|
156
|
+
PASTE-INTO-YOUR-AGENT.md paste into instructions (main agent with no project rules file)
|
|
97
157
|
ROUTING.md multi-lane decision tree (level 2+)
|
|
98
158
|
TIERS.md DELEGATION_MATRIX.md RESEARCH_TRIAGE.md CLI-RUN.md
|
|
99
|
-
bin/cli-run.mjs bin/lanes.json (node bin/cli-run.mjs --doctor
|
|
159
|
+
bin/cli-run.mjs bin/lanes.json (aunx cli-run --doctor, or node bin/cli-run.mjs --doctor)
|
|
100
160
|
vm/ gateway config, compose, box rules, privacy gates, jobs/ (level 3)
|
|
161
|
+
|
|
162
|
+
<project>/.claude/agents/ Claude Code main agent's subagent set
|
|
163
|
+
<project>/.claude/hooks/ route-gate.mjs, subagent-context.mjs, route-metrics.mjs (Claude Code main agent)
|
|
164
|
+
<project>/.agents/agents/ Antigravity main agent's custom agent set
|
|
101
165
|
```
|
|
102
166
|
|
|
167
|
+
## Project commands (`aunx`)
|
|
168
|
+
|
|
169
|
+
Install the command with `npm install -g model-orchestrator`, then run these from your project. `aunx` without a subcommand accepts the installer flags.
|
|
170
|
+
|
|
171
|
+
| Command | Result |
|
|
172
|
+
|---|---|
|
|
173
|
+
| `aunx cli-run --doctor` | Check selected CLIs; add `--run` for live vendor canaries |
|
|
174
|
+
| `aunx route-metrics --summary` | Summarize your local routing history |
|
|
175
|
+
| `aunx brief` | Print the task brief template |
|
|
176
|
+
| `aunx brief new TASK_BRIEF.md` | Scaffold a task brief |
|
|
177
|
+
| `aunx context CONTEXT.md` | Scaffold a shared context file |
|
|
178
|
+
| `aunx checks ACCEPTANCE_CHECKS.json` | Scaffold executable acceptance checks |
|
|
179
|
+
| `aunx checks run ACCEPTANCE_CHECKS.json` | Execute trusted check commands; exit 1 on any failure |
|
|
180
|
+
| `aunx route [--dir PATH] "rename this file"` | Print the role, assigned AI, tier, effort and reason from your manifest |
|
|
181
|
+
|
|
182
|
+
`aunx cli-run` uses the packaged runner by default; pass `--dir PATH` to use that project's own installed runner under `PATH/bin/` instead, and `aunx` prints the runner path it is using. Review check commands before running them: they execute with your shell permissions.
|
|
183
|
+
|
|
184
|
+
`aunx route` reads `MANIFEST.json` first under `--dir`, then under `./ai-orchestrator`, then in the current folder. It reads regular JSON files of at most 1 MiB, refuses symlinks and executes no project code. A missing or invalid manifest gives the generic suggestion plus an install notice.
|
|
185
|
+
|
|
186
|
+
## Installer operation
|
|
187
|
+
|
|
188
|
+
The installer creates routing instructions and activates the supported project surfaces so you can start using them from a fresh agent session.
|
|
189
|
+
|
|
190
|
+
| Part | Operation |
|
|
191
|
+
|---|---|
|
|
192
|
+
| Trigger | Run `model-orchestrator`, `npx model-orchestrator` or `aunx` without a subcommand. The installer is a one-off command, with no schedule. |
|
|
193
|
+
| Invocation chain | `bin/cli.js` parses flags, detects tools, plans files and activation, shows the summary, obtains the interactive confirmation, writes the plan, runs the presence check and prints remaining actions. `--yes` skips confirmation; `--dry` stops before writes and checks. |
|
|
194
|
+
| Dependencies | Node 18 or newer; writable chosen target folders. Vendor CLIs and companions are detected locally and installed by you. |
|
|
195
|
+
| Reads | Catalog and templates, CLI presence, the previous manifest, existing project rules and settings, and reliable catalog-listed sign-in status. |
|
|
196
|
+
| Writes | Managed files under `--dir` and `--project`, the displayed project activation merges, ownership records in the manifest, and sibling backups for changed existing files. |
|
|
197
|
+
| Closed loop | The terminal reports written, preserved and applied files, health results and remaining actions. Nothing watches a completed install or retries it automatically. Start a fresh agent session to check that it loads the rules. |
|
|
198
|
+
| Failure modes | Invalid flags, refused paths, malformed activation markers or invalid JSON exit 2 before application. A missing CLI or unconfirmed sign-in is reported for manual setup. Edited managed files or activation entries are kept and named. Report a reproducible installer failure with its command and exit code to the repository's issue tracker. |
|
|
199
|
+
| Run and verify | Preview the headless example above with `--dry`; remove `--dry` to apply. Check the marked rules block, Claude Code's hook settings when selected, and the printed health result. Run `npm test` from the source checkout for fixture checks; use `aunx cli-run --doctor --run` only when you choose a live vendor check. |
|
|
200
|
+
| Source of truth | `bin/cli.js` owns the flow, `src/catalog.js` owns host capabilities, `src/install.js` owns planning and writes, `src/apply-snippets.js` and `src/apply-companions.js` own activation merges, `src/postinstall.js` owns presence and sign-in checks, and `src/uninstall.js` reads the manifest to remove owned content. |
|
|
201
|
+
|
|
202
|
+
The automatic presence check proves that configured binaries can be found. It does not prove authentication, a live response or that a new agent session loaded the rules; those checks require the corresponding vendor session.
|
|
203
|
+
|
|
103
204
|
## Repo layout
|
|
104
205
|
|
|
105
206
|
| Folder | What |
|
|
106
207
|
|---|---|
|
|
107
|
-
| [`bin/`](bin/README.md) | `cli.js` (the installer) and `cli-run.mjs` (the lane runner) |
|
|
108
|
-
| [`src/`](src/README.md) | the catalog, the pure planner, detection, rendering |
|
|
109
|
-
| [`templates/`](templates/README.md) | everything the installer can write, by level, plus `tools/` for companions |
|
|
110
|
-
| [`docs/`](docs/README.md) | the three parts and the catalog |
|
|
111
|
-
| [`plugin/`](plugin/README.md) | the Claude Code plugin, generated from `templates/` by `npm run gen:plugin`; `.claude-plugin/marketplace.json` at the root lists it |
|
|
112
|
-
| [`
|
|
208
|
+
| [`bin/`](../bin/README.md) | `cli.js` (the installer), `aunx.js` (the CLI entry point) and `cli-run.mjs` (the lane runner) |
|
|
209
|
+
| [`src/`](../src/README.md) | the catalog, the pure planner, detection, rendering |
|
|
210
|
+
| [`templates/`](../templates/README.md) | everything the installer can write, by level, plus `tools/` for companions |
|
|
211
|
+
| [`docs/`](../docs/README.md) | the three parts and the catalog |
|
|
212
|
+
| [`plugin/`](../plugin/README.md) | the Claude Code plugin, generated from `templates/` by `npm run gen:plugin`; `.claude-plugin/marketplace.json` at the root lists it |
|
|
213
|
+
| [`proof/`](../proof/README.md) | the measured numbers behind the README's claims: method, sample size, date and expiry |
|
|
214
|
+
| [`test/`](../test/README.md) | `npm test`: judges proven to go red, catalog integrity, planner, end-to-end install in a temp dir; `.github/workflows/test.yml` runs it on Ubuntu, macOS and Windows, Node 18/20/22 |
|
package/docs/part-1-beginner.md
CHANGED
|
@@ -1,71 +1,63 @@
|
|
|
1
|
-
# Part 1
|
|
1
|
+
# Part 1: route work inside one agent
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Start with the agent or chat app you already use. The installer gives it task classes, model tiers and checks it can apply before calling another tool.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Choose a tier for the job
|
|
6
6
|
|
|
7
|
-
| Tier |
|
|
7
|
+
| Tier | Job | Effort guidance |
|
|
8
8
|
|---|---|---|
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
|
|
|
9
|
+
| Planning model | Ambiguous requirements, architecture and root-cause analysis | Increase reasoning for the unresolved decisions |
|
|
10
|
+
| Working model | Build a scoped change, review code, synthesize research | Match effort to complexity and consequences |
|
|
11
|
+
| Cheap model | Classify, extract, format and digest many files | Keep routine work bounded |
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Map tiers to the models your agent actually exposes. With a chat app, use the same categories to decide whether the next turn needs a plan, an execution step or a short structured answer.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
The installer detects available tools, shows the proposed setup and asks for one confirmation. With no detected tool, choose your AIs first. Level 1 includes a **Your stack: who does what** table in its README and a summary in `ORCHESTRATOR.md`. The main agent carries eligible jobs; review and private work remain **none selected** unless the stack meets their separate requirements. [Assignment rules](how-it-routes.md#your-stack-who-does-what).
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Role selects the job. Complexity sets effort. Security, privacy, data loss and irreversible changes affect which model and reviewer can safely handle it. Check the current tool and model roster before deciding.
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
## Classify a task
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
The installed decision tree covers bulk work, reading many files, live data, review, verification of findings, definition-of-done checks, ambiguous planning and builds. `aunx route "rename this file"` gives a keyword-based suggestion; the agent applies the full rules to the task's context.
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
2. Needs live data → standard, with tools. Freshness comes from tools, not from a bigger model, and anything a search returns is a lead, not a fact.
|
|
25
|
-
3. Review without changing → standard, read-only, findings ranked by severity.
|
|
26
|
-
4. Ambiguous, strategic, expensive to get wrong → deep, then hand the plan down.
|
|
27
|
-
5. Everything else that changes files → do it directly at standard. Bounded sub-parts can go down a tier; the main build never goes to a fresh context whole.
|
|
23
|
+
When a worker fails, inspect the evidence and choose the next action explicitly. A reproducible problem can justify a stronger model or more capable tools. A simple lookup belongs with a reader or a direct tool call.
|
|
28
24
|
|
|
29
|
-
|
|
25
|
+
## Build from checks to verified use
|
|
30
26
|
|
|
31
|
-
|
|
27
|
+
The build protocol starts by quoting the request and assigning acceptance checks. It probes available tools, tests uncertain assumptions, orders work by dependencies and collects one context file. An Assign step chooses the worker by reasoning fit, permissions, context capacity and headroom.
|
|
32
28
|
|
|
33
|
-
|
|
29
|
+
After the build, use a known different model family to review the final merged artifact. A companion reviewer checks the scope against the original ask in the same audit step. When the stack has one family, a fresh-context review is a self-check; record that independent review is unavailable. Findings get reproduced before repair, and each fix gets a regression that can fail. Release means the change is in use on named surfaces, with live behavior checked and a rollback identified.
|
|
34
30
|
|
|
35
|
-
|
|
31
|
+
The mechanical audit-skip conditions are documented in `protocols/build-protocol.md`. They are evaluated together against the diff. The process uses one audit pass, with regression checks for its fixes.
|
|
36
32
|
|
|
37
|
-
|
|
33
|
+
## Give each worker a task brief
|
|
38
34
|
|
|
39
|
-
|
|
35
|
+
```bash
|
|
36
|
+
aunx context CONTEXT.md
|
|
37
|
+
aunx brief new TASK_BRIEF.md
|
|
38
|
+
aunx checks ACCEPTANCE_CHECKS.json
|
|
39
|
+
```
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
The context file carries verified facts once. The task brief quotes the ask and names scope, files, non-goals, interfaces to preserve, available and missing tools, checks, measurements, order of work and a coverage-table report. A worker gets the same task boundaries whether it is a subagent or a separate CLI.
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
Claude Code subagents load the project's instruction hierarchy. A separate CLI or chat window may need those instructions supplied explicitly. Probe what the worker receives and include the missing context.
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
## Compute, record and verify with your tools
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
- **Numbers:** use a calculator or execution tool for figures someone will act on. codecalc is an optional companion.
|
|
48
|
+
- **Notes:** search before writing, keep the index accurate and use one writer. A notes folder works; obsidian-tc adds search and controlled writes.
|
|
49
|
+
- **APIs:** read current official documentation and test the call. Context7 can retrieve the documentation when available.
|
|
50
|
+
- **Decisions:** record Did / Why / Serves / Rejected when choosing between approaches. Keep evidence and operational consequences in the record.
|
|
48
51
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
## 7. Numbers and logic are computed, never guessed
|
|
52
|
-
|
|
53
|
-
The one thing tiers and gates cannot fix: a model confident about `0.1 + 0.2` does not feel uncertain, it feels finished. So any figure someone will act on, any comparison you state, any complexity or equivalence claim goes through a tool that computes. The companion for that is [codecalc](https://github.com/The-40-Thieves/codecalc): exact arithmetic, a sandboxed code runner in 31 languages, an SMT logic checker, and proofs that a port or an optimization preserved behaviour. One command registers it with Claude Code, Claude Desktop, Cursor, VS Code or Zed. Without it the rule still binds; use anything that calculates.
|
|
54
|
-
|
|
55
|
-
Logic flow follows the same rule. Reasoning scaffolds help models with no native reasoning mode and add nothing to ones that already think first. The authorising evidence is the computed outcome, never the thought log.
|
|
56
|
-
|
|
57
|
-
## 8. Memory and record
|
|
58
|
-
|
|
59
|
-
Every protocol ends in a write. Search before you write (duplicates are how a store starts lying), correct the folder index in the same pass, one writer per session, mark inferred content as inferred. The optional companion for that is [obsidian-tc](https://github.com/The-40-Thieves/obsidian-tc), a governed MCP server over an Obsidian vault: hybrid search, backlinks, compare-and-swap writes, folder ACLs. It needs an Obsidian vault, Node 24+ or Bun, and Ollama or a cloud embeddings key, so it is off by default; without it the rule still binds against a notes folder and `grep`.
|
|
60
|
-
|
|
61
|
-
## 9. Docs, then prove
|
|
62
|
-
|
|
63
|
-
A model's recall of a library's API is training data, not a live source; it goes stale the moment the vendor ships a release it never saw. Before writing code against a library, SDK, API or CLI you have not confirmed this session, pull current, version-specific docs; then a run, not the doc, is what proves the code behaves that way. The optional companion is [Context7](https://github.com/upstash/context7) (Upstash): it hands the agent current, version-aware documentation and code examples on request, hosted or run locally with `npx`. It pairs with codecalc rather than replacing it: Context7 says what the code is supposed to do, codecalc's run says what it actually does, and the run wins where they disagree. It needs a network call (there is no offline mode), so it is off by default; without it the rule still binds, read the vendor's own docs or source by hand.
|
|
52
|
+
Every protocol names the fallback when its optional companion is absent. [Companion setup](companions.md).
|
|
64
53
|
|
|
65
54
|
## What the installer gives you at this level
|
|
66
55
|
|
|
67
|
-
|
|
56
|
+
- **Rules:** `ORCHESTRATOR.md` and the loading surface for your main agent.
|
|
57
|
+
- **Briefs:** `TASK_BRIEF.md`, a context-file template and acceptance-check template.
|
|
58
|
+
- **Protocols:** building, context, acceptance checks, decisions, propagation, gap analysis, research, calculation, notes and documentation verification.
|
|
59
|
+
- **Optional tools:** setup guides and MCP snippets only for companions you select.
|
|
68
60
|
|
|
69
|
-
##
|
|
61
|
+
## Add a second model family
|
|
70
62
|
|
|
71
|
-
|
|
63
|
+
When a task would benefit from another model's review or a CLI with different tools, move to [Part 2](part-2-intermediate.md).
|