AI agent teams for any project. A team that grows with your code.
Squad gives you an AI development team through GitHub Copilot. Describe what you're building. Get a team of specialists β frontend, backend, tester, lead β that live in your repo as files. They persist across sessions, learn your codebase, share decisions, and get better the more you use them.
It's not a chatbot wearing hats. Each team member runs in its own context, reads only its own knowledge, and writes back what it learned.
mkdir my-project && cd my-project
git initnpx github:bradygaster/squadcopilot
Select Squad (vX.Y.Z) from the /agents list, then:
I'm starting a new project. Set up the team.
Here's what I'm building: a recipe sharing app with React and Node.
Squad proposes a team β each member named from a persistent thematic cast. You say yes. They're ready.
Squad doesn't work on a human schedule. When you give a task, the coordinator launches every agent that can usefully start β simultaneously. Frontend, backend, tests, architecture β all at once.
You: "Team, build the login page"
ποΈ Lead β analyzing requirements... β€
βοΈ Frontend β building login form... β₯ all launched
π§ Backend β setting up auth endpoints... β₯ in parallel
π§ͺ Tester β writing test cases from spec... β₯
π Scribe β logging everything... β¦
When agents finish, the coordinator immediately chains follow-up work β tests reveal edge cases, the backend agent picks them up, no waiting for you to ask. If you step away, a breadcrumb trail is waiting when you get back:
decisions.mdβ every decision any agent made, merged by Scribeorchestration-log/β what was spawned, why, and what happenedlog/β full session history, searchable
Knowledge compounds across sessions. Every time an agent works, it writes lasting learnings to its history.md. After a few sessions, agents know your conventions, your preferences, your architecture. They stop asking questions they've already answered.
| π± First session | πΏ After a few sessions | π³ Mature project | |
|---|---|---|---|
| βοΈ Frontend | Project structure, framework choice | Component library, routing, state patterns | Design system, perf patterns, a11y conventions |
| π§ Backend | Stack, database, initial endpoints | Auth strategy, rate limiting, SQL preferences | Caching layers, migration patterns, monitoring |
| ποΈ Lead | Scope, team roster, first decisions | Architecture trade-offs, risk register | Full project history, tech debt map |
| π§ͺ Tester | Test framework, first test cases | Integration patterns, edge case catalog | Regression patterns, coverage gaps, CI pipeline |
| π Scribe | First session logged | Cross-team decisions propagated | Full searchable archive of every session and decision |
| π Ralph | Board check after first batch | Auto-triage, CI monitoring | Continuous backlog processing, zero idle time |
Each agent's knowledge is personal β stored in its own history.md. Team-wide decisions live in decisions.md, where every agent reads before working. The more you use Squad, the less context you have to repeat.
And it's all in git. Anyone who clones your repo gets the team β with all their accumulated knowledge.
Each agent gets its own context window. The coordinator is thin. Each agent loads only its charter + history. No shared bloat.
graph TB
U["π§βπ» You"] -->|"Team, build the login page"| C["GitHub Copilot"]
subgraph team [" π’ The Team "]
direction LR
A["ποΈ Lead"]
K["βοΈ Frontend"]
R["π§ Backend"]
T["π§ͺ Tester"]
end
C -->|spawns| A
C -->|spawns| K
C -->|spawns| R
C -->|spawns| T
C -.->|silent| S["π Scribe"]
C -.->|monitors| RL["π Ralph"]
subgraph memory [" π§ Shared Memory "]
direction LR
D["decisions.md"]
L["log/"]
end
A & K & R & T -->|read & write| D
S -->|merges & logs| D
S -->|writes| L
A -->|learns| HA["history.md"]
K -->|learns| HK["history.md"]
R -->|learns| HR["history.md"]
T -->|learns| HT["history.md"]
style U fill:#000,color:#fff,stroke:#333
style C fill:#000,color:#fff,stroke:#333
style A fill:#000,color:#fff,stroke:#333
style K fill:#000,color:#fff,stroke:#333
style R fill:#000,color:#fff,stroke:#333
style T fill:#000,color:#fff,stroke:#333
style S fill:#000,color:#fff,stroke:#333
style D fill:#000,color:#fff,stroke:#333
style L fill:#000,color:#fff,stroke:#333
style HA fill:#000,color:#fff,stroke:#333
style HK fill:#000,color:#fff,stroke:#333
style HR fill:#000,color:#fff,stroke:#333
style HT fill:#000,color:#fff,stroke:#333
style team fill:none,stroke:#fff,stroke-width:2px,stroke-dasharray:5 5
style memory fill:none,stroke:#fff,stroke-width:2px,stroke-dasharray:5 5
Real numbers. No hand-waving.
Both Claude Sonnet 4 and Claude Opus 4 have a 200K token standard context window. Each agent runs in its own window, so the coordinator is the only shared overhead.
| What | Tokens | % of 200K context | When |
|---|---|---|---|
| Coordinator (squad.agent.md) | ~13,200 | 6.6% | Every message |
| Agent at Week 1 (charter + seed history + decisions) | ~1,250 | 0.6% | When spawned |
| Agent at Week 4 (+ 15 learnings, 8 decisions) | ~3,300 | 1.7% | When spawned |
| Agent at Week 12 (+ 50 learnings, 47 decisions) | ~9,000 | 4.5% | When spawned |
| Remaining for actual work | ~187,000 | 93%+ | Always |
The coordinator uses 6.6% of context. A 12-week veteran agent uses 4.5% β but in its own window, not yours. That leaves 93%+ of the coordinator's context for reasoning about your code, and each spawned agent gets nearly its entire 200K window for the actual task. Fan out to 5 agents and you're working with ~1M tokens of total reasoning capacity β without paying for a larger model.
| Layer | What | Who writes | Who reads |
|---|---|---|---|
charter.md |
Identity, expertise, voice | Squad (at init) | The agent itself |
history.md |
Project-specific learnings | Each agent, after every session | That agent only |
decisions.md |
Team-wide decisions | Any agent | All agents |
log/ |
Session history | Scribe | Anyone (searchable archive) |
.ai-team/
βββ team.md # Roster β who's on the team
βββ routing.md # Routing β who handles what
βββ decisions.md # Shared brain β team decisions
βββ casting/
β βββ policy.json # Casting configuration
β βββ registry.json # Persistent name registry
β βββ history.json # Universe usage history
βββ agents/
β βββ {name}/ # Each agent gets a persistent cast name
β β βββ charter.md # Identity, expertise, voice
β β βββ history.md # What they know about YOUR project
β βββ {name}/
β β βββ charter.md
β β βββ history.md
β βββ scribe/
β βββ charter.md # Silent memory manager
βββ log/ # Session history
Commit this folder. Your team persists. Names persist. Anyone who clones gets the team β with the same cast.
> I need a DevOps person.
Squad generates a new agent, seeds them with project context and existing decisions. Immediately productive.
> Remove the designer β we're past that phase.
Agents aren't deleted. Their charter and history move to .ai-team/agents/_alumni/. Knowledge preserved, nothing lost. If you need them back later, they remember everything.
Team members with review authority (Tester, Lead) can reject work. On rejection, the reviewer may require:
- A different agent handles the revision (not the original author)
- A new specialist is spawned for the task
The Coordinator enforces this. No self-review of rejected work.
- Per-Agent Model Selection β Cost-first routing: code work gets standard-tier models (claude-sonnet-4.5), non-code tasks use fast/cheap models (claude-haiku-4.5). 16-model catalog with fallback chains.
- Ralph β Work Monitor β Built-in squad member that autonomously processes backlogs. Self-chaining work loop: scan GitHub β spawn agents β collect results β repeat.
- @copilot Coding Agent β GitHub's Copilot agent as a squad member. Three-tier capability profile. Auto-assign with workflow.
- Universe Expansion β 14 β 20 casting universes (Succession, Severance, Lord of the Rings, Attack on Titan, Doctor Who, Monty Python)
- Milestones Rename β "Sprints" β "Milestones" (GitHub-native alignment)
- Test Growth β 92 β 118 tests
- Emoji Fixes β Test suite encoding standardized
- Export & Import CLI β Portable team snapshots for moving squads between repos
- GitHub Issues Mode β Issue-driven development with
ghCLI integration - PRD Mode β Product requirements decomposition into work items
- Human Team Members β Mixed AI/human teams with routing
- Skills System β Earned knowledge with confidence lifecycle
- Tiered Response Modes β Direct/Lightweight/Standard/Full response depth
- Smart Upgrade β Version-aware upgrades with migrations
Squad integrates with GitHub Issues. Label an issue with squad to trigger triage, or assign directly to a member with squad:{name}.
-
Label an issue
squadβ the Lead auto-triages it: reads the issue, determines who should handle it, applies the rightsquad:{member}label, and comments with triage notes. -
squad:{member}label applied β the assigned member picks up the issue in their next Copilot session (or automatically if Copilot coding agent is enabled). -
Reassign β remove the current
squad:*label and add a different member's label.
Labels are auto-created from your team roster via the sync-squad-labels workflow:
| Label | Purpose |
|---|---|
squad |
Triage inbox β Lead reviews and assigns |
squad:{name} |
Assigned to a specific squad member |
squad:copilot |
Assigned to @copilot for autonomous coding agent work |
Labels sync automatically when .ai-team/team.md changes, or you can trigger the workflow manually.
Squad installs three GitHub Actions workflows:
| Workflow | Trigger | What it does |
|---|---|---|
sync-squad-labels.yml |
Push to .ai-team/team.md, manual |
Creates/updates squad:* labels from roster |
squad-triage.yml |
squad label added to issue |
Lead triages and assigns squad:{member} label |
squad-issue-assign.yml |
squad:{member} label added |
Acknowledges assignment, queues for member |
- GitHub Actions must be enabled on the repository
- The
GITHUB_TOKENneedsissues: writeandcontents: readpermissions - For @copilot auto-assign: a classic PAT with
reposcope stored asCOPILOT_ASSIGN_TOKENrepo secret (see setup guide) - For automated issue work: Copilot coding agent must be enabled on the repo
The coordinator checks for open squad:{member} issues at session start and will mention them: "Hey {user}, {AgentName} has an open issue β #42: Fix auth endpoint timeout. Want them to pick it up?"
npx github:bradygaster/squadSee Quick Start for the full walkthrough.
Already have Squad? Update Squad-owned files to the latest version without touching your team state:
npx github:bradygaster/squad upgradeThis overwrites squad.agent.md, .ai-team-templates/, and squad workflow files in .github/workflows/. It never touches .ai-team/ β your team's knowledge, decisions, and casting are safe.
- Experimental β API and file formats may change between versions
- Node 22+ β requires Node.js 22.0.0 or later (
enginesfield enforced) - GitHub Copilot CLI β Squad runs on GitHub Copilot; no other runtimes are supported
- Knowledge grows with use β the first session is the least capable; agents improve as they accumulate history
π£ Experimental β v0.3.0. Contributors welcome.
Conceived by @bradygaster.