Thanks for your interest in contributing! Here's how to get started.
- macOS 13.0 (Ventura) or later
- Xcode 16+
- xcodegen (recommended) or manual project setup
brew install xcodegen
xcodegen generate
open AdminRightsManager.xcodeprojThis generates a project with two targets already wired up:
- AdminRightsManager — the SwiftUI app
- com.adminrights.manager.helper — the privileged helper (LaunchDaemon)
- Open Xcode → File → New → Project
- Choose macOS → App
- Settings:
- Product Name:
AdminRightsManager - Team: Your Apple Developer team
- Organization Identifier:
com.adminrights - Interface: SwiftUI
- Language: Swift
- Product Name:
- Save to your repo directory
Drag these into the AdminRightsManager target:
AdminRightsManager/AdminRightsManagerApp.swiftAdminRightsManager/ContentView.swiftAdminRightsManager/Views/AdminRightsManager/Services/AdminRightsManager/Models/AdminRightsManager/Info.plist
- File → New → Target
- Choose macOS → Command Line Tool
- Product Name:
com.adminrights.manager.helper - Replace
main.swiftwithAdminRightsHelper/AdminRightsHelper.swift - Set Build Settings:
INSTALL_PATH=/Library/PrivilegedHelperToolsSKIP_INSTALL=No
Add any missing frameworks: Target → Build Phases → Link Binary With Libraries
IOKit(for serial number)OpenDirectory(for account type detection)
xcodebuild -scheme AdminRightsManager -configuration Release build
xcodebuild -scheme com.adminrights.manager.helper -configuration Release build
./Scripts/build-pkg.sh 1.0.0Output: ./build/AdminRightsManager-1.0.0.pkg
All keys are optional. Deploy via MDM Custom Settings targeting domain com.adminrights.manager:
| Key | Type | Default | Description |
|---|---|---|---|
| OrganizationName | String | Your Organization | Org name in UI |
| DepartmentName | String | IT Services | Department shown in header |
| AccentColorHex | String | #1b386d | Brand accent color (buttons, links, highlights) |
| LogoImagePath | String | (empty) | Path to custom logo PNG |
| SupportRequestURL | String | (HelpSpot URL) | Ticket portal URL |
| SupportEmail | String | [email protected] | Support contact email |
| PolicyMessage | String | (default text) | Policy warning message |
| NagIntervalSeconds | Integer | 14400 | Display interval (info only) |
| AllowDeferral | Boolean | false | Let users close without acting |
| GracePeriodDays | Integer | 0 | Days before forced remediation |
| ShowSubmitRequestOption | Boolean | true | Show "Submit Request" button |
| MaxTicketDeferrals | Integer | 10 | Times user can defer with "I've Already Submitted a Ticket" (0 = hide) |
| JamfConnectAppPath | String | /Applications/Jamf Connect.app | Path to detect Jamf Connect |
| EnableLocalAuditLog | Boolean | true | Write local audit log |
| AuditLogPath | String | /Library/Logs/AdminRightsManager.log | Audit log location |
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature) - Commit your changes
- Push to your branch and open a pull request
If you find a bug or have a feature request, please open an issue with as much detail as possible — macOS version, MDM solution, and steps to reproduce are especially helpful.