Skip to Content
Depot docs

CLI reference

Every studio and player command of the depot CLI, with its subcommands and flags.

This page lists the depot commands studios and players use, grouped by task. Each command also prints its own help:

depot --help
depot push --help
depot game page --help

Common options

These work on every command that talks to Depot:

OptionWhat it does
--api <url>The API URL. Default: $DEPOT_API, then the default saved by depot auth login. Use https://api.staging.depot.games.
--jsonMachine-readable output, on commands that list it. Most other commands print JSON already.
-v, -vv, -vvvMore logging (info, debug, trace). RUST_LOG overrides it.
-h, --helpHelp for the command.
-V, --versionThe CLI version.

Credentials: commands that act for an organization use DEPOT_TOKEN or a key stored with depot auth login first, then the session from depot login. See Install the CLI.

--game takes a game's slug or id. --org takes an organization's id or slug, and defaults to the API key's organization or the only one you belong to. Where --platform is optional, it defaults to the machine you run the command on, such as linux-x64 or macos-arm64.


Account

depot login

Sign in to Depot in the browser. The session is kept in the OS keychain.

OptionDescription
--no-browserPrint the sign-in URL instead of opening the browser.
--timeout-secs <n>Give up after this many seconds. Default 300.
--jsonJSON output.

depot whoami

Show the signed-in Depot identity and your @handle. Options: --json.

depot logout

Sign out: revoke the session and remove it from the OS keychain.

depot auth

Store an organization API key for an API, or show the current credential. For people, depot login is the usual way in.

SubcommandDescriptionOptions
loginStore an organization API key (dpk_…). It's read from standard input or $DEPOT_TOKEN, never from a flag. Also saves the API as the default.--api <url> (required)
statusShow the current credential. API key: its organization and permissions. Person: identity and organizations.
logoutForget the stored API key for an API.
depot auth login --api https://api.staging.depot.games < ci.key

Studio

depot org

Organizations (studios): create, list, members, invitations and the audit log.

SubcommandDescriptionOptions
createCreate an organization. You become its owner.--slug <slug> (3-48 lowercase letters, digits and -), --name <name>, --json
listOrganizations you belong to.--json
showAn organization, and your role and permissions in it.--org
membersMembers of an organization.--org
inviteInvite someone by email. They accept on the invitation page Depot emails them.--org, --email <email>, --role <role>: owner, admin, publisher or member (default member)
set-roleChange a member's role.--org, --user <user id> (see org members), --role <role>
removeRemove a member, or yourself to leave. Their access ends on their next request.--org, --user <user id>
auditThe organization's audit log, newest first.--org, --limit <n> (default 50)

depot api-key

Organization API keys for CI, integrations and agents. Managing keys needs a signed-in person. See CI and agents.

SubcommandDescriptionOptions
createCreate a key. Permissions must be a subset of your role. Keys can't manage members or keys. The secret is written to --out (owner-only file) or printed with --print, once.--org, --name <name>, --permissions <list> (comma-separated resource:action, for example release:publish,channel:write,game:read), --expires-in-days <1-365> (default 90), --out <file>, --print
listThe organization's keys (never the secrets).--org
rotateReplace a key with the same name and permissions. The old key stops now, or after the grace period.--org, --id <key id>, --grace-seconds <n> (default 0), --out <file>, --print
revokeRevoke a key immediately.--org, --id <key id>

Games and builds

depot game

Create, show and edit games and their store pages.

