Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 25 additions & 4 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@
"email": "hi@okis.dev"
},
"description": "Multi-model orchestration marketplace for Claude Code.",
"version": "0.0.62",
"version": "0.0.63",
"plugins": [
{
"name": "grok",
"source": "./plugins/grok",
"displayName": "Grok Companion",
"description": "Local Grok CLI delegation: task, review, resumable history, best-of-n tournaments, background jobs, stats, and setup health checks.",
"version": "0.0.62",
"version": "0.0.63",
"author": {
"name": "Harry Yep"
},
Expand All @@ -34,7 +34,7 @@
"source": "./plugins/codex",
"displayName": "Codex Companion",
"description": "First party local Codex CLI delegation for tasks, reviews, resumable threads, and durable background jobs.",
"version": "0.0.62",
"version": "0.0.63",
"author": {
"name": "Harry Yep"
},
Expand All @@ -50,12 +50,33 @@
"orchestration"
]
},
{
"name": "cursor",
"source": "./plugins/cursor",
"displayName": "Cursor Companion",
"description": "Local Cursor Agent CLI delegation: multi family consults, Composer implementation in owned worktrees, review, resumable history, background jobs, and setup health checks.",
"version": "0.0.63",
"author": {
"name": "Harry Yep"
},
"homepage": "https://github.com/okisdev/claude-code-fusion",
"repository": "https://github.com/okisdev/claude-code-fusion",
"license": "MIT",
"category": "workflow",
"tags": [
"cursor",
"multi-model",
"delegation",
"code-review",
"orchestration"
]
},
{
"name": "fusion",
"source": "./plugins/fusion",
"displayName": "Fusion Orchestrator",
"description": "Multi-model orchestration: tier agents, routing rules, blind panel, ultra fleet, model config, and drift doctor.",
"version": "0.0.62",
"version": "0.0.63",
"author": {
"name": "Harry Yep"
},
Expand Down
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# changelog

## 0.0.63

- cursor joins as the third peer engine. the new `cursor` plugin drives the cursor agent cli (`cursor-agent`, build 2026.10.01-e373342) headlessly with consult, write, and review modes, resumable chats, background jobs, history, a model catalog, and setup. fusion routes it under two protected roles: `diversity`, a read only consult on a model family no other lane serves (google, meta, moonshot, zhipu, cursor composer), and `burst`, composer implementation inside orchestrator owned worktrees. it never runs auto, never serves the claude family, and only stands in for another family's weights when that family's native lane is down on quota.
- every cursor run executes under a private home the companion builds per job. cursor reads claude code hooks and plugins, `CLAUDE.md`, codex and grok skills, and its own rules, skills, plugins, mcp servers, and sandbox policy from fixed home locations that no flag or config key disables, so the private home links only the macos keychain (where the cli keeps its credentials) and carries a generated `cli-config.json` and `sandbox.json` per mode. read only empty `plugins` and `skills-cursor` dirs keep cursor's marketplace plugins (some ship hooks and mcp servers) and built in skills out of the session, which also cuts startup from about 45s to under 10s. live probes on 2026.10.01 confirmed workspace edits and shell writes succeed while writes and reads outside the workspace, reads of `~/.claude`, and network access are refused, and that a project `.cursor/sandbox.json` of type `insecure_none` cannot widen the policy. project hooks in `.cursor/hooks.json` and `.claude/settings*.json` still run outside the sandbox; the companion names them in a `warning:` line.
- the companion passes a per mode `--allowed-tools` list plus `--disable-project-configs`, `--disable-auto-update`, and `--single-turn`, never `--force` or `--approve-mcps`, and terminates a run whose stream shows any other tool (`policy`). models resolve against the account's live catalog of flattened variants (`muse-spark-1.3-xhigh`, `grok-4.7-high-fast`), `auto` is refused because no event reports the model it chose, and the companion waits out the cli's post result cleanup before reaping its whole process group, which can hold a `worker-server` helper.
- fusion is registry driven now. `engines.mjs` describes every engine (data roots, roles, efforts, family, version field, acceptance ledger, monitor ownership), and job state lookup, acceptance recording, the breaker, stats, the monitor, lane default injection, collector acceptance, and `/fusion:config` read it instead of branching on codex and grok. companions share one `record-acceptance` flag set and a new `models --json` subcommand, which `/fusion:config audit` calls for every engine.
- the breaker scopes `quota` and `rate_limited` to a job's `billingPool`, so an exhausted cursor api pool leaves the composer lane open, and `setup` failures now open the breaker immediately, as the troubleshooting rules already said.
- model rows carry a `family`, the rendered routing table gains a family column, and the panel fills a missing track with a cursor `diversity` seat on an unseated family before it falls back to the same family `deep-reasoner`.

## 0.0.62

- every open issue closes in this release (#57, #62, #64, #66, #68), each with the runtime evidence below.
Expand Down
10 changes: 6 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Contributing

This repository ships the Claude Code plugins that make multi model orchestration work in practice. The fusion plugin owns routing rules, tier agents, configuration, doctor, panel, ultra, and stats. The Codex and Grok plugins are the hosted peer companions for their local CLIs. Alongside them live a bench harness under `bench/` and a Node test suite under `tests/`.
This repository ships the Claude Code plugins that make multi model orchestration work in practice. The fusion plugin owns routing rules, tier agents, configuration, doctor, panel, ultra, and stats. The Codex, Grok, and Cursor plugins are the hosted peer companions for their local CLIs; a new engine joins through an entry in `plugins/fusion/scripts/lib/engines.mjs` and a companion that implements [docs/companion-contract.md](docs/companion-contract.md). Alongside them live a bench harness under `bench/` and a Node test suite under `tests/`.

Plugin behavior is driven by prose rules as much as by code. `plugins/fusion/rules/orchestration.md` is synced to `~/.claude/rules/` and loaded into every orchestrated session. `plugins/fusion/rules/troubleshooting.md` ships with the fusion plugin and is consulted on demand when delegation fails. Together they decide which lanes fire, when collection is required, and how posture and the question policy gate the main loop. Treat wording changes in those files as production changes.

Expand All @@ -12,8 +12,9 @@ Any change to `plugins/fusion/rules/orchestration.md` or `plugins/fusion/rules/t
2. Check that the load bearing invariants survived the edit:
- The main Claude session is the only control plane and final judge. It owns ambiguity resolution, decomposition, integration, semantic acceptance, and user communication, while work packages execute in delegated lanes.
- Codex owns ordinary implementation by default. Grok remains implementation capable only through its four protected roles (`burst`, `independence`, `live-web`, `large-context`) or an explicit user choice; it is not a generic alternative merely because it is idle.
- Codex admission order is the current workspace, an isolated worktree for an independent eligible package, then Grok under `burst`, then the matching Claude fallback. Packages with overlapping files, shared generated state, or ordering dependencies are consolidated or sequenced instead of parallel overflow.
- Routing stays capability first: capability monopolies (X and live platform reads on Grok `live-web`, Claude tool surface and privacy on Claude workers, judgment dense authorship in the main session) hard route ahead of every task type default, and the judgment dense authorship rule keeps policy text, public naming, API shape, and UX copy authored in the main session with only the mechanical spread dispatched.
- Codex admission order is the current workspace, an isolated worktree for an independent eligible package, then Grok or Cursor under `burst`, then the matching Claude fallback. Packages with overlapping files, shared generated state, or ordering dependencies are consolidated or sequenced instead of parallel overflow.
- Cursor remains a multi family breadth lane with two protected roles, `diversity` (a read only consult on a model family no other installed lane serves) and `burst` (Composer implementation in orchestrator owned worktrees). It never runs Auto, never serves the Claude family, and stands in for another family's native lane only while that lane's breaker is open on quota or rate limits.
- Routing stays capability first: capability monopolies (X and live platform reads on Grok `live-web`, model families no other installed lane serves on Cursor, Claude tool surface and privacy on Claude workers, judgment dense authorship in the main session) hard route ahead of every task type default, and the judgment dense authorship rule keeps policy text, public naming, API shape, and UX copy authored in the main session with only the mechanical spread dispatched.
- Claude worker and Grok dispatches are background Agents. Codex is the foreground Agent exception: its rescue Agent and companion Bash call stay foreground regardless of complexity or expected duration unless the incoming user request already contains `--background`.
- A Codex package that cannot fit the foreground cap is split or routed elsewhere. Complexity and duration never silently detach it.
- Independent packages fan out in a single message rather than being queued one at a time. Dependence is never removed by switching engines.
Expand All @@ -30,6 +31,7 @@ Any change to `plugins/fusion/rules/orchestration.md` or `plugins/fusion/rules/t
node plugins/fusion/scripts/generate-rules-manifest.mjs
claude plugin validate plugins/codex
claude plugin validate plugins/grok
claude plugin validate plugins/cursor
claude plugin validate plugins/fusion
claude plugin validate .
npm test
Expand All @@ -43,4 +45,4 @@ Tests use Node's built in runner (`node --test`) and live under `tests/`. Keep t

## Releases

Bump all plugin versions and the marketplace versions together: `plugins/codex/.claude-plugin/plugin.json`, `plugins/fusion/.claude-plugin/plugin.json`, `plugins/grok/.claude-plugin/plugin.json`, and `.claude-plugin/marketplace.json` (marketplace root version plus each plugin entry). Add a `CHANGELOG.md` entry at the top in the repo's existing lowercase bullet style (lowercase prose, proper nouns and acronyms kept, one bullet per behavioral change, motivation clauses when a change was forced by measured regression).
Bump all plugin versions and the marketplace versions together: `plugins/codex/.claude-plugin/plugin.json`, `plugins/cursor/.claude-plugin/plugin.json`, `plugins/fusion/.claude-plugin/plugin.json`, `plugins/grok/.claude-plugin/plugin.json`, and `.claude-plugin/marketplace.json` (marketplace root version plus each plugin entry). Add a `CHANGELOG.md` entry at the top in the repo's existing lowercase bullet style (lowercase prose, proper nouns and acronyms kept, one bullet per behavioral change, motivation clauses when a change was forced by measured regression).
Loading
Loading