Surge Remote Management
Manage Surge running on another Mac, iPhone, iPad, or Apple TV with Surge iOS, Surge Dashboard, or surge-cli.
Surge can be managed from another device. You can view requests from your iPhone on a Mac, switch policy groups on a headless Mac mini from your iPhone, check an Apple TV from anywhere, or script a remote Surge instance from the terminal.
Surge offers three ways to do this:
External Controller: the native remote management channel. Surge iOS, Surge Dashboard, and surge-cli all use it. It is the most complete option, and this guide focuses on it.
HTTP API: a REST-style interface for your own scripts and automation tools.
Web Dashboard: a browser-based panel served through the HTTP API.
If you just want to manage another Surge device, use the External Controller.
Controllers and Controlled Instances
Remote management always involves two roles:
The controlled instance: the Surge you want to manage. This can be Surge Mac, Surge iOS (iPhone and iPad), or Surge tvOS.
The controller: the app you use to manage it. This can be:
Surge iOS: from the Remote Controller section on the Utilities page.
Surge Dashboard: the app included with Surge Mac.
surge-cli: the command-line tool included with Surge Mac.
All three controllers use the same protocol, so any of them can manage any instance. A controller can also manage the Surge instance on its own device. For example, Surge Dashboard and surge-cli connect to the local Surge Mac with no setup.
Surge Mac
✅
✅
✅
Surge iOS
✅
✅ (Wi-Fi or USB)
✅
Surge tvOS
✅
✅
✅
Choosing a Connection Method
A. Surge Ponte (recommended for Mac and Apple TV)
If the controlled device is a Surge Mac or Surge tvOS acting as a Surge Ponte server, this is the easiest option:
No address, port, or password is needed. The device appears automatically on every Surge iOS device signed in to the same iCloud account.
It works from any network, including cellular and networks away from home.
The connection is always end-to-end encrypted.
B. External Controller over the local network
Turn on the External Controller on the controlled device and set a port and password. Controllers on the same network can then connect with the device's IP address, the port, and the password. This works for Surge Mac, Surge iOS, and Surge tvOS.
C. USB (Surge iOS only)
When an iPhone or iPad is connected to a Mac with a cable, Surge Dashboard can connect over USB. This does not require Wi-Fi and is the only way to inspect traffic while the iPhone is using cellular data.
Setting Up the Controlled Device
Surge Mac
Via Surge Ponte
Turn on Surge Ponte as described in the Surge Ponte Guide.
In the setup wizard, keep Allow remote controller by other devices via Surge Ponte selected.
The Mac then appears in the Remote Controller list in Surge iOS on your other devices. No password is needed.
Via the External Controller
Open Settings › General, and find the External Controller section.
Set a TCP port (default: 6170) and an access password.
Turn on Allow to accept connections from other devices. If you leave it off, only controllers on the same Mac, such as a local surge-cli or Dashboard, and connections through Surge Ponte can connect.
Surge iOS
Surge iOS cannot be a Surge Ponte server, so it can only be managed through the External Controller:
On the Home page, open More Settings, then find the External Controller option in the Remote Control section.
Turn it on and set the port and password.
By default, only USB connections are allowed. To allow controllers on the same Wi-Fi network, turn on Allow Access From Wi-Fi.
The External Controller is available only while Surge is running.
Surge tvOS
Surge tvOS does not have its own control interface, and it is designed to be managed remotely. After you deploy it with Surge iOS, the Apple TV automatically appears in the Remote Controller list of Surge iOS through Surge Ponte. If you do not need to access the Apple TV from outside your home, you can set Surge Ponte to LAN-Only. See Surge tvOS.
Profile Syntax
The External Controller is stored in the [General] section of the profile, so you can also set it directly:
The value uses the format password@address:port. All three parts are required.
127.0.0.1: accept local connections only. On Surge iOS, this means USB only.0.0.0.0: also accept connections from the local network. On Surge iOS, this means Wi-Fi.
Connecting from a Controller
From Surge iOS
Open the Utilities page and find the Remote Controller section:
Surge Mac and Apple TV devices available through Surge Ponte are listed automatically, labeled "via Surge Ponte".
To connect to a device on the local network, tap Remote Controller, enter its IP address, port, and password, and then tap Connect.
After you connect, you can add the device to Favorites for one-tap access later. You can also add a Home Screen shortcut for a favorite device to open its controls directly.
From Surge Dashboard
Surge Dashboard opens the local Surge Mac by default. To manage another device, choose New Connection and then:
Remote: enter the host, port, and password. You can save frequently used devices and open them again from the saved list or the Dock menu.
USB: choose a connected iPhone or iPad, and enter the port and password configured on that device.
From surge-cli
surge-cli is located at /Applications/Surge.app/Contents/Applications/surge-cli. Without extra parameters, it controls the local Surge Mac. Add --remote to control another instance:
To keep the password out of your shell history, enter it at the secure prompt, set the SURGE_CLI_PASSWORD environment variable, or pass it with --password-stdin. Do not put the password on the command line.
Running surge-cli without a command starts interactive mode, which supports auto-completion. See the Surge CLI documentation for all commands.
What You Can Do Remotely
After you connect, you can manage Surge much as you would on the device itself:
Monitor: recent and active requests, real-time traffic statistics, events, the DNS cache, and Logbook records.
Routing: switch the outbound mode, change policy group selections, test policies, and view and edit rules.
Temporary rules: add rules that take effect immediately and are discarded when Surge stops. They are useful for debugging.
Feature switches: turn MitM, Rewrite, Scripting, HTTP Capture, and other features on or off.
Profiles and resources: switch profiles, enable or disable modules, update external resources, and update managed profiles.
Diagnostics: run network diagnostics, DNS lookups, rule match analysis, and more (mostly in the terminal).
Maintenance: reload the profile or restart the engine.
When the controlled device is a Surge Mac, you can also:
Manage Gateway Mode devices, including assigning static IPs, renaming devices, changing icons, and reconnecting devices.
Edit the rules in the Mac profile.
Manage plugins.
Perform an unattended upgrade of Surge Mac, which updates and restarts it without anyone at the Mac.
Security
The External Controller gives full control of Surge, so protect it carefully:
Use it only on trusted networks. An External Controller connection over the local network is not encrypted. Do not expose the External Controller port to the internet, such as through router port forwarding or DMZ. To manage a device from outside the local network, use Surge Ponte, which is always end-to-end encrypted.
Use a strong password.
Protection against password guessing: After 10 failed password attempts within 30 seconds, Surge temporarily bans the source IP address, or the local process, and shows an "Unauthorized access" warning. You can view or clear bans with
surge-cli security ban.On Surge iOS, connections from cellular networks are always rejected, and Wi-Fi connections are rejected unless you allow them.
Comparison with the HTTP API and Web Dashboard
Surge also provides an HTTP API and a Web Dashboard. They cover common tasks such as switching policies, toggling features, and viewing requests, but they are less complete than the External Controller.
Used by
Surge iOS, Surge Dashboard, surge-cli
Your own scripts and tools
A web browser
Scope
The most complete: nearly everything available on the device
Common operations
Common operations
Works through Surge Ponte
✅
❌
❌
USB connection
✅ (Surge iOS)
❌
❌
Profile option
external-controller-access
http-api
http-api-web-dashboard
Use the HTTP API for integrations with other tools, and the Web Dashboard for quick access from a device without Surge. For day-to-day management of your own devices, use the External Controller.
Tips
Use surge-cli or Dashboard through Surge Ponte. If both the controller Mac and the controlled Mac run Surge with Surge Ponte, you can use
ponte-name.sgponteas the host, for examplesurge-cli --remote mymacmini.sgponte:6170 status. The connection is sent through the encrypted Ponte tunnel. Because.sgponteresolves to 127.0.0.1 on the remote device, the External Controller on the controlled Mac can remain restricted to127.0.0.1and does not need to be exposed to the local network.Headless Mac mini. On a Mac used as a home gateway, turn on Surge Ponte with remote control allowed. You can then manage it, including Gateway Mode devices and unattended upgrades, from your iPhone anywhere.
Debug an iPhone from a Mac. Connect the iPhone with a USB cable and open it in Surge Dashboard. You can inspect every request on the larger screen, even while the iPhone is using cellular data.
Troubleshooting
The device does not appear in the list. Make sure both devices are signed in to the same iCloud account, Surge Ponte is enabled on the Mac or Apple TV, and remote control was allowed during Ponte setup.
Cannot connect to Surge iOS. Make sure Surge is running on the iPhone, the External Controller is turned on, and Allow Access From Wi-Fi is on if you are connecting over Wi-Fi. Also confirm that both devices are on the same Wi-Fi network.
Password incorrect. Check the password. If you entered it incorrectly several times in a row, wait a moment or clear the ban on the controlled device before trying again.
Some features are missing. The controlled device may run an older version, or the feature may be available only on Surge Mac, such as Gateway Mode device management. Update Surge on both devices.
Last updated