Profile
Back to NewsBack
GitHub Trending 9 min
Reader Mode
wzh4869/AppPorts: ๐Ÿ“ฆ A macOS utility to seamlessly migrate applications to external storage and reclaim local disk space.ใ€ไธ€ๆฌพ macOS ๅทฅๅ…ท๏ผŒๆ— ็ผ่ฟ็งปๅบ”็”จๅˆฐๅค–้ƒจๅญ˜ๅ‚จๅนถ่‡ชๅŠจๅปบ็ซ‹้“พๆŽฅ๏ผŒ้‡Šๆ”พๅฎ่ดต็š„ๆœฌๅœฐ็ฉบ้—ดใ€‘

wzh4869/AppPorts: ๐Ÿ“ฆ A macOS utility to seamlessly migrate applications to external storage and reclaim local disk space.ใ€ไธ€ๆฌพ macOS ๅทฅๅ…ท๏ผŒๆ— ็ผ่ฟ็งปๅบ”็”จๅˆฐๅค–้ƒจๅญ˜ๅ‚จๅนถ่‡ชๅŠจๅปบ็ซ‹้“พๆŽฅ๏ผŒ้‡Šๆ”พๅฎ่ดต็š„ๆœฌๅœฐ็ฉบ้—ดใ€‘

20 hours ago

AppPorts โ€” macOS App & Data Migration

Move big apps out. Make room for what matters.

Move apps and data to an external drive. Open them as usual.

Free & open source ยท Native SwiftUI ยท macOS 12.0+

English๏ฝœ็ฎ€ไฝ“ไธญๆ–‡๏ฝœOfficial Website๏ฝœDocumentation๏ฝœDeepWiki

Release Stars Forks Issues License Platform Swift linux.do ่ตž่ต ยท Sponsor


โœจ Introduction

Keep your Mac's internal storage free for what you are working on. AppPorts is a free, open-source macOS app that moves large applications, app data, and tool directories to external storage.

After migration, the full application lives on the external drive while a lightweight Stub Portal stays on your Mac. It keeps the familiar icon without a shortcut arrow. With the drive connected, you can continue opening apps from Finder, the Dock, or the system's app launcher. The migration method depends on the app, macOS version, and storage conditions.

Apps are only part of the picture. WeChat chat history, photos, videos, received files, and other suitable container data can move through APFS mount migration: the app reads from its original path, and its original signature stays intact. Suitable ordinary data folders, developer tool directories, and custom folders use symbolic links.

โš ๏ธ "AppPorts" is damaged and can't be opened

If an official download of AppPorts shows a โ€œdamagedโ€ warning on first launch, Gatekeeper may be blocking an unsigned or unnotarized build. After confirming the source is trustworthy and moving AppPorts into Applications, remove its quarantine attribute and try again:

xattr -rd com.apple.quarantine /Applications/AppPorts.app

If a different app stops opening after migration, check the drive connection, data mount status, and signature first. For problems caused by older re-signing methods, follow the macOS 27 upgrade and repair guide.

๐Ÿ“ธ Screenshots

| Readiness Check | Main Interface | |:---:|:---:| | !AppPorts 1.9.0 readiness check | !AppPorts 1.9.0 English interface |

| App Data | Language Switching (Chinese UI) | |:---:|:---:| | !AppPorts 1.9.0 app data directories | !AppPorts 1.9.0 Chinese interface |

