Device Model Database: Mapping Apple Identifiers to Friendly Names

Explains how OpenClaw's macOS app translates Apple device model identifiers into readable names and selects SF Symbols. For developers maintaining or updating the device model database.

Read this when

  • Updating device model identifier mappings or NOTICE/license files
  • Changing how Instances UI displays device names

The macOS companion app's Instances UI translates Apple model identifiers into readable names (iPad16,6 becomes "iPad Pro 13-inch (M4)", Mac16,6 becomes "MacBook Pro (14-inch, 2024)"). DeviceModelCatalog uses the identifier prefix (with a fallback to device family) to choose an SF Symbol per device.

Files inside apps/macos/Sources/OpenClaw/Resources/DeviceModels/:

FilePurpose
ios-device-identifiers.jsonMaps iOS/iPadOS identifiers to names
mac-device-identifiers.jsonMaps Mac identifiers to names
NOTICE.mdPinned upstream commit SHAs
LICENSE.apple-device-identifiers.txtUpstream MIT license

Data source

Taken from the MIT-licensed kyle-seongwoo-jun/apple-device-identifiers GitHub repository. JSON files are pinned to commit SHAs recorded in NOTICE.md to keep builds deterministic.

Updating the database

  1. Select the upstream commit SHAs to pin (one for iOS, one for macOS).
  2. Update apps/macos/Sources/OpenClaw/Resources/DeviceModels/NOTICE.md with the new SHAs.
  3. Re-download the JSON files pinned to those commits:
IOS_COMMIT="<commit sha for ios-device-identifiers.json>"
MAC_COMMIT="<commit sha for mac-device-identifiers.json>"

curl -fsSL "https://raw.githubusercontent.com/kyle-seongwoo-jun/apple-device-identifiers/${IOS_COMMIT}/ios-device-identifiers.json" \
  -o apps/macos/Sources/OpenClaw/Resources/DeviceModels/ios-device-identifiers.json

curl -fsSL "https://raw.githubusercontent.com/kyle-seongwoo-jun/apple-device-identifiers/${MAC_COMMIT}/mac-device-identifiers.json" \
  -o apps/macos/Sources/OpenClaw/Resources/DeviceModels/mac-device-identifiers.json
  1. Confirm LICENSE.apple-device-identifiers.txt still matches upstream; replace it if the upstream license changed.
  2. Verify the macOS app builds without errors:
swift build --package-path apps/macos