A native macOS app and CLI that catalogs which versions of open-source components ship with each macOS and Xcode release.
macOSdb scans Apple's IPSW firmware files and Xcode .xip archives, extracts version strings from system binaries, the dyld shared cache, and SDK headers, and records what ships where. Browse releases, compare component versions across updates, and see which chip families and devices each release supports.
Website: macosdb.com
Filesystem binaries: curl, httpd, LibreSSL, OpenSSH, Ruby, SQLite, vim, zsh
Dyld shared cache: libbz2, libcurl, libexpat, libncurses, libpcap, libsqlite3, libssl, libxml2
Xcode toolchain: Apple Clang, cctools, Git, ld, lldb, Swift
SDK libraries: bzip2, expat, libcurl, libedit, libexslt, libffi, libxml2, libxslt, ncurses, sqlite3, zlib
Requires macOS 15.0+ and Apple Silicon. Building from source requires Xcode 26+.
brew install starhaven-io/tap/macosdbDownload the latest release from GitHub Releases, unzip, and move to /Applications. The app includes Sparkle for automatic updates.
# Build the CLI
swift build -c release
# Build the app
xcodebuild build -scheme macOSdb -configuration ReleaseAll commands default to macOS. Use --product xcode for Xcode releases. Use --json for machine-readable output.
# List releases
macosdb list
macosdb list --major 15
macosdb list --product xcode
# Show components for a release
macosdb show 15.2
macosdb show 15.2 --component curl
macosdb show 15.2 --detailed
macosdb show 16.2 --product xcode
# Compare components between releases
macosdb compare 15.1 15.2
macosdb compare 15.1 15.2 --changed
macosdb compare 16.1 16.2 --product xcode
# Scan an IPSW to produce release JSON
macosdb scan ~/Downloads/UniversalMac_15.2_24C101_Restore.ipsw \
--output data/macos/releases --release-date 2024-12-11 --update-index --verbose
# Scan an Xcode .xip to produce release JSON
macosdb scan ~/Downloads/Xcode_26.4_Apple_silicon.xip \
--output data/xcode/releases --release-date 2026-03-24 --update-index --verbose
# Validate archives and create SHA-256 sidecar hashes
macosdb validate ~/Downloads/UniversalMac_15.2_24C101_Restore.ipsw
macosdb validate --dir /path/to/archiveThe scanner extracts component versions from Apple's IPSW firmware images through a multi-phase pipeline:
- Extract IPSW — unzip the
.ipswfile (it's a ZIP archive) - Parse kernelcaches — extract Darwin/XNU versions and chip family mappings from each kernelcache, using BuildManifest.plist for device identification
- Decrypt AEA — macOS 15+ uses Apple Encrypted Archives; the scanner fetches decryption keys from Apple's servers
- Mount system DMG — mount the root filesystem image and scan binaries for version strings (e.g.,
curl --versionoutput embedded in the binary) - Extract from dyld shared cache — many libraries live in the shared cache rather than as standalone files; the scanner parses the cache format to extract individual dylib data
- Assemble results — combine kernel info, filesystem components, and dyld cache components into a structured
ReleaseJSON file
Release data is stored as JSON files in data/, organized by product type:
data/macos/releases.json— index of all macOS releases (sorted newest first)data/macos/releases/{major}/macOS-{version}-{build}.json— full release data including kernels and componentsdata/xcode/— same structure for Xcode releases
Data is also served as a REST API at macosdb.com/api/v1/.
Sources/macOSdbKit/ Shared library — models, data provider, scanner pipeline
Sources/macosdb/ CLI executable (swift-argument-parser)
macOSdbApp/ SwiftUI app (NavigationSplitView, MVVM with @Observable)
site/ Astro static site — release browser, compare view, component
pages, JSON API, OG image generation, full-text search
Tests/ Swift Testing
data/ Pre-built release JSON (CC-BY-4.0)
scripts/ JSON linting, release note formatting
.github/workflows/ CI (build, lint, test), CodeQL, deploy site, release pipeline
justfile Task runner for common operations
A justfile provides common tasks:
just build # Build the Swift package
just clean # Clean Swift build artifacts
just test # Run Swift tests
just lint # Run SwiftLint (--strict)
just lint-json # Validate JSON data files
just typos # Check for typos
just audit # Audit GitHub Actions workflows
just build-app # Build the app with xcodebuild
just test-xcode # Run tests with xcodebuild (matches CI)
just check # Run all checks (lint, lint-json, test, audit, site format, site build)The site/ directory contains an Astro static site deployed to macosdb.com:
just site-install # Install npm dependencies
just site-dev # Start dev server
just site-build # Production build
just site-preview # Preview the built site
just site-format # Format site files with Prettier
just site-format-check # Check site formattingCommits must follow Conventional Commits format and include a DCO sign-off (git commit -s).
Built with Claude Code.
Thanks to Guilherme Rambo for VirtualBuddy, where contributing to the macOS catalog first sparked my interest in IPSW cataloging.
Thanks to Bo Anderson for guidance on macOS and SDK internals.
macOS release data is extracted from Apple's publicly available IPSW firmware images. Xcode release metadata sourced from Xcode Releases.
Device identification and release metadata sourced from Apple Support, AppleDB, EveryMac, and The Apple Wiki.
Apple, macOS, and related trademarks are property of Apple Inc.
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-only).
The release data in data/ is licensed separately under CC-BY-4.0.
Copyright (C) 2026 Patrick Linnane