DPSDPS Apps@duabalabs/dps-cli

dps CLI

Command-line client for DPS — authenticate with a deploy token, upload mobile artifacts, create/publish releases, and validate or trigger builds in connected GitHub repositories.

  • Source: apps/dps/dps-cli
  • Auth: scoped deploy tokens issued from Dashboard → Account Settings → Deploy Tokens
  • Transport: REST under /api/v1/* on your DPS server

Install

npm i -g @duabalabs/dps-cli      # or: pnpm add -g @duabalabs/dps-cli
dps --version

Authenticate

dps login --url https://api.dps.example.com --token dps_xxx...
dps whoami
dps logout

Tokens carry scopes that gate which commands you can run:

ScopeUsed by
artifact:uploaddps artifact upload, dps publish
artifact:readdps artifact list
release:createdps release create, dps publish
release:publishdps release publish, dps release rollback
repo:readdps repo check, dps repo status
build:triggerdps build trigger

Artifacts

# Upload a built mobile binary (.ipa / .apk / .aab)
dps artifact upload ./build/app.aab \
  --app <appId> --version 1.2.3 --build-number 42
 
# List artifacts
dps artifact list --app <appId> --platform android
 
# Register an externally-hosted artifact (no DPS upload)
dps artifact register --app <appId> --platform ios --type ipa \
  --url https://cdn.example.com/app.ipa --checksum <sha256>

The upload flow computes SHA-256 locally, requests a presigned S3 URL, PUTs the file, then calls /finalize so the server verifies size + checksum before marking the artifact verified.

Releases

dps release create --app <appId> \
  --artifact <iosArtifactId> --artifact <androidArtifactId> \
  --version 1.2.3 --channel production --notes "Bug fixes"
 
dps release list    --app <appId> --channel production
dps release publish <releaseId> --target play-store
dps release rollback <releaseId> --to <previousReleaseId>

One-shot publish

dps publish ./build/app.aab \
  --app <appId> --version 1.2.3 \
  --channel production --auto-publish

Uploads → finalizes → creates release → (optionally) marks it publishing.

Repo validation & remote builds

DPS classifies every connected repo as managed or artifact-only.

ModeRequired filesCapabilities
managedpackage.json + .dps/config.json + .github/workflows/dps-build.ymlDPS can dispatch builds remotely in the client repo
artifact-onlynoneupload artifacts manually or via external CI; releases + publishing still work
# Local check (no server call) — run inside the repo
dps doctor                  # alias: dps validate
dps doctor --json
 
# Server-side check (uses the GitHub App) for a connected app
dps repo check  --app <appId> --ref main
dps repo status --app <appId>
 
# Trigger a managed build (dispatches dps-build.yml in the client repo)
dps build trigger --app <appId> --platform android --profile production

dps build trigger requires the repo to validate as managed; otherwise the server returns an error explaining what files are missing.

See also