Your migration script runs in minutes. The PRs take months.
Banshee is the orchestration layer for code changes at scale — define changes as YAML, bash, or AI prompts, execute across hundreds of GitHub repos, and manage the full PR lifecycle from creation through auto-merge.
| Repository | Team | Status | Reviewers | Updated |
|---|---|---|---|---|
| payments-api | @payments | Merged | 2 approved | 2h ago |
| user-service | @identity | In review | reminder sent | 4h ago |
| notification-engine | @comms | CI running | — | 12m ago |
| order-processor | @commerce | Conflict | escalated | 1d ago |
You've already automated the easy part
Your sed script or AI tool generates the diff in seconds. Then reality hits. Spotify found that their "simple" Maven dependency updater grew to over 20,000 lines of code. Airbnb estimated their test migration would take 1.5 years manually. The bottleneck isn't generating the change — it's herding the PRs to completion.
Week 1 — "Quick script, easy migration"
You write a bash loop. It hits 5 repos. Works great. You write it for the other 295. GitHub's undocumented secondary rate limits suspend your API access for two hours. You add retry logic.
2 hours → half a dayWeek 3 — "I need a spreadsheet"
300 PRs are open. You can't tell which passed CI, which are waiting on review, and which got merge conflicts overnight. You start a Google Sheet. The UK Government Digital Service built a custom tool called "the Seal" just for this problem. Your Sheet is already stale.
4 hours/week just tracking statusWeek 6 — "Hey, can someone review this?"
You're pinging reviewers on Slack daily. Dependabot security patches see just 13% adoption in JS projects. One team says they'll "get to it next sprint." Migration is 60% done and momentum is dying. You are now a project manager.
8 hours/week chasing reviewersMonth 3 — "It was supposed to take two weeks"
82% complete. The remaining 18% are the hard ones — teams that never respond, repos with weird branch protections, CI pipelines that flake. 64% of internal platform tooling investments fail at exactly this point. Your manager asks for a status update. You open the spreadsheet.
3 months and countingThe orchestration layer between your change tool and merged code
Your platform team manages infrastructure declaratively with Terraform and rolls out deployments progressively with Argo CD. Code changes deserve the same operational maturity.
Four things no other tool does well
Sourcegraph creates changesets. Moderne runs recipes. Renovate bumps dependencies. None of them solve what happens after the PRs are open.
Batch execution with gradual rollout
Define rollout cohorts by team, risk level, or repo attributes. Start with 10 low-risk repos, validate CI passes, expand to 50, then go org-wide. Uber found that 0.3% of weekly commits affect 1,000+ services — blast radius control matters.
name: spring-boot-3-migration targets: topic: java exclude: archived steps: - run: ./scripts/upgrade-spring.sh - ai: "Update deprecated API calls to Boot 3.x equivalents" rollout: gradual # batch | gradual | scheduled batch_size: 25 pause_on_failure: true
Review reminders that actually get PRs merged
Automated review prompts to CODEOWNERS, teams, and individuals — with configurable escalation paths, reminder cadences, and reviewer response time tracking. No competitor (Sourcegraph, Moderne, or Codemod) sends proactive review reminders. They track status — they don't actively nudge.
Campaign dashboard that kills the spreadsheet
Real-time rollout progress: merged, in review, CI failing, blocked, not started. Filter by team, repo, status, or cohort. Export for stakeholder updates. GitHub has no native cross-repo tracking — practitioners built custom Actions just to link PRs, describing workarounds as "terrible."
AI-orchestrated, governance-first
The platform orchestrates external AI tools (Claude Code, Copilot) without coupling to any specific engine. 75% of technology leaders expect technical debt to rise as AI-generated code increases. Teams need AI leverage without losing control. You define prompts — we manage what happens after: PR creation, review, compliance, merge.
Install a GitHub App. Run your first campaign in minutes.
$ cat change.yaml # No proprietary DSL. Just YAML. name: eslint-v9-upgrade steps: - run: npx @eslint/migrate - ai: fix remaining issues reviewers: from-codeowners
Write a change spec
YAML, bash, or AI prompts. Formats you already know — no GritQL, no OpenRewrite recipes, no proprietary DSL.
$ banshee run eslint-v9 \ --target topic:frontend \ --rollout gradual \ --batch 25 ✓ 25/142 repos queued (cohort 1) ✓ PRs opening... ✓ Reviewers assigned from CODEOWNERS
Target and roll out
Filter by topic, team, language, or custom query. Batch, gradual rollout, or scheduled. GitHub App handles auth — no PATs.
━━━━━━━━━━━━━━━━━━━━━━ 89% 126 merged auto-merge ✓ 9 in review reminders sent 4 CI failing retrying 3 blocked escalated to leads
Monitor, merge, done
Auto-merge when CI passes. Reminders for stale reviews. Escalation for blocked PRs. Notified on exceptions, not noise.
"Why not just use…?"
Fair question. Here's where each alternative stops and where banshee starts.
Scripts work great for 10 repos. Then you hit GitHub's undocumented rate limits that suspend API access for hours, zero PR lifecycle tracking, no error recovery when repo 47 of 200 fails, and the maintenance burden of handling CODEOWNERS, merge conflicts, and branch protection edge cases. Spotify's "simple" Maven updater grew to 20,000+ lines. The tipping point is ~200 repos or when migrations become recurring.
Batch Changes is capable — YAML spec, burndown charts, bulk merge. But it requires deploying a full Sourcegraph instance (code search, indexing, server infrastructure), has $88K median annual contracts, and its PR lifecycle management is passive — dashboards but no active follow-up, no review reminders, no gradual rollout scheduling. Also: Sourcegraph went fully proprietary in 2024.
Both are excellent at dependency version bumps — and free. Use them for that. But they can't migrate a framework, apply a codemod, update an internal API, or enforce a coding standard. They also lack cross-repo campaign tracking. Use Renovate for dependency updates. Use banshee for everything else — and to manage the lifecycle of all your cross-repo changes in one place.
Built for the teams that maintain everyone else's tools
Platform engineers and DevX teams describe this work as "tedious," "a nightmare," and "a pain in the ass." This product exists because we lived it.
"We automated the migration itself in a weekend. Herding 400 PRs through review took three months and most of my sanity."
"We didn't get faster. We just moved the traffic jam from 'generating diffs' to 'landing changes.' The spreadsheet is the new bottleneck."
"Bot PRs created a social expectation upon the owners to thoroughly vet every change, and became a major bottleneck."
Pricing that scales with your fleet
Anchored on repositories managed. All plans include full feature access — we gate by scale, not capabilities.
- Full campaign execution
- PR lifecycle automation
- AI tool orchestration
- Rollout dashboard
- 3 team members
- Community support
- Everything in Starter
- Gradual rollout & scheduling
- Review reminders & escalation
- Auto-merge orchestration
- 15 team members (unlimited viewers)
- Slack notifications
- Email support
- Everything in Team
- Custom approval workflows
- API access & webhooks
- Audit logs & team RBAC
- Unlimited users
- Priority support with SLA
- Everything in Business
- SSO / SAML / SCIM
- Dedicated instance option
- GHES support
- Compliance reporting
- Dedicated CSM
- Custom integrations
Your next org-wide migration doesn't have to take months
Install the GitHub App, define a change spec, and run your first campaign in under 10 minutes. Free for up to 5 repos — no credit card required.
Questions? Email hello@bansheeapp.com — I reply to everything.