๐Ÿš€ Key Features

  • ๐Ÿ“ฆ Arrow-Free Migration: Move large apps to an external drive and keep lightweight local launchers with familiar icons. View local and external apps side by side, and synchronize existing Dock shortcuts when migrating or restoring.
  • ๐Ÿ›ก๏ธ Auto-Update Protection: Detect Sparkle, Electron, and other update mechanisms. Offer locked migration for suitable apps to protect external copies. Unlock before updating; network volumes do not use these local file locks.
  • โœ๏ธ Code Signature Management: Check signature status and offer repair steps for apps marked โ€œSignature replaced.โ€ Save complete original-app backups and restore original signatures when supported. Default mode refuses to re-sign sandboxed apps.
  • ๐Ÿ”ด Orphaned Link Detection: Mark unavailable targets so you can check the drive connection, locate missing apps, or clean up leftover launchers.
  • ๐ŸŽ macOS 15.1+ App Store Support: Work with native external installation and in-place updates for eligible App Store apps, subject to the system's location and format requirements.
  • โ†ฉ๏ธ Restore Anytime: Connect the original drive and restore apps or data when your Mac has enough space. Check running apps and name conflicts before operations; attempt recovery on failure, retaining copies and reporting their locations when recovery cannot safely finish.
  • ๐Ÿ“Š Data Directory Management: Browse associated app data in grouped trees, search and sort directories, and choose whether to show zero-byte folders. Also manage tool directories such as ~/.npm and folders you select yourself.
  • ๐Ÿ’พ APFS Container Migration: Mount dedicated external APFS volumes at the original paths of suitable Containers and Group Containers data, preserving app signatures. Check for unencrypted APFS storage, connectivity, and available space before migration; mount, unmount, restore, or reconnect data afterward.
  • ๐Ÿ“ Clearer Space Totals: Distinguish local data that can be moved from data already migrated. Avoid counting parent and child directories twice, and flag incomplete totals when reads fail.
  • ๐Ÿ”Ž Readiness Checks: Check Full Disk Access, app management, and external storage. Show the running app's version and path to help verify which copy has permission.
  • ๐ŸŽจ Modern UI: Native SwiftUI with Dark Mode, animated directory expansion, and a resizable information panel.
  • โ™ฟ๏ธ Accessibility: VoiceOver labels, keyboard shortcuts, and a Braille language option.
  • ๐ŸŒ Global Ready: 20+ languages including English, Chinese, Japanese, Korean, German, French, Spanish, Italian, Portuguese, Russian, Arabic, Hindi, Vietnamese, Thai, Turkish, Dutch, Polish, Indonesian, Esperanto, Braille, and ๐Ÿ‘ฝ Martian.

๐Ÿ† Why AppPorts?

Move the storage. Keep the familiar experience. AppPorts uses a Stub Portal to retain a lightweight local launcher, with migration status, update protection, signature checks, and restoration in one interface. Manage apps and their data separately to free space where you need it.

| Feature | AppPorts (Stub Portal) | Traditional Symlink | | :--- | :--- | :--- | | Finder Icon | โœ… Familiar icon, no shortcut arrow | Usually displays a shortcut arrow | | Launchpad | Keeps a local app entry the system can index | Depends on system indexing | | App Menu (macOS 26) | Uses a local .app launcher | Depends on how the system recognizes links | | Auto-Update Protection | Lock option for suitable apps | Requires manual maintenance | | Signature Management | Built-in checks, backup, and recovery | Requires separate handling | | Orphaned Link Detection | Automatically flags unavailable targets | Requires manual path checks |

Container data uses APFS mount migration; suitable ordinary directories retain symbolic links. Background components, permissions, and update mechanisms can affect compatibility. See limitations.

๐Ÿงญ Migration Strategy

AppPorts selects a migration method based on the app type, update behavior, and data directory:

| App Type | Strategy | Default | Notes | | :--- | :--- | :--- | :--- | | Native Mac apps | Stub Portal | โœ… Enabled | Lightweight local entry, full app in external library | | Self-updating apps (Sparkle, Electron, etc.) | Stub Portal + lock where applicable | Based on detection and migration options | Unlock before updating; local file locks are skipped on network volumes | | iPhone/iPad apps | iOS Stub Portal | โœ… Available automatically on macOS 15.1+; setting on older systems | Extracts the icon; running the app still depends on hardware, OS, and app support | | Mac App Store apps | Integrates with native external installation | โœ… Available automatically on macOS 15.1+; setting on older systems | Configure native installation in App Store; older systems may require migrating again after updates | | App suites (folders containing multiple apps) | Folder mirror | โœ… Enabled | Internal apps use launchers; other contents link to external copies | | Container data (Containers / Group Containers) | APFS mount migration | โœ… Default method | Currently requires unencrypted external APFS storage; preserves paths and signatures | | Ordinary data, tool directories, and custom folders | Symbolic links | Where suitable | Original paths link to external data | | System apps | Blocked | โŒ | Protected from migration | | Running apps | Blocked | โŒ | Quit the app first | | Already linked apps | Duplicate linking blocked | โŒ | Check status or restore locally |

