{"id":50931517,"url":"https://github.com/brahmsyaifullah/ccf","last_synced_at":"2026-06-17T05:00:41.764Z","repository":{"id":365298156,"uuid":"1271440963","full_name":"brahmsyaifullah/CCF","owner":"brahmsyaifullah","description":"Claude Code Fusion — multi-model panel→judge→synthesis inside Claude Code on your own seats (GLM-5.2 1M + DeepSeek 1M + Opus judge). No metered API.","archived":false,"fork":false,"pushed_at":"2026-06-16T18:22:31.000Z","size":62,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-16T19:27:02.584Z","etag":null,"topics":["ai-tools","anthropic","claude-code","deepseek","fusion","glm","llm","multi-model","opus"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brahmsyaifullah.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-16T17:01:55.000Z","updated_at":"2026-06-16T18:24:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/brahmsyaifullah/CCF","commit_stats":null,"previous_names":["brahmsyaifullah/ccf"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/brahmsyaifullah/CCF","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brahmsyaifullah%2FCCF","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brahmsyaifullah%2FCCF/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brahmsyaifullah%2FCCF/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brahmsyaifullah%2FCCF/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brahmsyaifullah","download_url":"https://codeload.github.com/brahmsyaifullah/CCF/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brahmsyaifullah%2FCCF/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34434496,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-tools","anthropic","claude-code","deepseek","fusion","glm","llm","multi-model","opus"],"created_at":"2026-06-17T05:00:41.011Z","updated_at":"2026-06-17T05:00:41.757Z","avatar_url":"https://github.com/brahmsyaifullah.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/banner.jpeg\" alt=\"CCF — Claude Code Fusion · Fuse models. Reason better.\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eCCF — Claude Code Fusion\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/brahmsyaifullah/CCF/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/brahmsyaifullah/CCF?color=8b5cf6\" alt=\"release\"\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-blue\" alt=\"MIT\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/API%20cost-%240-22c55e\" alt=\"Zero API cost\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/context-1M%20tokens-06b6d4\" alt=\"1M context\"\u003e\n  \u003ca href=\"benchmark/RESULTS.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/benchmark-fusion%20196%20vs%20solo%20192-f59e0b\" alt=\"benchmark\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nRun a **multi-model fusion panel** inside Claude Code, on your **own subscription/flat-rate seats** —\nno OpenRouter billing. A panel of models (GLM-5.2 1M, DeepSeek-V4-Pro 1M, optionally Sonnet/Opus,\nGPT-5.5 Codex) answers a task **in parallel**; your running **Opus session judges** their drafts into\nstructured analysis (consensus / contradictions / unique insight / blind spots) and writes the final answer.\n\nIt's a local re-implementation of OpenRouter's \"Fusion\" pattern that bills nothing extra because the\npanelists run on seats you already pay for.\n\n```\n            ┌── glm-5.2  (z.ai, 1M ctx) ──┐\nyour task ──┤                              ├──►  Opus judge ──►  synthesized answer\n            └── deepseek-v4-pro (1M ctx) ──┘     (this session)\n```\n\n## Why\n\n- **Diversity beats a single model.** A second/third independent draft catches blind spots.\n- **No metered API.** Panelists run on z.ai / OpenCode subscriptions and your Claude sub.\n- **Huge context.** Both default panelists carry **~1,048,576-token** windows (verified by\n  needle-in-haystack — see [Context limits](#context-limits)).\n- **Opus stays the author.** Panelists never write files; the orchestrator applies the code.\n\n## Does it actually help?\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/solo-vs-fusion.jpeg\" alt=\"3 models are better than 1 — and it costs $0\" width=\"520\"\u003e\n\u003c/p\u003e\n\nWe ran a controlled **Solo vs Fusion** benchmark — 5 real engineering tasks (bug fix, security,\nrefactor, architecture, concurrency), the same Opus orchestrator as both the solo answerer and the\nfusion judge. **Fusion scored 196 vs Solo 192 / 200.** A real but honest lift: with a top-tier solo\nmodel the panel mostly **verifies and insures against single-model blind spots** (one task: glm 5/5\nspots, deepseek 3/5, gpt 4/5 — the synthesis caught what the weakest missed). The run also caught a\nreal usability bug in our own panel. Full methodology, scores, and bias disclosure:\n**[benchmark/RESULTS.md](benchmark/RESULTS.md)**.\n\n## Requirements\n\n- [Claude Code](https://claude.com/claude-code)\n- `bash`, `jq`, `curl`, `awk`, `tar` (preinstalled on macOS/Linux except `jq`)\n- A POSIX shell on Windows: **Git for Windows** (native) or **WSL**\n- At least one provider key (z.ai and/or OpenCode). The Sonnet/Opus panelists use your `claude` CLI.\n- For the optional Codex (GPT-5.5) panelist: `python3` (stdlib only, used only for the one-time browser login).\n\n## Codex / GPT-5.5 panelist (optional)\n\nAdd OpenAI's Codex (GPT-5.5) as a panelist on your **ChatGPT/Codex subscription** — **no codex CLI\nrequired**. Log in through your browser:\n\n```bash\n~/.claude/fusion/ccf-codex-login          # opens ChatGPT OAuth, stores tokens (chmod 600)\n~/.claude/fusion/ccf-codex-login --no-browser   # headless/SSH: prints the URL\n```\n\nThis runs the same OAuth 2.0 + PKCE flow the codex CLI uses, writes `~/.codex/auth.json`, and\n`fusion-call` auto-refreshes the token when it nears expiry. Then enable it:\n\n```bash\n# add the gpt panelist (provider codex / model gpt-5.5) if not already present, then:\n/fusion-config enable gpt\n/fusion-status            # gpt should probe OK\n```\n\n## Install\n\n**macOS / Linux / WSL**\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/brahmsyaifullah/CCF/main/install.sh | bash\n```\n\n**Windows (native PowerShell — needs Git Bash or WSL)**\n\n```powershell\nirm https://raw.githubusercontent.com/brahmsyaifullah/CCF/main/install.ps1 | iex\n```\n\nOr clone and run locally:\n\n```bash\ngit clone https://github.com/brahmsyaifullah/CCF \u0026\u0026 cd CCF \u0026\u0026 ./install.sh\n```\n\nThe installer copies the dispatcher, hooks, and slash commands into `~/.claude`, creates a\n`secrets.env` (chmod 600) for your keys, and idempotently wires two hooks into `settings.json`\n(backed up first). It **never** overwrites an existing `secrets.env`, `panel.json`, or `providers.json`.\n\nThen:\n\n1. Add keys — edit `~/.claude/fusion/secrets.env` or run `/fusion-config set-key`.\n2. **Restart Claude Code** (hooks + commands load at launch).\n3. `/fusion-status` to verify, then `/fusion \u003ctask\u003e`.\n\n## Usage\n\n| Command | What it does |\n|---------|--------------|\n| `/fusion-onboard` | Guided setup — pick providers, add keys (validated), enable panelists. |\n| `/fusion \u003ctask\u003e` | Run a panel → judge → synthesis pass on demand (works anytime). |\n| `/fusion-on` · `/fusion-off` | Toggle default-mode (proactive routing of substantial tasks). |\n| `/fusion-status` | Show roster, providers, context limits, key presence, reachability. |\n| `/fusion-config` | Add/edit providers, set/rotate keys, enable/disable panelists. |\n| `/fusion-analytics` | Text dashboard: run stats, latency, success rate, cost saved vs OpenRouter. |\n| `/fusion-benchmark` | Run SOLO vs FUSION on 5 coding tasks. Sequential, outputs markdown. |\n| `/fusion-benchmark-report` | Generate comparison REPORT.md from benchmark results. |\n| `/ccf-update` | Update CCF from GitHub (preserves your keys + config). |\n\nDefault-mode ships **off** — `/fusion` is always available explicitly.\n\n## Onboarding\n\nTwo ways, both smooth on **macOS, Linux, and native Windows**:\n\n**1. Let Claude Code do it** — just say **`/fusion-setup`** (or \"set up CCF\" with the repo link).\nThe agent installs if needed, checks dependencies, asks which **providers + models** you want\n(buttons, no secrets in chat), and walks you through key entry privately. Zero file editing.\n\n**2. Run the wizard yourself** — cross-platform Python, **no bash or jq required for setup**:\n\n```bash\npython3 ~/.claude/fusion/ccf-onboard          # interactive: pick providers → key (hidden) → model\npython3 ~/.claude/fusion/ccf-onboard --check  # dependency doctor (OS-specific install hints)\n```\n\nIt presents the default panel (glm, deepseek, gpt/Codex) **and** the 20-provider catalog, takes a\nkey hidden (or browser-login for Codex, or nothing for Opus/Sonnet/local Ollama), validates it,\nand enables the panelist — idempotent, every write backed up, keys only ever in `secrets.env`.\n\n\u003e The runtime dispatcher itself uses `bash` + `jq` (`curl`). On Windows that means Git Bash or WSL;\n\u003e `install.ps1` auto-installs `jq` via winget. Onboarding (the Python wizard) needs neither.\n\n## Providers \u0026 panelists\n\nDefault roster (`panel.json`):\n\n- **Judge / writer:** Opus (your Claude session) — never demoted.\n- **Panel (enabled):** `glm` (z.ai GLM-5.2) · `deepseek` (OpenCode-Go DeepSeek-V4-Pro).\n- **Available (disabled):** `sonnet`, `opus` (your sub via `claude` CLI), `deepseek-flash`,\n  `north-code` (free, non-zero-retention), `gpt` (Codex GPT-5.5 via your OpenAI subscription).\n\n### Provider catalog\n\nCCF ships a catalog (`~/.claude/fusion/catalog.json`) of **21 providers** with correct\nOpenAI/Anthropic-compatible endpoints, recommended current models, and docs links — **disabled by\ndefault**, so you enable only what you have keys for:\n\nOpenAI · Anthropic · Google Gemini · DeepSeek · xAI Grok · Mistral · Moonshot · Kimi-Code ·\nMiniMax · Groq · Cerebras · Qwen · OpenRouter · Together · Fireworks · Novita · HuggingFace ·\nXiaomi MiMo · Ollama (cloud) · **Ollama (local — keyless, air-gapped, zero-retention)** ·\n**Codex (OpenAI subscription — GPT-5.5 via your own Codex CLI auth)**.\n\nEnable one via `/fusion-onboard`, or `/fusion-config add-provider --from-catalog \u003cname\u003e`. The\ncatalog is read-only reference (refreshed on update); your live `providers.json` is never touched by it.\nKeyless/self-hosted endpoints (Ollama local) need no key — ideal for sensitive code.\n\n**The complete registry** lives at [models.dev](https://models.dev) — **121+ providers, every model**\nwith context + cost. The curated catalog is a starter subset; for the full list use `ccf-models`:\n\n```bash\n~/.claude/fusion/ccf-models providers            # list all 121+ providers\n~/.claude/fusion/ccf-models models \u003cprovider\u003e    # a provider's models (context, $/Mtok)\n~/.claude/fusion/ccf-models add \u003cprovider\u003e \u003cmodel\u003e [panelist]   # register + add panelist\n```\n\n### Panelist system prompt\n\nEvery panelist inherits `panel.json`'s `default_system_prompt` (role + output contract: answer\ndirectly, propose-don't-act, flag risks with severity). Override one with a per-panelist\n`system_prompt`, or set the default to `\"\"` to disable. `fusion-call` injects it correctly per\ntransport (openai system message / anthropic top-level `system`).\n\n## Context limits\n\nVerified 2026-06-16 by needle-in-haystack (needle retrieved at 90% depth in a full ~1M-token prompt):\n\n| Panelist | Provider | Ceiling | tok/char | Usable prompt |\n|----------|----------|---------|----------|---------------|\n| `glm` | z.ai GLM-5.2 | 1,048,576 tok | ~0.264 | ≤ ~3.9M chars |\n| `deepseek` | OpenCode-Go DeepSeek-V4-Pro | 1,048,565 tok | ~0.295 | ≤ ~3.55M chars |\n| `sonnet`/`opus` | claude sub | ~200K tok | ~0.25 | ≤ ~760K chars |\n| `gpt` | Codex GPT-5.5 | ~200K tok | ~0.25 | ≤ ~760K chars |\n\nThe dispatcher rejects oversize prompts **before** upload (with the exact char budget) instead of\nletting the API return a silent empty response. Large 1M calls take ~40–60s.\n\n### Web search (optional)\n\nSet `TAVILY_API_KEY` in `secrets.env` to let panelists search the web during a task. Add `--search`\nwhen calling a panelist:\n\n```bash\n~/.claude/fusion/fusion-call --search deepseek \"What changed in the latest React release?\"\n```\n\nPanelists use standard function calling to request searches; CCF calls Tavily locally and feeds\nresults back (up to 3 rounds). Currently supported on the `openai` transport (DeepSeek). Get a key\nat [tavily.com](https://tavily.com).\n\n## Security\n\n- **No keys in this repo.** `secrets.env` is gitignored; only `secrets.env.example` is tracked.\n- Keys live in `~/.claude/fusion/secrets.env` (chmod 600), referenced by `key_env` name only.\n- **Zero-retention gating.** Free/pay-per-token providers are flagged `zero_retention=false`; the\n  `/fusion` sensitivity gate refuses to send proprietary/customer code to any panelist marked\n  `sensitive_ok=false`. Check `/fusion-status` — non-zero-retention providers show `FALSE!`.\n- Rotate a key anytime with `/fusion-config set-key`.\n\n## Updating\n\nNotify-only by default: a throttled (~daily), fail-silent `SessionStart` hook checks GitHub and, if\na newer version exists, prints `[CCF] update available …`. Apply with:\n\n```bash\n/ccf-update            # or: bash ~/.claude/fusion/ccf-update.sh\n~/.claude/fusion/ccf-update.sh --check    # report only\n~/.claude/fusion/ccf-update.sh --force    # reinstall latest\n```\n\nUpdates refresh **code only** (dispatcher, hooks, commands, `.dist` templates). Your `secrets.env`,\n`panel.json`, and `providers.json` are preserved; new reference fields are reported for manual merge.\nSkip the notifier at install with `--no-update-hook`.\n\n## Uninstall\n\n```bash\nrm -rf ~/.claude/fusion ~/.claude/commands/fusion*.md ~/.claude/commands/ccf-update.md\n# then remove the two CCF hook entries from ~/.claude/settings.json\n# (a timestamped settings.json.ccf-bak.* backup was made at install)\n```\n\n## How it works\n\n| File (installed under `~/.claude/`) | Role |\n|------|------|\n| `fusion/fusion-call` | Dispatcher. openai / anthropic / claude-cli transports. File-based body (1M-token safe past ARG_MAX), per-provider timeout, oversize-context guard, clear `ERR:` reporting. |\n| `fusion/providers.json` | Transport registry: endpoint, auth, `key_env`, `max_tokens`, `request_timeout`, `max_context_tokens`, `tok_per_char`, `zero_retention`. |\n| `fusion/panel.json` | Roster + `active` flag. `enabled` panelists form the default panel; `sensitive_ok` gates proprietary code. |\n| `fusion/fusion-hook.sh` | `UserPromptSubmit` hook — default-mode reminder when active. |\n| `fusion/ccf-check-update.sh` | `SessionStart` hook — throttled update notifier. |\n| `fusion/secrets.env` | Your keys, chmod 600, never committed. |\n| `commands/*.md` | The slash commands. |\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrahmsyaifullah%2Fccf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrahmsyaifullah%2Fccf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrahmsyaifullah%2Fccf/lists"}