Releases: hashangit/openfusion
v0.2.1 — Persona system + editable prompts
Personas — tailor the worker + judge system prompts to the task — plus a full prompts editor.
Added
- Personas: named bundles of the three system prompts (worker + analysis + synthesis) specialized for different kinds of work. Ships with four defaults:
- Generalist — balanced all-rounder (the previous default, sharpened).
- QA / Code Reviewer — candidates review like senior engineers; judge consolidates a prioritized, severity-tagged verdict.
- Researcher — candidates argue from the gathered sources; judge reconciles into one well-reasoned answer, flagging unsupported claims.
- Project Manager / Strategist — candidates weigh trade-offs and risks; judge consolidates a decisive recommendation with a clear rationale.
- Personas tab — a full editor: pick a persona, edit all three prompts in textareas, set the active one, duplicate, reset a builtin to its shipped default, or create/delete your own.
- Per-fusion persona override — the
fusiontool now accepts an optionalpersona(id or name, e.g.qa,researcher) so an agent can match the persona to each call. Defaults to the active persona set in the dashboard. GET/POST/PUT/DELETE /api/personas— full persona CRUD.
Changed
- Config schema v2 → v3 with automatic migration (injects builtins, sets
activePersona: "generalist"; a notice prints if a v2 file is upgraded). - Default Generalist prompts sharpened without bloat: workers "show reasoning briefly so the judge can weigh it"; synthesis "corrects wrong consensus instead of rubber-stamping it."
- Each fusion now logs the persona it used (
activities.persona, migration003) — shown in Generations/Errors (null for pre-0.2.1 fusions).
Upgrade
npx -y openfusion-mcp # restart the server — config auto-migrates to v3Then open the new Personas tab to pick/edit a persona, and have your agent pass persona: "qa" | "researcher" | "pm" on calls where it fits.
57 tests green. Full changelog: CHANGELOG.md.
npm publish note: the code + tag + this release are live; the npm publish itself requires the maintainer's one-time password and runs separately (
npm publish).
v0.2.0 — install & integration overhaul (npm + first-run + status)
The install & integration overhaul — OpenFusion is now on npm, with first-run hand-holding, a status surface, and the silent footguns fixed.
Added
- Published to npm →
npx -y openfusion-mcpworks with no clone or build. Every client snippet now defaults to it. npx openfusion-setup— interactive installer that picks your MCP client, writes the correct config snippet (claude mcp add, ZCodemcp.servers, Cursor.cursor/mcp.json, Zedcontext_servers, Codexmcp_servers, Gemini-CLI family, Cline, Claude Desktop…), and offers to install the agent skill. One command end-to-end.- First-run UX — on a fresh install the server prints a stderr banner (version, data path, configured status) and opens the dashboard automatically when a display is present. No more "where do I configure?" mystery.
GET /api/status— one lightweight call returning{ version, home, configured, reasons?, firstRun, dbPath }for the dashboard, agents, and CLI health checks.
Changed / Fixed
GET /api/healthnow also returnsversion+configured(stillok:truefor back-compat).- Version is no longer hardcoded — read from
package.jsonvia a shared helper; the MCP handshake reports the real version (was stale at 0.1.0). - Config upgrades print a notice — a v1→v2 migration on load now logs a one-time stderr message so you know a restart-after-update happened.
- better-sqlite3 native-addon failures are now actionable — a clear "run
npm rebuild better-sqlite3" message with toolchain requirements, instead of an opaqueMODULE_NOT_FOUNDstack trace. - Docs: README leads with
npx; documentsOPENFUSION_HOME(and that it prints on startup), the native-build requirement + recovery, an Updating section, and the client tool-call-timeout caveat.
Install (the new way)
npx openfusion-setup # interactive: writes client config + installs skill
# then restart your MCP client — `fusion` + `open_dashboard` are availableOr manually point any MCP client at npx -y openfusion-mcp. 50 tests green. Full changelog: CHANGELOG.md.
npm publish note: the GitHub side (code, tag, this release) is live; the npm publish itself requires a one-time password from the maintainer and runs separately.
v0.1.2 — Generations tab + persisted outputs
A new Generations tab to read what each model actually produced for a fusion — plus generated text is now persisted so you can revisit any past run.
Added
- Generations tab — read the actual outputs of a fusion, side by side:
- Pick an activity from a dropdown, then choose Candidates or Judge view.
- Candidates view: generation boxes side by side (2 by default; + Add box extends the row to the right with horizontal scroll). Each box has its own model dropdown (pick which candidate shows), a scrollable rendered view of that model's generation, and per-box stats (tokens/cost/latency/status).
- Judge view: the structured analysis (consensus · contradictions · partial coverage · unique insights · blind spots) plus the synthesized final answer, each with stats.
- Generations render with lightweight markdown (headings, bold, inline code, code fences, lists) and a copy button.
- Generated text is now persisted to SQLite (migration
002_add_generated_text) — every future fusion's outputs are stored so you can re-read them anytime. Historical fusions (pre-0.1.2) show an honest "predates generation logging" note.
Changed
- Nav reorder: Dashboard · Generations · Candidates · Judge · API Keys · Errors — Generations now sits right after Dashboard; Errors moved to the end.
Upgrade
git pull && pnpm install && pnpm build
node dist/index.js # the migration runs automatically on first launch47 tests green. Full changelog: CHANGELOG.md.
v0.1.1 — on/off toggles, benchmark mode, error log, judge latency fix
On/off toggles, Benchmark Mode, an Error Log tab, and a judge-latency fix.
Added
- On/off toggles for candidates and judges — configure as many as you like, enable the ones you want to fuse with. Candidates enforce 2–5 enabled; judges enforce exactly 1 enabled. Disabled slots are skipped entirely (and no longer need API keys).
- Benchmark Mode (Candidates page, default off) — removes the max-candidate limit and forces a 10-minute candidate timeout, for comparing many models head-to-head in one fusion.
- Error Log tab — a dedicated troubleshooting view listing failed and partial fusions, each with a one-click copy button that copies the full activity JSON (incl. sub_calls and the error message) to the clipboard for bug reports.
Fixed
- Judge latency was always 0 in the dashboard — both judge steps (analysis, synthesis) now record and show real wall-clock latency (including retry time) in the per-step breakdown.
Changed
- Config schema bumped to v2 with automatic v1→v2 migration on load: the single
judgeobject became ajudgeslist; candidates gained anenabledflag; settings gainedbenchmarkMode. Existing configs upgrade transparently. - Only enabled candidates/judges are fanned out; the API Keys page only shows providers used by enabled slots.
Install / upgrade
git clone https://github.com/hashangit/openfusion.git # or git pull && pnpm install
cd openfusion
pnpm build
node dist/index.js # your existing config auto-migrates to v246 tests green. Full changelog: CHANGELOG.md.
v0.1.0 — OpenFusion
The first public release of OpenFusion — a local MCP server that brings OpenRouter's Fusion panel architecture to any MCP-capable client.
Why
OpenRouter showed that fusing the outputs of several models beats any single frontier model — and that a budget panel of cheap models, fused, lands within ~1% of Claude Fable 5 on deep research at roughly half the price. The catch: you had to use OpenRouter. OpenFusion removes that catch — bring your own keys for any provider, run it on your machine, point any MCP client at it.
Highlights
fusionMCP tool — fan a prompt out to 2–5 candidates in parallel (single-shot, no tools), then a two-step judge (structured analysis → synthesis) on the same model returns one consolidated answer. ~¾ of the lift comes from synthesis, not model diversity.open_dashboardtool — opens the config/stats UI.- Resilient by design —
Promise.allSettled+ per-candidate timeout; proceeds with survivors; errors only when <2 candidates succeed. - Encrypted at rest — provider keys in AES-256-GCM
secrets.enc(chmod-600 machine-bound key); dashboard binds to127.0.0.1only. - Observable — every fusion logged to SQLite (1 activity + N+2 sub-calls) and visualized in a glass-morphic dashboard: KPIs, fusions-per-day, cost-by-model, token-usage-by-model, expandable activity log.
- Works everywhere — install recipes for 18+ clients in INSTALL.md (Claude Code, Cursor, Cline, Zed, Codex, Gemini CLI, Qwen Code, Kimi Code, Continue, Antigravity, opencode, and more). Ships a
SKILL.mdthat teaches agents when (and when not) to fuse. - 38 deterministic tests via pi-ai faux providers — no real API calls in the suite.
Install
git clone https://github.com/hashangit/openfusion.git
cd openfusion
pnpm install && pnpm build
node dist/index.js # then open http://localhost:9077 to configureSee the README and INSTALL.md.
Tech
TypeScript (ESM, ES2022) · @earendil-works/pi-ai · @modelcontextprotocol/sdk v1 · better-sqlite3 · Express 5 · React + Vite + Tailwind + recharts · Vitest.
Full changelog: CHANGELOG.md