How do I use the Speedify Command Line Interface?

Speedify CLI

The Speedify CLI is a cross-platform utility to help command and monitor Speedify without using the traditional user interface. It is meant to be run on the same device that it is controlling.

The output from Speedify CLI is always one of the following:

  • On success, its exit value is 0 and it prints JSON to the console. If there are more than one JSON objects they will be separated by double newlines.
  • On error, its exit value is one of the following:
    • 1 = Error from the Speedify API, outputs a JSON error on stderr
    • 2 = Invalid Parameter, outputs a text error message on stderr
    • 3 = Missing Parameter, outputs a text error message on stderr
    • 4 = Unknown Parameter, outputs the full usage message on stderr

For errors from the Speedify API (1), a JSON error message is emitted on stderr. This error contains the fields:

  • "errorCode" - a numeric code representing this error,
  • "errorType" - a short text code of the error category
  • "errorMessage" - a plain text message about the problem

Example Speedify API error message:

<code class="text language-text">{
        "errorCode":    3841,
        "errorType":    "Timeout waiting for result",
        "errorMessage": "Timeout"
}

On Windows, the executable command is speedify_cli.exe. On Linux and Mac, it is speedify_cli. For the example commands below, we will use the Linux/Mac name. Add .exe if you are using Windows.

Usage

The CLI contains the following commands:

<code class="text language-text">speedify_cli.exe v12.4.0.10504
Usage : speedify_cli.exe action
Actions:
   adapter datalimit daily <adapter id> <data usage in bytes|unlimited>
   adapter datalimit dailyboost <adapter id> <additional bytes>
   adapter datalimit monthly <adapter id> <data usage in bytes|unlimited> <day of the month to reset on|0 for last 30 days>
   adapter encryption <adapter id> <on|off>
   adapter overlimitratelimit <adapter id> <speed in bits per second|0 to stop using>
   adapter priority <adapter id> <automatic|always|secondary|backup|never>
   adapter ratelimit <adapter id> <speed in bits per second|unlimited>
   adapter resetusage <adapter id>
   captiveportal check
   captiveportal login <on|off> <adapter id>
   headercompression <on|off>
   connect [ closest | public | private | p2p | <country> [<city> [<number>]] | last ]
   connectmethod < closest | public | private | p2p | <country> [<city> [<number>]] >
   daemon exit
   directory [directory server domain]
   dns <ip address> ...
   disconnect
   encryption <on|off>
   esni <on|off>
   gateway [directory gateway uri]
   jumbo <on|off>
   login <username> [password]
   login auto
   login oauth [access token]
   logout
   mode <redundant|speed|streaming>
   overflow <speed in mbps>
   packetaggr <on|off>
   ports [port/proto] ...
   privacy dnsleak <on|off>
   privacy killswitch <on|off>
   privacy ipleak <on|off>
   privacy requestToDisableDoH <on|off>
   route default <on|off>
   show < servers | settings | privacy | adapters | currentserver | user | directory | connectmethod | streamingbypass | disconnect | streaming | speedtest>
   speedtest
   streamtest
   startupconnect <on|off>
   state
   stats [historic | [duration in seconds] [current|day|week|month|total|<period in hours>] ...]
   streaming domains <add|rem|set> <domain> ...
   streaming ipv4 <add|rem|set> <ip address> ...
   streaming ipv6 <add|rem|set> <ip address> ...
   streaming ports <add|rem|set> [port[-portRangeEnd]/proto] ...
   streamingbypass domains <add|rem|set> <domain> ...
   streamingbypass ipv4 <add|rem|set> <ip address> ...
   streamingbypass ipv6 <add|rem|set> <ip address> ...
   streamingbypass ports <add|rem|set> <port[-portRangeEnd]/proto> ...
   streamingbypass service <service name> <on|off>
   transport <auto|tcp|tcp-multi|udp|https>
   version

Commands

adapter datalimit daily <adapter id> <data usage in bytes|unlimited>

The adapter datalimit daily limit the data usage for a specific adapter on a daily basis. The usage can be either limited in bytes or unlimited. This will set the maxDaily value accordingly. The adapter guid can be found by using the show adapters option. Whether the adapter is disabled or rate limited is controlled by the adapter overlimitratelimit setting.

<code class="text language-text">$ speedify_cli adapter datalimit daily {1B085A42-662D-4FBD-911B-C2CDEF0D975F} 0 
[
    {
        "adapterID" : "{1B085A42-662D-4FBD-911B-C2CDEF0D975F}",
        "connectedNetworkBSSID" : "",
        "connectedNetworkName" : "",
        "dataUsage" :
        {
            "overlimitRatelimit" : 5000000,
            "usageDaily" : 370264,
            "usageDailyBoost" : 0,
            "usageDailyLimit" : 0,
            "usageMonthly" : 1101888680,
            "usageMonthlyLimit" : 0,
            "usageMonthlyResetDay" : 0
        },
        "description" : "ASIX AX88179A USB 3.2 Gen1 to Gigabit Ethernet Adapter #2",
        "isp" : "Verizon Fios",
        "name" : "Ethernet 3",
        "priority" : "always",
        "rateLimit" : 0,
...

adapter datalimit dailyboost <adapter id> <additional bytes>

Bumps up the daily datalimit for today only on a specific adapter on a daily basis. The adapter guid can be found by using the show adapters option.

<code class="text language-text">$ speedify_cli adapter datalimit dailyboost {1B085A42-662D-4FBD-911B-C2CDEF0D975F} 0 
[
    {
        "adapterID" : "{1B085A42-662D-4FBD-911B-C2CDEF0D975F}",
        "connectedNetworkBSSID" : "",
        "connectedNetworkName" : "",
        "dataUsage" :
        {
            "overlimitRatelimit" : 5000000,
            "usageDaily" : 370340,
            "usageDailyBoost" : 0,
            "usageDailyLimit" : 0,
            "usageMonthly" : 1101888756,
            "usageMonthlyLimit" : 0,
            "usageMonthlyResetDay" : 0
        },
        "description" : "ASIX AX88179A USB 3.2 Gen1 to Gigabit Ethernet Adapter #2",
        "isp" : "Verizon Fios",
        "name" : "Ethernet 3",
        "priority" : "always",
        "rateLimit" : 0,
...

adapter datalimit monthly <adapter id> <data usage in bytes|unlimited> <day of the month to reset on|0 for last 30 days>

The adapter datalimit monthly sets a monthly data cap that resets on a set date or lasts 30 days. The usage can be either limited in bytes or unlimited. This will set the max and resetDay accordingly. Whether the adapter is disabled or rate limited is controlled by the adapter overlimitratelimit setting.

<code class="text language-text">$ speedify_cli adapter datalimit monthly {1B085A42-662D-4FBD-911B-C2CDEF0D975F} 2000000000 0 
[
    {
        "adapterID" : "{1B085A42-662D-4FBD-911B-C2CDEF0D975F}",
        "connectedNetworkBSSID" : "",
        "connectedNetworkName" : "",
        "dataUsage" :
        {
            "overlimitRatelimit" : 5000000,
            "usageDaily" : 373881,
            "usageDailyBoost" : 0,
            "usageDailyLimit" : 0,
            "usageMonthly" : 1101892297,
            "usageMonthlyLimit" : 2000000000,
            "usageMonthlyResetDay" : 0
        },
        "description" : "ASIX AX88179A USB 3.2 Gen1 to Gigabit Ethernet Adapter #2",
        "isp" : "Verizon Fios",
        "name" : "Ethernet 3",
        "priority" : "always",
        "rateLimit" : 0,
...

adapter encryption <adapter id> <on|off>

Controls encryption on a single adapter. Note that using the encryption command will remove all per-adapter encryption settings. Most of the time, you'll just want to use the encryption command that changes all adapters at same time.

<code class="text language-text">$ speedify_cli adapter encryption {1B085A42-662D-4FBD-911B-C2CDEF0D975F} off 
{
    "allowChaChaEncryption" : true,
    "bondingMode" : "speed",
    "enableAutomaticPriority" : true,
    "enableDefaultRoute" : true,
    "encrypted" : true,
    "forwardedPorts" : [],
    "headerCompression" : true,
    "jumboPackets" : true,
    "overflowThreshold" : 30.0,
    "packetAggregation" : true,
    "perConnectionEncryptionEnabled" : true,
    "perConnectionEncryptionSettings" :
    [
        {
            "adapterID" : "{1B085A42-662D-4FBD-911B-C2CDEF0D975F}",
            "encrypted" : false
        }
    ],
    "perConnectionParallelSockets" :
...

adapter overlimitratelimit <adapter id> <speed in bits per second|0 to stop using>

When an adapter datalimit is hit, this rate limit (in bit per second) is applied to the adapter. Set to 0 to disable the adapter.

<code class="text language-text">$ speedify_cli adapter overlimitratelimit {1B085A42-662D-4FBD-911B-C2CDEF0D975F} 0 
[
    {
        "adapterID" : "{1B085A42-662D-4FBD-911B-C2CDEF0D975F}",
        "connectedNetworkBSSID" : "",
        "connectedNetworkName" : "",
        "dataUsage" :
        {
            "overlimitRatelimit" : 0,
            "usageDaily" : 381461,
            "usageDailyBoost" : 0,
            "usageDailyLimit" : 0,
            "usageMonthly" : 1101899877,
            "usageMonthlyLimit" : 0,
            "usageMonthlyResetDay" : 0
        },
        "description" : "ASIX AX88179A USB 3.2 Gen1 to Gigabit Ethernet Adapter #2",
        "isp" : "Verizon Fios",
        "name" : "Ethernet 3",
        "priority" : "always",
        "rateLimit" : 0,
...

adapter priority <adapter id> <automatic|always|secondary|backup|never>

The adapter priority command allows the user to choose which adapter gets one of the following priorities:

Priority Description
automatic  Let Speedify manage the connection's priority
always 
Use whenever connected
secondary 
Use less than Always connection- only when Always connections are congested or not working
backup 
Only use when other connections are unavailable
never 
Adapter is not used

This will set priority as one of the above mentioned options accordingly.

<code class="text language-text">$ speedify_cli adapter priority {1B085A42-662D-4FBD-911B-C2CDEF0D975F} always 
[
    {
        "adapterID" : "{1B085A42-662D-4FBD-911B-C2CDEF0D975F}",
        "connectedNetworkBSSID" : "",
        "connectedNetworkName" : "",
        "dataUsage" :
        {
            "overlimitRatelimit" : 0,
            "usageDaily" : 381461,
            "usageDailyBoost" : 0,
            "usageDailyLimit" : 0,
            "usageMonthly" : 1101899877,
            "usageMonthlyLimit" : 0,
            "usageMonthlyResetDay" : 0
        },
        "description" : "ASIX AX88179A USB 3.2 Gen1 to Gigabit Ethernet Adapter #2",
        "isp" : "Verizon Fios",
        "name" : "Ethernet 3",
        "priority" : "always",
        "rateLimit" : 0,
...

adapter ratelimit <adapter id> <speed in bits per second|unlimited>

The adapter ratelimit command allows the user to throttle the adapter's maximum speed, in bits per second.

<code class="text language-text">$ speedify_cli adapter ratelimit {1B085A42-662D-4FBD-911B-C2CDEF0D975F} 0 
[
    {
        "adapterID" : "{1B085A42-662D-4FBD-911B-C2CDEF0D975F}",
        "connectedNetworkBSSID" : "",
        "connectedNetworkName" : "",
        "dataUsage" :
        {
            "overlimitRatelimit" : 0,
            "usageDaily" : 381461,
            "usageDailyBoost" : 0,
            "usageDailyLimit" : 0,
            "usageMonthly" : 1101899877,
            "usageMonthlyLimit" : 0,
            "usageMonthlyResetDay" : 0
        },
        "description" : "ASIX AX88179A USB 3.2 Gen1 to Gigabit Ethernet Adapter #2",
        "isp" : "Verizon Fios",
        "name" : "Ethernet 3",
        "priority" : "always",
        "rateLimit" : 0,
...

adapter resetusage <adapter id>

The adapter resetusage command resets the statistics associated with this adapter. This restarts any daily and monthly data caps.

<code class="text language-text">$ speedify_cli adapter resetusage {1B085A42-662D-4FBD-911B-C2CDEF0D975F} 
[
    {
        "adapterID" : "{1B085A42-662D-4FBD-911B-C2CDEF0D975F}",
        "connectedNetworkBSSID" : "",
        "connectedNetworkName" : "",
        "dataUsage" :
        {
            "overlimitRatelimit" : 0,
            "usageDaily" : 0,
            "usageDailyBoost" : 0,
            "usageDailyLimit" : 0,
            "usageMonthly" : 0,
            "usageMonthlyLimit" : 0,
            "usageMonthlyResetDay" : 0
        },
        "description" : "ASIX AX88179A USB 3.2 Gen1 to Gigabit Ethernet Adapter #2",
        "isp" : "Verizon Fios",
        "name" : "Ethernet 3",
        "priority" : "always",
        "rateLimit" : 0,
...

captiveportal check

Checks whether an interfaces are currently being blocked by a captive portal. Returns an array of adapterIDs which are currently captive.

<code class="text language-text">$ speedify_cli speedify_cli.exe captiveportal check
["{D5306735-8BD9-4F89-A1AF-F485CA23208C}"]

captiveportal login <on|off> <adapter id>

Starts or stops directing web traffic out the local interface to allow users to login to the captive portal web page. Setting this to "on" and passing in an Adapter ID, will direct and new connections on ports 53,80 and 443 out the specified adapter. If the Speedify user interface is running it will launch a captive portal web browser component. Setting this to "off" (no Adapter ID required in this case), will stop the forwarding of the web traffic, and will allow it to all pass over the VPN tunnel as usal.

<code class="text language-text">$ speedify_cli speedify_cli.exe captiveportal login on "{D5306735-8BD9-4F89-A1AF-F485CA23208C}"
{
        "enabled":      true,
        "adapterID":    "{D5306735-8BD9-4F89-A1AF-F485CA23208C}"
}

headercompression <on|off>

The headercompression command sets header compression on/off.

<code class="text language-text">$ speedify_cli headercompression on 
{
    "allowChaChaEncryption" : true,
    "bondingMode" : "speed",
    "enableAutomaticPriority" : true,
    "enableDefaultRoute" : true,
    "encrypted" : true,
    "forwardedPorts" : [],
    "headerCompression" : true,
    "jumboPackets" : true,
    "overflowThreshold" : 30.0,
    "packetAggregation" : true,
    "perConnectionEncryptionEnabled" : true,
    "perConnectionEncryptionSettings" :
    [
        {
            "adapterID" : "{1B085A42-662D-4FBD-911B-C2CDEF0D975F}",
            "encrypted" : false
        }
    ],
    "perConnectionParallelSockets" :
...

connect [ closest | public | private | p2p | <country> [<city> [<number>]] | last ]

The connect command connects to a server based on your connectmethod setting, or a server of your choosing. It prints details of the server it has selected.

The show servers command will give you a detailed list of servers with their countries, cities and number as fields that you can use in this command.

To connect to the nearest server in a particular country, pass along a two-letter country code drawn from the speedify_cli show servers command:

<code class="text language-text">  $ speedify_cli connect ca

To connect to a particular city, pass along a two-letter country code and city, drawn from the speedify_cli show servers command:

<code class="text language-text">  $ speedify_cli connect us-atlanta

To connect to a specific server, pass along a two-letter country code, city, and number, drawn from the speedify_cli show servers command:

<code class="text language-text">  $ speedify_cli connect us-atlanta-3

Example:

<code class="text language-text">$ speedify_cli connect 
{
    "city" : "newark",
    "country" : "us",
    "friendlyName" : "United States - Newark #1",
    "isPrivate" : true,
    "num" : 1,
    "publicIP" :
    [
        "104.237.8.8"
    ],
    "tag" : "privateus-newark-1",
    "torrentAllowed" : false
}

connectmethod < closest | public | private | p2p | <country> [<city> [<number>]] >

The connect command connects to a server based on your connectmethod setting, or a server of your choosing. It prints details of the server it has selected.

The show servers command will give you a detailed list of servers with their countries, cities and number as fields that you can use in this command.

To connect to the nearest server in a particular country, pass along a two-letter country code drawn from the speedify_cli show servers command:

<code class="text language-text">  $ speedify_cli connect ca

To connect to a particular city, pass along a two-letter country code and city, drawn from the speedify_cli show servers command:

<code class="text language-text">  $ speedify_cli connect us-atlanta

To connect to a specific server, pass along a two-letter country code, city, and number, drawn from the speedify_cli show servers command:

<code class="text language-text">  $ speedify_cli connect us-atlanta-3

Example:

<code class="text language-text">$ speedify_cli connect 
{
    "city" : "newark",
    "country" : "us",
    "friendlyName" : "United States - Newark #1",
    "isPrivate" : true,
    "num" : 1,
    "publicIP" :
    [
        "104.237.8.8"
    ],
    "tag" : "privateus-newark-1",
    "torrentAllowed" : false
}

daemon exit

Causes the Speedify service to disconnect, and exit. In general, leave this alone.

directory [directory server domain]

Controls the directory server. In general, leave this alone.

dns <ip address> ...

The dns command sets the DNS servers to use for domain name resolution.

<code class="text language-text">$ speedify_cli dns 8.8.8.8 
{
    "dnsAddresses" :
    [
        "8.8.8.8"
    ],
    "dnsleak" : true,
    "ipleak" : true,
    "killswitch" : false,
    "requestToDisableDoH" : true
}

disconnect

The disconnect command disconnects from the server. It prints the state immediately after the request to disconnect is made.

<code class="text language-text">$ speedify_cli disconnect 
{
    "state" : "LOGGED_IN"
}

encryption <on|off>

The encryption command enables or disables encryption of all tunneled traffic. It prints the connection settings immediately after the change is made. Note that this will clear all per-adapter encryption settings from the adapter encryption command.

<code class="text language-text">$ speedify_cli encryption off 
{
    "allowChaChaEncryption" : true,
    "bondingMode" : "speed",
    "enableAutomaticPriority" : true,
    "enableDefaultRoute" : true,
    "encrypted" : false,
    "forwardedPorts" : [],
    "headerCompression" : true,
    "jumboPackets" : true,
    "overflowThreshold" : 30.0,
    "packetAggregation" : true,
    "perConnectionEncryptionEnabled" : false,
    "perConnectionEncryptionSettings" : [],
    "perConnectionParallelSockets" :
    [
        {
            "adapterID" : "all",
            "sockets" : 8
        }
    ],
...

esni <on|off>

The esni command sets ESNI (encrypted server name identification) on/off.

<code class="text language-text">$ speedify_cli esni on 
{
    "domain" : "",
    "enableEsni" : true,
    "gatewayUri" : ""
}

gateway [directory gateway uri]

Configures the OAuth gateway url to use.

<code class="text language-text">$ speedify_cli gateway https://my.domain.com/oauth/gateway/path 
{
    "domain" : "",
    "enableEsni" : true,
    "gatewayUri" : "https://my.domain.com/oauth/gateway/path"
}

jumbo <on|off>

The jumbo command allows the TUN adapter to accept larger MTU packets. This will set jumbo_packets to either True or False.

<code class="text language-text">$ speedify_cli jumbo on 
{
    "allowChaChaEncryption" : true,
    "bondingMode" : "speed",
    "enableAutomaticPriority" : true,
    "enableDefaultRoute" : true,
    "encrypted" : false,
    "forwardedPorts" : [],
    "headerCompression" : true,
    "jumboPackets" : true,
    "overflowThreshold" : 30.0,
    "packetAggregation" : true,
    "perConnectionEncryptionEnabled" : false,
    "perConnectionEncryptionSettings" : [],
    "perConnectionParallelSockets" :
    [
        {
            "adapterID" : "all",
            "sockets" : 8
        }
    ],
...

login <username> [password]

The login command instructs Speedify to connect with the given username and password. It prints the state immediately after the request to login is made. Speedify will then proceed to automatically connect if the login succeeds.

<code class="text language-text">$ speedify_cli speedify_cli.exe login [email protected] password123
{
        "state":        "LOGGED_IN"
}

login auto

The login auto command instructs Speedify to connect to a free account with a set data limit. It prints the following state immediately after the request is made.

<code class="text language-text">$ speedify_cli speedify_cli.exe login auto
{
        "state":        "LOGGED_IN"
}

login oauth [access token]

The login oauth logs in with the user represented by encrypted token passed in. It prints the state immediately after the request to login is made. Speedify will then proceed to automatically connect if the login succeeds.

<code class="text language-text">$ speedify_cli speedify_cli.exe login oauth {encrypted_token}
{
        "state":        "LOGGED_IN"
}

logout

The logout command disconnects from the server and flushes any user credentials that were stored.

<code class="text language-text">$ speedify_cli speedify_cli.exe logout
{
        "state":        "LOGGED_OUT"
}

mode <redundant|speed|streaming>

The mode command instructs Speedify to optimize for maximum connection speed or redundancy. Valid options are speed, redundant, and streaming.

<code class="text language-text">$ speedify_cli mode speed 
{
    "allowChaChaEncryption" : true,
    "bondingMode" : "speed",
    "enableAutomaticPriority" : true,
    "enableDefaultRoute" : true,
    "encrypted" : false,
    "forwardedPorts" : [],
    "headerCompression" : true,
    "jumboPackets" : true,
    "overflowThreshold" : 30.0,
    "packetAggregation" : true,
    "perConnectionEncryptionEnabled" : false,
    "perConnectionEncryptionSettings" : [],
    "perConnectionParallelSockets" :
    [
        {
            "adapterID" : "all",
            "sockets" : 8
        }
    ],
...

overflow <speed in mbps>

Speed in Mbps after which Secondary connections are not used.

<code class="text language-text">$ speedify_cli overflow 10.0 
{
    "allowChaChaEncryption" : true,
    "bondingMode" : "speed",
    "enableAutomaticPriority" : true,
    "enableDefaultRoute" : true,
    "encrypted" : false,
    "forwardedPorts" : [],
    "headerCompression" : true,
    "jumboPackets" : true,
    "overflowThreshold" : 10.0,
    "packetAggregation" : true,
    "perConnectionEncryptionEnabled" : false,
    "perConnectionEncryptionSettings" : [],
    "perConnectionParallelSockets" :
    [
        {
            "adapterID" : "all",
            "sockets" : 8
        }
    ],
...

packetaggr <on|off>

The packetaggr command sets packet aggregation on/off.

<code class="text language-text">$ speedify_cli packetaggr on 
{
    "allowChaChaEncryption" : true,
    "bondingMode" : "speed",
    "enableAutomaticPriority" : true,
    "enableDefaultRoute" : true,
    "encrypted" : false,
    "forwardedPorts" : [],
    "headerCompression" : true,
    "jumboPackets" : true,
    "overflowThreshold" : 10.0,
    "packetAggregation" : true,
    "perConnectionEncryptionEnabled" : false,
    "perConnectionEncryptionSettings" : [],
    "perConnectionParallelSockets" :
    [
        {
            "adapterID" : "all",
            "sockets" : 8
        }
    ],
...

ports [port/proto] ...

The ports command instructs Speedify to request public ports from a Dedicated (private) Speed Server. These settings only go into effect after a reconnect, and they are ignored by public Speed Servers. Requesting a port that is already taken by another user will lead to the connect request failing, and state will return to LOGGED_IN. Calling the ports command with no additional parameters will clear the port forward requests.

<code class="text language-text">$ speedify_cli ports 8001/tcp 
{
    "allowChaChaEncryption" : true,
    "bondingMode" : "speed",
    "enableAutomaticPriority" : true,
    "enableDefaultRoute" : true,
    "encrypted" : false,
    "forwardedPorts" :
    [
        {
            "port" : 8001,
            "protocol" : "tcp"
        }
    ],
    "headerCompression" : true,
    "jumboPackets" : true,
    "overflowThreshold" : 10.0,
    "packetAggregation" : true,
    "perConnectionEncryptionEnabled" : false,
    "perConnectionEncryptionSettings" : [],
    "perConnectionParallelSockets" :
...

privacy dnsleak <on|off>

A Windows only setting to ensure DNS cannot go around the tunnel. This could make certain LAN based printers and shared drivers inaccessible.

<code class="text language-text">$ speedify_cli privacy dnsleak off 
{
    "dnsAddresses" :
    [
        "8.8.8.8"
    ],
    "dnsleak" : false,
    "ipleak" : true,
    "killswitch" : false,
    "requestToDisableDoH" : true
}

privacy killswitch <on|off>

A Windows only setting to configure firewall rules to make it impossible to access the internet when Speedify is not connected.

<code class="text language-text">$ speedify_cli privacy killswitch off 
{
    "dnsAddresses" :
    [
        "8.8.8.8"
    ],
    "dnsleak" : false,
    "ipleak" : true,
    "killswitch" : false,
    "requestToDisableDoH" : true
}

privacy ipleak <on|off>

A Windows only setting to ensure IP cannot go around the tunnel by removing default routes from other interfaces. This could make servers hosted on the computer inaccessible from outside networks.

<code class="text language-text">$ speedify_cli privacy ipleak off 
{
    "dnsAddresses" :
    [
        "8.8.8.8"
    ],
    "dnsleak" : false,
    "ipleak" : false,
    "killswitch" : false,
    "requestToDisableDoH" : true
}

privacy requestToDisableDoH <on|off>

If the Speedify VPN connection should request that browsers disable DNS over HTTPS. Enabling this can help streaming and streamingbypass rules function.

<code class="text language-text">$ speedify_cli privacy requestToDisableDoH on 
{
    "dnsAddresses" :
    [
        "8.8.8.8"
    ],
    "dnsleak" : false,
    "ipleak" : false,
    "killswitch" : false,
    "requestToDisableDoH" : true
}

route default <on|off>

Configures whether Speedify will obtain a 'default' route to the Internet over the VPN adapter.

<code class="text language-text">$ speedify_cli route default on 
{
    "allowChaChaEncryption" : true,
    "bondingMode" : "speed",
    "enableAutomaticPriority" : true,
    "enableDefaultRoute" : true,
    "encrypted" : false,
    "forwardedPorts" :
    [
        {
            "port" : 8001,
            "protocol" : "tcp"
        }
    ],
    "headerCompression" : true,
    "jumboPackets" : true,
    "overflowThreshold" : 10.0,
    "packetAggregation" : true,
    "perConnectionEncryptionEnabled" : false,
    "perConnectionEncryptionSettings" : [],
    "perConnectionParallelSockets" :
...

show servers

The show servers command retrieves the current list of Speed Servers. If you have access to any Dedicated Speed Servers, they appear in a private array. The public pool of Speed Servers appear in a public array.

<code class="text language-text">$ speedify_cli show servers 
{
    "private" :
    [
        {
            "city" : "atlanta",
            "country" : "us",
            "isPrivate" : true,
            "num" : 18,
            "tag" : "privateus-atlanta-18"
        },
        {
            "city" : "frankfurt",
            "country" : "de",
            "isPrivate" : true,
            "num" : 5,
            "tag" : "privatede-frankfurt-5"
        },
        {
            "city" : "newark",
            "country" : "us",
...

show settings

The show settings command retrieves the current connection settings. These settings are sent to the server at connect time, and they can be retrieved at any time.

<code class="text language-text">$ speedify_cli show settings 
{
    "allowChaChaEncryption" : true,
    "bondingMode" : "speed",
    "enableAutomaticPriority" : true,
    "enableDefaultRoute" : true,
    "encrypted" : false,
    "forwardedPorts" :
    [
        {
            "port" : 8001,
            "protocol" : "tcp"
        }
    ],
    "headerCompression" : true,
    "jumboPackets" : true,
    "overflowThreshold" : 10.0,
    "packetAggregation" : true,
    "perConnectionEncryptionEnabled" : false,
    "perConnectionEncryptionSettings" : [],
    "perConnectionParallelSockets" :
...

show privacy

Outputs privacy related settings

<code class="text language-text">$ speedify_cli show privacy 
{
    "dnsAddresses" :
    [
        "8.8.8.8"
    ],
    "dnsleak" : false,
    "ipleak" : false,
    "killswitch" : false,
    "requestToDisableDoH" : true
}

show adapters

The show adapters command allows the user to view all of the network adapters, and their settings and statistics.

<code class="text language-text">$ speedify_cli show adapters 
[
    {
        "adapterID" : "{1B085A42-662D-4FBD-911B-C2CDEF0D975F}",
        "connectedNetworkBSSID" : "",
        "connectedNetworkName" : "",
        "dataUsage" :
        {
            "overlimitRatelimit" : 0,
            "usageDaily" : 59491,
            "usageDailyBoost" : 0,
            "usageDailyLimit" : 0,
            "usageMonthly" : 59491,
            "usageMonthlyLimit" : 0,
            "usageMonthlyResetDay" : 0
        },
        "description" : "ASIX AX88179A USB 3.2 Gen1 to Gigabit Ethernet Adapter #2",
        "isp" : "Verizon Fios",
        "name" : "Ethernet 3",
        "priority" : "always",
        "rateLimit" : 0,
...

show currentserver

The show currentserver command displays the last server Speedify was connected (which, if you are connected is the current server).

<code class="text language-text">$ speedify_cli show currentserver 
{
    "city" : "newark",
    "country" : "us",
    "friendlyName" : "United States - Newark #1",
    "isPrivate" : true,
    "num" : 1,
    "publicIP" :
    [
        "104.237.8.8"
    ],
    "tag" : "privateus-newark-1",
    "torrentAllowed" : false
}

show user

Outputs information about the currently logged in user.

<code class="text language-text">$ speedify_cli show user 
{
    "bytesAvailable" : -1,
    "bytesUsed" : 28234173237,
    "dataPeriodEnd" : "2022-08-22",
    "email" : "****@connectify.me",
    "isAutoAccount" : false,
    "isTeam" : true,
    "minutesAvailable" : -1,
    "minutesUsed" : 33831,
    "paymentType" : "yearly"
}

show directory

The show directory command shows the current directory server.

<code class="text language-text">$ speedify_cli show directory 
{
    "domain" : "",
    "enableEsni" : true,
    "gatewayUri" : ""
}

show connectmethod

The show currentserver command displays information the last server to which Speedify connected.

<code class="text language-text">$ speedify_cli show connectmethod 
{
    "city" : "",
    "connectMethod" : "closest",
    "country" : "",
    "num" : 0
}

show streamingbypass

The show streamingbypass command displays current streaming bypass service settings.

<code class="text language-text">$ speedify_cli show streamingbypass 
{
    "domains" : [],
    "ipv4" : [],
    "ipv6" : [],
    "ports" : [],
    "services" :
    [
        {
            "enabled" : true,
            "title" : "Netflix"
        },
        {
            "enabled" : true,
            "title" : "Disney+"
        },
        {
            "enabled" : true,
            "title" : "HBO"
        },
        {
...

show disconnect

Displays the reason for the last disconnect.

<code class="text language-text">$ speedify_cli show disconnect 
{
    "disconnectReason" : "USERINITIATED"
}

show streaming

The show streaming command displays current streaming mode settings.

<code class="text language-text">$ speedify_cli show streaming 
{
    "domains" : [],
    "ipv4" : [],
    "ipv6" : [],
    "ports" : []
}

show speedtest

The show speedtest command displays the last speed test results.

<code class="text language-text">$ speedify_cli show speedtest 
[]

speedtest

Runs a speed test over the VPN tunnel.

<code class="text language-text">$ speedify_cli speedtest 
[
    {
        "city" : "newark",
        "country" : "privateus",
        "downloadSpeed" : 200769149.86093968,
        "isError" : false,
        "latency" : 9,
        "numConnections" : 2,
        "time" : 1660674040,
        "type" : "speed",
        "uploadSpeed" : 173150413.87541452
    }
]

streamtest

Runs a stream test over the VPN tunnel.

<code class="text language-text">$ speedify_cli streamtest 
[
    {
        "city" : "newark",
        "country" : "privateus",
        "downloadSpeed" : 0.0,
        "fps" : 60,
        "isError" : false,
        "jitter" : 0,
        "latency" : 9,
        "loss" : 0.024320311299984639,
        "numConnections" : 2,
        "resolution" : "4K",
        "time" : 1660674072,
        "type" : "streaming",
        "uploadSpeed" : 49997133.46098987
    }
]

startupconnect <on|off>

The startupconnect option tells Speedify if it should connect automatically at startup or not. It prints the current settings immediately after the request is made.

<code class="text language-text">$ speedify_cli startupconnect on 
{
    "allowChaChaEncryption" : true,
    "bondingMode" : "speed",
    "enableAutomaticPriority" : true,
    "enableDefaultRoute" : true,
    "encrypted" : false,
    "forwardedPorts" :
    [
        {
            "port" : 8001,
            "protocol" : "tcp"
        }
    ],
    "headerCompression" : true,
    "jumboPackets" : true,
    "overflowThreshold" : 10.0,
    "packetAggregation" : true,
    "perConnectionEncryptionEnabled" : false,
    "perConnectionEncryptionSettings" : [],
    "perConnectionParallelSockets" :
...

state

The state command retrieves the current state of the connection. Possible states are LOGGED_OUT, LOGGING_IN, LOGGED_IN, AUTO_CONNECTING, CONNECTING, DISCONNECTING, CONNECTED, OVERLIMIT, and UNKNOWN

<code class="text language-text">$ speedify_cli state 
{
    "state" : "CONNECTED"
}

stats [historic | [duration in seconds] [current|day|week|month|total|<period in hours>] ...]

The stats command subscribes to a feed of connection and session statistics. By default, this feed will continue until the speedify_cli process is terminated, but an optional parameter can be given to stop and exit after the given number of seconds. This can be useful to monitor how many connections are being utilized by Speedify, and what their current network activity level is in bytes per second. You can specify up to 5 time periods to receive stats over.

<code class="text language-text">$ speedify_cli stats 1 
["state",
{
    "state" : "CONNECTED"
}
]

["connection_stats",
{
    "connections" :
    [
        {
            "adapterID" : "{1B085A42-662D-4FBD-911B-C2CDEF0D975F}",
            "connected" : true,
            "connectionID" : "Ethernet 3%/64",
            "inFlight" : 0,
            "inFlightWindow" : 3781830,
            "jitterMs" : 2,
            "latencyMs" : 11,
            "localIp" : "2600:4040:79a1:6200:8de9:ae07:270b:2999",
            "lossReceive" : 0.0,
...

streaming domains <add|rem|set> <domain> ...

Configure extra domains for streaming mode.

<code class="text language-text">$ speedify_cli streaming domains add mynewstreamingservice.com 
{
    "domains" :
    [
        "mynewstreamingservice.com"
    ],
    "ipv4" : [],
    "ipv6" : [],
    "ports" : []
}

streaming ipv4 <add|rem|set> <ip address> ...

Configure extra IPv4 addresses for streaming mode.

<code class="text language-text">$ speedify_cli streaming ipv4 add 8.8.8.8 
{
    "domains" :
    [
        "mynewstreamingservice.com"
    ],
    "ipv4" :
    [
        "8.8.8.8"
    ],
    "ipv6" : [],
    "ports" : []
}

streaming ipv6 <add|rem|set> <ip address> ...

Configure extra IPv6 addresses for streaming mode.

<code class="text language-text">$ speedify_cli streaming ipv6 add 2001:4860:4860::8888 
{
    "domains" :
    [
        "mynewstreamingservice.com"
    ],
    "ipv4" :
    [
        "8.8.8.8"
    ],
    "ipv6" :
    [
        "2001:4860:4860::8888"
    ],
    "ports" : []
}

streaming ports <add|rem|set> [port[-portRangeEnd]/proto] ...

Configure extra ports for streaming mode.

<code class="text language-text">$ speedify_cli streaming ports add 8200/tcp 
{
    "domains" :
    [
        "mynewstreamingservice.com"
    ],
    "ipv4" :
    [
        "8.8.8.8"
    ],
    "ipv6" :
    [
        "2001:4860:4860::8888"
    ],
    "ports" :
    [
        {
            "port" : 8200,
            "protocol" : "tcp"
        }
    ]
...

streamingbypass domains <add|rem|set> <domain> ...

Configure extra domains to bypass the VPN.

<code class="text language-text">$ speedify_cli streamingbypass domains add hulu.com 
{
    "domains" :
    [
        "hulu.com"
    ],
    "ipv4" : [],
    "ipv6" : [],
    "ports" : [],
    "services" :
    [
        {
            "enabled" : true,
            "title" : "Netflix"
        },
        {
            "enabled" : true,
            "title" : "Disney+"
        },
        {
            "enabled" : true,
...

streamingbypass ipv4 <add|rem|set> <ip address> ...

Configure extra IPv4 addresses to bypass the VPN.

<code class="text language-text">$ speedify_cli streamingbypass ipv4 add 8.8.8.8 
{
    "domains" :
    [
        "hulu.com"
    ],
    "ipv4" :
    [
        "8.8.8.8"
    ],
    "ipv6" : [],
    "ports" : [],
    "services" :
    [
        {
            "enabled" : true,
            "title" : "Netflix"
        },
        {
            "enabled" : true,
            "title" : "Disney+"
...

streamingbypass ipv6 <add|rem|set> <ip address> ...

Configure extra IPv6 addresses to bypass the VPN.

<code class="text language-text">$ speedify_cli streamingbypass ipv4 add 2001:4860:4860::8888 
{
    "domains" :
    [
        "hulu.com"
    ],
    "ipv4" :
    [
        "8.8.8.8",
        "0.0.8.8"
    ],
    "ipv6" : [],
    "ports" : [],
    "services" :
    [
        {
            "enabled" : true,
            "title" : "Netflix"
        },
        {
            "enabled" : true,
...

streamingbypass ports <add|rem|set> <port[-portRangeEnd]/proto> ...

Configure extra ports to bypass the VPN.

<code class="text language-text">$ speedify_cli streamingbypass ports add 4800/tcp 
{
    "domains" :
    [
        "hulu.com"
    ],
    "ipv4" :
    [
        "8.8.8.8",
        "0.0.8.8"
    ],
    "ipv6" : [],
    "ports" :
    [
        {
            "port" : 4800,
            "protocol" : "tcp"
        }
    ],
    "services" :
    [
...

streamingbypass service <service name> <on|off>

Configures whether Speedify will allow traffic from a service to bypass the VPN.

<code class="text language-text">$ speedify_cli streamingbypass service Netflix on 
{
    "domains" :
    [
        "hulu.com"
    ],
    "ipv4" :
    [
        "8.8.8.8",
        "0.0.8.8"
    ],
    "ipv6" : [],
    "ports" :
    [
        {
            "port" : 4800,
            "protocol" : "tcp"
        }
    ],
    "services" :
    [
...

transport <auto|tcp|tcp-multi|udp|https>

The transport command instructs Speedify to choose between one of the network protocols auto, tcp, tcp-multi, udp, or https. The transport_mode value is set accordingly based on the user's selection.

<code class="text language-text">$ speedify_cli transport udp 
{
    "allowChaChaEncryption" : true,
    "bondingMode" : "speed",
    "enableAutomaticPriority" : true,
    "enableDefaultRoute" : true,
    "encrypted" : false,
    "forwardedPorts" :
    [
        {
            "port" : 8001,
            "protocol" : "tcp"
        }
    ],
    "headerCompression" : true,
    "jumboPackets" : true,
    "overflowThreshold" : 10.0,
    "packetAggregation" : true,
    "perConnectionEncryptionEnabled" : false,
    "perConnectionEncryptionSettings" : [],
    "perConnectionParallelSockets" :
...

version

The version command can be used to verify the version of Speedify that is installed and running.

<code class="text language-text">$ speedify_cli version 
{
    "bug" : 0,
    "build" : 10504,
    "maj" : 12,
    "min" : 4
}

Copyright Connectify, Inc.