{"id":51008879,"url":"https://github.com/waqaszs/zebate","last_synced_at":"2026-06-21T00:02:19.198Z","repository":{"id":363182064,"uuid":"1261644770","full_name":"waqaszs/zebate","owner":"waqaszs","description":"Open-source, on-machine AI debate — rival perspectives argue your question to a verdict, locally on your own Claude. No API key, no cloud. (Apache-2.0)","archived":false,"fork":false,"pushed_at":"2026-06-07T19:25:40.000Z","size":6029,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-07T20:21:46.390Z","etag":null,"topics":["ai","anthropic","claude","claude-code","debate","llm","local-first","multi-agent","open-source","research"],"latest_commit_sha":null,"homepage":"https://zebate.pages.dev","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/waqaszs.png","metadata":{"files":{"readme":"README.md","changelog":null,"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-07T01:01:28.000Z","updated_at":"2026-06-07T19:25:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/waqaszs/zebate","commit_stats":null,"previous_names":["waqaszs/zebate"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/waqaszs/zebate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waqaszs%2Fzebate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waqaszs%2Fzebate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waqaszs%2Fzebate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waqaszs%2Fzebate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/waqaszs","download_url":"https://codeload.github.com/waqaszs/zebate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waqaszs%2Fzebate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34589219,"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-20T02:00:06.407Z","response_time":98,"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","anthropic","claude","claude-code","debate","llm","local-first","multi-agent","open-source","research"],"created_at":"2026-06-21T00:02:08.028Z","updated_at":"2026-06-21T00:02:19.178Z","avatar_url":"https://github.com/waqaszs.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"public/logo.svg\" width=\"78\" height=\"78\" alt=\"Zebate\" /\u003e\n\n# Zebate\n\n### Open-source, on-machine agentic debate.\n\nSpin up rival AI agents that **argue your question to the ground** — across rounds, until one answer survives — running **locally, on your own Claude**. No API key. No cloud.\n\n[![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-6d7cff.svg)](LICENSE)\n![No API key](https://img.shields.io/badge/API%20key-not%20required-3ecf8e)\n![On your machine](https://img.shields.io/badge/runs-100%25%20local-3ecf8e)\n![Zero dependencies](https://img.shields.io/badge/npm%20deps-0-6d7cff)\n![Node 18+](https://img.shields.io/badge/Node-18%2B-555)\n\n\u003ca href=\"https://zebate.pages.dev\"\u003e\u003cimg src=\"docs/demo-thumb.jpg\" width=\"860\" alt=\"Watch the Zebate demo — open-source, on-machine AI debate\" /\u003e\u003c/a\u003e\n\n\u003csub\u003e\u003ca href=\"https://zebate.pages.dev\"\u003e▶ Watch the 30-second demo\u003c/a\u003e\u003c/sub\u003e\n\n\u003c/div\u003e\n\n\u003e **One question → rival agents → they debate → a verdict.**\n\u003e Most tools give you *more* agents. Zebate makes them **argue** — locally, on the `claude` CLI you already have. The debate happens on your machine; nothing is brokered through a cloud.\n\n---\n\n## Why Zebate\n\nA single chat gives you one voice that tends to agree with itself. Even \"multi-agent\" tools usually just run agents *in parallel* and staple the answers together. The hard part isn't running many agents — it's making them **disagree productively**:\n\n- ⚔️ **Agentic debate (the moat)** — agents answer, then *see each other's answers and rebut* across rounds; a neutral moderator calls the verdict. Catches the confident-but-wrong answer a lone chat hands you.\n- 🖥️ **On your machine** — the whole thing runs on your own `claude` CLI. No API key, no account, no cloud relay. Your prompts go exactly where they already go when you use Claude Code.\n- 👥 **Parallel perspectives** — ask once, hear many expert viewpoints side by side.\n- ⚖️ **Capture · Compare · Summarize** — pin findings, rank options in weighted tables, merge chats into one cited write-up.\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"docs/ask-several.png\" width=\"860\" alt=\"One question, several rival agents answering in parallel\" /\u003e\n\u003cbr/\u003e\u003cem\u003eOne question, several rival agents — side by side. Debate takes it the rest of the way.\u003c/em\u003e\n\u003c/div\u003e\n\n---\n\n## Quickstart\n\n**Prerequisites:** [Node 18+](https://nodejs.org) and [Claude Code](https://docs.anthropic.com/en/docs/claude-code) installed \u0026 logged in (you can run `claude` in your terminal).\n\n```bash\ngit clone https://github.com/waqaszs/zebate.git\ncd zebate\npnpm start          # or: node src/server.mjs\n```\n\nYour browser opens at **http://localhost:8899**. No keys to paste, nothing to configure.\n\n---\n\n## Sessions — research several topics in parallel\n\nA **session** is an isolated workspace: its own windows, pins, and its own browser tab. Run as many as you like — each one is independent.\n\n```bash\nSESSION=\"Pricing model\"   pnpm start    # terminal 1 → its own UI + data\nSESSION=\"Database choice\"  pnpm start    # terminal 2 → separate UI + data\n```\n\nOr start one without leaving the app: open the **Sessions** menu → **+ New session**, name the topic, and Zebate spins up a fresh isolated instance and opens its tab for you. Re-launching a name **resumes** that session — your work persists on disk.\n\n\u003e Each session writes to its own `data/sessions/\u003cname\u003e.json`. Closing a session's terminal (or tab + server) just stops it; nothing is deleted.\n\n---\n\n## The research loop\n\n| Step | Tools | What happens |\n|------|-------|--------------|\n| **💬 Explore** | New chat · Ask several · **Debate** | Open chats, fan a question across perspectives, or have rival agents debate to a verdict. |\n| **📌 Capture** | Pins | Keep the answers worth remembering on a board. |\n| **⚖️ Decide** | Compare · Summarize | Rank options in a weighted table, or merge chats into one cited summary. |\n| **⭳ Share** | Export | Send any summary to Markdown. |\n\n- **Perspectives are yours** — a \"perspective\" is just a named system prompt. Edit, add or remove them in the Perspectives panel.\n- **You stay in control** — while a chat answers, **Send** becomes **Stop**; the Usage panel shows each chat's context and your account's rate-limit window, with one-click **Compact** for long chats.\n\n---\n\n## How it works\n\n```\n  browser UI  ──HTTP/SSE──▶  src/server.mjs  ──spawns──▶  claude -p --resume \u003csession\u003e\n   (vanilla JS)              (zero-dep node:http)          (your CLI · your login)\n```\n\n- Each window owns its own **resumable** Claude session; debates orchestrate several of them across rounds plus a moderator pass.\n- Replies **stream token-by-token** over Server-Sent Events; abort instantly with Stop.\n- **Zero npm dependencies** — pure Node + vanilla JS. The whole backend is one file.\n\n---\n\n## FAQ\n\n**Do I need an Anthropic API key?** No. Zebate drives the `claude` CLI you're already logged into — it uses your existing Claude Code subscription, exactly like running `claude` yourself.\n\n**Does anything leave my machine?** Only what already leaves when you use Claude Code (your prompts go to Anthropic via the CLI). Zebate itself adds **no cloud, no account, no telemetry** — the server is `localhost`.\n\n**Will a debate spend my limits?** A debate is several agent calls across rounds, so yes, more than a single chat — the Usage panel keeps that visible, and Compact helps long chats stay cheap.\n\n**Is it really free?** Yes — free and **open-source (Apache-2.0)**. Use it, fork it, ship it.\n\n---\n\n## Zebate Cloud (coming soon)\n\n**Zebate On-Machine** stays free \u0026 open-source, forever. **Zebate Cloud** is a separate hosted product that takes your research further:\n\n- **Cross-device persistence** — chats, pins \u0026 debates saved in the cloud, synced across all your devices\n- **Any model provider** — run perspectives on Claude, GPT, Gemini or local models — even mix them in one debate\n- **Export to reports** — turn any research or debate into a polished, shareable report in multiple formats\n- **PDF · slides · video · infographic** — auto-convert a debate into a PDF, slide deck, explainer video or infographic\n- **Teams \u0026 sharing** — shared workspaces, and publish a finished debate as a link\n- **Zero setup** — no CLI, no keys to manage\n\n**→ [Join the waitlist](https://zebate.pages.dev/#join)**\n\n## Contributing\n\nIssues and PRs welcome. It's a single static frontend (`public/index.html`) and a single backend file (`src/server.mjs`) with no build step — clone, edit, refresh.\n\nIf Zebate is useful to you, **★ star the repo and share it** — that's how other developers find it.\n\n---\n\n## License \u0026 trademark\n\n**Zebate On-Machine** (this repo) is **free \u0026 open-source** under the **Apache-2.0 License** — © [ZedStack](https://zedstack.com), built by [Waqas Haider](https://www.linkedin.com/in/waqaszs/). **Zebate Cloud** is a separate hosted product (coming soon).\n\nThe Zebate **name and logo** are trademarks of ZedStack — the Apache-2.0 license covers the *code*, not the brand. See [TRADEMARK.md](TRADEMARK.md). Forks are welcome; please **rebrand** before distributing publicly.\n\n\u003cdiv align=\"center\"\u003e\u003csub\u003eZebate is a free, open tool from ZedStack — we build interactive experiences for learning, product discovery, and research.\u003c/sub\u003e\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaqaszs%2Fzebate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwaqaszs%2Fzebate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaqaszs%2Fzebate/lists"}