Skip to content

Command-line Options

Read this page from top to bottom:

  1. Pick a mode.
  2. Fill in the key flags.
  3. Add other flags only when needed.

Modes at a Glance

ModeCommandsPurpose
Forward proxylinksocks server + linksocks clientSOCKS5 listens on the client side
Reverse proxylinksocks server -r + linksocks client -rSOCKS5 listens on the server side
Agent modelinksocks server -r -c ... + linksocks provider + linksocks connectorSeparate provider and connector access
Autonomy modelinksocks server -r -a + linksocks provider -c ... + linksocks connectorProvider manages its own connector token
Direct transportAdd --direct-* flags to compatible clients and --direct-enable on serverPrefer peer-to-peer transport when available

Server Command

The server command runs the WebSocket relay. Add -r when the SOCKS5 listener should be exposed on the server side.

Key Flags

ParameterShortDefaultDescription
--token-tauto-generated when omitted on server-managed modesMain authentication token. Also supports LINKSOCKS_TOKEN.
--ws-host-H0.0.0.0WebSocket listen host
--ws-port-P8765WebSocket listen port
--reverse-rfalseSwitch from forward relay mode to reverse/agent mode
--socks-host-s127.0.0.1SOCKS5 listen host in reverse mode
--socks-port-p9870SOCKS5 listen port in reverse mode

Other Flags

ParameterShortDefaultDescription
--connector-token-cauto-generated when omittedConnector token for agent mode. Also supports LINKSOCKS_CONNECTOR_TOKEN.
--connector-autonomy-afalseLet providers manage connector tokens themselves
--socks-username-nSOCKS5 username for reverse mode
--socks-password-wSOCKS5 password for reverse mode. Also supports LINKSOCKS_SOCKS_PASSWORD.
--socks-nowait-ifalseStart SOCKS5 immediately without waiting for a provider

| --api-key | -k | | Enable the HTTP API | | --buffer-size | -b | 1048576 | Transfer buffer size | | --upstream-proxy | -x | | Outbound proxy for server-side connections | | --fast-open | -f | false | Allow data transfer before the remote side is fully confirmed | | --connector-wait-provider | | 5s | How long a connector waits for a provider to reconnect | | --direct-enable | | false | Enable direct signaling for compatible clients | | --direct-rendezvous-udp | | false | Enable server-side UDP rendezvous. Requires a real UDP listener and is not supported on Cloudflare Workers. | | --direct-rendezvous-host | | ws-host | Rendezvous UDP host | | --direct-rendezvous-port | | ws-port | Rendezvous UDP port | | --debug | -d | | Debug logging, use -dd for trace |

Client, Provider, and Connector Commands

Use client as the general-purpose command:

  • linksocks client = forward proxy client
  • linksocks client -r = reverse provider
  • linksocks provider = shortcut for linksocks client -r
  • linksocks connector = client alias typically used with connector tokens

Key Flags

ParameterShortDefaultDescription
--token-tAuthentication token. Also supports LINKSOCKS_TOKEN.
--url-uws://localhost:8765WebSocket server URL
--reverse-rfalseTurn client into a reverse provider
--socks-host-s127.0.0.1Local SOCKS5 listen host for forward or connector mode
--socks-port-p9870Local SOCKS5 listen port for forward or connector mode

Other Flags

ParameterShortDefaultDescription
--connector-token-cConnector token for agent/autonomy mode. Also supports LINKSOCKS_CONNECTOR_TOKEN.
--socks-username-nLocal SOCKS5 username
--socks-password-wLocal SOCKS5 password. Also supports LINKSOCKS_SOCKS_PASSWORD.
--socks-no-wait-ifalseStart SOCKS5 immediately
--no-reconnect-RfalseExit when the server disconnects

| --threads | -T | 1 | Number of transfer threads | | --upstream-proxy | -x | | Outbound proxy used to reach the WebSocket server | | --no-env-proxy | -E | false | Ignore proxy environment variables | | --fast-open | -f | false | Allow data transfer before the remote side is fully confirmed | | --direct-mode | | auto | relay-only, auto, or direct-only | | --direct-discovery | | stun | Direct candidate discovery method | | --direct-host-candidates | | auto | Host candidate advertisement policy | | --stun-server | | built-in pool | Additional STUN server, repeatable | | --direct-only-action | | exit | What to do when direct-only cannot connect | | --direct-upnp | | false | Enable UPnP mapping for direct transport | | --direct-upnp-lease | | 30m | UPnP lease duration | | --direct-upnp-keep | | false | Keep UPnP mapping on exit | | --direct-upnp-external-port | | 0 | Explicit UPnP external port | | --debug | -d | | Debug logging, use -dd for trace |

Mode Recipes

1. Forward Proxy

bash
linksocks server -t my_token
linksocks client -t my_token -u ws://localhost:8765 -p 9870

2. Reverse Proxy

bash
linksocks server -t my_token -r -p 9870
linksocks client -t my_token -u ws://localhost:8765 -r

3. Agent Mode

bash
linksocks server -t provider_token -c connector_token -r -p 9870
linksocks provider -t provider_token -u ws://localhost:8765
linksocks connector -t connector_token -u ws://localhost:8765 -p 1180

4. Autonomy Mode

bash
linksocks server -t provider_token -r -a
linksocks provider -t provider_token -c my_connector_token -u ws://localhost:8765
linksocks connector -t my_connector_token -u ws://localhost:8765 -p 1180

5. Direct Transport

bash
linksocks server -t my_token --direct-enable
linksocks client -t my_token -u ws://localhost:8765 --direct-mode auto

Environment Variables

These flags can also be provided through environment variables:

Environment VariableFlag
LINKSOCKS_TOKEN--token
LINKSOCKS_CONNECTOR_TOKEN--connector-token
LINKSOCKS_SOCKS_PASSWORD--socks-password

Upstream Proxy Format

--upstream-proxy accepts both SOCKS5 and HTTP proxy URLs:

text
socks5://[username[:password]@]host[:port]
http://[username[:password]@]host[:port]

Examples:

  • socks5://proxy.example.com:1080
  • socks5://user:pass@proxy.example.com:1080
  • http://user:pass@proxy.example.com:8080

Released under the MIT License.