{
  "id": "iftop",
  "name": "iftop",
  "homepage": "https://pdw.ex-parrot.com/iftop/",
  "description": "Display an interface's bandwidth usage.",
  "executables": [
    "iftop"
  ],
  "dotfiles": {
    "paths": [
      "~/.iftoprc"
    ],
    "secret": []
  },
  "commands": {
    "format": 1,
    "label": "Watch network bandwidth",
    "description": "Live per-connection bandwidth on one interface, or a one-shot text dump. Needs root. Packet filters, config files and sorting options are not in this form.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "",
      "interleave": "permute",
      "long_equals": false,
      "short_attached": false,
      "short_bundles": true
    },
    "source": [
      {
        "id": "man",
        "kind": "manual",
        "url": "https://manpages.debian.org/bookworm/iftop/iftop.8.en.html",
        "revision": "bookworm",
        "evidence": "  -n\n  Don't do hostname lookups.\n  -N\n  Do not resolve port number to service names\n  -p\n  Run in promiscuous mode, so that traffic which does not pass directly\n  -P\n  Turn on port display.\n  -B\n  Display bandwidth rates in bytes/sec rather than bits/sec.\n  -i interface\n  Listen to packets on interface.\n  -f filter\n  Use filter code to select the packets to count.\n  -t text output\n  Use text interface without ncurses and print the output to STDOUT.\n"
      }
    ],
    "field": [
      {
        "id": "interface",
        "label": "Interface",
        "type": "string",
        "option": [
          "-i"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "no_dns",
        "label": "No hostname lookups",
        "type": "boolean",
        "option": [
          "-n"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "no_service",
        "label": "No port-to-service names",
        "type": "boolean",
        "option": [
          "-N"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "show_ports",
        "label": "Show ports",
        "type": "boolean",
        "option": [
          "-P"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "bytes",
        "label": "Bytes per second",
        "type": "boolean",
        "option": [
          "-B"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "promisc",
        "label": "Promiscuous mode",
        "type": "boolean",
        "option": [
          "-p"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "text",
        "label": "Text output (no ncurses)",
        "type": "boolean",
        "option": [
          "-t"
        ],
        "sources": [
          "man"
        ]
      }
    ],
    "task": [
      {
        "id": "watch",
        "label": "Watch an interface",
        "set": {
          "no_dns": [
            true
          ],
          "show_ports": [
            true
          ]
        },
        "fields": [
          "interface",
          "no_dns",
          "no_service",
          "show_ports",
          "bytes"
        ],
        "required": []
      },
      {
        "id": "dump",
        "label": "Text dump",
        "set": {
          "text": [
            true
          ],
          "no_dns": [
            true
          ]
        },
        "lock": [
          "text"
        ],
        "fields": [
          "interface",
          "text",
          "no_dns",
          "bytes"
        ],
        "required": []
      }
    ],
    "group": [
      {
        "id": "basic",
        "label": "Basic",
        "fields": [
          "interface",
          "no_dns",
          "show_ports",
          "bytes",
          "text"
        ]
      },
      {
        "id": "advanced",
        "label": "Advanced",
        "fields": [
          "no_service",
          "promisc"
        ]
      }
    ]
  }
}
