LocalPorts is a macOS menu bar app that helps you manage local development services from one place.
Download LocalPorts-2.0.2.dmg, open it, and drag LocalPorts to /Applications. The app is notarized — no additional steps needed.
Requires macOS 13.0+.
| Feature | Free | Pro |
|---|---|---|
| Managed services (start/stop) | ✓ | ✓ |
| Port monitoring | ✓ | ✓ |
| Profiles | Up to 3 | Unlimited |
| Service log viewer | ✓ | ✓ |
| Auto-restart on crash | — | ✓ |
| Service categories | — | ✓ |
| Health history | — | ✓ |
| Advanced notifications | — | ✓ |
| Webhook notifications | — | ✓ |
| iCloud Sync | — | ✓ |
| Export / Import profiles | — | ✓ |
- Click the LocalPorts icon in the menu bar.
- Add a service with
+— enter a name, address (http://localhost:PORT), and optionally a start command. - Use
Startto launch the service,Opento open it in your browser.
- Left-click the menu bar icon to open/close the services panel.
- Right-click the icon to access Settings and Quit.
- Footer buttons: Refresh, Settings, Add service (
+), Quit. - Card actions: Open in browser, Copy URL, Start/Stop, View logs, Edit, Remove.
- Fast-fail logs — services that exit immediately now surface their last stdout/stderr lines in the log panel instead of showing an empty view
- Advanced settings — added a dedicated tab for technical options that should stay off the happy path for most users
- Refresh mode control — choose between
Balanced,Low Resource, andRealtimerefresh behavior depending on CPU sensitivity - Shell environment option — optionally inherit the user's login shell environment for
nvm,asdf,fnm,mise, and similar setups - Experimental TCP services — optionally allow non-HTTP localhost services such as database ports without changing the default web-focused flow
- Config persistence fix — startup no longer falls back to a blank default config after a restart
- Cleaner local storage — config files now live under
~/Library/Application Support/LocalPorts/ - Background launch fix — Start on Login now stays hidden in the menu bar instead of opening the UI on boot
- Cleaner header — removed the build number badge from the main popover
- Managed services — start, stop, restart, and force-stop services directly from the menu bar
- Service log viewer — stream stdout/stderr output in a live log panel
- Auto-restart — automatically restart a service if it stops unexpectedly (Pro)
- Service categories — group services with custom labels (Pro)
- Health history — persistent status history bar per service (Pro)
- Advanced notifications — per-service crash notification toggle (Pro)
- Webhook notifications — send alerts to Slack, Discord, Teams, or custom URLs (Pro)
- iCloud Sync — sync your config across Macs (Pro)
- Export / Import profiles — back up and restore service configurations (Pro)
- Sparkle auto-updates — get notified of new releases in-app
- Port conflict detection — inline warning when a port is already in use
- Multiple profiles — group services per project or context
Check that the working directory and start command are correct. View the live log from the card's log button, or inspect:
tail -n 200 ~/Library/Logs/LocalPorts/*.logSince v2.0.0 LocalPorts is notarized. If you're on an older build, right-click the app in Finder, choose Open, then confirm.
| Path | Purpose |
|---|---|
~/Library/Application Support/LocalPorts/config.v1.json |
Main config |
~/Library/Application Support/LocalPorts/history.v1.json |
Health history |
~/Library/Logs/LocalPorts/<service-id>.log |
Service logs |
With iCloud Sync enabled (Pro), the config moves to ~/Library/Mobile Documents/iCloud~com~localports~app/Documents/config.v1.json.
- macOS 13.0+
- Xcode 15+
xcodebuild -project LocalPorts.xcodeproj -scheme LocalPorts -configuration Debug \
-allowProvisioningUpdates buildApp/
AppDelegate.swift
LocalPortsApp.swift
StatusBarController.swift
Models/
Services/
ViewModels/
Views/
LocalPorts.xcodeproj/
docs/
appcast.xml
Pro-only source lives in a private repository and is excluded from this repo via .gitignore.


