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/:
| File | Purpose |
|---|---|
ios-device-identifiers.json | Maps iOS/iPadOS identifiers to names |
mac-device-identifiers.json | Maps Mac identifiers to names |
NOTICE.md | Pinned upstream commit SHAs |
LICENSE.apple-device-identifiers.txt | Upstream 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
- Select the upstream commit SHAs to pin (one for iOS, one for macOS).
- Update
apps/macos/Sources/OpenClaw/Resources/DeviceModels/NOTICE.mdwith the new SHAs. - 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
- Confirm
LICENSE.apple-device-identifiers.txtstill matches upstream; replace it if the upstream license changed. - Verify the macOS app builds without errors:
swift build --package-path apps/macos