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 }
[[commands.subcommand]]
path = ["send"]
label = "Send files"
[[commands.subcommand.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> ...
- `-r/--relay`: address of the relay server (`:8080`, `myrelay.io:1234`, ...)
- `-s/--tui-style`: the style of the tui (`rich` | `raw`)
"""
[[commands.subcommand.field]]
id = "paths"
label = "Files or folders"
type = "path"
position = 0
multiple = true
min = 1
path = { kind = "any", role = "input" }
sources = ["readme"]
[[commands.subcommand.field]]
id = "relay"
label = "Relay address"
type = "string"
option = ["--relay", "-r"]
sources = ["readme"]
[[commands.subcommand.field]]
id = "tui_style"
label = "Display style"
type = "enum"
option = ["--tui-style", "-s"]
choices = [{ value = "rich", label = "Rich" }, { value = "raw", label = "Raw" }]
sources = ["readme"]
[[commands.subcommand.task]]
id = "send"
label = "Send files"
fields = ["paths", "relay"]
required = ["paths"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["paths", "relay", "tui_style"]
[[commands.subcommand]]
path = ["receive"]
label = "Receive files"
[[commands.subcommand.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
- `-y/--yes`: overwrite existing files without `[Y/n]` prompts
- `-r/--relay`: address of the relay server (`:8080`, `myrelay.io:1234`, ...)
- `-s/--tui-style`: the style of the tui (`rich` | `raw`)
"""
[[commands.subcommand.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"]
[[commands.subcommand.field]]
id = "yes"
label = "Overwrite without asking"
type = "boolean"
option = ["--yes", "-y"]
effect = "overwrite"
sources = ["readme"]
[[commands.subcommand.field]]
id = "relay"
label = "Relay address"
type = "string"
option = ["--relay", "-r"]
sources = ["readme"]
[[commands.subcommand.field]]
id = "tui_style"
label = "Display style"
type = "enum"
option = ["--tui-style", "-s"]
choices = [{ value = "rich", label = "Rich" }, { value = "raw", label = "Raw" }]
sources = ["readme"]
[[commands.subcommand.task]]
id = "receive"
label = "Receive files"
fields = ["password", "yes"]
required = ["password"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["password", "yes", "relay", "tui_style"]