A terminal UI for managing GitHub branch protection rules across multiple repositories.
- Interactive TUI - Navigate organizations, repos, and branches with keyboard
- Visual Editor - Toggle protection settings with live preview
- Templates - Save and reuse protection configurations
- Bulk Apply - Apply the same rules to multiple repos/branches at once
- CI Integration - Auto-discovers CI job names for required status checks
- Local Detection -
--localmode detects current git repo automatically
- Bun >= 1.0
- GitHub CLI (
gh) authenticated with repo access
# Install globally with bun
bun install -g @openstaticfish/bouncer
# Or run directly
bunx @openstaticfish/bouncer# Launch the TUI
bouncer
# Skip org selection, use current repo
bouncer --local| Key | Action |
|---|---|
↑/↓ |
Navigate |
Enter |
Select / Toggle |
Space |
Toggle selection (multi-select) |
Tab |
Next field |
Ctrl+A |
Apply protection |
Esc |
Back / Cancel |
t |
Templates screen |
s |
Save as template |
- Select Organization - Choose from your GitHub orgs or personal account
- Select Repositories - Pick one or more repos to protect
- Select Branch - Choose the branch to protect (e.g.,
main,master) - Edit Protection - Configure settings in the visual editor
- Preview & Apply - Review changes and apply
Templates and logs are stored in:
~/.config/bouncer/
├── templates/ # Saved protection templates
│ ├── basic.json
│ ├── strict.json
│ └── ...
└── apply.log # History of applied protections
| Template | Description |
|---|---|
basic |
Requires 1 PR approval, conversation resolution |
strict |
2 approvals, code owners, admin enforcement |
unprotected |
No PR required, allows force pushes |
# Clone the repo
git clone https://github.com/OpenStaticFish/bouncer.git
cd bouncer
# Install dependencies
bun install
# Run locally
bun run cli.ts --local
# Run tests
bun test
# Type check
bun run typecheck
# Lint
bunx biome check .The GitHub API interactions are handled via the gh CLI. Ensure you're authenticated:
gh auth login
gh auth statusContributions are welcome! Please read our contributing guidelines before submitting PRs.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
MIT © OpenStaticFish