SubcommandDescriptionOptions
createCreate a game in an organization.--org, --slug <slug>, --name <name>, --json
show <game>Show a game (public fields).
pageWrite the game's store page and, optionally, publish it. Prints the page URL.see below
artUpload store art.--game, --kind <kind>: icon, cover, hero or logo (the game's wordmark, a transparent PNG or WebP), --file <file>
screenshotUpload a screenshot and add it to the end of the page's gallery (draft).--game, --file <file>, --caption <text>
videoUpload an MP4 for the page (draft).--game, --file <file>, --purpose <purpose>, --poster <file>, --caption <text>
updateList the game in the launcher catalog (or unlist it), set its description.--game, --listed <true|false>, --description <text>

depot game page options:

OptionDescription
--gameThe game.
--tagline <text>The line under the title.
--short-description <text>Shown in link previews.
--description <text>Plain text: paragraphs, - lists, **bold** and https links.
--access <access>free (anyone signed in can claim it), key (redeem a key) or invite (grants only).
--status <status>alpha, beta, early-access or released.
--channel <name>The channel players install from. Default stable.
--publish <visibility>Publish after writing: public (listed) or unlisted (link only).
--unpublishTake the page down instead. Players who own the game keep it.
--listed <true|false>Also list the game in the Depot launcher's catalog. It shows there while the page is public and free or key only.
--accent <color>The page's colour, for example "#e0a030" (Depot adjusts it for contrast), or none.
--accessibility <list>Accessibility notes, comma-separated, for example "Full controller support, Subtitles".

depot game video --purpose: loop plays muted over the hero (up to 30 seconds and 40 MB), trailer plays on request, clip goes in the gallery (default). --poster is the still frame shown before it plays (PNG, JPEG or WebP).

Images for art and screenshot must be .png, .jpg or .webp. More in Store pages.

depot keys

Ed25519 signing keys for your releases. Not game keys: see depot game-keys. Guide: Signing keys.

SubcommandDescriptionOptions
generateGenerate a signing key. The private key stays local, in an owner-only file.--out <file> (default ~/.config/depot/keys/default.json), --force (replace an existing file; the old key is lost)
enrollEnroll the key's public half for a game.--game, --key <file>
revokeRevoke a key for a game.--game, --key-id <key id>
listA game's keys and their states.--game

depot sign

Sign a release descriptor offline.

OptionDescription
--descriptor <file>The descriptor JSON to sign. Required.
--key-id <key id>The enrolled key id to sign as. Required.
--key <file>The signing key file. Default ~/.config/depot/keys/default.json.

depot push

Build a release from a folder and publish it. Resumable. Guide: Push builds.

OptionDescription
--game <game>The game. Required.
--release <name>The release name, for example 1.2.0. Required.
--input <dir>The build folder. Required.
--platform <platform>The platform, for example windows-x64. Default: this machine.
--package <name>The package. Default base.
--key <file>The signing key file.
--content-key <file>The content key backup file. Default <config>/content-keys/<domain>.json.
--encryptEncrypt even though the game is public. Only matters for older public games.
--channel <name>Move this channel to the new release after publishing.
--note <text>What's in this release, for players (the store page's "What's new"). Needs --channel.
--launch-file <file>JSON array of launch targets: [{"platform": "linux-x64", "path": "bin/game", "args": [], "working_dir": ".", "env": {}}].
--rebuildIgnore a staged build from an earlier, interrupted push.
--min-chunk-kib <n>Smallest chunk. Default 512.
--avg-chunk-kib <n>Average chunk. Default 2048.
--max-chunk-kib <n>Largest chunk. Default 8192.
--pack-mib <n>Target pack size. Default 128.
--zstd-level <n>zstd compression level. Default 3.
--parallel <n>Parallel uploads. Default 4.
--jsonPrint the push report as JSON.

Keep the chunk settings the same from release to release. Changing them moves chunk boundaries, so fewer chunks match earlier releases and more is uploaded and downloaded.

depot release

List or show releases. Guide: Channels and releases.

SubcommandDescriptionOptions
listA game's releases, newest first.--game, --platform
showOne release.--game, --release-id <rel_…>

depot channel

Move or show channels.

