A GitHub CLI extension that streamlines the review and merge workflow for automated dependency update PRs.
- 🖥️ Interactive TUI: Full-featured terminal UI with keyboard navigation and live settings adjustment
- 📋 List dependency PRs by label/author with clean table output
- 📦 Group PRs by package@version for easier batched review
- ✅ Bulk approve all PRs for a chosen group
- 🚀 Bulk merge per group via:
- Dependabot mode: Post @dependabot merge comments (respects CI checks)
- API mode: Direct GitHub Merge API calls (with optional CI validation)
- 🏢 Multi-repo support: Target specific repos or entire organizations
- 🔄 Works out-of-the-box with Dependabot and Renovate
- 🎨 Multiple output formats: Human-readable tables or JSON
- ⚙️ Configuration support: Save default repos and custom patterns via gh config
- 🎯 Custom patterns: Define your own PR title patterns for grouping
- GitHub CLI (gh) version 2.x or later
- Go 1.21 or later (for building from source)
In the TUI, you can:
- Navigate with ↑/↓ or j/k
- Select PRs with space or a (select all)
- Toggle action mode with m (Approve → Merge → Approve & Merge)
- Adjust merge settings on-the-fly:
- M - Toggle merge method (squash → merge → rebase)
- D - Toggle merge mode (dependabot → api)
- c - Toggle CI checks requirement
- Search PRs with /
- Open current PR in browser with o
- Execute selected actions with x
- View help with ?
Launch an interactive terminal UI for managing dependency PRs with:
- Multi-select: Use space to toggle, a to select all, d to deselect all
- Navigation: ↑/↓ or j/k to move, o to open PR in browser
- Search: Press / to filter PRs by title, repo, or number
- Live Settings: Toggle execution mode and merge settings without restarting
- m - Action mode (Approve → Merge → Approve & Merge)
- M - Merge method (squash → merge → rebase)
- D - Merge mode (dependabot → api)
- c - CI checks requirement
- Execute: Press x to run selected actions with real-time feedback
- Help: Press ? to view all keyboard shortcuts
Flags:
- --author - PR author to filter (default: dependabot[bot], use any for all)
- --label - PR label to filter
- --limit - Max PRs to fetch per repo (default: 200)
- --repo / -R - Target repo(s), comma-separated
- --owner - Target all repos in an organization
- --merge-method - Initial merge method (default: squash)
- --merge-mode - Initial merge mode (default: dependabot)
- --require-checks - Initial CI checks setting
Examples:
Flags:
- --label - PR label to filter
- --author - PR author to filter (default: dependabot[bot], use any for all)
- --group - Group PRs by package@version and cache results
- --json - Output as JSON
- --limit - Max PRs to fetch per repo (default: 200)
- --repo / -R - Target repo(s), comma-separated (e.g., owner/repo1,owner/repo2)
- --owner - Target all repos in an organization
Flags:
- --json - Output as JSON
Shows the groups from the last list --group command without fetching from GitHub.
Flags:
- --group - Required. Group key (e.g., [email protected])
- --dry-run - Print actions without executing
- --repo / -R - Target repo(s) (uses cache if omitted)
- --org / -O - Target organization (uses cache if omitted)
Flags:
- --group - Required. Group key (e.g., [email protected])
- --mode - Merge mode: dependabot or api (default: dependabot)
- --method - Merge method: merge, squash, or rebase (default: squash)
- --require-checks - Require CI checks to pass before merging (API mode only)
- --dry-run - Print actions without executing
Examples:
Save default configuration to avoid passing flags every time:
When flags are not provided, gh dep will use these defaults.
Posts @dependabot merge comments. Dependabot handles:
- Waiting for CI checks
- Respecting branch protections
- Auto-rebasing if needed
Use when: You want Dependabot to control the merge process.
Calls GitHub's Merge API directly.
Use when: You want immediate merges and have permissions to bypass protections.
Tip: Use --require-checks to validate CI status before merging:
The tool automatically parses titles from:
- Bump <pkg> from X to Y
- chore(deps): bump <pkg> from X to Y
- Update <pkg> to vY
- Update dependency <pkg> to vY
- chore(deps): update <pkg> to vY
Define your own patterns via gh config:
Pattern requirements:
- Must be valid regex
- Must have exactly 2 capture groups: (package) and (version)
- Multiple patterns can be comma-separated
Example custom patterns:
Unknown titles are grouped as unknown@unknown for manual review.
Groups are cached at:
Cache is overwritten on each list --group execution.
Default output uses GitHub CLI's table formatter for clean, aligned columns:
Use --json for machine-readable output:
Contributions welcome! Please:
- Fork the repository
- Create a feature branch
- Add tests for new functionality
- Ensure go test ./... passes
- Submit a pull request
MIT License - see LICENSE for details.
Built with:
- GitHub CLI
- go-gh - Official GitHub CLI library and table formatter
- Cobra - CLI framework
- Bubble Tea - TUI framework
- Bubbles - TUI components
- Lipgloss - TUI styling
Made with ❤️ for dependency management automation
.png)



