SYM-Lite is a lean, purpose-built script for executing MDM-agnostic Installomator labels and Homebrew casks / formulas, as well as Jamf Pro-specific policy triggers, all through a unified swiftDialog selection and reporting interface.

Slideshow
Key Features
- Unified execution support — Installomator labels, Homebrew casks / formulas, and / or Jamf Pro policies in a single session
- Interactive selection UI — Checkbox dialog with per-item icons; previously installed items are automatically disabled
- Alphabetical sorting — All Installomator, Homebrew and Jamf Pro policy items are sorted together by display name
- Early Installomator validation — Labels are verified against your active Installomator file
- Homebrew support — Casks and formulas run in the logged-in user context
- Inspect Mode — Real-time progress monitoring
- Silent mode — CSV-based automation support
- Path-based validation & cache monitoring
- Completion report — Per-item results with optional restart prompt
- Graceful interruption — Clean shutdown on SIGINT/SIGTERM
Quick Start Guide
The latest version of
SYM-Lite.zshis always available on GitHub.
1. (Optional) Add Installomator Labels
Edit the installomatorLabels array near the top of SYM-Lite.zsh:
installomatorLabels=(
"label | Display Name | Validation Path | Icon URL"
)
Example:
# Installomator Labels
# Format: "label | Display Name | Validation Path | Icon URL"
installomatorLabels=(
"androidstudio | Android Studio | /Applications/Android Studio.app | https://use2.ics.services.jamfcloud.com/icon/hash_f7021d808263d18f52ba2535ec66d35f8bb24b08ab9bff6aee22ecb319159904"
"awsvpnclient | AWS VPN Client | /Applications/AWS VPN Client/AWS VPN Client.app | https://usw2.ics.services.jamfcloud.com/icon/hash_1d1bef5523d9f7eca5a45f2db9a63732e85edb5f914220807ca740ba7c4881b9"
"bruno | Bruno | /Applications/Bruno.app | https://usw2.ics.services.jamfcloud.com/icon/hash_48501630ad2f5dd5de3e055d6acdda07682895440cad366ee7befac71cab1399"
"charles | Charles Proxy | /Applications/Charles.app | https://use2.ics.services.jamfcloud.com/icon/hash_59b395ca81889a6d83deda8e6babc5ae4bc5931d36a72b738fe30b84d027593d"
"codex | Codex | /Applications/Codex.app | https://usw2.ics.services.jamfcloud.com/icon/hash_9d2a1b6f204d2a0d6e99dfc7a411edc0d269c1ab748514dcdde46ea7b4277e51"
"docker | Docker | /Applications/Docker.app | https://usw2.ics.services.jamfcloud.com/icon/hash_a344dca5fdc0e86822e8f21ec91088e6591b1e292bdcebdee1281fbd794c2724"
"jetbrainsintellijidea | IntelliJ IDEA | /Applications/IntelliJ IDEA.app | https://usw2.ics.services.jamfcloud.com/icon/hash_f669d73acc06297e1fc2f65245cfbdace03263f81aebf95444a8360a101b239d"
"pique | Pique | /Applications/Pique.app | https://usw2.ics.services.jamfcloud.com/icon/hash_7d2539860cca6ec5ea5a71cba2aee7d93b9534e4267c16f73c7035f3dc025b9c"
"visualstudiocode | Visual Studio Code | /Applications/Visual Studio Code.app | https://use2.ics.services.jamfcloud.com/icon/hash_532094f99f6130f325a97ed6421d09d2a416e269f284304d39c21020565056ed"
)
2. (Optional) Add Homebrew Items
Edit the homebrewItems array (prefix with cask: or formula:):
homebrewItems=(
"cask:token | Display Name | Validation Path | Icon URL"
"formula:token | Display Name | Validation Path | Icon URL"
)
Example:
# Homebrew Items
# Format: "cask:token | Display Name | Validation Path | Icon URL"
homebrewItems=(
"cask:1password-cli | 1Password CLI | /opt/homebrew/bin/op | https://usw2.ics.services.jamfcloud.com/icon/hash_9456dcae0b68fa522a7b411e7ebd2f9062a1a60cb0681ab3cbad3dda64a410c6"
"cask:codex | codex-cli | /opt/homebrew/bin/codex | https://usw2.ics.services.jamfcloud.com/icon/hash_9d2a1b6f204d2a0d6e99dfc7a411edc0d269c1ab748514dcdde46ea7b4277e51"
"formula:direnv | direnv | /opt/homebrew/bin/direnv | https://usw2.ics.services.jamfcloud.com/icon/hash_a9a7557b3142dd165372a1e66bca2533c783723956f1415861eac6fd5058b588"
)
To disable Homebrew entirely, set enableHomebrewItems="false".
3. (Optional) Add Jamf Pro Policy Triggers
Edit the jamfPolicyItems array:
jamfPolicyItems=(
"trigger | Display Name | Validation Path | Icon URL"
)
Example (supports full icon URLs or SF Symbols):
# Jamf Pro Policies
# Format: "trigger | Display Name | Validation Path | Icon URL"
jamfPolicyItems=(
"appleXcode | Xcode | /Applications/Xcode.app | https://usw2.ics.services.jamfcloud.com/icon/hash_583afb5af440479d642b3c35ec4ec3ad06c74ec814dba9af84e4e69202edf62a"
"homebrew | Homebrew | /opt/homebrew/bin/brew | https://usw2.ics.services.jamfcloud.com/icon/hash_9edff3eb98482a1aaf17f8560488f7b500cc7dc64955b8a9027b3801cab0fd82"
)
Mac Admins using a non-Jamf MDM should set enableJamfPolicyItems="false".
4. Usage
Interactive Mode (Default)
zsh /path/to/SYM-Lite.zsh
- Selection dialog appears with all configured and validated items
- Select items using checkboxes
- Inspect Mode shows real-time progress
- Completion report with per-item results
- Optional restart prompt
Silent Mode
zsh /path/to/SYM-Lite.zsh "" "" "" silent "microsoftword,cask:docker,installRosetta"
In Jamf Pro: Set Parameter 4 to silent and Parameter 5 to the comma-separated list of item IDs.
Jamf Pro Configuration
- Add your customized
SYM-Lite.zshscript to Jamf Pro - Create a Policy and configure:
- Parameter 4:
silentor leave blank for interactive - Parameter 5: comma-separated operations (silent mode only)
- Test the policy
Support
Community-supplied, best-effort support is available on the Mac Admins Slack (free registration required) in the #setup-your-mac channel, or you can open an issue on GitHub.





