# karthikeyan-mac/mac-admins-toolkit architecture

> Architecture diagram of the GitHub repository karthikeyan-mac/mac-admins-toolkit, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/karthikeyan-mac/mac-admins-toolkit
- Repository: https://github.com/karthikeyan-mac/mac-admins-toolkit

## Overview

Mac Admins Toolkit is a collection of independent macOS administration and Jamf Pro scripts, not one end-to-end application. Administrators run tools from an admin Mac, while several scripts are intended to run on managed Macs through Jamf policies or as Extension Attributes. The documented workflows cover Jamf record changes and restoration, audits, Recovery Lock and erase, notifications, and local Mac utilities. The source excerpts were unavailable, so relationships below are limited to workflows and integrations explicitly described in the root README.

Main entry points: [`Jamf-Pro-ScopeMap-API-Role/create-jamfscopemap-api-role.sh`](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-ScopeMap-API-Role/create-jamfscopemap-api-role.sh) (ScopeMap API role), [`Jamf-Pro-Delete-Devices/delete-devices-by-serial.sh`](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Delete-Devices/delete-devices-by-serial.sh) (Delete device records), [`Jamf-Pro-Delete-All-Computer-Groups/delete-all-computer-groups.sh`](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Delete-All-Computer-Groups/delete-all-computer-groups.sh) (Delete computer groups), [`Jamf-Pro-Delete-All-Computer-Groups/restore-computer-groups.sh`](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Delete-All-Computer-Groups/restore-computer-groups.sh) (Restore computer groups)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_jamf_admin["Jamf administration"]
  node_scope_role["ScopeMap API role"]
  node_delete_devices["Delete device records"]
  node_delete_groups["Delete computer groups"]
  node_restore_groups["Restore computer groups"]
  node_delete_searches["Delete advanced searches"]
  node_restore_searches["Restore advanced searches"]
  node_delete_profiles["Delete configuration profiles"]
  node_restore_profiles["Restore configuration profiles"]
end

subgraph group_device_ops["Device operations"]
  node_managed_status["Update managed status"]
  node_recovery_api["Recovery Lock API<br/>[RecoveryLockAPI.sh]"]
  node_clear_erase["Clear lock and erase"]
  node_slack_notice["Jamf Slack notification"]
end

subgraph group_audits["Audits and reporting"]
  node_deprecation_audit["Profile deprecation audit"]
  node_tcc_audit["TCC audit<br/>[tcc-audit.sh]"]
  node_python_ea["Python version EA"]
end

subgraph group_mac_tools["Mac utilities"]
  node_dock_status["Wait for Dock"]
  node_computer_name["Set computer name"]
end

node_admin(("Administrator"))
node_managed_mac(("Managed Mac"))
node_jamf_policy(("Jamf policy or EA"))
node_jamf_pro["Jamf Pro"]
node_slack["Slack"]

node_admin -->|"runs"| node_scope_role
node_admin -->|"runs"| node_delete_devices
node_admin -->|"runs"| node_delete_groups
node_admin -->|"runs"| node_restore_groups
node_admin -->|"runs"| node_delete_searches
node_admin -->|"runs"| node_restore_searches
node_admin -->|"runs"| node_delete_profiles
node_admin -->|"runs"| node_restore_profiles
node_admin -->|"runs"| node_managed_status
node_admin -->|"runs"| node_deprecation_audit
node_admin -->|"creates role for"| node_scope_role
node_jamf_policy -->|"runs"| node_recovery_api
node_jamf_policy -->|"runs"| node_clear_erase
node_jamf_policy -->|"runs"| node_slack_notice
node_jamf_policy -->|"runs"| node_python_ea
node_managed_mac -->|"runs"| node_tcc_audit
node_managed_mac -->|"runs"| node_dock_status
node_managed_mac -->|"runs"| node_computer_name
node_scope_role -->|"configures API role"| node_jamf_pro
node_delete_devices -->|"deletes records"| node_jamf_pro
node_delete_groups -->|"deletes groups"| node_jamf_pro
node_restore_groups -->|"restores groups"| node_jamf_pro
node_delete_searches -->|"deletes searches"| node_jamf_pro
node_restore_searches -->|"restores searches"| node_jamf_pro
node_delete_profiles -->|"deletes profiles"| node_jamf_pro
node_restore_profiles -->|"restores profiles"| node_jamf_pro
node_managed_status -->|"sets managed status"| node_jamf_pro
node_deprecation_audit -->|"audits profiles"| node_jamf_pro
node_recovery_api -->|"sets or clears lock"| node_jamf_pro
node_clear_erase -->|"clears Recovery Lock"| node_jamf_pro
node_slack_notice -->|"sends message"| node_slack

click node_scope_role "https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-ScopeMap-API-Role/create-jamfscopemap-api-role.sh"
click node_delete_devices "https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Delete-Devices/delete-devices-by-serial.sh"
click node_delete_groups "https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Delete-All-Computer-Groups/delete-all-computer-groups.sh"
click node_restore_groups "https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Delete-All-Computer-Groups/restore-computer-groups.sh"
click node_delete_searches "https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Delete-All-Advanced-Computer-Searches/delete-all-advanced-computer-searches.sh"
click node_restore_searches "https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Delete-All-Advanced-Computer-Searches/restore-advanced-computer-searches.sh"
click node_delete_profiles "https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Delete-All-macOS-Config-Profiles/delete-all-macos-config-profiles.sh"
click node_restore_profiles "https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Delete-All-macOS-Config-Profiles/restore-macos-config-profiles.sh"
click node_managed_status "https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Managed-Status/update-managed-status-by-serial.sh"
click node_recovery_api "https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Recovery-Lock-API/RecoveryLockAPI.sh"
click node_clear_erase "https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Recovery-Lock-Clear-and-Erase/recovery-lock-clear-and-erase-by-serial.sh"
click node_deprecation_audit "https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/JAMF-macOS-Profile-Deprecation-Audit/jamf-macos-profile-deprecation-audit.sh"
click node_tcc_audit "https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/TCC-Audit/tcc-audit.sh"
click node_python_ea "https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-EA-Mac-Admins-Python-Version/mac-admins-python-version-ea.sh"
click node_slack_notice "https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Slack-Notifications/jamf-pro-slack-notification.sh"
click node_dock_status "https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Check-Dock-Status/check-dock-status.sh"
click node_computer_name "https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Set-Computer-Name/set-computer-name.sh"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_scope_role,node_delete_devices,node_delete_groups,node_restore_groups,node_delete_searches,node_restore_searches,node_delete_profiles,node_restore_profiles toneBlue
class node_managed_status,node_recovery_api,node_clear_erase,node_slack_notice toneAmber
class node_deprecation_audit,node_tcc_audit,node_python_ea toneMint
class node_dock_status,node_computer_name toneRose
class node_admin,node_managed_mac,node_jamf_policy,node_jamf_pro,node_slack toneIndigo
```

## Components

### Jamf administration

- [ScopeMap API role](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-ScopeMap-API-Role/create-jamfscopemap-api-role.sh): `Jamf-Pro-ScopeMap-API-Role/create-jamfscopemap-api-role.sh`
- [Delete device records](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Delete-Devices/delete-devices-by-serial.sh): `Jamf-Pro-Delete-Devices/delete-devices-by-serial.sh`
- [Delete computer groups](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Delete-All-Computer-Groups/delete-all-computer-groups.sh): `Jamf-Pro-Delete-All-Computer-Groups/delete-all-computer-groups.sh`
- [Restore computer groups](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Delete-All-Computer-Groups/restore-computer-groups.sh): `Jamf-Pro-Delete-All-Computer-Groups/restore-computer-groups.sh`
- [Delete advanced searches](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Delete-All-Advanced-Computer-Searches/delete-all-advanced-computer-searches.sh): `Jamf-Pro-Delete-All-Advanced-Computer-Searches/delete-all-advanced-computer-searches.sh`
- [Restore advanced searches](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Delete-All-Advanced-Computer-Searches/restore-advanced-computer-searches.sh): `Jamf-Pro-Delete-All-Advanced-Computer-Searches/restore-advanced-computer-searches.sh`
- [Delete configuration profiles](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Delete-All-macOS-Config-Profiles/delete-all-macos-config-profiles.sh): `Jamf-Pro-Delete-All-macOS-Config-Profiles/delete-all-macos-config-profiles.sh`
- [Restore configuration profiles](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Delete-All-macOS-Config-Profiles/restore-macos-config-profiles.sh): `Jamf-Pro-Delete-All-macOS-Config-Profiles/restore-macos-config-profiles.sh`

### Device operations

- [Update managed status](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Managed-Status/update-managed-status-by-serial.sh): `Jamf-Pro-Managed-Status/update-managed-status-by-serial.sh`
- [Recovery Lock API](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Recovery-Lock-API/RecoveryLockAPI.sh): `Jamf-Pro-Recovery-Lock-API/RecoveryLockAPI.sh`
- [Clear lock and erase](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Recovery-Lock-Clear-and-Erase/recovery-lock-clear-and-erase-by-serial.sh): `Jamf-Pro-Recovery-Lock-Clear-and-Erase/recovery-lock-clear-and-erase-by-serial.sh`
- [Jamf Slack notification](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-Slack-Notifications/jamf-pro-slack-notification.sh): `Jamf-Pro-Slack-Notifications/jamf-pro-slack-notification.sh`

### Audits and reporting

- [Profile deprecation audit](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/JAMF-macOS-Profile-Deprecation-Audit/jamf-macos-profile-deprecation-audit.sh): `JAMF-macOS-Profile-Deprecation-Audit/jamf-macos-profile-deprecation-audit.sh`
- [TCC audit](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/TCC-Audit/tcc-audit.sh): `TCC-Audit/tcc-audit.sh`
- [Python version EA](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Jamf-Pro-EA-Mac-Admins-Python-Version/mac-admins-python-version-ea.sh): `Jamf-Pro-EA-Mac-Admins-Python-Version/mac-admins-python-version-ea.sh`

### Mac utilities

- [Wait for Dock](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Check-Dock-Status/check-dock-status.sh): `Check-Dock-Status/check-dock-status.sh`
- [Set computer name](https://github.com/karthikeyan-mac/mac-admins-toolkit/blob/main/Set-Computer-Name/set-computer-name.sh): `Set-Computer-Name/set-computer-name.sh`

### Other components

- **Administrator**
- **Managed Mac**
- **Jamf policy or EA**
- **Jamf Pro**
- **Slack**

## Connections

- Administrator → ScopeMap API role: runs (evidence: `README.md`)
- Administrator → Delete device records: runs (evidence: `README.md`)
- Administrator → Delete computer groups: runs (evidence: `README.md`)
- Administrator → Restore computer groups: runs (evidence: `README.md`)
- Administrator → Delete advanced searches: runs (evidence: `README.md`)
- Administrator → Restore advanced searches: runs (evidence: `README.md`)
- Administrator → Delete configuration profiles: runs (evidence: `README.md`)
- Administrator → Restore configuration profiles: runs (evidence: `README.md`)
- Administrator → Update managed status: runs (evidence: `README.md`)
- Administrator → Profile deprecation audit: runs (evidence: `README.md`)
- Administrator → ScopeMap API role: creates role for (evidence: `README.md`)
- Jamf policy or EA → Recovery Lock API: runs (evidence: `README.md`)
- Jamf policy or EA → Clear lock and erase: runs (evidence: `README.md`)
- Jamf policy or EA → Jamf Slack notification: runs (evidence: `README.md`)
- Jamf policy or EA → Python version EA: runs (evidence: `README.md`)
- Managed Mac → TCC audit: runs (evidence: `README.md`)
- Managed Mac → Wait for Dock: runs (evidence: `README.md`)
- Managed Mac → Set computer name: runs (evidence: `README.md`)
- ScopeMap API role → Jamf Pro: configures API role (evidence: `README.md`)
- Delete device records → Jamf Pro: deletes records (evidence: `README.md`)
- Delete computer groups → Jamf Pro: deletes groups (evidence: `README.md`)
- Restore computer groups → Jamf Pro: restores groups (evidence: `README.md`)
- Delete advanced searches → Jamf Pro: deletes searches (evidence: `README.md`)
- Restore advanced searches → Jamf Pro: restores searches (evidence: `README.md`)
- Delete configuration profiles → Jamf Pro: deletes profiles (evidence: `README.md`)
- Restore configuration profiles → Jamf Pro: restores profiles (evidence: `README.md`)
- Update managed status → Jamf Pro: sets managed status (evidence: `README.md`)
- Profile deprecation audit → Jamf Pro: audits profiles (evidence: `README.md`)
- Recovery Lock API → Jamf Pro: sets or clears lock (evidence: `README.md`)
- Clear lock and erase → Jamf Pro: clears Recovery Lock (evidence: `README.md`)
- Jamf Slack notification → Slack: sends message (evidence: `README.md`)
