{
  "id": "s5cmd",
  "name": "s5cmd",
  "homepage": "https://github.com/peak/s5cmd",
  "description": "A high performance command-line tool for AWS S3 and local file systems.",
  "executables": [
    "s5cmd"
  ],
  "dotfiles": {
    "paths": [
      "~/.aws/config"
    ],
    "secret": [
      "~/.aws/credentials"
    ]
  },
  "commands": {
    "format": 1,
    "label": "s5cmd",
    "description": "Copy, sync and list S3 objects in parallel. Global options go before the subcommand; other subcommands (rm, mv, du, select) are left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": true,
      "short_bundles": false
    },
    "source": [
      {
        "id": "readme",
        "kind": "manual",
        "url": "https://github.com/peak/s5cmd/blob/master/README.md",
        "revision": "2026-10-27",
        "evidence": "s5cmd --profile my-work-profile ls s3://my-company-bucket/\ns5cmd --no-sign-request ls s3://public-bucket/\ns5cmd --endpoint-url <gcs-endpoint> sync 'download_folder/*' s3://gcs-bucket/path/\ns5cmd --dry-run cp s3://bucket/pre/* s3://another-bucket/\ns5cmd --numworkers 10 cp '/Users/foo/bar/*' s3://mybucket/foo/bar/\n"
      }
    ],
    "field": [
      {
        "id": "profile",
        "label": "AWS profile",
        "type": "string",
        "option": [
          "--profile"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "endpoint_url",
        "label": "Endpoint URL",
        "description": "For S3-compatible services.",
        "type": "url",
        "option": [
          "--endpoint-url"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "no_sign_request",
        "label": "Anonymous requests",
        "type": "boolean",
        "option": [
          "--no-sign-request"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "dry_run",
        "label": "Dry run",
        "type": "boolean",
        "option": [
          "--dry-run"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "numworkers",
        "label": "Worker pool size",
        "type": "integer",
        "option": [
          "--numworkers"
        ],
        "sources": [
          "readme"
        ]
      }
    ],
    "group": [
      {
        "id": "basic",
        "label": "Global",
        "fields": [
          "profile",
          "endpoint_url",
          "no_sign_request",
          "dry_run",
          "numworkers"
        ]
      }
    ],
    "subcommand": [
      {
        "path": [
          "cp"
        ],
        "label": "Copy objects",
        "description": "Copy between local paths and S3, with wildcard support.",
        "source": [
          {
            "id": "readme",
            "kind": "manual",
            "url": "https://github.com/peak/s5cmd/blob/master/README.md",
            "revision": "2026-10-27",
            "evidence": "s5cmd cp 's3://bucket/logs/2020/03/*' .\ns5cmd cp --flatten 's3://bucket/logs/2020/03/*' logs/\ns5cmd cp --include \"*.log\" --include \"request*\" 's3://bucket/logs/2020/*' .\ns5cmd cp --exclude \"*.log\" --exclude \"*.txt\" 's3://bucket/logs/2020/*' .\n--source-region or --destination-region flags of cp command.\n"
          }
        ],
        "field": [
          {
            "id": "source",
            "label": "Source",
            "type": "string",
            "position": 0,
            "min": 1,
            "sources": [
              "readme"
            ]
          },
          {
            "id": "destination",
            "label": "Destination",
            "type": "string",
            "position": 1,
            "min": 1,
            "sources": [
              "readme"
            ]
          },
          {
            "id": "flatten",
            "label": "Flatten directory structure",
            "type": "boolean",
            "option": [
              "--flatten"
            ],
            "sources": [
              "readme"
            ]
          },
          {
            "id": "include",
            "label": "Include pattern",
            "type": "string",
            "option": [
              "--include"
            ],
            "multiple": true,
            "sources": [
              "readme"
            ]
          },
          {
            "id": "exclude",
            "label": "Exclude pattern",
            "type": "string",
            "option": [
              "--exclude"
            ],
            "multiple": true,
            "sources": [
              "readme"
            ]
          },
          {
            "id": "source_region",
            "label": "Source region",
            "type": "string",
            "option": [
              "--source-region"
            ],
            "sources": [
              "readme"
            ]
          },
          {
            "id": "destination_region",
            "label": "Destination region",
            "type": "string",
            "option": [
              "--destination-region"
            ],
            "sources": [
              "readme"
            ]
          }
        ],
        "task": [
          {
            "id": "copy",
            "label": "Copy",
            "fields": [
              "source",
              "destination",
              "flatten",
              "include",
              "exclude"
            ],
            "required": [
              "source",
              "destination"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "source",
              "destination",
              "flatten"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "include",
              "exclude",
              "source_region",
              "destination_region"
            ]
          }
        ]
      },
      {
        "path": [
          "sync"
        ],
        "label": "Synchronize",
        "description": "One-way sync from source to destination.",
        "source": [
          {
            "id": "readme",
            "kind": "manual",
            "url": "https://github.com/peak/s5cmd/blob/master/README.md",
            "revision": "2026-10-27",
            "evidence": "s5cmd sync --include \"*.log\" --exclude \"access_*\" --include \"*.txt\" 's3://bucket/logs/*' .\ns5cmd sync --delete . s3://bucket/static/\nWith --size-only flag, it's possible to use the strategy that would only compare file sizes.\n"
          }
        ],
        "field": [
          {
            "id": "source",
            "label": "Source",
            "type": "string",
            "position": 0,
            "min": 1,
            "sources": [
              "readme"
            ]
          },
          {
            "id": "destination",
            "label": "Destination",
            "type": "string",
            "position": 1,
            "min": 1,
            "sources": [
              "readme"
            ]
          },
          {
            "id": "delete",
            "label": "Delete extra destination files",
            "type": "boolean",
            "option": [
              "--delete"
            ],
            "effect": "delete",
            "sources": [
              "readme"
            ]
          },
          {
            "id": "size_only",
            "label": "Compare sizes only",
            "type": "boolean",
            "option": [
              "--size-only"
            ],
            "sources": [
              "readme"
            ]
          },
          {
            "id": "include",
            "label": "Include pattern",
            "type": "string",
            "option": [
              "--include"
            ],
            "multiple": true,
            "sources": [
              "readme"
            ]
          },
          {
            "id": "exclude",
            "label": "Exclude pattern",
            "type": "string",
            "option": [
              "--exclude"
            ],
            "multiple": true,
            "sources": [
              "readme"
            ]
          }
        ],
        "task": [
          {
            "id": "sync",
            "label": "Sync",
            "fields": [
              "source",
              "destination",
              "delete",
              "size_only",
              "include",
              "exclude"
            ],
            "required": [
              "source",
              "destination"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "source",
              "destination",
              "delete"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "size_only",
              "include",
              "exclude"
            ]
          }
        ]
      },
      {
        "path": [
          "ls"
        ],
        "label": "List objects",
        "description": "List buckets or objects.",
        "source": [
          {
            "id": "readme",
            "kind": "manual",
            "url": "https://github.com/peak/s5cmd/blob/master/README.md",
            "revision": "2026-10-27",
            "evidence": "s5cmd ls s3://bucket/\n"
          }
        ],
        "field": [
          {
            "id": "target",
            "label": "S3 URL",
            "description": "Empty lists all buckets.",
            "type": "string",
            "position": 0,
            "min": 0,
            "sources": [
              "readme"
            ]
          }
        ],
        "task": [
          {
            "id": "list",
            "label": "List",
            "fields": [
              "target"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "target"
            ]
          }
        ]
      }
    ]
  }
}
