Skip to content

mthines/mainline

Repository files navigation

mainline-logo

Mainline

A lightweight macOS menu bar app that keeps you on top of your GitHub pull requests.

PR view made simple, focused and always available.

CI macOS 13+ License: MIT

Mainline lives in your menu bar and watches the pull requests you care about — the ones you opened and the ones waiting on your review. It notifies you when something changes: a PR turns green, a review lands, or CI breaks. It groups every PR by what needs your attention, and lets you approve, merge, or snooze straight from the keyboard. No browser tabs, no refreshing GitHub by hand.

Jump to: Install · Get started · Features · Screenshots · Docs

Install

Mainline is distributed through a Homebrew tap.

brew tap mthines/mainline
brew install --cask mainline

Then open Mainline from Spotlight or your Applications folder. A menu bar icon appears — click it to open the panel.

Install a beta build

Beta builds are published on demand: comment /beta on a pull request to cut a beta from it.

brew tap mthines/mainline

# Latest beta
brew install --cask --force mthines/mainline/mainline-beta

# A specific pinned beta version
brew install --cask --force mthines/mainline/mainline-beta@1.2.3-beta.42.1

--force is required because beta and stable share /Applications/Mainline.app. To roll back to stable: brew install --cask --force mthines/mainline/mainline.

Requirements: macOS 13 Ventura or later, and a GitHub account.

Get started

Mainline needs a GitHub token to read your pull requests. Pick whichever option fits how you already work.

Import from the GitHub CLI (easiest)

If you use the GitHub CLI and have run gh auth login, open Mainline Settings and click Import from gh. Mainline reuses your existing gh token, which is already authorized for any SAML SSO organizations you belong to.

Use a personal access token

  1. Go to GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic).
  2. Grant the repo and read:org scopes.
  3. If any of your PRs live in an organization that enforces SAML SSO, click Configure SSO on the token and authorize it for that org — otherwise GitHub silently returns no results for those repos.
  4. Open Mainline Settings and paste the token.

Note: a fine-grained token with only "read" access is usually not enough for org repos. Prefer a classic token with repo + read:org, or use Import from gh.

Your token is stored in the macOS Keychain — never in a plain file or in app preferences.

Features

A curated set of relevant PR's in your Inbox, or dedicated For me / Created tabs.

Not relevant, hover and press Q. For later, press S.

image

Stay notified

  • New PR — fires a notification when a new PR appears in your search queries.
  • Ready for review — notifies when a draft PR becomes ready, or when you're added as a reviewer.
  • CI status changed — fires when CI passes or fails on any tracked PR.
  • New review or comment — notifies when a review or comment is added (human comments only, by default — bot noise is filtered).
  • Per-event attention levels — set each event type to a loud or quiet notification independently.

Cut through the noise

  • Inbox tab — a unified view of every PR you opened or are asked to review, split into "Needs your review" and "Your PRs". Four configurable mute rules keep automated noise out: glob patterns matched against PR title and branch, bot-author detection (dependabot, renovate, …), label filtering, and a review-focus allow-list. Muted PRs collapse into a "Muted / low-priority" group at the bottom rather than disappearing entirely.

Triage fast

  • Menu bar panel — click the icon to see your PRs grouped by actionability (Needs attention, Ready to merge, Waiting, …), each with CI status.
  • Keyboard triage — drive the whole panel from the keyboard: J/K to move, Space to peek, to open, M to merge, S to postpone, E to open the preview, N to mark seen, X to dismiss, V for multi-select, D to toggle drafts, Q to mute (Inbox), R to refresh, ⌘Z to undo. Every key is rebindable in Settings → Keyboard.
  • PeekSpace opens a glance card with the PR's changed-files list.
  • Row menu — right-click any PR for every action, including approve and request changes.
  • Global shortcut — open Mainline from any app with a system-wide hotkey (default ⇧⌃ + the key left of 1; customizable in Settings).
  • Scope filter — narrow the panel and badge to a single org or repo.

See the keyboard reference for the full list and how to rebind.

Act (optional, off by default)

  • Write actions — approve, merge, or request changes without leaving the menu bar (each behind a confirmation; enable in Settings). See Write actions.

Configure and secure

  • Configurable polling — default 30s interval; adjustable in Settings (30s – 3600s).
  • Custom search queries — default is:open is:pr author:@me and is:open is:pr review-requested:@me.
  • Keychain storage — your token is stored securely in the macOS Keychain; never in app preferences or on disk.
  • Opt-in telemetry — anonymous usage data is off by default; enable it in Settings → Privacy (see docs/telemetry.md).

Screenshots

Settings

Mainline Settings window showing token import, notification toggles, and the global shortcut recorder

Inbox

image

Keyboard

image

Help

image

For developers

Mainline is a native SwiftUI app. To build it from source:

git clone https://github.com/mthines/mainline.git
cd mainline
xcodebuild -scheme Mainline -configuration Debug -destination "platform=macOS" build

The built app lands in ~/Library/Developer/Xcode/DerivedData/Mainline-*/Build/Products/Debug/Mainline.app. Building requires Xcode 15+.

Releases run through GitHub Actions: a push to main publishes a stable build automatically, and commenting /beta on a pull request publishes a beta on demand (PRs otherwise run a compile-only smoke check). For code signing, notarization, the release pipeline, and Homebrew tap internals, see docs/release.md.

License

MIT — see LICENSE.

About

Mainline — a lightweight native macOS menu bar app that notifies you about your GitHub pull requests

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages