Command-Line Edition and Syntax

The client can run without graphical UI.
All options available in the UI have their related command-line options.

You can download a CLI-only specific package, or use the UI edition with -cli option.
For example, under macOS, use /Applications/Eddie.app/Contents/MacOS/Eddie -cli

Default options are read from the profile.
Options in command-line override them but are not saved in the profile at exit (exception note: if "remember" is set to "False" (see below), username and password will be deleted at exit, even if they were inside the profile file).
You can run the UI, even with a custom profile, choose options in the UI, and then launch the command-line edition with the profile options, to avoid to specify all the options in the command-line.

The options login and password are mandatory if they are not already in the profile.

By default, the client doesn't connect to any server automatically. Specify -connect to connect automatically.
Specify -netlock to start with network lock activation.

You can press n to connect to a server.
You can press x key or Ctrl+C to exit.

Examples:

./eddie-ui -cli -login=mylogin -password=mypassword -netlock
Start the software, without automatic connection to a server, but with Network Lock active.
Any network connection will be blocked, until you connect to a server with the n key.

./eddie-ui -cli -login=mylogin -password=mypassword -connect -server=Leonis -mode.port=53 -mode.protocol=UDP
The software starts by reading default profile, starts without the UI (-cli option), connect directly (-connect) and overrides some profile options (login, password, server, port, protocol).

Manual and options:

Run the client with the -help option ./eddie-ui -cli -help to print a text-based manual (like Linux man) with an explanation of all options, including the current value (taken from profile or command-line) and defaults.
Below are reported the manual in HTML format for the latest released version.
Also available as plain text

NAME

eddie-cli -- Eddie - OpenVPN/WireGuard VPN Tunnel, console edition

SYNOPSIS

eddie-cli [OPTIONS...] or eddie-ui -cli [OPTIONS...]

DESCRIPTION

Eddie is an OpenVPN and WireGuard wrapper providing advanced features such as network lock, connections over SSL/TLS and SSH tunnels, programmable events, customizable routes, extensive control on OpenVPN directives and a comfortable, optional GUI. For more information: https://eddie.website

OPTIONS

Options can be written as --option="value"
Double-quotes and minus are optional, option=value is valid.
Every option have only one value.
Options without a value like --option are treated as --option="True" Default options are read from the profile. Options in command-line override them but are not saved in the profile at exit.
You can run the UI, choose options in the UI, and then launch the command-line edition with the profile options, to avoid to specify all the options in the command-line. The options --login and --password are mandatory if they are not already in the profile.
By default, the client doesn't connect to any server automatically. Specify --connect to connect automatically.
Specify --netlock to start with network lock activation. By default the application works interactively: Press n to connect to a server, x or ctrl+c to exit.
Specify --batch for non-interactive mode.
  • version - Show version information. (command-line only)
  • version.short - Show version information, short version. (command-line only)
  • help - Show help manual. (command-line only)
  • help.format - Format of the help manual. Can be man, text, html or bbcode. (command-line only)
  • profile - Profile name. Use it to store different set of options. (command-line only)
  • path - Data path. May be a full path or special value program or home. (command-line only)
  • login - Login of your AirVPN account.
  • password - Password of your AirVPN account.
  • remember - True if username and password persist after exit. Default: False
  • key - Key name. Default: Default
  • server - Server to connect to. Leave empty to pick recommended server.
  • connect - Connect automatically at startup. Implicit if batch is used. Default: False
  • updater.channel - Software update channel. Can be 'stable','beta','internal' or 'none'. Default: stable
  • servers.allowlist - List of servers available for connection. Leave empty for all servers. Separate values with comma. Use ID or display name. Example: 'Canopus,Syrma,Taygeta'.
  • servers.denylist - List of servers to avoid in connection. Same syntax of allowlist.
  • servers.startlast - True if you want to connect to the last used server. False to choose it automatically. Default: False
  • servers.locklast - True if you never leave the selected server, not even in case of disconnection. Default: False
  • servers.scoretype - May be Speed or Latency. Affects scoring of servers, indicates if you prefer a better speed or a better latency. Default: Speed
  • areas.allowlist - List of areas available for connection. Same as server allowlist syntax. Example: 'nl,de'.
  • areas.denylist - List of areas to avoid in connection. Same as allowlist syntax.
  • discover.ip_webservice.list - List of webservice used to discover IP information for non-service connections. Default: https://ipleak.net/json/{@ip};https://freegeoip.net/json/{@ip};http://ip-api.com/json/{@ip}
  • discover.interval - Time interval between data discovery updates (country and other data) for non-service connections. Default: 86400
  • discover.exit - Try to discover exit IP address for non-service connections. Default: True
  • log.file.enabled - Log on file enabled. Default: False
  • log.file.encoding - Log file encoding. Default: utf-8
  • log.file.path - Log file path (relative or absolute). Default: logs/eddie_%y-%m-%d.log
  • log.level.debug - Log debug, for troubleshooting. Default: False
  • log.repeat - Do not compress adjacent and identical log lines into a single "log line repeated n times" entry. Default: False
  • log.limit - General log limit (keep latest). Default: 1000
  • checking.ntry - Maximum amount of retries for some actions (for example checking tun/dns). Default: 5
  • language.iso - Language of the UI. alpha-2 iso-3166 code. Default: 'auto'. Default: auto
  • mode.type - Type of connection. openvpn, wireguard. Default: auto
  • mode.protocol - Protocol for connection. UDP, TCP for direct openvpn connection. SSH, SSL for additional tunneling. Default: udp
  • mode.port - Port for connection. Default: 443
  • mode.alt - 0 to use the default entry IP, 1 or more for additional entry IP. Default: 0
  • proxy.mode - Proxy mode: none, http or socks. protocol option must be TCP. Default: None
  • proxy.when - When a proxy needs to be used: always, web , openvpn or none. Default: always
  • proxy.host - Proxy host. Default: 127.0.0.1
  • proxy.port - Proxy port. Default: 8080
  • proxy.auth - Proxy authentication method: None, Basic or NTLM. Default: None
  • proxy.login - Proxy login, for authentication.
  • proxy.password - Proxy password, for authentication.
  • proxy.tor.control.port - Tor Control port. Default: 9151
  • proxy.tor.control.auth - Tor Control needs authentication. Normally the Tor Browser Bundle requires authentication and accepts a file cookie password. Default: True
  • proxy.tor.path - Tor path. If missing, try to find it automatically.
  • proxy.tor.control.cookie.path - Tor cookie path. If missing, it is detected automatically.
  • proxy.tor.control.password - Tor Control password. If empty, the software tries to detect the file cookie password.
  • routes.custom - Custom routes. Format: '{ip or range},{in/out},{note (optional)};...'. Separate multiple routes with ;. Example: '1.2.3.4,in;2.3.4.5/23,out,'test'.
  • routes.catch_all_mode - How 'catch-all' routes are made. auto, or single (a /0 route), or double (two /1 routes) or extended (four /2 routes). Default: auto
  • dns.mode - None to disable DNS switch. Auto to let the software choose the best method. Default: auto
  • dns.servers - List of DNS servers. If not empty, override the DNS suggested by VPN server. Separate multiple values with comma.
  • dns.delegate - If true, DNS switch is delegated to the VPN tool used (OpenVPN or Hummingbird). Default: False
  • dns.check - When the connection is established, if True it try to resolve domain names that are resolved only by AirDNS server, to ensure that system is correctly using our DNS server. It's not mandatory to use our DNS server, but it's recommended to enjoy our Geolocation Routing service and avoid DNS blocks by your provider. Default: True
  • dns.cache.ttl - TTL of resolved DNS query. Default: 3600
  • netlock - Network lock automatically at startup. Default: False
  • netlock.connection - If Network Lock must be active during session. Default: True
  • netlock.mode - Network Lock mode. Can be None, Auto or a method name. Default: auto
  • netlock.allow_private - Allow private network in Network Lock mode. Default: True
  • netlock.allow_dhcp - Allow DHCP in Network Lock mode (UDP port 67/68). Default: True
  • netlock.allow_ping - Allow ping (ICMP) in Network Lock mode. Default: True
  • netlock.allow_dns - Allow detected DNS servers in Network Lock mode. Default: False
  • netlock.incoming - How netlock deals with incoming connections: allow or block. Default: block
  • netlock.outgoing - How netlock deals with outgoing connection: allow or block. Default: block
  • netlock.allowlist.incoming.ips - List (comma-separated) of incoming IP or range allowed in Network Lock mode.
  • netlock.allowlist.outgoing.ips - List (comma-separated) of outgoing IP or range allowed in Network Lock mode.
  • network.entry.iface - Interface used for connection. Can be an adapter ID or a bind IP address.
  • network.entry.iplayer - Protocol used for connection. Can be ipv4-ipv6, ipv6-ipv4, ipv4-only, ipv6-only. Default: ipv4-ipv6
  • network.ipv4.mode - IPv4 layer. Can be in (inside tunnel, must be supported), in-out (inside tunnel if supported, otherwise outside), in-block (inside tunnel if supported, otherwise blocked), out (outside tunnel) or block (blocked). Default: in
  • network.ipv6.mode - IPv6 layer. Can be in (inside tunnel, must be supported), in-out (inside tunnel if supported, otherwise outside), in-block (inside tunnel if supported, otherwise blocked), out (outside tunnel) or block (blocked). Default: in-block
  • network.ipv4.autoswitch - Automatically switch network.ipv4.mode to block if any issue is detected. Default: False
  • network.ipv6.autoswitch - Automatically switch network.ipv6.mode to block if any issue is detected. Default: True
  • network.iface.name - Interface Name for network adapter. Default 'Eddie'. Leave empty to avoid adapter creation.
  • tools.openvpn.path - Allows you to specify a path to OpenVPN executable, to skip the executable bundled with Eddie.
  • tools.hummingbird.preferred - Always use Hummingbird, if available. Default: False
  • tools.hummingbird.path - Path to a custom Hummingbird executable.
  • tools.ssh.path - Path to a custom SSH tunnel executable.
  • tools.ssl.path - Path to a custom SSL tunnel executable.
  • tools.curl.path - Path to a custom curl executable, used only with socks proxy.
  • http.timeout - General timeout of any HTTP request (in seconds). Default: 10
  • openvpn.custom - Allows you to specify custom OpenVPN directives.
  • openvpn.dev_node - OpenVPN dev-node directive.
  • openvpn.sndbuf - TCP/UDP send buffer size. Special values: -2: Automatic, -1: OpenVPN default. Default: -2
  • openvpn.rcvbuf - TCP/UDP receive buffer size. Special values: -2: Automatic, -1: OpenVPN default. Default: -2
  • openvpn.directives - Base OpenVPN directives. Default: client dev tun auth-nocache resolv-retry infinite nobind persist-key persist-tun verb 3 connect-retry-max 1 ping 10 ping-restart 60 explicit-exit-notify 5
  • openvpn.directives.path - Custom path of a text file for additional OpenVPN directives.
  • openvpn.directives.data-ciphers - OpenVPN data-ciphers directive. Default: AES-256-GCM:AES-192-GCM:AES-128-GCM
  • openvpn.directives.data-ciphers-fallback - OpenVPN data-ciphers-fallback directive. Default: AES-256-GCM
  • openvpn.directives.chacha20 - Use Chacha20 in data-ciphers directive. Default: False
  • openvpn.skip_defaults - If False the custom directives are appended to the default directive. Default: False
  • wireguard.peer.persistentkeepalive - Wireguard peer persistent keepalive option. Use a value that override any config (or 0 to omit), -1 to not override. Default: 15. Default: 15
  • wireguard.interface.mtu - MTU size for WireGuard interface in bytes. Use -1 for recommended, 0 to omit (automatic), or specific value. Default: -1
  • ssh.port - Default port of SSH Tunnel. If 0, a random port is used. Default: 0
  • ssl.port - Default port of SSL Tunnel. If 0, a random port is used. Default: 0
  • advanced.expert - Activate some expert information and features; allows sending commands to OpenVPN Management Interface via Logs window; show verbose logs message in main windows. Default: False
  • advanced.check.route - If True send a request to the server, that check it come from within the tunnel, and reply with an acknowledgement. Default: True
  • pinger.enabled - If True the software pings servers to determine latency score. Pings are not performed during VPN connection. Default: True
  • pinger.delay - Ping each server every X seconds. If 0, the recommended values are used. Default: 0
  • pinger.retry - Ping every server that doesn't have ping results every X seconds. If 0, the recommended values are used. Default: 0
  • pinger.jobs - Maximum parallel jobs/thread for pinging purpose. Default: 25
  • pinger.valid - Global pinger results valid if all ping reply are maximum X seconds ago. If 0, the recommended values are used. Default: 0
  • pinger.timeout - Timeout to consider a ping failed. Default: 3000
  • advanced.manifest.refresh - Delay between provider requests. -1 for automatic, otherwise minutes. Default: -1
  • advanced.providers - Show custom providers interface. Default: False
  • bootstrap.urls - Custom urls for reaching AirVPN provider.
  • event.app.start.filename - Filename of the script/executable to launch on event.
  • event.app.start.arguments - Arguments of the script/executable.
  • event.app.start.waitend - Use True if the software needs to wait the end (synchronous) or False to be asynchronous. Default: True
  • event.app.stop.filename - Filename of the script/executable to launch on event.
  • event.app.stop.arguments - Arguments of the script/executable.
  • event.app.stop.waitend - Use True if the software needs to wait the end (synchronous) or False to be asynchronous. Default: True
  • event.session.start.filename - Filename of the script/executable to launch on event.
  • event.session.start.arguments - Arguments of the script/executable.
  • event.session.start.waitend - Use True if the software needs to wait the end (synchronous) or False to be asynchronous. Default: True
  • event.session.stop.filename - Filename of the script/executable to launch on event.
  • event.session.stop.arguments - Arguments of the script/executable.
  • event.session.stop.waitend - Use True if the software needs to wait the end (synchronous) or False to be asynchronous. Default: True
  • event.vpn.pre.filename - Filename of the script/executable to launch on event.
  • event.vpn.pre.arguments - Arguments of the script/executable.
  • event.vpn.pre.waitend - Use True if the software needs to wait the end (synchronous) or False to be asynchronous. Default: True
  • event.vpn.up.filename - Filename of the script/executable to launch on event.
  • event.vpn.up.arguments - Arguments of the script/executable.
  • event.vpn.up.waitend - Use True if the software needs to wait the end (synchronous) or False to be asynchronous. Default: True
  • event.vpn.down.filename - Filename of the script/executable to launch on event.
  • event.vpn.down.arguments - Arguments of the script/executable.
  • event.vpn.down.waitend - Use True if the software needs to wait the end (synchronous) or False to be asynchronous. Default: True
  • windows.driver - Use the specified TUN driver. Windows only. OpenVPN only. auto is recommended, otherwise ovpn-dco, wintun, tap-windows6 or none to delegate to OpenVPN directives. Default: auto
  • windows.adapters.cleanup - Remove any dynamic adapter created. Default: True
  • windows.adapter_service - OpenVPN TUN/TAP adapter identifier. Default: tap0901
  • windows.disable_driver_upgrade - Don't try to upgrade the TUN/TAP driver. Default: False
  • windows.tap_up - Force the TAP interface to come UP. Default: True
  • windows.wfp.enable - Use Windows Filtering Platform. Default: True
  • windows.wfp.dynamic - If True, Windows Filtering Platform rules don't survive if the process crash. Default: False
  • windows.dns.lock - DNS leak protection. Default: True
  • windows.metrics.tap.ipv4 - Windows adapter metric for IPv4. 0: Windows Automatic, >0 value, -1: Don't change, -2: Automatic. Default: -2
  • windows.metrics.tap.ipv6 - Windows adapter metric for IPv6. 0: Windows Automatic, >0 value, -1: Don't change, -2: Automatic. Default: -2
  • macos.ipv6.dnslookup - Try to fix the IPv6 DNS lookup macOS issue. Default: True
  • linux.dns.services - List of known services that linux try to restart to flush DNS, if installed. Default: nscd;dnsmasq;named;bind9
  • ui.unit - Unit of measurement of data volume and speed. Can be bytes, bits or empty. If empty, bytes are used for volume, bits for speed.
  • ui.iec - Use IEC standard and not metric standard. For example kilobyte are replaced by kibibyte. Default: False
  • ui.skip.provider.manifest.failed - Skip information window pop-up when provider information can't be reached. Default: False
  • ui.skip.promotional - Skip promotional popup. Default: False
  • ui.skip.netlock.confirm - Skip Network Lock confirmation window. Default: False

COPYRIGHT

Copyright (C) AirVPN - Released under GNU General Public License - http://www.gnu.org/licenses/gpl.html