bottomless/agent-duel
bottomless/agent-duel has 35 GitHub stars and 8 forks. GitHot measured +1 stars in 24 hours. Last checked 2026-11-11 21:34 UTC. Last push 2026-11-09.
Blinded battles between coding agents: two agents, one prompt, you pick the winner. Desktop app, runs locally.
Measured star growth
- in 24h
- +1
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
Original
Agent Duel
A desktop coding-agent battle interface built on Paseo.
Agent Duel runs two blinded coding agents against one prompt in isolated local worktrees. You compare their results, choose A, B, or Tie, and continue from the selected result as ordinary chat history.
Each contestant is a model drawn at random from a pool and run through the bundled engine. You only see which models they were after you vote.
The shipped product is the Electron desktop app. packages/app can run in a
browser during development and automated QA, but there is no hosted browser
product.
Download
Download for macOS (Apple silicon)
E-mail signup required for use. No cost for unlimited inference with frontier models.
Current models
The hosted version draws from:
- Claude Fable 5.1
- Claude Opus 5.5
- GPT-6 Astra
- GPT-6.1 Sol
- Kimi K3
- Muse Wonder
- Grok 4.7
- Qwen 3.8 Max
- Gemini 4 Argon
- DeepSeek V4.1 Flash 1017
- MiMo-V2.6 Flash
Architecture
Execution stays on your machine:
Electron UI -> local daemon -> local Arena runtime -> local repositories and agents
|
|-> Agent Duel cloud -> OpenRouter (official download)
`-> OpenRouter (your key in a BYOK build)
The UI WebSocket terminates at the local daemon. The packaged desktop application contains the daemon, renderer, and compiled Arena runtime.
The official download uses Agent Duel's cloud service for sign-in, model assignments, and model calls. The cloud service is closed source and maintained outside this repository.
Arena history is canonical on the desktop: SQLite records live under
$PASEO_HOME/arena/arena.sqlite and artifact bytes under
$PASEO_HOME/arena/artifacts/sha256/.
Read docs/architecture.md for the complete system design and docs/arena.md for the battle.
Develop locally
Local development requires no sign-in. Battles run on your own OpenRouter key, and votes are not uploaded.
Requirements
- macOS or Linux
- Node.js 22 with npm
- Bun 1.3.14
- An OpenRouter API key
Install both package graphs, then start the desktop stack in bring-your-own-key mode from the repository root:
npm install
cd arena-backend && bun install && cd ..
npm run dev:desktop -- --byok
The launcher prepares an isolated checkout-local environment and starts the
local daemon, the Electron-flavoured Expo server, and Electron. It reports
[dev] healthy: when the stack is ready. Paste your OpenRouter key in Settings;
battles run on that key.
Troubleshooting
- If a dependency is missing, run
npm installat the root andbun installinarena-backend. - If a port is busy, leave the daemon, Expo, and debugger ports unset where supported so the launcher can choose free ports.
- Inspect
.dev/paseo-home/daemon.logfor daemon failures.
See docs/development.md for worktrees, multiple instances, Playwright/Chrome testing, logs, and focused validation commands. To package the desktop app with hosted sign-in or your own OpenRouter key, see the desktop build instructions.
Repository map
arena-backend/packages/opencode— local Arena engine compiled into desktop.arena-backend/packages/arena-service— battle routes (model draw, model proxy, comparison) shared with the hosted service.packages/desktop— Electron shell, daemon supervision, and packaging.packages/app— shared renderer; browser execution is a development/QA surface.packages/server— local daemon, WebSocket API, and agent lifecycle.packages/protocolandpackages/client— local wire protocol and client SDK.packages/cli— local daemon CLI bundled with desktop.packages/relay— inherited optional remote-access transport.
Common commands
npm run dev:desktop -- --byok # Complete local desktop stack on your OpenRouter key
npm run dev # Local daemon only
npm run dev:app # Browser-based development/QA renderer
npm run build:server # Build daemon and shared packages
npm run typecheck
npm run lint
npm run format
Contributing
See CONTRIBUTING.md. Questions and help: SUPPORT.md. Security: SECURITY.md. Everyone taking part follows the Code of Conduct.
Built on
Agent Duel is a fork of Paseo, which provides the desktop app, local daemon, and agent integrations. Its bundled battle engine is built on a vendored fork of OpenCode.
Agent Duel adds blinded coding-agent battles, side-by-side comparison, and voting that carries the selected result into your chat and repository.
License
- The combined application is AGPL-3.0-or-later. See LICENSE.
- New original contributions are Apache-2.0. See LICENSE-APACHE and the contribution licensing policy.
- Inherited OpenCode material in
arena-backend/retains its MIT license and notices. See arena-backend/LICENSE. - Existing and third-party material retains its applicable licenses.
We plan to move the application to Apache-2.0 after rebasing onto Apache-licensed Paseo and clearing any remaining AGPL-only material.
NOTICE has the full licensing and attribution details. The hosted Agent Duel service is not part of this repository.
Explore related projects
affaan-m/ECC
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
301,942 starsNousResearch/hermes-agent
The agent that grows with you
262,948 starsmultica-ai/andrej-karpathy-skills
A single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathy's observations on LLM coding pitfalls.
232,510 starsfirecrawl/firecrawl
Supercharge your AI agents with data from the web and beyond. Building the library for superintelligence. 🔥
200,932 stars