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



