Skip to content

OpenStaticFish/bouncer

Repository files navigation

Bouncer

npm version CI License: MIT

A terminal UI for managing GitHub branch protection rules across multiple repositories.

Bouncer Screenshot

Features

  • 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 - --local mode detects current git repo automatically

Requirements

Installation

# Install globally with bun
bun install -g @openstaticfish/bouncer

# Or run directly
bunx @openstaticfish/bouncer

Quick Start

# Launch the TUI
bouncer

# Skip org selection, use current repo
bouncer --local

Keyboard Shortcuts

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

Workflow

  1. Select Organization - Choose from your GitHub orgs or personal account
  2. Select Repositories - Pick one or more repos to protect
  3. Select Branch - Choose the branch to protect (e.g., main, master)
  4. Edit Protection - Configure settings in the visual editor
  5. Preview & Apply - Review changes and apply

Configuration

Templates and logs are stored in:

~/.config/bouncer/
├── templates/        # Saved protection templates
│   ├── basic.json
│   ├── strict.json
│   └── ...
└── apply.log         # History of applied protections

Default Templates

Template Description
basic Requires 1 PR approval, conversation resolution
strict 2 approvals, code owners, admin enforcement
unprotected No PR required, allows force pushes

Screenshots

Organization Selector

Org Selector

Branch Protection Editor

Editor

Template Manager

Templates

Development

# 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 .

API Reference

The GitHub API interactions are handled via the gh CLI. Ensure you're authenticated:

gh auth login
gh auth status

Contributing

Contributions are welcome! Please read our contributing guidelines before submitting PRs.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

MIT © OpenStaticFish

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors