A native SwiftUI Git client for macOS 26+. Sign in with GitHub, open local repositories, review diffs, stage, commit, switch branches, and push.
- macOS 26 (Tahoe) or later
- Xcode 26+
- Git (Xcode Command Line Tools or Homebrew)
- A GitHub OAuth App client ID
- Open
GitStage/GitStage.xcodeprojin Xcode. - Complete the one-time OAuth setup below.
- Run the GitStage scheme.
The app uses the App Sandbox (required for Mac App Store distribution). Repository folders must be chosen through the open panel so macOS grants access.
GitStage uses the GitHub OAuth device flow. You need a local secrets file that is not committed to git.
Create GitStage/GitStage/Auth/GitHubAuthSecrets.swift with:
import Foundation
enum GitHubAuthSecrets {
static let clientID = "YOUR_GITHUB_OAUTH_CLIENT_ID"
}Replace YOUR_GITHUB_OAUTH_CLIENT_ID with the client ID from your GitHub OAuth App.
Register an OAuth App at https://github.com/settings/developers (no client secret is needed for device flow).
- Fork and clone the repository.
- Create
GitHubAuthSecrets.swiftas shown above with your OAuth App client ID. - In Xcode, set Signing & Capabilities to your Apple Developer team and update the bundle identifier if needed (
com.divinewton.GitStageis the default). - Build and run.
The client ID is public in desktop apps — never embed a client secret.