{
  "name": "ngrok",
  "description": "Tunnel local ports to public URLs and inspect traffic",
  "subcommands": [
    {
      "name": "help",
      "description": "Shows a list of commands or help for one command",
      "args": [
        {
          "name": "command",
          "suggestions": [
            "authtoken",
            "credits",
            "http",
            "start",
            "tcp",
            "tls",
            "update",
            "version",
            "help"
          ]
        }
      ]
    },
    {
      "name": "http",
      "description": "Start an HTTP tunnel",
      "options": [
        {
          "names": [
            "--log",
            "-log"
          ],
          "description": "Path to log file, 'stdout', 'stderr' or 'false'",
          "args": [
            {
              "name": "value",
              "template": "filepaths",
              "suggestions": [
                "stdout",
                "stderr",
                "false"
              ]
            }
          ]
        },
        {
          "names": [
            "--log-format",
            "-log-format"
          ],
          "description": "Log record format: 'term', 'logfmt', 'json'",
          "args": [
            {
              "suggestions": [
                "term",
                "logfmt",
                "json"
              ]
            }
          ]
        },
        {
          "names": [
            "--log-level",
            "-log-level"
          ],
          "description": "Logging level",
          "args": [
            {
              "name": "level",
              "suggestions": [
                "crit",
                "warn",
                "error",
                "info",
                "debug"
              ]
            }
          ]
        },
        {
          "names": [
            "--config",
            "-config"
          ],
          "description": "Path to config files; they are merged if multiple",
          "args": [
            {
              "name": "config file",
              "template": "filepaths"
            }
          ]
        },
        {
          "names": [
            "--region",
            "-region"
          ],
          "description": "Ngrok server region [us, eu, au, ap, sa, jp, in] (default: us)",
          "args": [
            {
              "suggestions": [
                "us",
                "eu",
                "au",
                "ap",
                "sa",
                "jp",
                "in"
              ]
            }
          ]
        },
        {
          "names": [
            "--authtoken",
            "-authtoken"
          ],
          "description": "Ngrok.com authtoken identifying a user",
          "args": [
            {
              "name": "authtoken"
            }
          ]
        },
        {
          "names": [
            "--hostname",
            "-hostname"
          ],
          "description": "Host tunnel on custom hostname (requires DNS CNAME)",
          "args": [
            {
              "name": "hostname"
            }
          ]
        },
        {
          "names": [
            "--subdomain",
            "-subdomain"
          ],
          "description": "Host tunnel on a custom subdomain",
          "args": [
            {
              "name": "subdomain"
            }
          ]
        },
        {
          "names": [
            "--auth",
            "-auth"
          ],
          "description": "Enforce basic auth on tunnel endpoint, 'user:password'",
          "args": [
            {
              "name": "user:password"
            }
          ]
        },
        {
          "names": [
            "--bind-tls",
            "-bind-tls"
          ],
          "description": "Listen for http, https or both: true/false/both",
          "args": [
            {
              "name": "true/false/both",
              "suggestions": [
                "true",
                "false",
                "both"
              ]
            }
          ]
        },
        {
          "names": [
            "--host-header",
            "-host-header"
          ],
          "description": "Set Host header; if 'rewrite' use local address hostname",
          "args": [
            {
              "suggestions": [
                "rewrite"
              ]
            }
          ]
        },
        {
          "names": [
            "--introspection",
            "-introspection"
          ],
          "description": "Enable/disable http introspection",
          "args": [
            {
              "suggestions": [
                "true",
                "false"
              ]
            }
          ]
        }
      ],
      "args": [
        {
          "name": "host",
          "suggestions": [
            "8080"
          ]
        }
      ]
    },
    {
      "name": "authtoken",
      "description": "Save authtoken to configuration file",
      "options": [
        {
          "names": [
            "--log",
            "-log"
          ],
          "description": "Path to log file, 'stdout', 'stderr' or 'false'",
          "args": [
            {
              "name": "value",
              "template": "filepaths",
              "suggestions": [
                "stdout",
                "stderr",
                "false"
              ]
            }
          ]
        },
        {
          "names": [
            "--log-format",
            "-log-format"
          ],
          "description": "Log record format: 'term', 'logfmt', 'json'",
          "args": [
            {
              "suggestions": [
                "term",
                "logfmt",
                "json"
              ]
            }
          ]
        },
        {
          "names": [
            "--log-level",
            "-log-level"
          ],
          "description": "Logging level",
          "args": [
            {
              "name": "level",
              "suggestions": [
                "crit",
                "warn",
                "error",
                "info",
                "debug"
              ]
            }
          ]
        },
        {
          "names": [
            "--config",
            "-config"
          ],
          "description": "Path to config files; they are merged if multiple",
          "args": [
            {
              "name": "config file",
              "template": "filepaths"
            }
          ]
        }
      ],
      "args": [
        {
          "name": "authtoken"
        }
      ]
    },
    {
      "name": "credits",
      "description": "Prints author and licensing information"
    },
    {
      "name": "start",
      "description": "Start tunnels by name from the configuration file",
      "options": [
        {
          "names": [
            "--log",
            "-log"
          ],
          "description": "Path to log file, 'stdout', 'stderr' or 'false'",
          "args": [
            {
              "name": "value",
              "template": "filepaths",
              "suggestions": [
                "stdout",
                "stderr",
                "false"
              ]
            }
          ]
        },
        {
          "names": [
            "--log-format",
            "-log-format"
          ],
          "description": "Log record format: 'term', 'logfmt', 'json'",
          "args": [
            {
              "suggestions": [
                "term",
                "logfmt",
                "json"
              ]
            }
          ]
        },
        {
          "names": [
            "--log-level",
            "-log-level"
          ],
          "description": "Logging level",
          "args": [
            {
              "name": "level",
              "suggestions": [
                "crit",
                "warn",
                "error",
                "info",
                "debug"
              ]
            }
          ]
        },
        {
          "names": [
            "--config",
            "-config"
          ],
          "description": "Path to config files; they are merged if multiple",
          "args": [
            {
              "name": "config file",
              "template": "filepaths"
            }
          ]
        },
        {
          "names": [
            "--region",
            "-region"
          ],
          "description": "Ngrok server region [us, eu, au, ap, sa, jp, in] (default: us)",
          "args": [
            {
              "suggestions": [
                "us",
                "eu",
                "au",
                "ap",
                "sa",
                "jp",
                "in"
              ]
            }
          ]
        },
        {
          "names": [
            "--authtoken",
            "-authtoken"
          ],
          "description": "Ngrok.com authtoken identifying a user",
          "args": [
            {
              "name": "authtoken"
            }
          ]
        },
        {
          "names": [
            "--all",
            "-all"
          ],
          "description": "Start all tunnels in the configuration file",
          "exclusiveOn": [
            "--none"
          ]
        },
        {
          "names": [
            "--none",
            "-none"
          ],
          "description": "Start running no tunnels",
          "exclusiveOn": [
            "--all"
          ]
        }
      ],
      "args": [
        {
          "name": "tunnels",
          "isVariadic": true,
          "suggestions": [
            "dev",
            "web",
            "blog"
          ]
        }
      ]
    },
    {
      "name": "tcp",
      "description": "Start a TCP tunnel",
      "options": [
        {
          "names": [
            "--log",
            "-log"
          ],
          "description": "Path to log file, 'stdout', 'stderr' or 'false'",
          "args": [
            {
              "name": "value",
              "template": "filepaths",
              "suggestions": [
                "stdout",
                "stderr",
                "false"
              ]
            }
          ]
        },
        {
          "names": [
            "--log-format",
            "-log-format"
          ],
          "description": "Log record format: 'term', 'logfmt', 'json'",
          "args": [
            {
              "suggestions": [
                "term",
                "logfmt",
                "json"
              ]
            }
          ]
        },
        {
          "names": [
            "--log-level",
            "-log-level"
          ],
          "description": "Logging level",
          "args": [
            {
              "name": "level",
              "suggestions": [
                "crit",
                "warn",
                "error",
                "info",
                "debug"
              ]
            }
          ]
        },
        {
          "names": [
            "--config",
            "-config"
          ],
          "description": "Path to config files; they are merged if multiple",
          "args": [
            {
              "name": "config file",
              "template": "filepaths"
            }
          ]
        },
        {
          "names": [
            "--authtoken",
            "-authtoken"
          ],
          "description": "Ngrok.com authtoken identifying a user",
          "args": [
            {
              "name": "authtoken"
            }
          ]
        },
        {
          "names": [
            "--region",
            "-region"
          ],
          "description": "Ngrok server region [us, eu, au, ap, sa, jp, in] (default: us)",
          "args": [
            {
              "suggestions": [
                "us",
                "eu",
                "au",
                "ap",
                "sa",
                "jp",
                "in"
              ]
            }
          ]
        },
        {
          "names": [
            "--remote-addr",
            "-remote-addr"
          ],
          "description": "Bind remote address (requires you reserve an address)",
          "args": [
            {
              "name": "remote address"
            }
          ]
        }
      ],
      "args": [
        {
          "name": "port",
          "suggestions": [
            "22"
          ]
        }
      ]
    },
    {
      "name": "tls",
      "description": "Start a TLS tunnel",
      "options": [
        {
          "names": [
            "--log",
            "-log"
          ],
          "description": "Path to log file, 'stdout', 'stderr' or 'false'",
          "args": [
            {
              "name": "value",
              "template": "filepaths",
              "suggestions": [
                "stdout",
                "stderr",
                "false"
              ]
            }
          ]
        },
        {
          "names": [
            "--log-format",
            "-log-format"
          ],
          "description": "Log record format: 'term', 'logfmt', 'json'",
          "args": [
            {
              "suggestions": [
                "term",
                "logfmt",
                "json"
              ]
            }
          ]
        },
        {
          "names": [
            "--log-level",
            "-log-level"
          ],
          "description": "Logging level",
          "args": [
            {
              "name": "level",
              "suggestions": [
                "crit",
                "warn",
                "error",
                "info",
                "debug"
              ]
            }
          ]
        },
        {
          "names": [
            "--config",
            "-config"
          ],
          "description": "Path to config files; they are merged if multiple",
          "args": [
            {
              "name": "config file",
              "template": "filepaths"
            }
          ]
        },
        {
          "names": [
            "--authtoken",
            "-authtoken"
          ],
          "description": "Ngrok.com authtoken identifying a user",
          "args": [
            {
              "name": "authtoken"
            }
          ]
        },
        {
          "names": [
            "--region",
            "-region"
          ],
          "description": "Ngrok server region [us, eu, au, ap, sa, jp, in] (default: us)",
          "args": [
            {
              "suggestions": [
                "us",
                "eu",
                "au",
                "ap",
                "sa",
                "jp",
                "in"
              ]
            }
          ]
        },
        {
          "names": [
            "--hostname",
            "-hostname"
          ],
          "description": "Host tunnel on custom hostname (requires DNS CNAME)",
          "args": [
            {
              "name": "hostname"
            }
          ]
        },
        {
          "names": [
            "--subdomain",
            "-subdomain"
          ],
          "description": "Host tunnel on a custom subdomain",
          "args": [
            {
              "name": "subdomain"
            }
          ]
        },
        {
          "names": [
            "--client-cas",
            "-client-cas"
          ],
          "args": [
            {
              "name": "certificate",
              "template": "filepaths"
            }
          ]
        },
        {
          "names": [
            "--crt",
            "-crt"
          ],
          "args": [
            {
              "name": "certificate",
              "template": "filepaths"
            }
          ]
        },
        {
          "names": [
            "--key",
            "-key"
          ],
          "args": [
            {
              "name": "certificate",
              "template": "filepaths"
            }
          ]
        }
      ],
      "args": [
        {
          "name": "port"
        }
      ]
    },
    {
      "name": "update",
      "description": "Update ngrok to the latest version",
      "options": [
        {
          "names": [
            "--log",
            "-log"
          ],
          "description": "Path to log file, 'stdout', 'stderr' or 'false'",
          "args": [
            {
              "name": "value",
              "template": "filepaths",
              "suggestions": [
                "stdout",
                "stderr",
                "false"
              ]
            }
          ]
        },
        {
          "names": [
            "--log-format",
            "-log-format"
          ],
          "description": "Log record format: 'term', 'logfmt', 'json'",
          "args": [
            {
              "suggestions": [
                "term",
                "logfmt",
                "json"
              ]
            }
          ]
        },
        {
          "names": [
            "--log-level",
            "-log-level"
          ],
          "description": "Logging level",
          "args": [
            {
              "name": "level",
              "suggestions": [
                "crit",
                "warn",
                "error",
                "info",
                "debug"
              ]
            }
          ]
        },
        {
          "names": [
            "--channel",
            "-channel"
          ],
          "description": "Update channel (stable, beta)",
          "args": [
            {
              "name": "channel",
              "suggestions": [
                "stable",
                "beta"
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "version",
      "description": "Print the version string"
    }
  ]
}
