Architecture overview

IBM Data Shift is a native macOS application built with SwiftUI that migrates files, applications and preferences between Mac devices over a direct peer-to-peer connection. This page gives developers and technical administrators an architectural overview.

Security implementation details (cryptography, authentication, protocol hardening, threat model) are in Security & privacy.

High-level architecture

┌─────────────────────────────────────────────────────────────────┐
│                         macOS Device                            │
│                                                                 │
│  ┌─────────────────────────────────────────────────────────┐    │
│  │          IBM Data Shift (SwiftUI Native App)            │    │
│  │  - Runs entirely locally on macOS                       │    │
│  │  - No external servers required                         │    │
│  │  - Peer-to-peer network architecture                    │    │
│  └─────────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────────┘
                               ║
                               ║ Encrypted peer-to-peer connection
                               ║ (Bonjour discovery + TLS, passcode-authenticated)
                               ║
┌─────────────────────────────────────────────────────────────────┐
│                    Second macOS Device                          │
│  - Same app running in the opposite role (source/destination)   │
│  - Passcode-authenticated connection                            │
│  - No internet or external servers required                     │
└─────────────────────────────────────────────────────────────────┘

Application layers

1. Application layer

2. Controller layer

3. Secure transport layer

All transfers between the two devices are encrypted and authenticated with a passcode shown on the destination device, with no external services.

See Security & privacy for details.

4. Model layer

5. View layer

Migration workflow views, in order (From v2.0.0 the setup flow also gains preference selection, an expandable per-app support file breakdown and a paused screen):

View Purpose
WelcomeView Initial screen with device role selection
BrowserView Discover the new device (on the old device)
ServerView Wait for a connection and show the passcode (on the new device)
CodeVerificationView Passcode entry
MigrationSetupView Select the migration option, architecture and storage checks
RecapView Migration summary (optional)
MigrationView Migration progress
AppleIDView Apple ID login check (optional)
RebootView Reboot countdown (optional)
JamfReconView Inventory update (optional)
FinalView Completion screen

Common UI components include CardButton, CustomAlertView, MigratorFileView, DeviceListRow, ScrollingTextView and CustomizableIconView.

Key features

Peer-to-peer architecture

  1. No central server: devices talk directly to each other.
  2. Local network: discovery and transfer happen on the local network.
  3. Bonjour/mDNS: service discovery through Apple’s Bonjour.
  4. Multiple transports: Wi-Fi and Thunderbolt connections are supported.

Migration modes

Pause and resume From v2.0.0

The source can pause a running migration after the in-flight data is finished. The destination keeps its state and automatically accepts the source’s reconnection, resuming from the same point. A resume that can’t reach the destination within 60 seconds returns to the paused screen.

Discovery and scanning From v2.0.0

Architecture compatibility (v1.4.0+)

Applications are checked for compatibility with the destination architecture (Intel vs. Apple Silicon). Users can ignore, review or migrate incompatible applications anyway. The check can be disabled with the checkAppsArchitecture custom setting.

Storage check

The source device asks the destination for its available space and blocks the migration if the selection would leave less than 10 GB free. Since v1.4.1, if the destination space can’t be determined, the user sees a warning instead.

Configuration management

macOS system integration

Frameworks: Foundation, Network (Bonjour and peer-to-peer connections), AppKit, SwiftUI, Combine, CryptoKit, Security.

System services: FileManager, UserDefaults, Bonjour/mDNS, Network.framework, and Launch Agents for restarting the app after a reboot.

Optional MDM integration: Jamf Pro inventory updates (recon), configuration profiles for custom settings, managed preferences, and PPPC profiles for privacy permissions.

Data flow

Discovery

  1. The user launches the app on both devices and selects the role of each.
  2. The new device starts the NetworkServer (listener).
  3. The old device starts the NetworkBrowser (discovery).
  4. Bonjour advertises and discovers the service.
  5. The user selects the target device from the list.

Connection

  1. The user enters the passcode shown on the new device.
  2. A secured connection is established between the devices.
  3. The devices exchange device information.
  4. The connection is verified and ready.

Migration

  1. The user selects the migration mode.
  2. The app scans the source device for files and apps.
  3. Architecture compatibility and storage checks run.
  4. The user reviews and confirms the selection.
  5. Files are transferred over the encrypted connection.
  6. Progress is tracked on both devices.
  7. The app verifies that all selected items were migrated, retrying failed ones.

Post-migration

  1. Apple ID login check (optional).
  2. System reboot (Complete migration).
  3. Jamf inventory update (optional).
  4. Migration report generation (optional).
  5. Completion screen.

Customization points

See Custom settings for all options.

Performance considerations

Development and build process

Technical resources