{
  "id": "portal",
  "name": "Portal",
  "homepage": "https://github.com/SpatiumPortae/portal",
  "description": "A command-line file transfer utility for sending files from any computer to another.",
  "executables": [
    "portal"
  ],
  "dotfiles": {
    "paths": [
      "[configHome]/portal/config.yml"
    ],
    "exclude": [],
    "secret": [],
    "side_effect": false
  },
  "commands": {
    "format": 1,
    "label": "Transfer files",
    "description": "Send files or folders to another machine, or receive them with the password the sender shows. Running your own relay is left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": true,
      "short_bundles": false
    },
    "subcommand": [
      {
        "path": [
          "send"
        ],
        "label": "Send files",
        "source": [
          {
            "id": "readme",
            "kind": "manual",
            "url": "https://github.com/SpatiumPortae/portal/blob/master/README.md",
            "revision": "2026-10-27",
            "evidence": "portal send <file1> <file2> <folder1> <folder2> ...\n- `-r/--relay`: address of the relay server (`:8080`, `myrelay.io:1234`, ...)\n- `-s/--tui-style`: the style of the tui (`rich` | `raw`)\n"
          }
        ],
        "field": [
          {
            "id": "paths",
            "label": "Files or folders",
            "type": "path",
            "position": 0,
            "multiple": true,
            "min": 1,
            "path": {
              "kind": "any",
              "role": "input"
            },
            "sources": [
              "readme"
            ]
          },
          {
            "id": "relay",
            "label": "Relay address",
            "type": "string",
            "option": [
              "--relay",
              "-r"
            ],
            "sources": [
              "readme"
            ]
          },
          {
            "id": "tui_style",
            "label": "Display style",
            "type": "enum",
            "option": [
              "--tui-style",
              "-s"
            ],
            "choices": [
              {
                "value": "rich",
                "label": "Rich"
              },
              {
                "value": "raw",
                "label": "Raw"
              }
            ],
            "sources": [
              "readme"
            ]
          }
        ],
        "task": [
          {
            "id": "send",
            "label": "Send files",
            "fields": [
              "paths",
              "relay"
            ],
            "required": [
              "paths"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "paths",
              "relay",
              "tui_style"
            ]
          }
        ]
      },
      {
        "path": [
          "receive"
        ],
        "label": "Receive files",
        "source": [
          {
            "id": "readme",
            "kind": "manual",
            "url": "https://github.com/SpatiumPortae/portal/blob/master/README.md",
            "revision": "2026-10-27",
            "evidence": "portal receive 1-intertia-elliptical-celestial\n- `-y/--yes`: overwrite existing files without `[Y/n]` prompts\n- `-r/--relay`: address of the relay server (`:8080`, `myrelay.io:1234`, ...)\n- `-s/--tui-style`: the style of the tui (`rich` | `raw`)\n"
          }
        ],
        "field": [
          {
            "id": "password",
            "label": "Password",
            "description": "The password shown by the sender, e.g. 1-word-word-word.",
            "type": "string",
            "position": 0,
            "min": 1,
            "sources": [
              "readme"
            ]
          },
          {
            "id": "yes",
            "label": "Overwrite without asking",
            "type": "boolean",
            "option": [
              "--yes",
              "-y"
            ],
            "effect": "overwrite",
            "sources": [
              "readme"
            ]
          },
          {
            "id": "relay",
            "label": "Relay address",
            "type": "string",
            "option": [
              "--relay",
              "-r"
            ],
            "sources": [
              "readme"
            ]
          },
          {
            "id": "tui_style",
            "label": "Display style",
            "type": "enum",
            "option": [
              "--tui-style",
              "-s"
            ],
            "choices": [
              {
                "value": "rich",
                "label": "Rich"
              },
              {
                "value": "raw",
                "label": "Raw"
              }
            ],
            "sources": [
              "readme"
            ]
          }
        ],
        "task": [
          {
            "id": "receive",
            "label": "Receive files",
            "fields": [
              "password",
              "yes"
            ],
            "required": [
              "password"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "password",
              "yes",
              "relay",
              "tui_style"
            ]
          }
        ]
      }
    ]
  }
}