SubcommandDescriptionOptions
setPoint a channel at a published release (compare-and-swap).--game, --platform, --channel <name>, --release-id <rel_…>, --allow-rollback, --note <text> (what changed, for players: the store page's "What's new")
showThe release a channel points at, and its revision.--game, --platform, --channel <name>

Players and access

depot package

Packages of a game, the things players can own: base, dlc, bundle or test.

SubcommandDescriptionOptions
createDefine a package. Content packages (base, dlc, test) hold the releases pushed with depot push --package <name>. A bundle includes other packages.--game, --name <name> (matches depot push --package; default base), --kind <kind> (default base), --title <title>, --includes <ids> (bundle members, package ids, comma-separated), --free-claim (any signed-in player may claim it for free), --json
listA game's packages.--game
updateEnable or disable a package, or change its title. A disabled package grants nothing new.--game, --id <package id>, --enabled <true|false>, --title <title>

depot entitlement

Grant, list or revoke players' entitlements to your packages.

SubcommandDescriptionOptions
grantGrant a package to a Depot user, by user id or @handle. If they already own it, nothing changes.--game, --package <name or id> (default base), --user <user id>, --handle <@handle>, --ends-at <time> (time-limited access, ISO 8601), --reference <text> (an external reference, such as an order id), --json
listEntitlements to your packages.--game, --package, --user
revokeRevoke an entitlement. New downloads and key delivery stop now. Installed copies keep launching.--game, --id <entitlement id>, --reason <text>

depot game-keys

Game keys for a package: issue a batch, list, revoke. Not signing keys: see depot keys.

SubcommandDescriptionOptions
createIssue a batch of single-use keys. The codes are delivered once.--game, --package <name or id> (default base), --quantity <1-1000>, --label <text>, --expires-at <time> (ISO 8601; unredeemed keys stop working after this), --out <file> (codes one per line, owner-only file), --print, --idempotency-key <key> (reuse it to retry safely after a timeout; the same key never issues a second batch)
listBatches with available, redeemed and revoked counts. Never codes.--game
revokeRevoke a batch's still-available keys. Redeemed keys keep their entitlements.--game, --batch <batch id>, --reason <text>

depot redeem

Redeem a game key into your library. Needs depot login.

depot redeem            # paste the key; read from standard input, so it stays out of shell history
depot redeem <code>

Options: --json.

depot library

The games you own. Needs depot login. Options: --json.

depot license

Offline licenses for games that use the Depot SDK. The license is stored where the game can read it.

SubcommandDescriptionOptions
refreshFetch your account's offline license for a game and store it.--game <slug or id>, --json
showThe cached license for a game: state, expiry, entitlements. No network.--game, --json

depot retail

Retailer delegation: a publisher lets a retailer organization issue keys, and the retailer issues them per order.

SubcommandWhoDescriptionOptions
delegatePublisherLet a retailer organization issue keys for a package, up to a quota.--game, --package (default base), --retailer <org id>, --quota <n>, --expires-at <time>
delegationsPublisherDelegations you granted, for the game's organization.--game
revokePublisherStop a delegation now. Issued keys stay valid unless you pass --revoke-issued-keys.--game, --id <delegation id>, --revoke-issued-keys
holdingsRetailerDelegations you hold and what's left of them.--org (default: the API key's)
issueRetailerIssue keys for an order. Unique per order id. Codes are delivered once.--org, --delegation <id>, --order <order id>, --quantity <n> (default 1), --out <file>, --print

depot access

Hand-issued download grants for restricted games. Players normally get access from their entitlements instead.

SubcommandDescriptionOptions
grantIssue a download grant and write it to an owner-only file, or print it.--game, --package (default base), --ttl-days <n> (default 7), --max-sessions <n> (default 20), --out <file>, --print
revokeRevoke a grant. Its sessions stop working.--game, --grant-id <dpg_…>

Tools

depot doctor

Check configuration, API reachability, credentials and, optionally, an installation.

OptionDescription
--destination <dir>Also check this installed game: its record, trusted keys and files.
--jsonJSON output.

It exits with 0 when every check passes and 5 when one fails.


Low-level tools

The CLI also includes the engine underneath Depot. Most studios never need these.

Installing from Depot. depot install --game <game> --destination <dir> installs a game you own, and depot update --destination <dir> follows its channel. depot verify checks an installation against its release, and depot recover finishes or undoes an interrupted install or update. The launcher does all of this for players. Useful options include --platform, --channel, --allow-rollback (accept a channel that moved to an older release), --trust-key <key> (trust exactly this publisher key on first install) and --trust-new-keys (also trust keys enrolled after the first install).

Offline repositories and analysis. These work on local folders and don't talk to Depot:

CommandPurpose
buildChunk a release folder and publish it into a local repository.
deltaAdd zstd patch (delta) frames for an already-published local release.
inspectReport file, chunk and pack statistics for a release.
serveServe a repository's packs over HTTP with range support.
planShow the download requests for a release without downloading (dry run).
bench, bench-chainBenchmark the pipeline across scenarios and network profiles.
fixtureGenerate deterministic test trees.
compareCompare two folders: paths, bytes and executable bits.

Run any of them with --help for their options.

On this page