{"id":48871246,"url":"https://github.com/apra-labs/apra-fleet","last_synced_at":"2026-06-30T05:00:32.235Z","repository":{"id":350005443,"uuid":"1166755760","full_name":"Apra-Labs/apra-fleet","owner":"Apra-Labs","description":"AI agents that write code, review each other's work, and coordinate across your machines","archived":false,"fork":false,"pushed_at":"2026-06-23T12:56:34.000Z","size":3646,"stargazers_count":60,"open_issues_count":44,"forks_count":10,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-06-23T14:28:40.615Z","etag":null,"topics":["agentic-workflow","ai-agents","ai-coding","anthropic","automation","autonomous-agents","claude","claude-code","code-review","developer-tools","doer-reviewer","gemini","llm-orchestration","mcp","model-context-protocol","multi-agent","nodejs","remote-execution","ssh","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Apra-Labs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-25T15:16:28.000Z","updated_at":"2026-06-23T12:56:36.000Z","dependencies_parsed_at":"2026-06-08T10:01:19.928Z","dependency_job_id":null,"html_url":"https://github.com/Apra-Labs/apra-fleet","commit_stats":null,"previous_names":["apra-labs/apra-fleet"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/Apra-Labs/apra-fleet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Apra-Labs%2Fapra-fleet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Apra-Labs%2Fapra-fleet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Apra-Labs%2Fapra-fleet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Apra-Labs%2Fapra-fleet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Apra-Labs","download_url":"https://codeload.github.com/Apra-Labs/apra-fleet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Apra-Labs%2Fapra-fleet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34952850,"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-30T02:00:05.919Z","response_time":92,"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":["agentic-workflow","ai-agents","ai-coding","anthropic","automation","autonomous-agents","claude","claude-code","code-review","developer-tools","doer-reviewer","gemini","llm-orchestration","mcp","model-context-protocol","multi-agent","nodejs","remote-execution","ssh","typescript"],"created_at":"2026-04-15T22:03:11.445Z","updated_at":"2026-06-30T05:00:32.226Z","avatar_url":"https://github.com/Apra-Labs.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Apra Fleet\n\n[![CI](https://github.com/Apra-Labs/apra-fleet/actions/workflows/ci.yml/badge.svg)](https://github.com/Apra-Labs/apra-fleet/actions/workflows/ci.yml)\n[![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Windows-lightgrey.svg)](https://github.com/Apra-Labs/apra-fleet/releases)\n[![MCP](https://img.shields.io/badge/MCP-compatible-8A2BE2.svg)](https://modelcontextprotocol.io)\n\n### One goal. A team of AI agents that plan, execute, and review each other's work, and run across every machine you own.\n\nApra Fleet is an open-source **MCP server** that turns AI agents (Claude\nCode, Antigravity, Codex, Copilot, Gemini, OpenCode) into a coordinated team instead of a lone\nassistant. Any job that needs more than one agent -- software sprints,\ncustomer-support triage, cost and operations-efficiency analysis,\ninfrastructure surveys -- becomes a fleet you direct in plain conversation.\nNeed more horsepower? Fleet reaches across every machine on your network\nover SSH -- no dashboards, no orchestration YAML.\n\n**The agents need not share a vendor.** A Claude agent and an Antigravity agent can\nwork the same sprint -- one writes, the other reviews -- so a different model,\nwith different blind spots, checks every change. Cross-provider collaboration is\na built-in quality mechanism, not an afterthought.\n\n\u003e A *member* is one working folder plus one LLM CLI -- local or remote.\n\u003e A fleet is however many of those you register, working in concert.\n\n### Watch a real run (3 min)\n\n[![Apra Fleet -- a doer-reviewer sprint, start to finish](https://img.youtube.com/vi/SGdHvIkSbY8/hqdefault.jpg)](https://youtu.be/SGdHvIkSbY8)\n\nTwo agents ship a feature end to end: one plans and writes, the other reviews,\nfindings loop back, and a clean diff lands -- driven by the **PM skill**. That is\n*one* of the workflows Fleet makes possible; the rest are below.\n\n---\n\n## See it in one example\n\n```\n/pm add 2 local members at c:\\projects cloned from \u003cgit-url\u003e -- a developer and a reviewer -- and pair them\n/pm init project_icarus\n/pm plan ./feature.md\n/pm start the implementation sprint\n/pm status\n```\n\nYou describe the goal, approve the plan once, and Fleet runs the doer-reviewer loop to a reviewed PR.\n\n## Quick start\n\n### Option A -- npm (all platforms, requires Node.js 22+)\n\n```bash\nnpm install -g @apralabs/apra-fleet\napra-fleet install                  # Claude Code (default)\napra-fleet install --llm agy       # Google Antigravity CLI\napra-fleet install --llm gemini    # Gemini CLI\napra-fleet install --llm codex     # OpenAI Codex CLI\napra-fleet install --llm opencode  # OpenCode (local/self-hosted models)\n```\n\nRun `install` once per provider you want to support. After install, load the\nserver in Claude Code using `/mcp`, or restart your CLI for other providers.\n\n### Option B -- standalone binary (no Node.js required)\n\nCopy-paste the one-liner for your platform:\n\n**macOS (Apple Silicon)**\n```bash\ncurl -fsSL https://github.com/Apra-Labs/apra-fleet/releases/latest/download/apra-fleet-installer-darwin-arm64 -o apra-fleet-installer \u0026\u0026 chmod +x apra-fleet-installer \u0026\u0026 ./apra-fleet-installer install\n```\n\n**Linux (x64)**\n```bash\ncurl -fsSL https://github.com/Apra-Labs/apra-fleet/releases/latest/download/apra-fleet-installer-linux-x64 -o apra-fleet-installer \u0026\u0026 chmod +x apra-fleet-installer \u0026\u0026 ./apra-fleet-installer install\n```\n\n**Windows (x64)** -- run in PowerShell:\n```powershell\nInvoke-WebRequest -Uri https://github.com/Apra-Labs/apra-fleet/releases/latest/download/apra-fleet-installer-win-x64.exe -OutFile apra-fleet-installer.exe; .\\apra-fleet-installer.exe install\n```\n\n\u003e Installing for **Antigravity**, Codex, Copilot, Gemini, or **OpenCode** instead of\n\u003e Claude? Add the `--llm` flag -- see\n\u003e [Install for other providers](docs/install.md#install-for-other-providers-antigravity-codex-copilot-gemini).\n\nThen load it in your favorite LLM CLI (claude, agy, gemini, ...) using `/mcp`.\n\nNow register your first members:\n\n\u003e \"Register a local member called `doer`. Register another called `reviewer`.\n\u003e Pair them.\"\n\nVerify it worked:\n\n\u003e \"Show me fleet status.\"\n\nYou should see both members listed with status online or idle.\n\nAdd remote machines whenever you are ready:\n\n\u003e \"Register 192.168.1.10 as `build-server`. Username akhil, work folder\n\u003e `/home/akhil/projects/myapp`.\"\n\nFleet securely collects the machine's password out-of-band -- you type it into a\nseparate terminal, never the chat -- uses it once to set up SSH key-based auth,\nthen forgets it. Every connection after that is key-based.\n\nIntel Mac users: build from source -- see [Development](#development).\nInstall details (what it writes, the `--skill` flag, uninstall) are in\n[docs/install.md](docs/install.md).\n\n**Staying current is one command.** `apra-fleet update` checks GitHub for the\nlatest release and installs it in place -- or tells you that you are already up\nto date. See [keeping Fleet updated](docs/features/update.md).\n\n## How it works\n\n```mermaid\nsequenceDiagram\n    actor You\n    participant PM as PM (orchestrator)\n    participant Doer\n    participant Reviewer\n    You-\u003e\u003ePM: \"Add a note sharing system, have it reviewed\"\n    loop Plan: revise until the reviewer signs off\n        PM-\u003e\u003eDoer: draft / revise the plan\n        Doer--\u003e\u003ePM: plan\n        PM-\u003e\u003eReviewer: review the plan\n        Reviewer--\u003e\u003ePM: rejected with fixes, or signed off\n    end\n    PM--\u003e\u003eYou: plan for approval\n    You--\u003e\u003ePM: approved\n    loop Build: revise until the review is clean\n        PM-\u003e\u003eDoer: execute / fix the task\n        Doer-\u003e\u003eDoer: write code, commit, reach checkpoint\n        PM-\u003e\u003eReviewer: review the changes\n        Reviewer--\u003e\u003ePM: findings, or signed off\n    end\n    PM--\u003e\u003eYou: reviewed code + PR\n```\n\nA sprint runs in two reviewed phases: the **plan** is drafted, reviewed, and\napproved by you before any code is written; then the **build** is executed and\nevery phase of development is reviewed against all the project documents\n(requirements, plan, design, etc.). The PM orchestrator talks to members through Fleet's MCP\ntools; Fleet carries the work to each member -- locally as a child process, or\nremotely over SSH. Agents sync state through git (`PLAN.md`, `progress.json`,\n`feedback.md`), so progress survives restarts.\n\n## What you can build on top\n\nFleet is a coordination layer. The **PM skill** is its reference workflow library\nand ships today; the rest are recipes you assemble with the same tools.\n\n| Workflow | What it does | Status |\n|----------|--------------|--------|\n| **Doer / Reviewer** | Two agents pair: one writes, one reviews against a quality bar. | Ships (PM skill) |\n| **Plan / execute / verify** | Break work into steps, approve the plan, agents pause at checkpoints. | Ships (PM skill) |\n| **Pipeline** | Agent A extracts, B transforms, C ships -- handoff by file. | Recipe |\n| **Specialist routing** | Route Python work to a py-agent, Rust to a rust-agent. | Recipe |\n| **Parallel exploration** | Three agents try three approaches; you merge the winner. | Recipe |\n| **Cross-machine** | Build on Linux, test on Windows, deploy from a Mac. | Recipe |\n\nTo write your own skill, see [docs/writing-skills.md](docs/writing-skills.md).\n\n## Use cases\n\n- Run your test suite on a Linux box while you develop on macOS.\n- Have one agent build the frontend, another the backend, a third running tests\n  -- all in parallel.\n- Use a beefy cloud VM for compilation while coding from your laptop.\n- Spin up isolated workspaces on one machine without them stepping on each other.\n- Customer-support triage: agents classify, draft replies, and escalate\n  tickets in parallel.\n- Cost and operations-efficiency analysis: fan out data gathering across\n  sources, consolidate findings.\n- Infrastructure surveys, log triage, and patch fan-out across many\n  machines.\n\n## Cost\n\nMulti-agent tooling raises one question first: does coordinating several agents\nburn more tokens? In practice Fleet works to keep usage down -- and the core\nidea is the one Fleet was built on: **match the model to the task.**\n\nA plan is a list of tasks of widely varying difficulty. Running every one of\nthem on a single premium model is the waste. Instead, Fleet assigns each task a\nmodel tier commensurate with its complexity:\n\n- **cheap** -- boilerplate, status checks, running tests, deploys\n- **standard** -- routine feature work, code, configuration\n- **premium** -- planning, review, hard architectural reasoning\n\nOnly the work that genuinely needs a frontier model gets one; everything else\nruns on a lighter, cheaper tier. Two more mechanisms compound the savings:\n\n- **Shell over prompts** -- routine steps run through `execute_command` as plain\n  shell commands, which cost zero LLM tokens.\n- **Smart sessions** -- Fleet decides whether to resume an existing session\n  (reusing cached context) or start fresh, rather than re-sending history.\n\n**Token spend is measured, not estimated.** Fleet records token usage per\nmember and per role -- PM, doer, reviewer -- so a team can see and analyze\nwhere their spend actually goes. Fleet's end-to-end CI suite exercises this\nin full: a complete reviewed sprint -- discover issues, plan, doer-reviewer\nloop, PR raised with green CI -- emits a per-role token breakdown (in one\nsuch run: PM ~6K, doer ~191K, reviewer ~19K, ~215K total). Those toy-repo\nfigures are not a benchmark -- they show the measurement method works end\nto end. The point is the instrument: Fleet makes token cost something you\ncan attribute and reason about, not guess at.\n\nSetup is a one-time cost; the recurring cost is the work itself. See the\n[FAQ](docs/FAQ.md) for the full breakdown.\n\n## Compare to alternatives\n\n| Tool | Overlap | Where Fleet differs |\n|------|---------|---------------------|\n| Single-agent coding assistants | AI writes code | Fleet adds a second agent that reviews before you do. |\n| CI self-hosted runners | Runs work on other machines | Fleet is conversational and stateful, not pipeline-triggered. |\n| SkyPilot / dstack | Multi-machine compute | Fleet coordinates *agents and their context*, not just jobs. |\n| Google A2A | Agent-to-agent messaging | Fleet is an opinionated workflow layer, not just a transport. |\n\nWhen *not* to use Fleet: a one-off single-file change needs no second agent.\n\n## Mix providers in one fleet\n\nEvery member runs its own LLM backend, and they collaborate across vendors. Put\na Claude doer with an Antigravity reviewer, or the reverse - the reviewer's model\ndisagrees with the doer's by construction, so it catches issues a same-model\nreview would wave through. Mix by role:\n\n| Role | Recommended | Why |\n|------|-------------|-----|\n| PM (orchestrator) | Claude Code or Antigravity (agy) | Both plan and orchestrate well - both support planning, background tasks, and premium models (e.g., Opus / premium-tier). |\n| Doer | Any provider | Sonnet, Antigravity, Codex, Copilot, Gemini, OpenCode - mix freely. |\n| Reviewer | Premium-tier models | Catches subtle issues smaller models miss. |\n\nA fleet that has run in production:\n\n```\npm-1      Opus 4.7        orchestrator\ndoer-1    Sonnet 4.6      feature work\ndoer-2    Antigravity     large-context tasks\nreviewer  Opus 4.7        final review\n```\n\n**OpenCode and local models.** OpenCode works with any OpenAI-compatible\nendpoint (Ollama, vLLM, etc.), so it is the provider for self-hosted models.\nThe model endpoint is the user's responsibility -- Fleet installs the CLI and\nagents but does not provision or manage the inference server. Configure the\nprovider and base URL in `opencode.json`; see\n[docs/opencode-exploration.md](docs/opencode-exploration.md) for details.\n\nBecause OpenCode members can run any model, model tiers (cheap / standard /\npremium) are set per member at registration via `model_tiers` in\n`register_member`. A single-model entry fills all three tiers.\n\nProvider strengths, role recommendations, and gotchas:\n[docs/provider-guide.md](docs/provider-guide.md).\n\n## The PM skill\n\nThe **PM skill** is Fleet's reference workflow for **software development**\n-- it ships today, fully built out. It is one skill on a general\nsubstrate: the same primitives -- members, tasks, git/SSH transport,\ndoer-reviewer pairing -- coordinate agents for support triage, cost\nanalysis, ops surveys, or any multi-agent job. PM is the worked example;\nthe platform is the point.\n\nThe Project Manager skill is installed by default and drives structured,\nmulti-step work: planning with your approval, doer-reviewer loops, verification\ncheckpoints, and git-synced progress. Task state persists across sessions via\n[**Beads**](docs/beads.md), the bundled open-source issue tracker (`bd` CLI, installed alongside Fleet) -- run `bd ready` any time to see\nwhat is in flight.\n\n| Command | Does |\n|---------|------|\n| `/pm init \u003cproject\u003e` | Initialize a project folder and templates. |\n| `/pm pair \u003cmember\u003e \u003cmember\u003e` | Pair a doer with a reviewer. |\n| `/pm plan \u003crequirement\u003e` | Draft a plan for your approval. |\n| `/pm start \u003cmember\u003e` | Begin execution; dispatches doer with plan and task harness. |\n| `/pm status \u003cmember\u003e` | Check in-flight tasks, progress, and git log. |\n| `/pm resume \u003cmember\u003e` | Resume after a verification checkpoint. |\n| `/pm deploy \u003cmember\u003e` | Execute the project deployment runbook. |\n| `/pm recover \u003cproject\u003e` | Re-orient after a PM restart; reads in-flight tasks and member state. |\n| `/pm cleanup \u003cproject\u003e` | Finish the sprint, close tasks, and raise a PR. |\n| `/pm backlog` | Query and manage deferred items via Beads. |\n| `/pm tasks` | Show the current sprint task tree. |\n| `/auto-sprint` | Run a fully automated sprint loop with cost accounting. |\n\nSee [skills/pm/SKILL.md](skills/pm/SKILL.md) for the full command reference.\n\n**Cost accounting.** When PM is installed, the installer also writes `cost.js`\nto the PM skill directory for every provider. `cost.js` exports the seven pure\ncost-computation functions (`computeSprintQuote`, `computeSprintAnalysis`,\n`buildSprintSummary`, etc.) extracted from the `auto-sprint.js` workflow. For\nClaude, the full `auto-sprint.js` is also copied to `~/.claude/workflows/` and\n`Skill(auto-sprint)` / `Workflow(auto-sprint)` are added to the allow-list\nautomatically. See [docs/features/auto-sprint-install.md](docs/features/auto-sprint-install.md).\n\nWant to build your own skill on top of Fleet? See [docs/writing-skills.md](docs/writing-skills.md).\n\n## Documentation\n\n| Topic | Link |\n|-------|------|\n| Codebase wiki (architecture, internals, AI Q\u0026A) | [DeepWiki](https://deepwiki.com/Apra-Labs/apra-fleet) |\n| Install, uninstall, the `--llm` flag | [docs/install.md](docs/install.md) |\n| Choosing a provider | [docs/provider-guide.md](docs/provider-guide.md) |\n| FAQ | [docs/FAQ.md](docs/FAQ.md) |\n| Troubleshooting | [docs/troubleshooting.md](docs/troubleshooting.md) |\n| Keeping Fleet updated (`apra-fleet update`) | [docs/features/update.md](docs/features/update.md) |\n| Secure credentials and passwords | [docs/features/oob-auth.md](docs/features/oob-auth.md) |\n| Enabling SSH on a remote machine (if it does not have it yet) | [docs/ssh-setup.md](docs/ssh-setup.md) |\n| Git authentication | [docs/design-git-auth.md](docs/design-git-auth.md) |\n| Cloud compute | [docs/cloud-compute.md](docs/cloud-compute.md) |\n| Architecture | [docs/architecture.md](docs/architecture.md) |\n\n## Community\n\n- Questions and ideas: [GitHub Discussions](https://github.com/Apra-Labs/apra-fleet/discussions)\n- Releases: [GitHub Releases](https://github.com/Apra-Labs/apra-fleet/releases)\n- Issues: [GitHub Issues](https://github.com/Apra-Labs/apra-fleet/issues)\n- What is planned next: [ROADMAP.md](ROADMAP.md)\n\nIf Apra Fleet helped you ship faster with better quality, please\n[star the repo](https://github.com/Apra-Labs/apra-fleet) -- it helps others\nfind it.\n\n## Development\n\nBuild from source (also the path for Intel Macs):\n\n```bash\ngit clone https://github.com/Apra-Labs/apra-fleet \u0026\u0026 cd apra-fleet\nnpm install \u0026\u0026 npm run build \u0026\u0026 npm test\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) to contribute.\n\n## License\n\nApache 2.0 -- see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapra-labs%2Fapra-fleet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapra-labs%2Fapra-fleet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapra-labs%2Fapra-fleet/lists"}