glab packages
List packages in a GitLab project's package registry, upload/download generic package files, and delete package registry entries by ID.
glab packages list / ls lists project package registries. The current command surface also includes upload / ul for generic package uploads, download / dl for generic package downloads, and delete / rm for package deletion by numeric ID.
Quick start
# List all packages in the current project
glab packages list
# Alias
glab packages ls
# List packages from another project
glab packages list -R owner/repo
# Upload a file as a generic package version
glab packages upload ./build/app.zip --name my-package --version 1.0.0
# Download a generic package file
glab packages download --name my-package --version 1.0.0 --filename app.zip
# Delete a package by numeric ID after listing packages
glab packages delete 12345 --yes
Filtering
# Filter by package name substring
glab packages list --name my-package
# Filter by package type
glab packages list --package-type npm
glab packages list --package-type maven
glab packages list --package-type generic
Supported package types from glab help:
composer, conan, debian, generic, golang, helm, maven, npm, nuget, pypi, terraform_module
Pagination and automation
# Select a page and page size
glab packages list --page 2 --per-page 10
# JSON output filtering is available through the global --jq support on this command
glab packages list --jq '.[].name'
Use -R/--repo when running outside the target project's Git checkout. Prefer structured output/--jq for scripts rather than parsing text tables.
Upload generic package files
# Upload a local file under its original filename
glab packages upload ./build/app.zip --name my-package --version 1.0.0
# Store the uploaded file under a different package filename
glab packages upload ./build/app.zip --name my-package --version 1.0.0 --filename release.zip
# Alias and explicit target project
glab packages ul ./build/app.zip -n my-package --version 1.0.0 -R owner/repo
Upload stores the file as a generic package in the target project's package registry. --name and --version are required; --filename defaults to the local file basename. Use -R/--repo for uploads outside the target project checkout.
Download generic package files
# Download a package file to the current directory
glab packages download --name my-package --version 1.0.0 --filename app.zip
# Download into a directory, keeping the original file name
glab packages download -n my-package --version 1.0.0 --filename app.zip --path ./downloads/
# Download to an exact path, renaming the file
glab packages download -n my-package --version 1.0.0 --filename app.zip --path ./downloads/renamed.zip
# Download to an absolute path (missing parent directories are created)
glab packages download -n my-package --version 1.0.0 --filename app.zip --path /tmp/downloads/app.zip
# Skip checksum verification only when you intentionally accept the integrity risk
glab packages download -n my-package --version 1.0.0 --filename app.zip --no-verify
# Alias, overwrite an existing target, and explicit project targeting
glab packages dl -n my-package --version 1.0.0 --filename app.zip --force -R owner/repo
Download is limited to generic package files and requires --name, --version, and --filename. By default glab verifies the downloaded file against registry checksum metadata and fails if the destination already exists. Use --path for a relative or absolute directory/exact output filename; glab creates missing parent directories. Use --force to overwrite and --no-verify only when checksum verification is intentionally bypassed.
Delete packages
# Find the package ID first
glab packages list --name my-package
# Delete by numeric package ID; prompts for confirmation
glab packages delete 12345
# Skip confirmation for automation after independently confirming the ID
glab packages delete 12345 --yes
# Alias
glab packages rm 12345
Delete operates on a package's numeric ID, not the package name/version. Use glab packages list (preferably with JSON/--jq in scripts) to identify the ID, then pass --yes only when the target package has been verified.
Reference
See references/commands.md for command synopsis and flags.