{
  "name": "fly",
  "description": "The flyctl is a command-line interface for fly.io",
  "subcommands": [
    {
      "name": "agent",
      "description": "Commands that manage the Fly agent, a background process that manages flyctl wireguard connections",
      "subcommands": [
        {
          "name": "ping",
          "description": "Ping the Fly agent"
        },
        {
          "name": "restart",
          "description": "Restart the Fly agent"
        },
        {
          "name": "daemon-start",
          "aliases": [
            "run"
          ],
          "description": "Run the Fly agent in the foreground"
        },
        {
          "name": "start",
          "description": "Start the Fly agent"
        },
        {
          "name": "stop",
          "description": "Stop the Fly agent"
        }
      ]
    },
    {
      "name": "apps",
      "description": "Manage apps",
      "subcommands": [
        {
          "name": "create",
          "description": "Create a new application",
          "options": [
            {
              "names": [
                "--generate-name"
              ],
              "description": "Generate a name for the app"
            },
            {
              "names": [
                "--name"
              ],
              "description": "The app name to use",
              "takes_arg": true,
              "arg": {
                "name": "name"
              }
            },
            {
              "names": [
                "--network"
              ],
              "description": "Specify custom network id",
              "takes_arg": true,
              "arg": {
                "name": "network"
              }
            },
            {
              "names": [
                "--org",
                "-o"
              ],
              "description": "The organization to operate on",
              "takes_arg": true,
              "arg": {
                "name": "org"
              }
            }
          ]
        },
        {
          "name": "destroy",
          "description": "Permanently destroys an app",
          "options": [
            {
              "names": [
                "--yes",
                "-y"
              ],
              "description": "Accept all confirmations"
            }
          ]
        },
        {
          "name": "list",
          "description": "List applications"
        },
        {
          "name": "move",
          "description": "Move an app to another organization",
          "options": [
            {
              "names": [
                "--org",
                "-o"
              ],
              "description": "The organization to operate on",
              "takes_arg": true,
              "arg": {
                "name": "org"
              }
            },
            {
              "names": [
                "--yes",
                "-y"
              ],
              "description": "Accept all confirmations"
            }
          ]
        },
        {
          "name": "open",
          "description": "Open browser to current deployed application",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "Application name",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to application configuration file",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "releases",
          "description": "List app releases",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "Application name",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to application configuration file",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--image"
              ],
              "description": "Display the Docker image reference of the release"
            }
          ]
        },
        {
          "name": "restart",
          "description": "Restart an application",
          "options": [
            {
              "names": [
                "-f",
                "--force"
              ],
              "description": "Will issue a restart against each Machine even if there are errors. ( Machines only )"
            },
            {
              "names": [
                "--skip-health-checks"
              ],
              "description": "Restarts app without waiting for health checks. ( Machines only )"
            }
          ],
          "args": [
            {
              "name": "app"
            }
          ]
        }
      ]
    },
    {
      "name": "auth",
      "description": "Manage authentication",
      "subcommands": [
        {
          "name": "docker",
          "description": "Authenticate docker"
        },
        {
          "name": "login",
          "description": "Log in a user",
          "options": [
            {
              "names": [
                "--email"
              ],
              "description": "Login email",
              "takes_arg": true,
              "arg": {
                "name": "email"
              }
            },
            {
              "names": [
                "--interactive",
                "-i"
              ],
              "description": "Log in with an email and password interactively"
            },
            {
              "names": [
                "--otp"
              ],
              "description": "One time password",
              "takes_arg": true,
              "arg": {
                "name": "otp"
              }
            },
            {
              "names": [
                "--password"
              ],
              "description": "Login password",
              "takes_arg": true,
              "arg": {
                "name": "password"
              }
            }
          ]
        },
        {
          "name": "logout",
          "description": "Logs out the currently logged in user"
        },
        {
          "name": "signup",
          "description": "Create a new fly account"
        },
        {
          "name": "token",
          "description": "Show the current auth token"
        },
        {
          "name": "whoami",
          "description": "Displays the users email address/service identity currently authenticated and in use"
        }
      ]
    },
    {
      "name": "autoscale",
      "description": "Autoscaling app resources",
      "subcommands": [
        {
          "name": "balanced",
          "description": "Configure a traffic balanced app with params (min=int max=int)",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "disable",
          "description": "Disable autoscaling",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "set",
          "description": "Set current models autoscaling parameters",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "show",
          "description": "Show current autoscaling configuration",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "standard",
          "description": "Configure a standard balanced app with params (min=int max=int)",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        }
      ],
      "options": [
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "App name to operate on",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to an app config file or directory containing one",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        }
      ]
    },
    {
      "name": "builds",
      "description": "Manage application builds",
      "subcommands": [
        {
          "name": "list",
          "description": "List builds",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "Application name",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to application configuration file",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        }
      ]
    },
    {
      "name": "certs",
      "description": "Manage certificates",
      "subcommands": [
        {
          "name": "create",
          "aliases": [
            "add"
          ],
          "description": "Add a certificate for an app",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "check",
          "description": "Checks DNS configuration",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "list",
          "description": "List certificates for an app",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "delete",
          "aliases": [
            "remove"
          ],
          "description": "Removes a certificate from an app",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--yes",
                "-y"
              ],
              "description": "Accept all confirmations"
            }
          ]
        },
        {
          "name": "show",
          "description": "Shows certificate information",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        }
      ],
      "options": [
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "App name to operate on",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to an app config file or directory containing one",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        }
      ]
    },
    {
      "name": "checks",
      "description": "Manage health checks",
      "subcommands": [
        {
          "name": "handlers",
          "description": "Manage health check handlers",
          "subcommands": [
            {
              "name": "create",
              "description": "Create a health check handler",
              "options": [
                {
                  "names": [
                    "--organization",
                    "-o"
                  ],
                  "description": "The organization to add the handler to",
                  "takes_arg": true,
                  "arg": {
                    "name": "organization"
                  }
                },
                {
                  "names": [
                    "--type"
                  ],
                  "description": "The type of handler to create, can be slack or pagerduty",
                  "takes_arg": true,
                  "arg": {
                    "name": "type"
                  }
                }
              ]
            },
            {
              "name": "delete",
              "description": "Delete a health check handler"
            },
            {
              "name": "list",
              "description": "List health check handlers"
            }
          ]
        },
        {
          "name": "list",
          "description": "List app health checks",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--check-name"
              ],
              "description": "Filter checks by name",
              "takes_arg": true,
              "arg": {
                "name": "check-name"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        }
      ]
    },
    {
      "name": "completion",
      "description": "Generate the autocompletion script for the specified shell",
      "subcommands": [
        {
          "name": "bash",
          "description": "Generate the autocompletion script for bash",
          "options": [
            {
              "names": [
                "--no-descriptions"
              ],
              "description": "Disable completion descriptions"
            }
          ]
        },
        {
          "name": "fish",
          "description": "Generate the autocompletion script for fish",
          "options": [
            {
              "names": [
                "--no-descriptions"
              ],
              "description": "Disable completion descriptions"
            }
          ]
        },
        {
          "name": "powershell",
          "description": "Generate the autocompletion script for powershell",
          "options": [
            {
              "names": [
                "--no-descriptions"
              ],
              "description": "Disable completion descriptions"
            }
          ]
        },
        {
          "name": "zsh",
          "description": "Generate the autocompletion script for zsh",
          "options": [
            {
              "names": [
                "--no-descriptions"
              ],
              "description": "Disable completion descriptions"
            }
          ]
        }
      ]
    },
    {
      "name": "config",
      "description": "Manage an app's configuration",
      "subcommands": [
        {
          "name": "display",
          "description": "Display an app's configuration",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "env",
          "description": "Display an app's runtime environment variables",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "save",
          "description": "Save an app's config file",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "validate",
          "description": "Validate an app's config file",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        }
      ],
      "options": [
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "App name to operate on",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to an app config file or directory containing one",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        }
      ]
    },
    {
      "name": "create",
      "description": "Create a new application",
      "options": [
        {
          "names": [
            "--generate-name"
          ],
          "description": "Generate a name for the app"
        },
        {
          "names": [
            "--name"
          ],
          "description": "The app name to use",
          "takes_arg": true,
          "arg": {
            "name": "name"
          }
        },
        {
          "names": [
            "--network"
          ],
          "description": "Specify custom network id",
          "takes_arg": true,
          "arg": {
            "name": "network"
          }
        },
        {
          "names": [
            "--org",
            "-o"
          ],
          "description": "The organization to operate on",
          "takes_arg": true,
          "arg": {
            "name": "org"
          }
        }
      ]
    },
    {
      "name": "curl",
      "description": "Run a performance test against a URL"
    },
    {
      "name": "dash",
      "aliases": [
        "dashboard"
      ],
      "description": "Open web browser on Fly Web UI for this app",
      "subcommands": [
        {
          "name": "metrics",
          "description": "Open web browser on Fly Web UI for this app's metrics",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        }
      ],
      "options": [
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "App name to operate on",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to an app config file or directory containing one",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        }
      ]
    },
    {
      "name": "deploy",
      "description": "Deploy Fly applications",
      "options": [
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "Application name",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--build-arg"
          ],
          "description": "Set of build time variables in the form of NAME=VALUE pairs. Can be specified multiple times",
          "takes_arg": true,
          "arg": {
            "name": "build-arg"
          }
        },
        {
          "names": [
            "--build-only"
          ],
          "description": "Build but do not deploy"
        },
        {
          "names": [
            "--build-target"
          ],
          "description": "Set the target build stage to build if the Dockerfile has more than one stage",
          "takes_arg": true,
          "arg": {
            "name": "build-target"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to application configuration file",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--detach"
          ],
          "description": "Return immediately instead of monitoring deployment progress"
        },
        {
          "names": [
            "--dockerfile"
          ],
          "description": "Path to a Dockerfile. Defaults to the Dockerfile in the working directory",
          "takes_arg": true,
          "arg": {
            "name": "dockerfile"
          }
        },
        {
          "names": [
            "--env",
            "-e"
          ],
          "description": "Set of environment variables in the form of NAME=VALUE pairs. Can be specified multiple times",
          "takes_arg": true,
          "arg": {
            "name": "env"
          }
        },
        {
          "names": [
            "--image",
            "-i"
          ],
          "description": "The image tag or ID to deploy",
          "takes_arg": true,
          "arg": {
            "name": "image"
          }
        },
        {
          "names": [
            "--image-label"
          ],
          "description": "Image label to use when tagging and pushing to the fly registry. Defaults to \"deployment-{timestamp}\"",
          "takes_arg": true,
          "arg": {
            "name": "image-label"
          }
        },
        {
          "names": [
            "--local-only"
          ],
          "description": "Only perform builds locally using the local docker daemon"
        },
        {
          "names": [
            "--nix"
          ],
          "description": "Build with Nix"
        },
        {
          "names": [
            "--no-cache"
          ],
          "description": "Do not use the build cache when building the image"
        },
        {
          "names": [
            "--now"
          ],
          "description": "Deploy now without confirmation"
        },
        {
          "names": [
            "--push"
          ],
          "description": "Push image to registry after build is complete"
        },
        {
          "names": [
            "--region",
            "-r"
          ],
          "description": "The region to operate on",
          "takes_arg": true,
          "arg": {
            "name": "region"
          }
        },
        {
          "names": [
            "--remote-only"
          ],
          "description": "Perform builds on a remote builder instance instead of using the local docker daemon"
        },
        {
          "names": [
            "--strategy"
          ],
          "description": "The strategy for replacing running instances. Options are canary, rolling, bluegreen, or immediate. Default is canary, or rolling when max-per-region is set",
          "takes_arg": true,
          "arg": {
            "name": "strategy"
          }
        }
      ]
    },
    {
      "name": "destroy",
      "description": "Permanently destroys an app",
      "options": [
        {
          "names": [
            "--yes",
            "-y"
          ],
          "description": "Accept all confirmations"
        }
      ]
    },
    {
      "name": "dig",
      "description": "Make DNS requests against Fly.io's internal DNS server",
      "options": [
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "Application name",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to application configuration file",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--org",
            "-o"
          ],
          "description": "The organization to operate on",
          "takes_arg": true,
          "arg": {
            "name": "org"
          }
        },
        {
          "names": [
            "--short",
            "-s"
          ],
          "description": "Just print the answers, not DNS record details"
        }
      ]
    },
    {
      "name": "dns-records",
      "description": "Manage DNS records",
      "subcommands": [
        {
          "name": "export",
          "description": "Export DNS records",
          "options": [
            {
              "names": [
                "--overwrite"
              ]
            }
          ]
        },
        {
          "name": "import",
          "description": "Import DNS records"
        },
        {
          "name": "list",
          "description": "List DNS records"
        }
      ]
    },
    {
      "name": "docs",
      "description": "View Fly documentation"
    },
    {
      "name": "doctor",
      "description": "The DOCTOR command allows you to debug your Fly environment",
      "subcommands": [
        {
          "name": "diag",
          "description": "Send diagnostic information about your applications back to Fly.io",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "Application name",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to application configuration file",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--force"
              ],
              "description": "Send diagnostics even if we can't find your local Fly.io app"
            }
          ]
        }
      ],
      "options": [
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "Application name",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to application configuration file",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        }
      ]
    },
    {
      "name": "domains",
      "description": "Manage domains",
      "subcommands": [
        {
          "name": "add",
          "description": "Add a domain"
        },
        {
          "name": "list",
          "description": "List domains"
        },
        {
          "name": "register",
          "description": "Register a domain"
        },
        {
          "name": "show",
          "description": "Show domain"
        }
      ]
    },
    {
      "name": "history",
      "description": "List an app's change history",
      "options": [
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "Application name",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to application configuration file",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        }
      ]
    },
    {
      "name": "img",
      "aliases": [
        "image"
      ],
      "description": "Manage app image",
      "subcommands": [
        {
          "name": "show",
          "description": "Show image details",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "Application name",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to application configuration file",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "update",
          "description": "Updates the app's image to the latest available version. (Fly Postgres only)",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "Application name",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to application configuration file",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--detach"
              ],
              "description": "Return immediately instead of monitoring update progress"
            },
            {
              "names": [
                "--yes",
                "-y"
              ],
              "description": "Accept all confirmations"
            }
          ]
        }
      ]
    },
    {
      "name": "info",
      "description": "Show detailed app information",
      "options": [
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "App name to operate on",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to an app config file or directory containing one",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--host"
          ],
          "description": "Returns just the hostname"
        },
        {
          "names": [
            "--name",
            "-n"
          ],
          "description": "Returns just the appname"
        }
      ]
    },
    {
      "name": "ips",
      "description": "Manage IP addresses for apps",
      "subcommands": [
        {
          "name": "allocate-v4",
          "description": "Allocate an IPv4 address",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--region"
              ],
              "description": "The region where the address should be allocated",
              "takes_arg": true,
              "arg": {
                "name": "region"
              }
            }
          ]
        },
        {
          "name": "allocate-v6",
          "description": "Allocate an IPv6 address",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--region"
              ],
              "description": "The region where the address should be allocated",
              "takes_arg": true,
              "arg": {
                "name": "region"
              }
            }
          ]
        },
        {
          "name": "list",
          "description": "List allocated IP addresses",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "private",
          "description": "List instances private IP addresses",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "release",
          "description": "Release an IP address",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        }
      ],
      "options": [
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "App name to operate on",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to an app config file or directory containing one",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        }
      ]
    },
    {
      "name": "launch",
      "description": "Launch a new app",
      "options": [
        {
          "names": [
            "--copy-config"
          ],
          "description": "Use the configuration file if present without prompting"
        },
        {
          "names": [
            "--dockerfile"
          ],
          "description": "Path to a Dockerfile. Defaults to the Dockerfile in the working directory",
          "takes_arg": true,
          "arg": {
            "name": "dockerfile"
          }
        },
        {
          "names": [
            "--generate-name"
          ],
          "description": "Always generate a name for the app"
        },
        {
          "names": [
            "--image"
          ],
          "description": "The image to launch",
          "takes_arg": true,
          "arg": {
            "name": "image"
          }
        },
        {
          "names": [
            "--name"
          ],
          "description": "The name of the new app",
          "takes_arg": true,
          "arg": {
            "name": "name"
          }
        },
        {
          "names": [
            "--no-deploy"
          ],
          "description": "Do not prompt for deployment"
        },
        {
          "names": [
            "--now"
          ],
          "description": "Deploy now without confirmation"
        },
        {
          "names": [
            "--org"
          ],
          "description": "The organization that will own the app",
          "takes_arg": true,
          "arg": {
            "name": "org"
          }
        },
        {
          "names": [
            "--path"
          ],
          "description": "Path to app code and where a fly.toml file will be saved",
          "takes_arg": true,
          "arg": {
            "name": "path"
          }
        },
        {
          "names": [
            "--region"
          ],
          "description": "The region to launch the new app in",
          "takes_arg": true,
          "arg": {
            "name": "region"
          }
        },
        {
          "names": [
            "--remote-only"
          ],
          "description": "Perform builds remotely without using the local docker daemon"
        }
      ]
    },
    {
      "name": "logs",
      "description": "View app logs",
      "options": [
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "Application name",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to application configuration file",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--instance",
            "-i"
          ],
          "description": "Filter by instance ID",
          "takes_arg": true,
          "arg": {
            "name": "instance"
          }
        },
        {
          "names": [
            "--region",
            "-r"
          ],
          "description": "The region to operate on",
          "takes_arg": true,
          "arg": {
            "name": "region"
          }
        }
      ]
    },
    {
      "name": "machines",
      "aliases": [
        "m",
        "machine"
      ],
      "description": "Commands that manage machines",
      "subcommands": [
        {
          "name": "clone",
          "description": "Clones a Fly Machine",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "Application name",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to application configuration file",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--detach",
                "-d"
              ],
              "description": "Detach from the machine's logs"
            },
            {
              "names": [
                "--name",
                "-n"
              ],
              "description": "The name of the new machine",
              "takes_arg": true,
              "arg": {
                "name": "name"
              }
            },
            {
              "names": [
                "--org",
                "-o"
              ],
              "description": "The organization to operate on",
              "takes_arg": true,
              "arg": {
                "name": "org"
              }
            },
            {
              "names": [
                "--region",
                "-r"
              ],
              "description": "The region to operate on",
              "takes_arg": true,
              "arg": {
                "name": "region"
              }
            }
          ]
        },
        {
          "name": "kill",
          "description": "Kill (SIGKILL) a Fly machine",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "Application name",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to application configuration file",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "list",
          "description": "List Fly machines",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "Application name",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to application configuration file",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--quiet",
                "-q"
              ],
              "description": "Only list machine ids"
            }
          ]
        },
        {
          "name": "rm",
          "aliases": [
            "remove"
          ],
          "description": "Remove a Fly machine",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "Application name",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to application configuration file",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--force",
                "-f"
              ],
              "description": "Force kill machine if it's running"
            }
          ]
        },
        {
          "name": "run",
          "description": "Run a machine",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "Application name",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--build-arg"
              ],
              "description": "Set of build time variables in the form of NAME=VALUE pairs. Can be specified multiple times",
              "takes_arg": true,
              "arg": {
                "name": "build-arg"
              }
            },
            {
              "names": [
                "--build-local-only"
              ],
              "description": "Only perform builds locally using the local docker daemon"
            },
            {
              "names": [
                "--build-only"
              ]
            },
            {
              "names": [
                "--build-remote-only"
              ],
              "description": "Perform builds remotely without using the local docker daemon"
            },
            {
              "names": [
                "--build-target"
              ],
              "description": "Set the target build stage to build if the Dockerfile has more than one stage",
              "takes_arg": true,
              "arg": {
                "name": "build-target"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to application configuration file",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--cpu-kind"
              ],
              "description": "Kind of CPU to use (shared, dedicated)",
              "takes_arg": true,
              "arg": {
                "name": "cpu-kind"
              }
            },
            {
              "names": [
                "--cpus"
              ],
              "description": "Number of CPUs",
              "takes_arg": true,
              "arg": {
                "name": "cpus"
              }
            },
            {
              "names": [
                "--detach",
                "-d"
              ],
              "description": "Detach from the machine's logs"
            },
            {
              "names": [
                "--dockerfile"
              ],
              "description": "Path to a Dockerfile. Defaults to the Dockerfile in the working directory",
              "takes_arg": true,
              "arg": {
                "name": "dockerfile"
              }
            },
            {
              "names": [
                "--entrypoint"
              ],
              "description": "ENTRYPOINT replacement",
              "takes_arg": true,
              "arg": {
                "name": "entrypoint"
              }
            },
            {
              "names": [
                "--env",
                "-e"
              ],
              "description": "Set of environment variables in the form of NAME=VALUE pairs. Can be specified multiple times",
              "takes_arg": true,
              "arg": {
                "name": "env"
              }
            },
            {
              "names": [
                "--id"
              ],
              "description": "Machine ID, if previously known",
              "takes_arg": true,
              "arg": {
                "name": "id"
              }
            },
            {
              "names": [
                "--image-label"
              ],
              "description": "Image label to use when tagging and pushing to the fly registry. Defaults to \"deployment-{timestamp}\"",
              "takes_arg": true,
              "arg": {
                "name": "image-label"
              }
            },
            {
              "names": [
                "--memory"
              ],
              "description": "Memory (in megabytes) to attribute to the machine",
              "takes_arg": true,
              "arg": {
                "name": "memory"
              }
            },
            {
              "names": [
                "--name",
                "-n"
              ],
              "description": "Machine name, will be generated if missing",
              "takes_arg": true,
              "arg": {
                "name": "name"
              }
            },
            {
              "names": [
                "--no-build-cache"
              ],
              "description": "Do not use the cache when building the image"
            },
            {
              "names": [
                "--org"
              ],
              "description": "The organization that will own the app",
              "takes_arg": true,
              "arg": {
                "name": "org"
              }
            },
            {
              "names": [
                "--port",
                "-p"
              ],
              "description": "Exposed port mappings (format: edgePort[:machinePort]/[protocol[:handler]])",
              "takes_arg": true,
              "arg": {
                "name": "port"
              }
            },
            {
              "names": [
                "--region",
                "-r"
              ],
              "description": "The region to operate on",
              "takes_arg": true,
              "arg": {
                "name": "region"
              }
            },
            {
              "names": [
                "--size",
                "-s"
              ],
              "description": "Preset guest cpu and memory for a machine",
              "takes_arg": true,
              "arg": {
                "name": "size"
              }
            },
            {
              "names": [
                "--volume",
                "-v"
              ],
              "description": "Volumes to mount in the form of <volume_id_or_name>:/path/inside/machine[:<options>]",
              "takes_arg": true,
              "arg": {
                "name": "volume"
              }
            }
          ]
        },
        {
          "name": "start",
          "description": "Start a Fly machine",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "Application name",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to application configuration file",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "status",
          "description": "Show current status of a running machine",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "Application name",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to application configuration file",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "stop",
          "description": "Stop a Fly machine",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "Application name",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to application configuration file",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--signal",
                "-s"
              ],
              "description": "Signal to stop the machine with (default: SIGINT)",
              "takes_arg": true,
              "arg": {
                "name": "signal"
              }
            },
            {
              "names": [
                "--time"
              ],
              "description": "Seconds to wait before killing the machine",
              "takes_arg": true,
              "arg": {
                "name": "time"
              }
            }
          ]
        }
      ]
    },
    {
      "name": "monitor",
      "description": "Monitor currently running application deployments",
      "options": [
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "Application name",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to application configuration file",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        }
      ]
    },
    {
      "name": "move",
      "description": "Move an app to another organization",
      "options": [
        {
          "names": [
            "--org",
            "-o"
          ],
          "description": "The organization to operate on",
          "takes_arg": true,
          "arg": {
            "name": "org"
          }
        },
        {
          "names": [
            "--yes",
            "-y"
          ],
          "description": "Accept all confirmations"
        }
      ]
    },
    {
      "name": "open",
      "description": "Open browser to current deployed application",
      "options": [
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "Application name",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to application configuration file",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        }
      ]
    },
    {
      "name": "orgs",
      "description": "Commands for managing Fly organizations",
      "subcommands": [
        {
          "name": "builder",
          "description": "Manage remote builder",
          "subcommands": [
            {
              "name": "show",
              "description": "Show details about an organization's remote builder image"
            },
            {
              "name": "update",
              "description": "Update an organization's remote builder image"
            }
          ]
        },
        {
          "name": "create",
          "description": "Create an organization"
        },
        {
          "name": "delete",
          "description": "Delete an organization",
          "options": [
            {
              "names": [
                "--yes",
                "-y"
              ],
              "description": "Accept all confirmations"
            }
          ]
        },
        {
          "name": "invite",
          "description": "Invite user (by email) to organization"
        },
        {
          "name": "list",
          "description": "Lists organizations for current user"
        },
        {
          "name": "remove",
          "description": "Remove a user from an organization"
        },
        {
          "name": "show",
          "description": "Show information about an organization"
        }
      ]
    },
    {
      "name": "ping",
      "description": "Test connectivity with ICMP ping messages",
      "options": [
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "Application name",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to application configuration file",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--count",
            "-n"
          ],
          "description": "Number of probes to send (0=indefinite)",
          "takes_arg": true,
          "arg": {
            "name": "count"
          }
        },
        {
          "names": [
            "--interval",
            "-i"
          ],
          "description": "Interval between ping probes",
          "takes_arg": true,
          "arg": {
            "name": "interval"
          }
        },
        {
          "names": [
            "--org",
            "-o"
          ],
          "description": "The organization to operate on",
          "takes_arg": true,
          "arg": {
            "name": "org"
          }
        },
        {
          "names": [
            "--size",
            "-s"
          ],
          "description": "Size of probe to send (not including headers)",
          "takes_arg": true,
          "arg": {
            "name": "size"
          }
        }
      ]
    },
    {
      "name": "platform",
      "description": "Fly platform information",
      "subcommands": [
        {
          "name": "regions",
          "description": "List regions"
        },
        {
          "name": "status",
          "description": "Show current platform status"
        },
        {
          "name": "vm-sizes",
          "description": "List VM Sizes"
        }
      ]
    },
    {
      "name": "pg",
      "aliases": [
        "postgres"
      ],
      "description": "Manage postgres clusters",
      "subcommands": [
        {
          "name": "attach",
          "description": "Attach a postgres cluster to an app",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--database-name"
              ],
              "description": "Database to use, defaults to a new database with the same name as the app",
              "takes_arg": true,
              "arg": {
                "name": "database-name"
              }
            },
            {
              "names": [
                "--database-user"
              ],
              "description": "The database user to create, defaults to creating a user with the same name as the consuming app",
              "takes_arg": true,
              "arg": {
                "name": "database-user"
              }
            },
            {
              "names": [
                "--postgres-app"
              ],
              "description": "The postgres cluster to attach to the app",
              "takes_arg": true,
              "arg": {
                "name": "postgres-app"
              }
            },
            {
              "names": [
                "--variable-name"
              ],
              "description": "The env variable name that will be added to the app. Defaults to DATABASE_URL",
              "takes_arg": true,
              "arg": {
                "name": "variable-name"
              }
            }
          ]
        },
        {
          "name": "connect",
          "description": "Connect to the Postgres console",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--database"
              ],
              "description": "The postgres database to connect to",
              "takes_arg": true,
              "arg": {
                "name": "database"
              }
            },
            {
              "names": [
                "--password"
              ],
              "description": "The postgres user password",
              "takes_arg": true,
              "arg": {
                "name": "password"
              }
            },
            {
              "names": [
                "--user"
              ],
              "description": "The postgres user to connect with",
              "takes_arg": true,
              "arg": {
                "name": "user"
              }
            }
          ]
        },
        {
          "name": "create",
          "description": "Create a postgres cluster",
          "options": [
            {
              "names": [
                "--initial-cluster-size"
              ],
              "description": "The size of the initial postgres cluster",
              "takes_arg": true,
              "arg": {
                "name": "initial-cluster-size"
              }
            },
            {
              "names": [
                "--name"
              ],
              "description": "The name of the new app",
              "takes_arg": true,
              "arg": {
                "name": "name"
              }
            },
            {
              "names": [
                "--organization"
              ],
              "description": "The organization that will own the app",
              "takes_arg": true,
              "arg": {
                "name": "organization"
              }
            },
            {
              "names": [
                "--password"
              ],
              "description": "The superuser password. one will be generated for you if you leave this blank",
              "takes_arg": true,
              "arg": {
                "name": "password"
              }
            },
            {
              "names": [
                "--region"
              ],
              "description": "The region to launch the new app in",
              "takes_arg": true,
              "arg": {
                "name": "region"
              }
            },
            {
              "names": [
                "--snapshot-id"
              ],
              "description": "Creates the volume with the contents of the snapshot",
              "takes_arg": true,
              "arg": {
                "name": "snapshot-id"
              }
            },
            {
              "names": [
                "--vm-size"
              ],
              "description": "The size of the VM",
              "takes_arg": true,
              "arg": {
                "name": "vm-size"
              }
            },
            {
              "names": [
                "--volume-size"
              ],
              "description": "The size in GB for volumes",
              "takes_arg": true,
              "arg": {
                "name": "volume-size"
              }
            }
          ]
        },
        {
          "name": "db",
          "description": "Manage databases in a cluster",
          "subcommands": [
            {
              "name": "list",
              "description": "List databases in a cluster",
              "options": [
                {
                  "names": [
                    "--app",
                    "-a"
                  ],
                  "description": "App name to operate on",
                  "takes_arg": true,
                  "arg": {
                    "name": "app"
                  }
                },
                {
                  "names": [
                    "--config",
                    "-c"
                  ],
                  "description": "Path to an app config file or directory containing one",
                  "takes_arg": true,
                  "arg": {
                    "name": "config",
                    "template": "filepaths"
                  }
                }
              ]
            }
          ]
        },
        {
          "name": "detach",
          "description": "Detach a postgres cluster from an app",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--postgres-app"
              ],
              "description": "The postgres cluster to detach from the app",
              "takes_arg": true,
              "arg": {
                "name": "postgres-app"
              }
            }
          ]
        },
        {
          "name": "list",
          "description": "List postgres clusters"
        },
        {
          "name": "users",
          "description": "Manage users in a cluster",
          "subcommands": [
            {
              "name": "list",
              "description": "List users in a cluster",
              "options": [
                {
                  "names": [
                    "--app",
                    "-a"
                  ],
                  "description": "App name to operate on",
                  "takes_arg": true,
                  "arg": {
                    "name": "app"
                  }
                },
                {
                  "names": [
                    "--config",
                    "-c"
                  ],
                  "description": "Path to an app config file or directory containing one",
                  "takes_arg": true,
                  "arg": {
                    "name": "config",
                    "template": "filepaths"
                  }
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "proxy",
      "description": "Proxies connections to a fly VM",
      "options": [
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "Application name",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to application configuration file",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--org",
            "-o"
          ],
          "description": "The organization to operate on",
          "takes_arg": true,
          "arg": {
            "name": "org"
          }
        },
        {
          "names": [
            "--select",
            "-s"
          ],
          "description": "Prompt to select from available instances from the current application"
        }
      ]
    },
    {
      "name": "regions",
      "description": "Manage regions",
      "subcommands": [
        {
          "name": "add",
          "description": "Allow the app to run in the provided regions",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--group"
              ],
              "description": "The process group to add the region to",
              "takes_arg": true,
              "arg": {
                "name": "group"
              }
            }
          ]
        },
        {
          "name": "backup",
          "description": "Sets the backup region pool with provided regions",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "list",
          "description": "Shows the list of regions the app is allowed to run in",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "remove",
          "description": "Prevent the app from running in the provided regions",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--group"
              ],
              "description": "The process group to remove the region from",
              "takes_arg": true,
              "arg": {
                "name": "group"
              }
            }
          ]
        },
        {
          "name": "set",
          "description": "Sets the region pool with provided regions",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--group"
              ],
              "description": "The process group to set regions for",
              "takes_arg": true,
              "arg": {
                "name": "group"
              }
            }
          ]
        }
      ],
      "options": [
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "App name to operate on",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to an app config file or directory containing one",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        }
      ]
    },
    {
      "name": "releases",
      "description": "List app releases",
      "options": [
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "Application name",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to application configuration file",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--image"
          ],
          "description": "Display the Docker image reference of the release"
        }
      ]
    },
    {
      "name": "resume",
      "description": "Resume an application"
    },
    {
      "name": "scale",
      "description": "Scale app resources",
      "subcommands": [
        {
          "name": "count",
          "description": "Change an app's VM count to the given value",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--max-per-region"
              ],
              "description": "Max number of VMs per region",
              "takes_arg": true,
              "arg": {
                "name": "max-per-region"
              }
            }
          ]
        },
        {
          "name": "memory",
          "description": "Set VM memory",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--group"
              ],
              "description": "The process group to apply the memory size to",
              "takes_arg": true,
              "arg": {
                "name": "group"
              }
            }
          ]
        },
        {
          "name": "show",
          "description": "Show current resources",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "vm",
          "description": "Change an app's VM to a named size (eg. shared-cpu-1x, dedicated-cpu-1x, dedicated-cpu-2x...)",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--group"
              ],
              "description": "The process group to apply the VM size to",
              "takes_arg": true,
              "arg": {
                "name": "group"
              }
            },
            {
              "names": [
                "--memory"
              ],
              "description": "Memory in MB for the VM",
              "takes_arg": true,
              "arg": {
                "name": "memory"
              }
            }
          ]
        }
      ],
      "options": [
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "App name to operate on",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to an app config file or directory containing one",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        }
      ]
    },
    {
      "name": "secrets",
      "description": "Manage app secrets",
      "subcommands": [
        {
          "name": "import",
          "description": "Read secrets in name=value from stdin",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--detach"
              ],
              "description": "Return immediately instead of monitoring deployment progress"
            }
          ]
        },
        {
          "name": "list",
          "description": "Lists the secrets available to the app",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "set",
          "description": "Set one or more encrypted secrets for an app",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--detach"
              ],
              "description": "Return immediately instead of monitoring deployment progress"
            }
          ]
        },
        {
          "name": "unset",
          "description": "Remove encrypted secrets from an app",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--detach"
              ],
              "description": "Return immediately instead of monitoring deployment progress"
            }
          ]
        }
      ],
      "options": [
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "App name to operate on",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to an app config file or directory containing one",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        }
      ]
    },
    {
      "name": "ssh",
      "description": "Commands that manage SSH credentials",
      "subcommands": [
        {
          "name": "console",
          "description": "Connect to a running instance of the current app",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--command",
                "-C"
              ],
              "description": "Command to run on SSH session",
              "takes_arg": true,
              "arg": {
                "name": "command"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--probe",
                "-p"
              ],
              "description": "Test WireGuard connection after establishing"
            },
            {
              "names": [
                "--region",
                "-r"
              ],
              "description": "Region to create WireGuard connection in",
              "takes_arg": true,
              "arg": {
                "name": "region"
              }
            },
            {
              "names": [
                "--select",
                "-s"
              ],
              "description": "Select available instances"
            }
          ]
        },
        {
          "name": "establish",
          "description": "Create a root SSH certificate for your organization"
        },
        {
          "name": "issue",
          "description": "Issue a new SSH credential",
          "options": [
            {
              "names": [
                "--agent"
              ],
              "description": "Add key to SSH agent"
            },
            {
              "names": [
                "--dotssh",
                "-d"
              ],
              "description": "Store keys in ~/.ssh, like normal keys"
            },
            {
              "names": [
                "--hours"
              ],
              "description": "Expiration, in hours (<72)",
              "takes_arg": true,
              "arg": {
                "name": "hours"
              }
            },
            {
              "names": [
                "--overwrite",
                "-o"
              ],
              "description": "Overwrite existing SSH keys in same location, if we generated them"
            },
            {
              "names": [
                "--username",
                "-u"
              ],
              "description": "Unix username for SSH cert",
              "takes_arg": true,
              "arg": {
                "name": "username"
              }
            }
          ]
        },
        {
          "name": "log",
          "description": "Log of all issued certs"
        }
      ]
    },
    {
      "name": "status",
      "description": "Show app status",
      "subcommands": [
        {
          "name": "instance",
          "description": "Show instance status",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "Application name",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to application configuration file",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        }
      ],
      "options": [
        {
          "names": [
            "--all"
          ],
          "description": "Show completed instances"
        },
        {
          "names": [
            "--app",
            "-a"
          ],
          "description": "Application name",
          "takes_arg": true,
          "arg": {
            "name": "app"
          }
        },
        {
          "names": [
            "--config",
            "-c"
          ],
          "description": "Path to application configuration file",
          "takes_arg": true,
          "arg": {
            "name": "config",
            "template": "filepaths"
          }
        },
        {
          "names": [
            "--deployment"
          ],
          "description": "Always show deployment status"
        },
        {
          "names": [
            "--rate"
          ],
          "description": "Refresh Rate for --watch",
          "takes_arg": true,
          "arg": {
            "name": "rate"
          }
        },
        {
          "names": [
            "--watch"
          ],
          "description": "Refresh details"
        }
      ]
    },
    {
      "name": "suspend",
      "description": "Suspend an application"
    },
    {
      "name": "turboku",
      "description": "Launches heroku apps",
      "options": [
        {
          "names": [
            "--heroku-token"
          ],
          "description": "Heroku API token",
          "takes_arg": true,
          "arg": {
            "name": "heroku-token"
          }
        },
        {
          "names": [
            "--keep"
          ],
          "description": "Keep the app directory after deployment"
        },
        {
          "names": [
            "--name"
          ],
          "description": "The name of the new app",
          "takes_arg": true,
          "arg": {
            "name": "name"
          }
        },
        {
          "names": [
            "--now"
          ],
          "description": "Deploy now without confirmation"
        },
        {
          "names": [
            "--org"
          ],
          "description": "The organization that will own the app",
          "takes_arg": true,
          "arg": {
            "name": "org"
          }
        },
        {
          "names": [
            "--region"
          ],
          "description": "The region to launch the new app in",
          "takes_arg": true,
          "arg": {
            "name": "region"
          }
        }
      ]
    },
    {
      "name": "version",
      "description": "Show version information for the flyctl command",
      "subcommands": [
        {
          "name": "update",
          "description": "Checks for available updates and automatically updates"
        }
      ],
      "options": [
        {
          "names": [
            "--saveinstall",
            "-s"
          ],
          "description": "Save parameter in config",
          "takes_arg": true,
          "arg": {
            "name": "saveinstall"
          }
        }
      ]
    },
    {
      "name": "vm",
      "description": "Commands that manage VM instances",
      "subcommands": [
        {
          "name": "restart",
          "description": "Restart a VM",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "status",
          "description": "Show a VM's status",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "stop",
          "description": "Stop a VM",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "App name to operate on",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to an app config file or directory containing one",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        }
      ]
    },
    {
      "name": "vol",
      "aliases": [
        "volumes"
      ],
      "description": "Volume management commands",
      "subcommands": [
        {
          "name": "create",
          "description": "Create new volume for app",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "Application name",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to application configuration file",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            },
            {
              "names": [
                "--no-encryption"
              ],
              "description": "Do not encrypt the volume contents"
            },
            {
              "names": [
                "--region",
                "-r"
              ],
              "description": "The region to operate on",
              "takes_arg": true,
              "arg": {
                "name": "region"
              }
            },
            {
              "names": [
                "--require-unique-zone"
              ],
              "description": "Require volume to be placed in separate hardware zone from existing volumes"
            },
            {
              "names": [
                "--size",
                "-s"
              ],
              "description": "Size of volume in gigabytes",
              "takes_arg": true,
              "arg": {
                "name": "size"
              }
            }
          ]
        },
        {
          "name": "delete",
          "description": "Delete a volume from the app",
          "options": [
            {
              "names": [
                "--yes",
                "-y"
              ],
              "description": "Accept all confirmations"
            }
          ]
        },
        {
          "name": "list",
          "description": "List the volumes for app",
          "options": [
            {
              "names": [
                "--app",
                "-a"
              ],
              "description": "Application name",
              "takes_arg": true,
              "arg": {
                "name": "app"
              }
            },
            {
              "names": [
                "--config",
                "-c"
              ],
              "description": "Path to application configuration file",
              "takes_arg": true,
              "arg": {
                "name": "config",
                "template": "filepaths"
              }
            }
          ]
        },
        {
          "name": "show",
          "description": "Show details of an app's volume"
        },
        {
          "name": "snaps",
          "aliases": [
            "snapshots"
          ],
          "description": "Manage volume snapshots",
          "subcommands": [
            {
              "name": "list",
              "description": "List snapshots"
            }
          ]
        }
      ]
    },
    {
      "name": "wg",
      "aliases": [
        "wireguard"
      ],
      "description": "Commands that manage WireGuard peer connections",
      "subcommands": [
        {
          "name": "create",
          "description": "Add a WireGuard peer connection"
        },
        {
          "name": "list",
          "description": "List all WireGuard peer connections"
        },
        {
          "name": "remove",
          "description": "Remove a WireGuard peer connection"
        },
        {
          "name": "reset",
          "description": "Reset WireGuard peer connection for an organization"
        },
        {
          "name": "status",
          "description": "Get status a WireGuard peer connection"
        },
        {
          "name": "token",
          "description": "Commands that managed WireGuard delegated access tokens",
          "subcommands": [
            {
              "name": "create",
              "description": "Create a new WireGuard token"
            },
            {
              "name": "delete",
              "description": "Delete a WireGuard token; token is name:<name> or token:<token>"
            },
            {
              "name": "list",
              "description": "List all WireGuard tokens"
            },
            {
              "name": "start",
              "description": "Start a new WireGuard peer connection associated with a token (set FLY_WIREGUARD_TOKEN)"
            },
            {
              "name": "update",
              "description": "Rekey a WireGuard peer connection associated with a token (set FLY_WIREGUARD_TOKEN)"
            }
          ]
        },
        {
          "name": "websockets",
          "description": "Enable or disable WireGuard tunneling over WebSockets"
        }
      ]
    },
    {
      "name": "help",
      "description": "Help about any command",
      "subcommands": [
        {
          "name": "Use",
          "description": "Short"
        },
        {
          "name": "agent",
          "description": "Commands that manage the Fly agent, a background process that manages flyctl wireguard connections",
          "subcommands": [
            {
              "name": "ping",
              "description": "Ping the Fly agent"
            },
            {
              "name": "restart",
              "description": "Restart the Fly agent"
            },
            {
              "name": "daemon-start",
              "aliases": [
                "run"
              ],
              "description": "Run the Fly agent in the foreground"
            },
            {
              "name": "start",
              "description": "Start the Fly agent"
            },
            {
              "name": "stop",
              "description": "Stop the Fly agent"
            }
          ]
        },
        {
          "name": "apps",
          "description": "Manage apps",
          "subcommands": [
            {
              "name": "create",
              "description": "Create a new application"
            },
            {
              "name": "destroy",
              "description": "Permanently destroys an app"
            },
            {
              "name": "list",
              "description": "List applications"
            },
            {
              "name": "move",
              "description": "Move an app to another organization"
            },
            {
              "name": "open",
              "description": "Open browser to current deployed application"
            },
            {
              "name": "releases",
              "description": "List app releases"
            },
            {
              "name": "restart",
              "description": "Restart an application"
            }
          ]
        },
        {
          "name": "auth",
          "description": "Manage authentication",
          "subcommands": [
            {
              "name": "docker",
              "description": "Authenticate docker"
            },
            {
              "name": "login",
              "description": "Log in a user"
            },
            {
              "name": "logout",
              "description": "Logs out the currently logged in user"
            },
            {
              "name": "signup",
              "description": "Create a new fly account"
            },
            {
              "name": "token",
              "description": "Show the current auth token"
            },
            {
              "name": "whoami",
              "description": "Displays the users email address/service identity currently authenticated and in use"
            }
          ]
        },
        {
          "name": "autoscale",
          "description": "Autoscaling app resources",
          "subcommands": [
            {
              "name": "balanced",
              "description": "Configure a traffic balanced app with params (min=int max=int)"
            },
            {
              "name": "disable",
              "description": "Disable autoscaling"
            },
            {
              "name": "set",
              "description": "Set current models autoscaling parameters"
            },
            {
              "name": "show",
              "description": "Show current autoscaling configuration"
            },
            {
              "name": "standard",
              "description": "Configure a standard balanced app with params (min=int max=int)"
            }
          ]
        },
        {
          "name": "builds",
          "description": "Manage application builds",
          "subcommands": [
            {
              "name": "list",
              "description": "List builds"
            }
          ]
        },
        {
          "name": "certs",
          "description": "Manage certificates",
          "subcommands": [
            {
              "name": "create",
              "aliases": [
                "add"
              ],
              "description": "Add a certificate for an app"
            },
            {
              "name": "check",
              "description": "Checks DNS configuration"
            },
            {
              "name": "list",
              "description": "List certificates for an app"
            },
            {
              "name": "delete",
              "aliases": [
                "remove"
              ],
              "description": "Removes a certificate from an app"
            },
            {
              "name": "show",
              "description": "Shows certificate information"
            }
          ]
        },
        {
          "name": "checks",
          "description": "Manage health checks",
          "subcommands": [
            {
              "name": "handlers",
              "description": "Manage health check handlers",
              "subcommands": [
                {
                  "name": "create",
                  "description": "Create a health check handler"
                },
                {
                  "name": "delete",
                  "description": "Delete a health check handler"
                },
                {
                  "name": "list",
                  "description": "List health check handlers"
                }
              ]
            },
            {
              "name": "list",
              "description": "List app health checks"
            }
          ]
        },
        {
          "name": "completion",
          "description": "Generate the autocompletion script for the specified shell",
          "subcommands": [
            {
              "name": "bash",
              "description": "Generate the autocompletion script for bash"
            },
            {
              "name": "fish",
              "description": "Generate the autocompletion script for fish"
            },
            {
              "name": "powershell",
              "description": "Generate the autocompletion script for powershell"
            },
            {
              "name": "zsh",
              "description": "Generate the autocompletion script for zsh"
            }
          ]
        },
        {
          "name": "config",
          "description": "Manage an app's configuration",
          "subcommands": [
            {
              "name": "display",
              "description": "Display an app's configuration"
            },
            {
              "name": "env",
              "description": "Display an app's runtime environment variables"
            },
            {
              "name": "save",
              "description": "Save an app's config file"
            },
            {
              "name": "validate",
              "description": "Validate an app's config file"
            }
          ]
        },
        {
          "name": "create",
          "description": "Create a new application"
        },
        {
          "name": "curl",
          "description": "Run a performance test against a URL"
        },
        {
          "name": "dash",
          "aliases": [
            "dashboard"
          ],
          "description": "Open web browser on Fly Web UI for this app",
          "subcommands": [
            {
              "name": "metrics",
              "description": "Open web browser on Fly Web UI for this app's metrics"
            }
          ]
        },
        {
          "name": "deploy",
          "description": "Deploy Fly applications"
        },
        {
          "name": "destroy",
          "description": "Permanently destroys an app"
        },
        {
          "name": "dig",
          "description": "Make DNS requests against Fly.io's internal DNS server"
        },
        {
          "name": "dns-records",
          "description": "Manage DNS records",
          "subcommands": [
            {
              "name": "export",
              "description": "Export DNS records"
            },
            {
              "name": "import",
              "description": "Import DNS records"
            },
            {
              "name": "list",
              "description": "List DNS records"
            }
          ]
        },
        {
          "name": "docs",
          "description": "View Fly documentation"
        },
        {
          "name": "doctor",
          "description": "The DOCTOR command allows you to debug your Fly environment",
          "subcommands": [
            {
              "name": "diag",
              "description": "Send diagnostic information about your applications back to Fly.io"
            }
          ]
        },
        {
          "name": "domains",
          "description": "Manage domains",
          "subcommands": [
            {
              "name": "add",
              "description": "Add a domain"
            },
            {
              "name": "list",
              "description": "List domains"
            },
            {
              "name": "register",
              "description": "Register a domain"
            },
            {
              "name": "show",
              "description": "Show domain"
            }
          ]
        },
        {
          "name": "history",
          "description": "List an app's change history"
        },
        {
          "name": "img",
          "aliases": [
            "image"
          ],
          "description": "Manage app image",
          "subcommands": [
            {
              "name": "show",
              "description": "Show image details"
            },
            {
              "name": "update",
              "description": "Updates the app's image to the latest available version. (Fly Postgres only)"
            }
          ]
        },
        {
          "name": "info",
          "description": "Show detailed app information"
        },
        {
          "name": "ips",
          "description": "Manage IP addresses for apps",
          "subcommands": [
            {
              "name": "allocate-v4",
              "description": "Allocate an IPv4 address"
            },
            {
              "name": "allocate-v6",
              "description": "Allocate an IPv6 address"
            },
            {
              "name": "list",
              "description": "List allocated IP addresses"
            },
            {
              "name": "private",
              "description": "List instances private IP addresses"
            },
            {
              "name": "release",
              "description": "Release an IP address"
            }
          ]
        },
        {
          "name": "launch",
          "description": "Launch a new app"
        },
        {
          "name": "ls",
          "aliases": [
            "list"
          ],
          "description": "Lists your Fly resources",
          "subcommands": [
            {
              "name": "apps",
              "description": "Lists all your apps"
            },
            {
              "name": "orgs",
              "description": "List all your organizations"
            }
          ]
        },
        {
          "name": "logs",
          "description": "View app logs"
        },
        {
          "name": "machines",
          "aliases": [
            "m",
            "machine"
          ],
          "description": "Commands that manage machines",
          "subcommands": [
            {
              "name": "clone",
              "description": "Clones a Fly Machine"
            },
            {
              "name": "kill",
              "description": "Kill (SIGKILL) a Fly machine"
            },
            {
              "name": "list",
              "description": "List Fly machines"
            },
            {
              "name": "rm",
              "aliases": [
                "remove"
              ],
              "description": "Remove a Fly machine"
            },
            {
              "name": "run",
              "description": "Run a machine"
            },
            {
              "name": "start",
              "description": "Start a Fly machine"
            },
            {
              "name": "status",
              "description": "Show current status of a running machine"
            },
            {
              "name": "stop",
              "description": "Stop a Fly machine"
            }
          ]
        },
        {
          "name": "monitor",
          "description": "Monitor currently running application deployments"
        },
        {
          "name": "move",
          "description": "Move an app to another organization"
        },
        {
          "name": "open",
          "description": "Open browser to current deployed application"
        },
        {
          "name": "orgs",
          "description": "Commands for managing Fly organizations",
          "subcommands": [
            {
              "name": "builder",
              "description": "Manage remote builder",
              "subcommands": [
                {
                  "name": "show",
                  "description": "Show details about an organization's remote builder image"
                },
                {
                  "name": "update",
                  "description": "Update an organization's remote builder image"
                }
              ]
            },
            {
              "name": "create",
              "description": "Create an organization"
            },
            {
              "name": "delete",
              "description": "Delete an organization"
            },
            {
              "name": "invite",
              "description": "Invite user (by email) to organization"
            },
            {
              "name": "list",
              "description": "Lists organizations for current user"
            },
            {
              "name": "remove",
              "description": "Remove a user from an organization"
            },
            {
              "name": "show",
              "description": "Show information about an organization"
            }
          ]
        },
        {
          "name": "ping",
          "description": "Test connectivity with ICMP ping messages"
        },
        {
          "name": "platform",
          "description": "Fly platform information",
          "subcommands": [
            {
              "name": "regions",
              "description": "List regions"
            },
            {
              "name": "status",
              "description": "Show current platform status"
            },
            {
              "name": "vm-sizes",
              "description": "List VM Sizes"
            }
          ]
        },
        {
          "name": "pg",
          "aliases": [
            "postgres"
          ],
          "description": "Manage postgres clusters",
          "subcommands": [
            {
              "name": "attach",
              "description": "Attach a postgres cluster to an app"
            },
            {
              "name": "connect",
              "description": "Connect to the Postgres console"
            },
            {
              "name": "create",
              "description": "Create a postgres cluster"
            },
            {
              "name": "db",
              "description": "Manage databases in a cluster",
              "subcommands": [
                {
                  "name": "list",
                  "description": "List databases in a cluster"
                }
              ]
            },
            {
              "name": "detach",
              "description": "Detach a postgres cluster from an app"
            },
            {
              "name": "list",
              "description": "List postgres clusters"
            },
            {
              "name": "users",
              "description": "Manage users in a cluster",
              "subcommands": [
                {
                  "name": "list",
                  "description": "List users in a cluster"
                }
              ]
            }
          ]
        },
        {
          "name": "proxy",
          "description": "Proxies connections to a fly VM"
        },
        {
          "name": "regions",
          "description": "Manage regions",
          "subcommands": [
            {
              "name": "add",
              "description": "Allow the app to run in the provided regions"
            },
            {
              "name": "backup",
              "description": "Sets the backup region pool with provided regions"
            },
            {
              "name": "list",
              "description": "Shows the list of regions the app is allowed to run in"
            },
            {
              "name": "remove",
              "description": "Prevent the app from running in the provided regions"
            },
            {
              "name": "set",
              "description": "Sets the region pool with provided regions"
            }
          ]
        },
        {
          "name": "releases",
          "description": "List app releases"
        },
        {
          "name": "restart",
          "description": "Restart an application"
        },
        {
          "name": "resume",
          "description": "Resume an application"
        },
        {
          "name": "scale",
          "description": "Scale app resources",
          "subcommands": [
            {
              "name": "count",
              "description": "Change an app's VM count to the given value"
            },
            {
              "name": "memory",
              "description": "Set VM memory"
            },
            {
              "name": "show",
              "description": "Show current resources"
            },
            {
              "name": "vm",
              "description": "Change an app's VM to a named size (eg. shared-cpu-1x, dedicated-cpu-1x, dedicated-cpu-2x...)"
            }
          ]
        },
        {
          "name": "secrets",
          "description": "Manage app secrets",
          "subcommands": [
            {
              "name": "import",
              "description": "Read secrets in name=value from stdin"
            },
            {
              "name": "list",
              "description": "Lists the secrets available to the app"
            },
            {
              "name": "set",
              "description": "Set one or more encrypted secrets for an app"
            },
            {
              "name": "unset",
              "description": "Remove encrypted secrets from an app"
            }
          ]
        },
        {
          "name": "ssh",
          "description": "Commands that manage SSH credentials",
          "subcommands": [
            {
              "name": "console",
              "description": "Connect to a running instance of the current app"
            },
            {
              "name": "establish",
              "description": "Create a root SSH certificate for your organization"
            },
            {
              "name": "issue",
              "description": "Issue a new SSH credential"
            },
            {
              "name": "log",
              "description": "Log of all issued certs"
            }
          ]
        },
        {
          "name": "status",
          "description": "Show app status",
          "subcommands": [
            {
              "name": "instance",
              "description": "Show instance status"
            }
          ]
        },
        {
          "name": "suspend",
          "description": "Suspend an application"
        },
        {
          "name": "turboku",
          "description": "Launches heroku apps"
        },
        {
          "name": "version",
          "description": "Show version information for the flyctl command",
          "subcommands": [
            {
              "name": "update",
              "description": "Checks for available updates and automatically updates"
            }
          ]
        },
        {
          "name": "vm",
          "description": "Commands that manage VM instances",
          "subcommands": [
            {
              "name": "restart",
              "description": "Restart a VM"
            },
            {
              "name": "status",
              "description": "Show a VM's status"
            },
            {
              "name": "stop",
              "description": "Stop a VM"
            }
          ]
        },
        {
          "name": "vol",
          "aliases": [
            "volumes"
          ],
          "description": "Volume management commands",
          "subcommands": [
            {
              "name": "create",
              "description": "Create new volume for app"
            },
            {
              "name": "delete",
              "description": "Delete a volume from the app"
            },
            {
              "name": "list",
              "description": "List the volumes for app"
            },
            {
              "name": "show",
              "description": "Show details of an app's volume"
            },
            {
              "name": "snaps",
              "aliases": [
                "snapshots"
              ],
              "description": "Manage volume snapshots",
              "subcommands": [
                {
                  "name": "list",
                  "description": "List snapshots"
                }
              ]
            }
          ]
        },
        {
          "name": "wg",
          "aliases": [
            "wireguard"
          ],
          "description": "Commands that manage WireGuard peer connections",
          "subcommands": [
            {
              "name": "create",
              "description": "Add a WireGuard peer connection"
            },
            {
              "name": "list",
              "description": "List all WireGuard peer connections"
            },
            {
              "name": "remove",
              "description": "Remove a WireGuard peer connection"
            },
            {
              "name": "reset",
              "description": "Reset WireGuard peer connection for an organization"
            },
            {
              "name": "status",
              "description": "Get status a WireGuard peer connection"
            },
            {
              "name": "token",
              "description": "Commands that managed WireGuard delegated access tokens",
              "subcommands": [
                {
                  "name": "create",
                  "description": "Create a new WireGuard token"
                },
                {
                  "name": "delete",
                  "description": "Delete a WireGuard token; token is name:<name> or token:<token>"
                },
                {
                  "name": "list",
                  "description": "List all WireGuard tokens"
                },
                {
                  "name": "start",
                  "description": "Start a new WireGuard peer connection associated with a token (set FLY_WIREGUARD_TOKEN)"
                },
                {
                  "name": "update",
                  "description": "Rekey a WireGuard peer connection associated with a token (set FLY_WIREGUARD_TOKEN)"
                }
              ]
            },
            {
              "name": "websockets",
              "description": "Enable or disable WireGuard tunneling over WebSockets"
            }
          ]
        }
      ]
    }
  ],
  "options": [
    {
      "names": [
        "--access-token",
        "-t"
      ],
      "description": "Fly API Access Token",
      "takes_arg": true,
      "arg": {
        "name": "access-token"
      }
    },
    {
      "names": [
        "--json",
        "-j"
      ],
      "description": "Json output"
    },
    {
      "names": [
        "--verbose"
      ],
      "description": "Verbose output"
    },
    {
      "names": [
        "--help",
        "-h"
      ],
      "description": "Display help"
    }
  ]
}