Classic data migration mode is off by default. It retains older container symlink and sandboxed-app re-signing behavior, with compatibility depending on the app and macOS version. APFS mount migration is the recommended default; keep container data locally if the drive does not meet its requirements.

Before upgrading to macOS 27, update and open AppPorts once so it can update any installed background re-signing script. On macOS 27 and later, login re-signing is disabled and old tasks are cleaned up; retry from Settings if cleanup fails. For affected apps, follow the repair guide: restore container data migrated through older symbolic links first, then restore the original signature or reinstall from an official source. Updating AppPorts does not automatically convert old migrations or restore replaced signatures.

๐Ÿ› ๏ธ Installation

System Requirements

  • macOS 12.0 (Monterey) or newer, on Apple Silicon or Intel Macs.
  • A stable external SSD with enough free space is recommended. Format requirements depend on the migration method.
  • Container mount migration currently requires unencrypted APFS external storage. Older systems may require administrator authorization and opening AppPorts to mount data after login.

Download and Installation

Download the latest AppPorts.dmg from the official website or Releases.

Move AppPorts into Applications, open it, and follow the setup checks. Connect your drive, choose an external app library, and quit the app you intend to move before starting migration. Mount migration requires a stable application path; do not run it directly from a DMG or temporary location.

Keep the drive connected while using migrated apps and data. Allow removable-volume access when macOS requests it. Quit related apps before unmounting or ejecting the drive, and back up important data beforehand. See the quick start guide.

โš ๏ธ Permissions

Use the readiness checks to configure Full Disk Access for protected app data. macOS may request app management, Finder automation, or administrator authorization depending on the operation.

  1. Open System Settings โ†’ Privacy & Security.
  2. Select Full Disk Access.
  3. Click +, add the copy of AppPorts you are currently running, and enable it.
  4. Quit and reopen AppPorts.
(The in-app guide opens Settings directly. Readiness checks show the running app's version and path; individual directories may still have other access restrictions even after the check passes.)

๐Ÿง‘โ€๐Ÿ’ป Development

git clone https://github.com/wzh4869/AppPorts.git
Open the project with Xcode and build.

๐Ÿค Contributing

We welcome Issues and Pull Requests! If you find translation errors or have suggestions for new features, please let us know.

AppPorts Heroes ๐Ÿ’—

๐Ÿ’— Sponsor

AppPorts is completely free, open source and free of ads. It is maintained by a single developer in his spare time and generates no revenue. If it has freed up tens of gigabytes on your disk, you are welcome to scan the QR code and buy the author a coffee โ€” any amount is welcome, and even the smallest one means a lot.

Sponsor QR code
  • When sponsoring, please leave your nickname and, optionally, a link (GitHub profile, blog, social account, etc.) in the message. They will be shown on the About AppPorts page in the app and on the sponsor page of the documentation site.
  • There is no minimum amount โ€” give whatever feels right. Sponsors are ordered by amount (highest first) and, for equal amounts, by sponsorship date (earliest first); the amount is only shown on the sponsor page.
Thanks to the following sponsors (this list is kept in sync with sponsors.json in the repository root):

Advanced Storage Management

  • LazyMount-Mac: Easily expand Mac storage space โ€” Automatically mount SMB shares and cloud storage at startup, no manual operation required.
> The perfect companion for AppPorts. LazyMount connects the storage, AppPorts handles the applications. > * ๐ŸŽฎ Game Libraries โ€” Store Steam/Epic games on a NAS, play them like local installs > * ๐Ÿ’พ Time Machine Backups โ€” Back up to a remote server automatically > * ๐ŸŽฌ Media Libraries โ€” Access your movie/music collection stored on a home server > * ๐Ÿ“ Project Archives โ€” Keep large files on cheaper storage, access them on-demand > * โ˜๏ธ Cloud Storage โ€” Mount Google Drive, Dropbox, or any rclone-supported service as a local folder

Star History

Star History Chart</a>

๐Ÿ“„ License

This project is open-source under the Apache License 2.0.

See the Privacy Policy.


Chat with me