Discover Intel-Only Applications and Components for Developer Feedback

Discover Intel-Only Applications and Components for Developer Feedback

macOS Apple Silicon Compatibility Auditor Workflow Banner

Intel-only binaries in macOS apps and installer packages are now a practical rollout risk for Apple silicon environments. This project provides a focused workflow to discover Intel-only executable components before deployment, then generate clear remediation feedback for application developers and support teams.

Why This Matters

Apple has transitioned the Mac platform to Apple silicon, and Intel app compatibility currently depends on Rosetta translation. Apple has published that Rosetta remains generally available through macOS 27, with reduced scope beginning in macOS 28 for specific legacy use cases, which makes proactive architecture remediation increasingly important. While many Intel apps still run, translated execution can introduce performance overhead, longer startup times, and edge-case behavior differences, especially when apps include older helper tools, plug-ins, or background components that were never rebuilt for arm64. This creates operational risk for IT teams because an app may appear to work in basic testing while bundled Intel-only subcomponents still fail in production workflows. For long-term readiness, Intel-only binaries should be treated as technical debt and remediated to arm64 or Universal binaries, with vendor follow-up tracked as part of normal release and deployment governance.

Apple references:

 

What The Script Checks

The script scans Mach-O components and classifies binaries as:

  • Apple Silicon only
  • Universal
  • Intel only
  • Unknown or unsupported

Supported input types:

  • .app
  • .pkg
  • .mpkg
  • .dmg
  • .zip

 

Safety Boundary

This is a static inspection only. The script does not:

  • Install packages
  • Copy apps into /Applications
  • Write payloads into /Library
  • Execute installer scripts
  • Launch audited applications
  • Run vendor uninstallers

When artifacts are downloaded or expanded, work happens in temporary workspace paths unless you explicitly keep expansion artifacts.

How This Differs From Full-Fleet Inventory

This tool is intentionally app/package focused, not endpoint-wide software inventory. It is best used when:

  • Evaluating a specific app before deployment
  • Escalating architecture remediation to a vendor
  • Creating technical evidence for support tickets

For fleet-scale discovery across all endpoints, pair this workflow with MDM and inventory tools (examples later in this post).

Accessing The GitHub Repository

Repository URL: https://github.com/univ-of-utah-marriott-library-apple/discover_macos_intel_components_feedback

How to get access:

  1. Open the repository URL in a browser.
  2. If the repo is public, review files directly.
  3. If your organization enforces SSO for GitHub, complete SSO authorization before cloning.

 

Get The Script On macOS

Method 1: Web browser download (no Git tools required)

    1. Open: https://github.com/univ-of-utah-marriott-library-apple/discover_macos_intel_components_feedback
    2. Click Code.
    3. Click Download ZIP.
    4. Extract the ZIP in Finder.
    5. Open Terminal, change into the extracted folder, and make the script executable:

 

chmod +x ./discover_macos_intel_components_feedback.sh

Method 2: GitHub Desktop on Mac

    1. Install GitHub Desktop: https://desktop.github.com/
    2. In GitHub Desktop, choose File > Clone Repository.
    3. Select URL and paste: https://github.com/univ-of-utah-marriott-library-apple/discover_macos_intel_components_feedback.git
    4. Choose a local folder and click Clone.
    5. In Finder or Terminal, open the cloned folder and make the script executable:

 

chmod +x ./discover_macos_intel_components_feedback.sh

Method 3: Command line clone

git clone https://github.com/univ-of-utah-marriott-library-apple/discover_macos_intel_components_feedback.git
cd discover_macos_intel_components_feedback
chmod +x ./discover_macos_intel_components_feedback.sh

Requirements

Standard macOS command-line utilities used by the script:

  • file
  • lipo
  • codesign
  • find
  • awk
  • sed
  • curl
  • pkgutil
  • hdiutil
  • ditto

Package-focused audits also require Suspicious Package CLI: spkg

Where to get Suspicious Package: https://www.mothersruin.com/software/SuspiciousPackage/

Verify spkg exists:

ls -l "/Applications/Suspicious Package.app/Contents/MacOS/spkg"

If spkg is not in PATH, run with SPKG_BIN:

SPKG_BIN="/Applications/Suspicious Package.app/Contents/MacOS/spkg" ./discover_macos_intel_components_feedback.sh --help

Basic Usage

Interactive mode:

./discover_macos_intel_components_feedback.sh

Audit a vendor URL non-interactively:

./discover_macos_intel_components_feedback.sh \
  --name "Application Name" \
  --url "https://example.com/Application.pkg" \
  --non-interactive

Audit a local app:

./discover_macos_intel_components_feedback.sh \
  --path "/Applications/Application.app" \
  --name "Application Name" \
  --url "https://example.com/download"

Audit a local package and keep expanded artifacts:

./discover_macos_intel_components_feedback.sh \
  --path "/path/to/Application.pkg" \
  --name "Application Name" \
  --url "https://example.com/download" \
  --keep-expanded-package

Write output to a custom directory:

./discover_macos_intel_components_feedback.sh \
  --name "Application Name" \
  --url "https://example.com/Application.pkg" \
  --output-dir "/tmp/apple-silicon-audit" \
  --non-interactive

Generate PDF output in addition to Markdown:

./discover_macos_intel_components_feedback.sh \
  --name "Application Name" \
  --url "https://example.com/Application.pkg" \
  --non-interactive \
  --pdf

Manual Interactive Session Example

Start the script:

./discover_macos_intel_components_feedback.sh

Typical prompt flow for URL workflow:

Apple Silicon Compatibility Check
1 - Download URL
2 - Local Install Path
Choice [1]: 1

Enter the vendor download URL for this app or installer.
Download URL: https://example.com/Application.pkg

Application name: Application Name

2026-08-05 12:06:49 : Downloading audit source to temporary workspace
2026-08-05 12:07:22 : Inspecting package components with spkg
2026-08-05 12:07:27 : Expanding package payloads for Mach-O inspection
Apple Silicon compatibility check complete.
Result: Needs attention. One or more inspected components are Intel-only.

Output Formats And Files

Default output directory: /tmp/apple-silicon-audit-reports

Default output format:

  • Primary report: Markdown (*_apple_silicon_fix_summary.md)

Other outputs:

  • Terminal summary text (*_summary.txt)
  • Full component table (*_components.tsv)
  • Problem-only component table (*_problem_components.tsv)
  • Seen-path dedupe list (*_seen_paths.txt)
  • Optional PDF summary (*_apple_silicon_fix_summary.pdf) when --pdf is used

The Markdown fix summary is the recommended artifact for developer/support communication.

Exit Codes

 

Exit code Meaning
0 Every inspected Mach-O component supports Apple Silicon.
1 One or more Intel-only components were found.
2 One or more components could not be classified, or no Mach-O components were found.
3 Invalid arguments or unsupported input.
4 spkg is missing or package expansion failed.
5 Unexpected audit or reporting error.

 

Session Example: DYMO Connect

Command:

./discover_macos_intel_components_feedback.sh \
  --name "DCDMac1.6.1.4-Arm64.pkg" \
  --url "https://dymoreleasecontent.blob.core.windows.net/dymo-release/DCDMAC/DCDMac1.6.1.4-Arm64.pkg" \
  --non-interactive

 

Terminal output:

2026-08-05 12:06:49 : Downloading audit source to temporary workspace
2026-08-05 12:07:22 : Inspecting package components with spkg
2026-08-05 12:07:22 : Generating spkg manifest
2026-08-05 12:07:27 : Expanding package payloads for Mach-O inspection
2026-08-05 12:07:31 : Scanning for Mach-O components under: /tmp/apple_silicon_audit_<run_id>/expanded_1_DCDMac1.6.1.4-Arm64.pkg
Apple Silicon compatibility check complete.
Result: Needs attention. One or more inspected components are Intel-only.

Application: DCDMac1.6.1.4-Arm64.pkg
Overall result: FAIL
Apple Silicon-only: 0
Universal: 11
Intel-only: 60
Unknown or unsupported: 0

Fix summary: /tmp/apple-silicon-audit-reports/DCDMac1.6.1.4-Arm64.pkg_<run_id>_apple_silicon_fix_summary.md

The script exited with code 1, which is expected when Intel-only components are found.

Developer Or Support Feedback Example

The generated fix summary for the DYMO session starts like this:

# Apple Silicon Compatibility Fix Summary

Hi,

I wanted to share a potential Apple Silicon compatibility concern we found in your application, so your team can review it before it affects future macOS releases.

## Summary

- Application name: DCDMac1.6.1.4-Arm64.pkg
- Download URL: https://dymoreleasecontent.blob.core.windows.net/dymo-release/DCDMAC/DCDMac1.6.1.4-Arm64.pkg
- Application or package version: 1.6.1.4
- Bundle or package identifier: com.dymo.DYMO-Connect-Support-Tool
- Intel-only components: 60
- Unknown or unsupported components: 0

