{"id":39003039,"url":"https://github.com/delexw/excalibur","last_synced_at":"2026-01-17T17:13:29.402Z","repository":{"id":317033182,"uuid":"1064610089","full_name":"delexw/excalibur","owner":"delexw","description":"Interactive multi-agent orchestration CLI that coordinates AI agents in structured debates to    reach consensus on solutions. Features terminal UI","archived":false,"fork":false,"pushed_at":"2025-10-07T00:38:06.000Z","size":660,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-07T02:42:32.807Z","etag":null,"topics":["agent","ai","cli","decision-making","excalibur","llm","orchistrator"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/delexw.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":"2025-09-26T09:37:26.000Z","updated_at":"2025-10-07T00:38:08.000Z","dependencies_parsed_at":"2025-09-28T17:34:01.155Z","dependency_job_id":null,"html_url":"https://github.com/delexw/excalibur","commit_stats":null,"previous_names":["delexw/excalibur"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/delexw/excalibur","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/delexw%2Fexcalibur","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/delexw%2Fexcalibur/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/delexw%2Fexcalibur/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/delexw%2Fexcalibur/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/delexw","download_url":"https://codeload.github.com/delexw/excalibur/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/delexw%2Fexcalibur/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28512087,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T13:38:16.342Z","status":"ssl_error","status_checked_at":"2026-01-17T13:37:44.060Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["agent","ai","cli","decision-making","excalibur","llm","orchistrator"],"created_at":"2026-01-17T17:13:29.296Z","updated_at":"2026-01-17T17:13:29.377Z","avatar_url":"https://github.com/delexw.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ⚔️ Excalibur CLI (圆桌骑士 CLI)\n\n```\n███████╗██╗  ██╗ ██████╗ █████╗ ██╗     ██╗██████╗ ██╗   ██╗██████╗\n██╔════╝╚██╗██╔╝██╔════╝██╔══██╗██║     ██║██╔══██╗██║   ██║██╔══██╗\n█████╗   ╚███╔╝ ██║     ███████║██║     ██║██████╔╝██║   ██║██████╔╝\n██╔══╝   ██╔██╗ ██║     ██╔══██║██║     ██║██╔══██╗██║   ██║██╔══██╗\n███████╗██╔╝ ██╗╚██████╗██║  ██║███████╗██║██████╔╝╚██████╔╝██║  ██║\n╚══════╝╚═╝  ╚═╝ ╚═════╝╚═╝  ╚═╝╚══════╝╚═╝╚═════╝  ╚═════╝ ╚═╝  ╚═╝\n\n⚔️  EXCALIBUR CLI - Multi-Agent Debate Engine\n```\n\n**Excalibur CLI** coordinates AI agents in structured debates to reach consensus on solutions. Features interactive terminal.\n\n![Example](example.gif)\n\n## Features\n\n- **Interactive Terminal** — Live command filtering, tab completion, arrow navigation, ESC to kill agents\n- **Structured Debates** — Proposal → critique → vote cycles until consensus\n- **Consensus Modes** — Unanimous, super-majority, or majority with configurable thresholds\n- **Quality Control** — Rubber-stamp penalties and owner approval requirements\n- **Smart Logging** — Per-agent logs with emoji avatars and human-readable transcripts\n\n## Usage\n\n### Interactive Mode (Default)\n```bash\nnode index.js\n```\n\n### Command Line Mode\n```bash\nnode index.js \"Your question here\" --preset=team --consensus=super --maxRounds=5\n```\n\n### Interactive Commands\n- `/help` or `-h` - Show help\n- `/question` or `-q` - Ask a question (or just type directly)\n- `/exit` - Exit the CLI\n\n## Project Context Awareness\n\n**🎯 Key Feature: Agents can access your project files when debating solutions!**\n\nWhen you run Excalibur from within a project directory, the AI agents can:\n- **Read your codebase** - Access source files, configs, and documentation\n- **Understand your stack** - Analyze package.json, requirements.txt, etc.\n- **Review your patterns** - Learn from existing code style and architecture\n- **Provide contextual solutions** - Suggest implementations that fit your project\n\n### Examples of Project-Aware Debates:\n\n```bash\n# In a Node.js project directory\nexcalibur \"How should I implement authentication for this API?\" --preset=team\n\n# In a Python project directory\nexcalibur \"Optimize this database query performance\" --preset=team\n\n# In a React project directory\nexcalibur \"Add error boundary handling to this component\" --preset=team\n```\n\nThe agents will analyze your existing code and debate solutions that:\n- ✅ Match your existing patterns and conventions\n- ✅ Use libraries you already have installed\n- ✅ Follow your project's architecture\n- ✅ Consider your specific requirements and constraints\n\n**💡 Pro Tip:** The more context your agents have about your project, the better their solutions will be!\n\n## Installation From Source\n\n```bash\nnpm install -g .\n```\nThen\n```bash\nexcalibur \"Explain how to stream large CSVs into Postgres safely.\" --preset=team --consensus=super --maxRounds=5\n```\n\n\n## Requirements\n\n- Node.js ≥ 18 (for ECMAScript modules)\n- Each agent CLI must be installed and runnable (adjust `agents.json` to match your CLIs)\n\n## Configuration\n\n### Agent Configuration\n\nAgents are defined in `agents.json` with their CLI commands, timeouts, and display settings. Excalibur looks for this file in the following order:\n\n1. `~/.excalibur/agents.json` (user config - **recommended for global installs**)\n2. `./agents.json` (current directory - for project-specific configs)\n3. Package directory (fallback default)\n\nWhen installed globally via `npm install -g excalibur`, the default config is automatically copied to `~/.excalibur/agents.json` for easy editing.\n\n**To configure your agents:**\n```bash\n# Show current config location and status\nexcalibur --config\n\n# Edit your personal config (global install)\nopen ~/.excalibur/agents.json\n\n# Or create a project-specific config\ncp ~/.excalibur/agents.json ./agents.json\n```\n\n### Common Flags\n\n| Flag | Description |\n| --- | --- |\n| `--maxRounds=N` | Maximum critique/vote cycles (default 5) |\n| `--consensus=MODE` | `unanimous`, `super` or `majority` (default `super`) |\n| `--preset=NAME` | Apply preset: `strict`, `default`, `fast`, `experiment`, `team` |\n| `--owner=ID1,ID2` | Require specific agents to approve winner |\n| `--ownerMin=N` | Minimum score threshold for owner approval (default 0.8) |\n| `--ownerMode=MODE` | Owner approval mode: `any` or `all` (default `any`) |\n| `--logDir=DIR` | Directory for logs (default `logs`) |\n| `--quiet` | Suppress console output |\n| `--no-color` | Disable ANSI colors |\n\n### Owner Approval System\n\nThe owner approval system adds an additional quality gate after consensus is reached. Even if agents reach consensus on a winner, designated \"owner\" agents must have personally rated the winning proposal above a minimum threshold during the voting phase.\n\n#### Configuration\n\n```bash\n# Require Claude to approve the winner with at least 0.8 score\nnode index.js \"Your question\" --owner=claude --ownerMin=0.8\n\n# Require both Claude and Gemini to approve (all mode)\nnode index.js \"Your question\" --owner=claude,gemini --ownerMode=all --ownerMin=0.85\n\n# Interactive mode: Configure via settings and save to config\nnode index.js\n# Use /config command to set owner preferences\n```\n\n#### How It Works\n\n1. **Voting Phase**: All agents (including owners) vote on proposals\n2. **Consensus Check**: System determines if there's a winning proposal\n3. **Owner Validation**: If owners are configured, the system checks:\n   - Did the owner agent vote during the voting phase?\n   - Did they score the winning proposal ≥ `ownerMin` threshold?\n4. **Approval Decision**:\n   - `ownerMode=any`: At least one owner must approve\n   - `ownerMode=all`: All designated owners must approve\n\n#### Example Output\n\nWhen owner approval is being evaluated, you'll see detailed logging from each owner agent:\n\n```\n│ [owner-approve] 🦉 Claude CLI ➤ I approve codex's proposal for consensus. During voting, I rated it 0.92/1.0, which meets the owner threshold of 0.8.\n\n│ [owner-reject] 💎 Gemini CLI Pro ➤ I reject codex's proposal for consensus. During voting, I rated it 0.75/1.0, which is below the required owner threshold of 0.8.\n```\n\nThis ensures that designated \"expert\" agents must have personally endorsed the winning solution during the democratic voting process, adding an extra layer of quality assurance to the consensus mechanism.\n\n## Development\n\nUses only built-in Node modules. Customize prompts in `prompts/*.md` files without touching JavaScript code.\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdelexw%2Fexcalibur","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdelexw%2Fexcalibur","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdelexw%2Fexcalibur/lists"}