{
  "id": "copyparty",
  "name": "copyparty",
  "homepage": "https://github.com/9001/copyparty",
  "description": "Portable file server.",
  "executables": [
    "copyparty",
    "copyparty-sfx.py"
  ],
  "dotfiles": {
    "paths": [
      "[configHome]/copyparty/copyparty.conf"
    ],
    "secret": []
  },
  "commands": {
    "format": 1,
    "label": "Start a file server",
    "description": "Start copyparty sharing one or more folders with accounts and file indexing. Hundreds of other options (FTP, TFTP, SMB, thumbnails, TLS) are left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": false,
      "short_bundles": false
    },
    "source": [
      {
        "id": "readme",
        "kind": "manual",
        "url": "https://github.com/9001/copyparty/blob/hovudstraum/README.md",
        "revision": "2026-10-27",
        "evidence": "running copyparty without arguments (for example doubleclicking it on Windows) will give everyone read/write access to the current folder\n* `-e2dsa` enables general file indexing\n* `-e2ts` enables audio metadata indexing (needs either FFprobe or Mutagen)\n* `-v /mnt/music:/music:r:rw,foo -a foo:bar` shares `/mnt/music` as `/music`, `r`eadable by anyone, and read-write for user `foo`, password `bar`\n* `-a usr:pwd` adds account `usr` with password `pwd`\npython copyparty-sfx.py -p 80,443\n* `-e2d` enables file indexing on upload\n* `-e2ds` also scans writable folders for new files on startup\n* `-e2dsa` also scans all mounted volumes (including readonly ones)\n"
      }
    ],
    "field": [
      {
        "id": "volumes",
        "label": "Volumes",
        "description": "SRC:DST:PERMS[,USER...], for example /mnt/music:/music:r:rw,foo. Leave empty to share the current folder with everyone.",
        "type": "string",
        "option": [
          "-v"
        ],
        "multiple": true,
        "sources": [
          "readme"
        ]
      },
      {
        "id": "accounts",
        "label": "Accounts",
        "description": "USER:PASSWORD. The password ends up in shell history.",
        "type": "string",
        "option": [
          "-a"
        ],
        "multiple": true,
        "sources": [
          "readme"
        ]
      },
      {
        "id": "ports",
        "label": "Ports",
        "description": "Comma-separated, for example 80,443.",
        "type": "string",
        "option": [
          "-p"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "index_all",
        "label": "Index all volumes",
        "description": "Scan every mounted volume, read-only ones included, at startup (-e2dsa).",
        "type": "boolean",
        "option": [
          "-e2dsa"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "index_tags",
        "label": "Index audio tags",
        "description": "Needs FFprobe or Mutagen (-e2ts).",
        "type": "boolean",
        "option": [
          "-e2ts"
        ],
        "sources": [
          "readme"
        ]
      }
    ],
    "task": [
      {
        "id": "share",
        "label": "Share a folder",
        "fields": [
          "volumes",
          "accounts",
          "ports"
        ],
        "required": [
          "volumes"
        ]
      },
      {
        "id": "music",
        "label": "Music library with indexing",
        "fields": [
          "volumes",
          "accounts",
          "index_all",
          "index_tags"
        ],
        "required": [
          "volumes"
        ],
        "set": {
          "index_all": [
            true
          ],
          "index_tags": [
            true
          ]
        }
      }
    ],
    "group": [
      {
        "id": "basic",
        "label": "Basic",
        "fields": [
          "volumes",
          "accounts",
          "ports"
        ]
      },
      {
        "id": "advanced",
        "label": "Advanced",
        "fields": [
          "index_all",
          "index_tags"
        ]
      }
    ]
  }
}
