{"_id":"@git-arbiter/arbiter","_rev":"36-c5732ace731aca99a1973f29fcdcf398","name":"@git-arbiter/arbiter","dist-tags":{"latest":"1.1.1"},"versions":{"0.1.1":{"name":"@git-arbiter/arbiter","version":"0.1.1","keywords":["github","automation","ai","cli","issues","autonomous","developer-tools"],"author":{"name":"Git-Arbiter"},"license":"SEE LICENSE IN https://git-arbiter.com/terms","_id":"@git-arbiter/arbiter@0.1.1","maintainers":[{"name":"arbiter-dev","email":"mason@git-arbiter.com"}],"homepage":"https://git-arbiter.com","bugs":{"url":"https://git-arbiter.com"},"os":["darwin","linux","win32"],"bin":{"arbiter":"bin/arbiter.js"},"cpu":["x64","arm64"],"dist":{"shasum":"049980e014ad17eb9d312401fc35a68603a6917f","tarball":"https://registry.npmjs.org/@git-arbiter/arbiter/-/arbiter-0.1.1.tgz","fileCount":5,"integrity":"sha512-OBgxUShHN/O/p6pKBWJFTgVUxyIn3f7aDS8DfdhWo5bO4bFEXAwktoWePIg/AU7ivUFNBgqQHyig13f9jGRwCw==","signatures":[{"sig":"MEUCIH6+0fKFGq0Lwogo8BDnBHZKTJ0Tma6/cbLLBPmHCk2YAiEAyO1Bw1cFY89c1iWvESSJn1iCNlwCfpCmVmKiOvxrGWw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19920},"engines":{"node":">=18.0.0"},"scripts":{"postinstall":"node scripts/postinstall.js"},"_npmUser":{"name":"arbiter-dev","email":"mason@git-arbiter.com"},"repository":{"url":"git+https://github.com/Git-Arbiter/arbiter-releases.git","type":"git"},"_npmVersion":"10.8.2","description":"Autonomous GitHub Issue Solver with AI","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/arbiter_0.1.1_1770875323983_0.579703476315369","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@git-arbiter/arbiter","version":"0.1.2","keywords":["github","automation","ai","cli","issues","autonomous","developer-tools"],"author":{"name":"Git-Arbiter"},"license":"SEE LICENSE IN https://git-arbiter.com/terms","_id":"@git-arbiter/arbiter@0.1.2","maintainers":[{"name":"arbiter-dev","email":"mason@git-arbiter.com"}],"homepage":"https://git-arbiter.com","bugs":{"url":"https://git-arbiter.com"},"os":["darwin","linux","win32"],"bin":{"arbiter":"bin/arbiter.js"},"cpu":["x64","arm64"],"dist":{"shasum":"5b10d1f7122a61d851cb422ec39cc4652bf3a339","tarball":"https://registry.npmjs.org/@git-arbiter/arbiter/-/arbiter-0.1.2.tgz","fileCount":5,"integrity":"sha512-SP4asHX/0bZfMqxwWkbFKPVAtJi6hzls+5gJs8FEG+MY3yk9cv2zaM/p+hkCoCbmcugnimwSBo6isjM9ZSj9IQ==","signatures":[{"sig":"MEUCIFJjtrWN2jCxcemvLUWwgArttmdqCiTaQ9TJ3Yz1MUlHAiEA+iMooYExrWuhEca2mQ5jNdTqb0JGhbABVNRNrlrnLgw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19920},"engines":{"node":">=18.0.0"},"scripts":{"postinstall":"node scripts/postinstall.js"},"_npmUser":{"name":"arbiter-dev","email":"mason@git-arbiter.com"},"repository":{"url":"git+https://github.com/Git-Arbiter/arbiter-releases.git","type":"git"},"_npmVersion":"10.8.2","description":"Autonomous GitHub Issue Solver with AI","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/arbiter_0.1.2_1770876687706_0.3703501827742026","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@git-arbiter/arbiter","version":"0.1.3","keywords":["github","automation","ai","cli","issues","autonomous","developer-tools"],"author":{"name":"Git-Arbiter"},"license":"SEE LICENSE IN https://git-arbiter.com/terms","_id":"@git-arbiter/arbiter@0.1.3","maintainers":[{"name":"arbiter-dev","email":"mason@git-arbiter.com"}],"homepage":"https://git-arbiter.com","bugs":{"url":"https://git-arbiter.com"},"os":["darwin","linux","win32"],"bin":{"arbiter":"bin/arbiter.js"},"cpu":["x64","arm64"],"dist":{"shasum":"f3195c2397a22f2efc4ef461016202f0dba6edbe","tarball":"https://registry.npmjs.org/@git-arbiter/arbiter/-/arbiter-0.1.3.tgz","fileCount":5,"integrity":"sha512-Xm98Lmy1N7OeJ2T4KJ7T/xMX75CmNTrgnunkxF4BfskEyQvRu2VjzWRgZBTvQV0HHeZMClWwwjA/DavBM0mBMg==","signatures":[{"sig":"MEUCIQDJUMYoITjVrmtTmjqxLgrSemz8qJymEWHOZPMmoDwDZAIgYolKQY/Dn5BY4frRwJ5CS+TvATJY3bZlJLOm6DmdUSk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19920},"engines":{"node":">=18.0.0"},"scripts":{"postinstall":"node scripts/postinstall.js"},"_npmUser":{"name":"arbiter-dev","email":"mason@git-arbiter.com"},"repository":{"url":"git+https://github.com/Git-Arbiter/arbiter-releases.git","type":"git"},"_npmVersion":"10.8.2","description":"Autonomous GitHub Issue Solver with AI","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/arbiter_0.1.3_1770930861591_0.3330343241224736","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@git-arbiter/arbiter","version":"0.1.4","keywords":["github","automation","ai","cli","issues","autonomous","developer-tools"],"author":{"name":"Git-Arbiter"},"license":"SEE LICENSE IN https://git-arbiter.com/terms","_id":"@git-arbiter/arbiter@0.1.4","maintainers":[{"name":"arbiter-dev","email":"mason@git-arbiter.com"}],"homepage":"https://git-arbiter.com","bugs":{"url":"https://git-arbiter.com"},"os":["darwin","linux","win32"],"bin":{"arbiter":"bin/arbiter.js"},"cpu":["x64","arm64"],"dist":{"shasum":"4774efec3ebfbab5d73fa80824a8f569ca811788","tarball":"https://registry.npmjs.org/@git-arbiter/arbiter/-/arbiter-0.1.4.tgz","fileCount":5,"integrity":"sha512-mhL8I4IauL67izqdOEYkh48Zxw2WJ3a297Qy81cDxuOQ1xcfuGueZalxD5J+w7usGMxBF+Ida3onuXeFCFyYdg==","signatures":[{"sig":"MEQCIFQJ8VfjOs7fu0ocQM5hNUHSeMYLcoBTpq4xBau36XtvAiAM+/WgVke1ZKpgnb0KY77oRifRbaD97rkUfyMatFN0zA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19920},"engines":{"node":">=18.0.0"},"scripts":{"postinstall":"node scripts/postinstall.js"},"_npmUser":{"name":"arbiter-dev","email":"mason@git-arbiter.com"},"repository":{"url":"git+https://github.com/Git-Arbiter/arbiter-releases.git","type":"git"},"_npmVersion":"10.8.2","description":"Autonomous GitHub Issue Solver with AI","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/arbiter_0.1.4_1771028608884_0.06343297888105592","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@git-arbiter/arbiter","version":"1.0.0","keywords":["github","automation","ai","cli","issues","autonomous","developer-tools"],"author":{"name":"Git-Arbiter"},"license":"SEE LICENSE IN https://git-arbiter.com/terms","_id":"@git-arbiter/arbiter@1.0.0","maintainers":[{"name":"arbiter-dev","email":"mason@git-arbiter.com"}],"homepage":"https://git-arbiter.com","bugs":{"url":"https://git-arbiter.com"},"os":["darwin","linux","win32"],"bin":{"arbiter":"bin/arbiter.js"},"cpu":["x64","arm64"],"dist":{"shasum":"0a77116d3f42f125fc584a2c9338b06c456c1a83","tarball":"https://registry.npmjs.org/@git-arbiter/arbiter/-/arbiter-1.0.0.tgz","fileCount":5,"integrity":"sha512-464WNVX5BbMFSY65SOd5+kMcaVa2OCqIsXpPUy8e1w3h5zdqSNwMEiQU7d6a7zJyKZWT8srDPo/rIjCNZ3Plkg==","signatures":[{"sig":"MEQCIFtC2VqOBeR2gkxzG7bZwHkjwWkvj+YGeT+ezsKgz93uAiByrfLgkADKPnmoO1gEbUhqT0LTSpgE+6wwjpDDDv3iug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19920},"engines":{"node":">=18.0.0"},"scripts":{"postinstall":"node scripts/postinstall.js"},"_npmUser":{"name":"arbiter-dev","email":"mason@git-arbiter.com"},"repository":{"url":"git+https://github.com/Git-Arbiter/arbiter-releases.git","type":"git"},"_npmVersion":"10.8.2","description":"Autonomous GitHub Issue Solver with AI","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/arbiter_1.0.0_1771202336346_0.5491624894057086","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@git-arbiter/arbiter","version":"1.0.1","keywords":["github","automation","ai","cli","issues","autonomous","developer-tools"],"author":{"name":"Git-Arbiter"},"license":"SEE LICENSE IN https://git-arbiter.com/terms","_id":"@git-arbiter/arbiter@1.0.1","maintainers":[{"name":"arbiter-dev","email":"mason@git-arbiter.com"}],"homepage":"https://git-arbiter.com","bugs":{"url":"https://git-arbiter.com"},"os":["darwin","linux","win32"],"bin":{"arbiter":"bin/arbiter.js"},"cpu":["x64","arm64"],"dist":{"shasum":"09f6821ccddb371e7c6bceb2dde049a03f93e9c5","tarball":"https://registry.npmjs.org/@git-arbiter/arbiter/-/arbiter-1.0.1.tgz","fileCount":5,"integrity":"sha512-+h9lA6ADDVzUiH3JmshDy38CKXMS+7cmR+/ei8rowmtey9Ng+IybIu8LXlNpNLelVjFqBJoEBgsFENRa4TGrlg==","signatures":[{"sig":"MEUCIQC6JjLpHKdTPdZxfU0KBNfSKXRi5/Ew0OnMN5TCgPTq0QIgXYvzIf4z3REYnnBG+hqRo1l0eXYvK2Ld5KmVbLvy+po=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19920},"engines":{"node":">=18.0.0"},"scripts":{"postinstall":"node scripts/postinstall.js"},"_npmUser":{"name":"arbiter-dev","email":"mason@git-arbiter.com"},"repository":{"url":"git+https://github.com/Git-Arbiter/arbiter-releases.git","type":"git"},"_npmVersion":"10.8.2","description":"Autonomous GitHub Issue Solver with AI","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/arbiter_1.0.1_1771203788637_0.596601149806999","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@git-arbiter/arbiter","version":"1.1.1","description":"Autonomous GitHub Issue Solver with AI","bin":{"arbiter":"bin/arbiter.js"},"scripts":{"postinstall":"node scripts/postinstall.js"},"keywords":["github","automation","ai","cli","issues","autonomous","developer-tools"],"repository":{"type":"git","url":"git+https://github.com/Git-Arbiter/arbiter-releases.git"},"homepage":"https://git-arbiter.com","bugs":{"url":"https://git-arbiter.com"},"license":"SEE LICENSE IN https://git-arbiter.com/terms","author":{"name":"Git-Arbiter"},"os":["darwin","linux","win32"],"cpu":["x64","arm64"],"engines":{"node":">=18.0.0"},"_id":"@git-arbiter/arbiter@1.1.1","_nodeVersion":"20.20.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-w3gQqYD+RccUfWj7tjDhFKYAvYrmjF2hMAcqlyiugJCuYm2zfYMEKWTi9/lwZ44AF7hIYXw4dz5rkdfLi05ARg==","shasum":"2e340d53535fa7a81df2667185800beba542539d","tarball":"https://registry.npmjs.org/@git-arbiter/arbiter/-/arbiter-1.1.1.tgz","fileCount":5,"unpackedSize":19920,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGVHBsIkt2OgqOUtvKRNUKw/cno2H2yrds5lHfzchd6VAiAcv0eETx2rMAS+sZzXlwGH/9OW0T6gdjvL8E8p1tGO6Q=="}]},"_npmUser":{"name":"arbiter-dev","email":"mason@git-arbiter.com"},"directories":{},"maintainers":[{"name":"arbiter-dev","email":"mason@git-arbiter.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/arbiter_1.1.1_1772679302439_0.9908052345211016"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-11T19:21:58.588Z","modified":"2026-03-05T02:55:02.713Z","0.1.1-rc.0":"2026-02-11T18:46:42.959Z","0.1.1-rc.1":"2026-02-11T19:01:44.449Z","0.1.1-rc.2":"2026-02-11T19:21:58.830Z","0.1.1-rc.3":"2026-02-11T19:27:06.313Z","0.1.1-rc.4":"2026-02-11T19:44:44.031Z","0.1.1-rc.5":"2026-02-11T19:59:39.548Z","0.1.1-beta.0":"2026-02-11T20:22:55.182Z","0.1.1-beta.1":"2026-02-11T20:44:18.588Z","0.1.1-beta.2":"2026-02-11T21:00:07.394Z","0.1.1-beta.3":"2026-02-11T21:11:51.394Z","0.1.1-beta.4":"2026-02-11T22:36:11.256Z","0.1.1-beta.5":"2026-02-11T22:45:42.906Z","0.1.1-beta.6":"2026-02-11T22:54:26.027Z","0.1.1-beta.7":"2026-02-11T23:31:56.348Z","0.1.1-beta.8":"2026-02-11T23:44:22.951Z","0.1.1":"2026-02-12T05:48:44.127Z","0.1.2":"2026-02-12T06:11:27.868Z","0.1.3":"2026-02-12T21:14:21.769Z","0.1.4":"2026-02-14T00:23:29.055Z","1.0.0":"2026-02-16T00:38:56.521Z","1.0.1":"2026-02-16T01:03:08.792Z","1.1.1":"2026-03-05T02:55:02.590Z"},"bugs":{"url":"https://git-arbiter.com"},"author":{"name":"Git-Arbiter"},"license":"SEE LICENSE IN https://git-arbiter.com/terms","homepage":"https://git-arbiter.com","keywords":["github","automation","ai","cli","issues","autonomous","developer-tools"],"repository":{"type":"git","url":"git+https://github.com/Git-Arbiter/arbiter-releases.git"},"description":"Autonomous GitHub Issue Solver with AI","maintainers":[{"name":"arbiter-dev","email":"mason@git-arbiter.com"}],"readme":"# Arbiter\n\n> **Autonomous GitHub Issue Solver** - A local-first automation system that uses AI to solve GitHub issues automatically.\n\nArbiter is an intelligent automation system that watches your GitHub repositories, finds labeled issues, and uses AI workers (Claude Code, Ollama, or LM Studio) to implement solutions automatically. It creates branches, writes code, runs tests, and opens pull requests—all while running locally on your machine.\n\n[![Website](https://img.shields.io/badge/Website-git--arbiter.com-blue)](https://git-arbiter.com)\n[![npm](https://img.shields.io/npm/v/@git-arbiter/arbiter)](https://www.npmjs.com/package/@git-arbiter/arbiter)\n[![License](https://img.shields.io/badge/License-Proprietary-red)](https://git-arbiter.com/terms)\n\n## What It Does\n\n1. **🔍 Monitors GitHub** - Scans your repos for issues with specific labels (e.g., `agent-ok`)\n2. **🏗️ Creates Workspaces** - Clones the repo and creates an isolated feature branch\n3. **🤖 Solves Issues** - Uses AI workers to implement the solution\n4. **✅ Validates** - Runs tests and checks to verify the changes\n5. **📝 Opens PRs** - Creates pull requests with the implemented solution\n6. **🔄 Iterates** - Resumes work if the AI hits turn limits\n7. **👀 Monitors** - Web dashboard shows real-time progress\n\n**All processing happens locally** - your code never leaves your machine.\n\n## Installation\n\n```bash\nnpm install -g @git-arbiter/arbiter\n```\n\n**Requirements:**\n- Node.js 18+\n- Git installed and configured\n- GitHub Personal Access Token\n- One of the supported AI workers:\n  - **Claude Code** (recommended) - [Anthropic's official CLI](https://code.anthropic.com)\n  - **Ollama** - Local, free models\n  - **LM Studio** - Local, free models\n\n## Quick Start\n\n### 1. Initialize Configuration\n\n```bash\narbiter init\n```\n\nThis creates `~/.arbiter/config.yaml` with default settings.\n\n### 2. Configure Your Setup\n\nEdit the config file:\n\n```bash\nnano ~/.arbiter/config.yaml\n```\n\nSet at minimum:\n- `github.token` - Your GitHub PAT\n- `github.repos` - List of repos to monitor (e.g., `[\"owner/repo\"]`)\n- `worker.type` - AI worker to use (`claude-code`, `ollama`, or `lmstudio`)\n\n### 3. Verify Setup\n\n```bash\narbiter doctor\n```\n\nThis checks:\n- GitHub token validity\n- AI worker availability\n- Repo access permissions\n- Configuration validity\n\n### 4. Label an Issue\n\nAdd the `agent-ok` label (or your custom label) to any GitHub issue.\n\n### 5. Run Arbiter\n\n**Option A: Run once (CLI)**\n```bash\narbiter run\n```\n\n**Option B: Start the web dashboard**\n```bash\narbiter ui\n```\nThen open http://127.0.0.1:3927\n\n## Commands\n\n```bash\n# Initialize config file\narbiter init\n\n# Check system health\narbiter doctor\n\n# Run once (find issue, solve it, create PR)\narbiter run\n\n# Start web dashboard\narbiter ui [--port 3927]\n\n# Manual workflow commands:\narbiter validate <workspace>    # Validate changes\narbiter commit <workspace>      # Commit changes\narbiter push <workspace>        # Push branch\narbiter pr <workspace>          # Open pull request\n```\n\n## Web Dashboard\n\nThe web UI provides:\n\n- **📊 Real-Time Monitoring** - Watch runs in progress with live logs\n- **⚙️ Configuration** - Edit all settings via UI\n- **📁 Repository Management** - Configure per-repo policies\n- **⏰ Auto-Run Scheduler** - Set interval-based execution\n- **📜 Log Viewer** - Query logs from PostgreSQL or Elasticsearch\n- **🎓 Self-Learning** - Review and approve AI-extracted learnings\n- **🔔 Notifications** - Desktop and browser notifications\n\nStart the UI:\n```bash\narbiter ui\n```\n\nThen open http://127.0.0.1:3927\n\n## How It Works\n\n### The Workflow\n\n1. **Fetches Issues** - Queries GitHub for issues with your required label\n2. **Prioritizes** - Ranks by labels, age, and custom rules\n3. **Prepares Workspace** - Clones repo and creates branch: `arbiter/issue-{number}-{slug}`\n4. **Invokes AI Worker** - Launches Claude Code/Ollama with task instructions\n5. **Monitors Progress** - Streams output and tracks completion\n6. **Validates Changes** - Checks diff size, forbidden paths, runs tests\n7. **Creates PR** - Opens pull request with the solution\n8. **Handles Continuations** - Resumes if AI hits turn/budget limits\n\n### AI Workers\n\n**Claude Code** (Recommended)\n```yaml\nworker:\n  type: claude-code\n  model: sonnet\n  maxTurns: 50\n  maxBudgetUsd: 5.0\n```\n- Highest quality results\n- Best tool-calling support\n- API costs apply\n\n**Ollama** (Local, Free)\n```yaml\nworker:\n  type: ollama\n  url: http://localhost:11434\n  model: llama3.1:8b-instruct-q8_0\n  maxTurns: 30\n```\n- No API costs\n- Requires local GPU\n- Good for simple tasks\n\n**LM Studio** (Local, Free)\n```yaml\nworker:\n  type: lmstudio\n  url: http://localhost:1234\n  model: model-name\n  maxTurns: 30\n```\n- No API costs\n- GUI for model management\n- Good for experimentation\n\n## Key Features\n\n### 🔒 Security & Safety\n- **Local-First** - Code never leaves your machine\n- **Diff Validation** - Enforces limits on changed files/lines\n- **Forbidden Paths** - Blocks changes to sensitive files\n- **Command Allowlisting** - Only approved commands can run\n- **Draft PRs** - PRs open as drafts for human review\n- **AI Code Review** - Optional second AI reviews PRs\n\n### 🔄 Smart Continuation\n- Resumes work if AI hits turn or budget limits\n- Preserves workspace and branch\n- Tracks attempt count\n- Adds continuation notes to prompt\n\n### 🎓 Self-Learning Mode\n- Extracts learnings from successful PRs\n- Builds knowledge about your codebase\n- Consolidates learnings into context documents\n- Improves quality over time\n\n### 📊 Advanced Monitoring\n- PostgreSQL or Elasticsearch logging\n- Full-text search across logs\n- Run history and metrics\n- Real-time log streaming in UI\n\n### 🔔 Notifications\n- Desktop notifications (macOS/Linux/Windows)\n- Browser notifications (UI only)\n- Configurable per event type\n\n## Configuration\n\nArbiter is highly configurable. Edit `~/.arbiter/config.yaml` to control:\n\n- **GitHub Settings** - Tokens, repos, labels, clone method\n- **Repository Policies** - Push permissions, PR settings, reviewers\n- **Worker Settings** - AI provider, model, limits\n- **Safety Limits** - Max files/lines changed, forbidden paths\n- **Checks** - Commands to run before committing\n- **Logging** - PostgreSQL, Elasticsearch, or in-memory\n- **Notifications** - Desktop and browser alerts\n\nSee the full documentation at [git-arbiter.com/docs.html](https://git-arbiter.com/docs.html)\n\n## Alternative Installation Methods\n\n### Homebrew (macOS)\n\n```bash\nbrew install arbiter/tap/arbiter\n```\n\n### Docker\n\n```bash\ndocker pull gitarbiter/arbiter:latest\n```\n\nSee [git-arbiter.com/docs.html](https://git-arbiter.com/docs.html) for Docker setup instructions.\n\n## Docker Installation\n\nFor easy setup with all dependencies:\n\n```bash\n# Clone repo (requires access)\ngit clone <repo-url>\ncd arbiter\n\n# Start with Docker Compose\ndocker-compose up -d\n\n# Initialize config\ndocker-compose exec arbiter arbiter init\n\n# Edit config (set GitHub token & repos)\ndocker cp arbiter:/home/arbiter/.arbiter/config.yaml ./config.yaml\n# Edit config.yaml...\ndocker cp ./config.yaml arbiter:/home/arbiter/.arbiter/config.yaml\ndocker-compose restart arbiter\n\n# Open UI\nopen http://localhost:3927\n```\n\n## Trial & Licensing\n\nArbiter includes a **7-day free trial** with full features.\n\n- **Runtime validation** - License checked when you run Arbiter\n- **Machine-based** - License tied to your development machine\n- **Offline-friendly** - Validation cached locally\n\nPurchase a license at [git-arbiter.com](https://git-arbiter.com)\n\n## Troubleshooting\n\n### Command Not Found\n\nEnsure npm's global bin is in your PATH:\n\n```bash\n# Check where npm installs global packages\nnpm bin -g\n\n# Add to PATH\nexport PATH=\"$(npm bin -g):$PATH\"\n```\n\n### Permission Errors (macOS/Linux)\n\nFix npm permissions:\n\n```bash\nmkdir ~/.npm-global\nnpm config set prefix '~/.npm-global'\necho 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc\nsource ~/.bashrc\n\nnpm install -g @git-arbiter/arbiter\n```\n\n### Binary Won't Execute\n\nMake the binary executable:\n\n```bash\n# Check binary exists\nls -la ~/.arbiter/bin/\n\n# Make executable (macOS/Linux)\nchmod +x ~/.arbiter/bin/arbiter\n\n# Reinstall if needed\nnpm uninstall -g @git-arbiter/arbiter\nnpm install -g @git-arbiter/arbiter\n```\n\n### AI Worker Not Found\n\n**Claude Code:**\n- Install: Follow instructions at [code.anthropic.com](https://code.anthropic.com)\n- Verify: `claude --version`\n\n**Ollama:**\n- Install: `curl -fsSL https://ollama.com/install.sh | sh`\n- Pull model: `ollama pull llama3.1:8b-instruct-q8_0`\n- Start server: `ollama serve`\n\n**LM Studio:**\n- Download from [lmstudio.ai](https://lmstudio.ai)\n- Load a model with function-calling support\n- Start local server (Developer → Local Server)\n\n## More Information\n\n- **Website:** [git-arbiter.com](https://git-arbiter.com)\n- **Documentation:** [git-arbiter.com/docs.html](https://git-arbiter.com/docs.html)\n- **Changelog:** [git-arbiter.com/changelog.html](https://git-arbiter.com/changelog.html)\n- **GitHub:** [github.com/Git-Arbiter](https://github.com/Git-Arbiter)\n\n## License\n\nProprietary software. See [Terms of Service](https://git-arbiter.com/terms) for details.\n\n---\n\nMade with ❤️ by the Git-Arbiter team\n","readmeFilename":"README.md"}