One or more inspected Mach-O components are Intel-only and do not contain native Apple Silicon support.

## Affected Areas

The affected components include Intel-only executables and libraries in these app bundles:

- DYMO Connect Support Tool.app (14 affected components), including:
  - `dymo-connect.pkg/Payload/Applications/DYMO Connect Support Tool.app/Contents/MacOS/DYMO Connect Support Tool`
  - `dymo-connect.pkg/Payload/Applications/DYMO Connect Support Tool.app/Contents/MonoBundle/libcoreclr.dylib`
  - `dymo-connect.pkg/Payload/Applications/DYMO Connect Support Tool.app/Contents/MonoBundle/libSystem.Native.dylib`
  - `dymo-connect.pkg/Payload/Applications/DYMO Connect Support Tool.app/Contents/MonoBundle/libSystem.IO.Compression.Native.dylib`
  - `dymo-connect.pkg/Payload/Applications/DYMO Connect Support Tool.app/Contents/MonoBundle/libSystem.Globalization.Native.dylib`
  - ... and 9 more

- DYMO Connect.app (18 affected components), including:
  - `dymo-connect.pkg/Payload/Applications/DYMO Connect.app/Contents/MacOS/DYMO Connect`
  - `dymo-connect.pkg/Payload/Applications/DYMO Connect.app/Contents/Library/LaunchServices/com.dymo.dymo-connect.helper`
  - `dymo-connect.pkg/Payload/Applications/DYMO Connect.app/Contents/Library/SystemExtensions/com.dymo.dymo-connect.usb.dext/com.dymo.dymo-connect.usb`
  - `dymo-connect.pkg/Payload/Applications/DYMO Connect.app/Contents/MonoBundle/libe_sqlite3.dylib`
  - `dymo-connect.pkg/Payload/Applications/DYMO Connect.app/Contents/MonoBundle/libcoreclr.dylib`
  - ... and 13 more

- DYMO.WebApi.Mac.Host.app (28 affected components), including:
  - `webapi-host.pkg/Payload/Applications/DYMO.WebApi.Mac.Host.app/Contents/MacOS/DYMO.WebApi.Mac.Host`
  - `webapi-host.pkg/Payload/Applications/DYMO.WebApi.Mac.Host.app/Contents/Resources/Firefox/libfreebl3.dylib`
  - `webapi-host.pkg/Payload/Applications/DYMO.WebApi.Mac.Host.app/Contents/Resources/Firefox/libsoftokn3.dylib`
  - `webapi-host.pkg/Payload/Applications/DYMO.WebApi.Mac.Host.app/Contents/Resources/Firefox/libplds4.dylib`
  - `webapi-host.pkg/Payload/Applications/DYMO.WebApi.Mac.Host.app/Contents/Resources/Firefox/libnssdbm3.dylib`
  - ... and 23 more

The full generated file continues with a Components To Fix table containing each affected component, its architecture, relative path, Mach-O type, parent app bundle, signing identifier, and signing status.

Jamf Pro Fleet Discovery Context

For broad endpoint discovery, Jamf Pro can be used to identify Intel apps across your fleet.

Jamf Pro approach:

  • Use Extension Attributes to collect architecture signals
  • Build Smart Groups from EA values
  • Prioritize remediation via policy scope and dashboards
  • Jamf docs: https://learn.jamf.com/

Popular EA/script sources:

Note: these are broad script collections and are not all architecture-discovery specific.

Example Jamf Extension Attribute (count Intel apps):

#!/bin/bash

# Data Type: Integer
# Inventory Display: Extension Attributes

intel_count="$(/usr/sbin/system_profiler SPApplicationsDataType 2>/dev/null | /usr/bin/awk '
  /Kind: Application \(Intel\)/ { c++ }
  END { print c+0 }
')"

echo "<result>${intel_count}</result>"

Example Smart Group criteria:

  • Extension Attribute Intel App Count is greater than 0

 

Other MacAdmin Fleet Tools

Common options for fleet-wide discovery and reporting:

 

 

  1. Identify candidate app/package update.
  2. Run script against the exact artifact to be deployed.
  3. Review *_problem_components.tsv for Intel-only findings.
  4. Share *_apple_silicon_fix_summary.md with vendor/developer support.
  5. Track remediation status and retest new builds before broad deployment.
No Comments

Leave a Reply