Port Forwarding
Local, remote, and dynamic SOCKS forwards saved as reusable rules, with auto-start and a built-in browser.
Port forwarding rules live in the Port Forwarding section. A rule is saved once and started whenever you need it — from the rule list, from terminal output, or automatically with the app.
On the free plan one forwarding session can run at a time; Premium runs unlimited sessions.
The three modes
Local — expose a service on (or behind) the server to your device.
Set Target Host and Target Port as seen from the server (defaults
target 127.0.0.1:80), and optionally pin the Local Port — leave it on
Auto to let SwiftServer pick a free one. Open localhost:<local port> on
your device and you're talking to the server-side service through SSH.
Remote — the reverse: connections arriving at a port on the server are forwarded back to an address reachable from your device. Handy for showing a local dev server to something running remotely.
Dynamic SOCKS — start a SOCKS proxy on your device that routes traffic through the server. Point a browser or tool at the local SOCKS endpoint and its traffic exits from the server's network.
Every rule also has Auto Start — the rule starts as soon as SwiftServer launches.
Running sessions
A session's status moves through Connecting → Starting → Running; the
session page keeps a live log (for example
SOCKS proxy listening on 127.0.0.1:1080) plus the same Event Log and
SSH Diagnostics every connection in SwiftServer gets.
On iPhone and iPad, a running local forward can open straight into the built-in browser — with back/forward, reload, and Open in Safari — so checking a forwarded dashboard doesn't even leave the app.
Forwarding sessions show up as Live Activities on iPhone while you're out of the app.
Per-rule proxy
A rule normally connects the way its machine does. The rule's Proxy picker (default Machine Default) can override that with a specific connection proxy when one forward needs a different path.
If a forward won't start
- The local port is taken — set Local Port to Auto, or pick another port. Ports below 1024 are reserved on iOS and macOS.
- The target isn't reachable from the server — remember Local-mode
targets resolve on the server's side; test with
curlin a terminal session first. - Anything else lands in the session's diagnostics with the SSH-level error.