A CLI tool for managing GitLab merge requests with intelligent workload analysis and automatic assignment suggestions.
∙ gg my mr
Fetching your merge requests... [done]
4 total, 1 ready-to-merge, 2 stalled
┌─ denchenko/example-repository-1 ──────────────────────────────────────────────────┐
│
│ ISSUE-1 | mvp
│ URL: https://gitlab.com/denchenko/example-repository-1/-/merge_requests/65
│ Assignee: bob
│ Reviewers: None
│ Approvals: None
│ Created: 2025-12-04 12:36:17
│ Updated: 2025-12-05 15:02:32
│
│ [ready-to-merge] ISSUE-2 | fixes
│ URL: https://gitlab.com/denchenko/example-repository-1/-/merge_requests/66
│ Assignee: alice
│ Reviewers: None
│ Approvals: alice
│ Created: 2025-12-05 10:52:28
│ Updated: 2025-12-05 10:52:32
│
│ [stalled] ISSUE-3 | test
│ URL: https://gitlab.com/denchenko/example-repository-1/-/merge_requests/67
│ Assignee: alice
│ Reviewers: None
│ Approvals: None
│ Created: 2025-11-13 14:40:04
│ Updated: 2025-11-14 09:23:22
│
└───────────────────────────────────────────────────────────────────────────────────┘
┌─ denchenko/example-repository-2 ──────────────────────────────────────────────────┐
│
│ [stalled] Draft: ISSUE-4 | new feature
│ URL: https://gitlab.com/denchenko/example-repository-2/-/merge_requests/68
│ Assignee: bob
│ Reviewers: None
│ Approvals: None
│ Created: 2025-08-26 15:31:28
│ Updated: 2025-08-27 16:31:52
│
└───────────────────────────────────────────────────────────────────────────────────┘
Environment:
GG_TOKEN(required) - Your GitLab personal access token withapiscopeGG_TEAM(required) - Comma-separated list of team member usernames (e.g.,user1,user2,user3)GG_BASE_URL(optional) - GitLab instance URL (defaults tohttps://gitlab.com)GG_WEBHOOK_ADDRESS(optional) - Web Hook listen address (defaults to:8080)GG_ISSUE_URL_TEMPLATE(optional) - Template for generating issue URLs. Must contain{{.Issue}}placeholder (e.g.,https://jira.com/browse/{{.Issue}})
The current project, branch, and merge request can be infered from the Git repository you run it in, so most commands work without manually passing these identifiers.
Install:
go install github.com/denchenko/gg/cmd/gg@latestThe CLI provides commands for managing merge requests and analyzing team workload:
gg my mr- Show your personal merge requests with status informationgg my review- Display your review workload (MRs assigned to you or requiring your review)gg my activity- Show your activity events (pushes, comments, MR actions, etc.). Defaults to events from the last working daygg team review- Show team-wide workload overview with active MR counts per membergg mr roulette- Analyze team workload and suggest optimal assignee and reviewer for a merge requestgg mr status- Show detailed status information for a merge requestgg mr browse- Open the merge request for the current git branch in your default browsergg issue browse- Open the issue linked to the current branch's merge request in your default browser
Install:
go install github.com/denchenko/gg/cmd/hook@latestThe webhook server automatically assigns assignees and reviewers to merge requests when they are opened (excluding draft MRs and those already assigned).
The server will start on port 8080 by default and listen for webhooks at /gitlab/hook.
GitLab Webhook Configuration:
- Go to your GitLab project → Settings → Webhooks
- Add a new webhook with URL:
http://your-server:8080/gitlab/hook - Select "Merge request events" trigger
- Save the webhook