Command Reference

Every deplo command, in the order the CLI defines them — purpose, flags, and the exact output you should expect. All commands exit 0 on success and 1 on any failure.

Conventions in the output samples: success, failure, progress step, live. Output is colored (green = live, red = failed, cyan = URLs and actions, violet = AI content); set NO_COLOR to disable. deplo --help and deplo <command> --help print usage; deplo --version prints 0.1.0.

deplo#

Bare deplo with no arguments is the same as deplo deploy: deploy the repository in the current directory and follow the live log. See deplo deploy below for flags and output.

bash
deplo

deplo login#

Sign in with GitHub in the browser. Starts a loopback listener, opens the authorization page, and stores the resulting token at ~/.config/deplo/config.json (mode 0600). Full mechanics in Authentication.

bash
deplo login [--token [token]]
FlagDescription
--token [token]Paste a CLI token from deplo.in → Settings instead of using the browser. Without a value, opens a masked prompt (recommended — keeps the token out of shell history).
expected output
$ deplo login
→ opening https://www.deplo.in/cli-auth?port=52814&state=9f2c…&host=mbp.local
  (no browser? run `deplo login --token` and paste one instead)
✓ signed in patrickdev · token saved to /Users/patrick/.config/deplo/config.json

deplo logout#

Remove the stored token from this machine. The token itself stays valid until revoked at deplo.in → Settings → CLI tokens. Running it while signed out just prints → not signed in.

bash
deplo logout
expected output
$ deplo logout
✓ signed out — token removed from this machine
  revoke it fully at deplo.in → Settings → CLI tokens

deplo connect vercel#

Authorize the deplo Vercel integration in the browser. The CLI opens the authorization URL and polls every few seconds until the connection appears (up to 5 minutes). If Vercel is already connected, it says so and exits.

bash
deplo connect vercel [--print-url]
FlagDescription
--print-urlPrint the authorization URL instead of opening a browser — for SSH sessions and headless machines.
expected output
$ deplo connect vercel
→ opening Vercel authorization…  waiting
  (no browser here? deplo connect vercel --print-url)
✓ connected vercel: patrickdev

With --print-url, open the printed link in any browser, authorize, then re-run deplo whoami to confirm. If nothing arrives within five minutes the CLI prints ✗ timed out waiting for the connection (5 minutes) and exits 1.

deplo connect render#

Connect Render with a Personal API key. Render has no third-party OAuth, so the CLI asks for a key (starts with rnd_) in a masked prompt and the platform validates it live against the Render API before storing it encrypted — an invalid key is never saved.

bash
deplo connect render [--key <key>]
FlagDescription
--key <key>Provide the key non-interactively (scripts). Also the way to rotate the key when Render is already connected.
expected output
$ deplo connect render
  create one at https://dashboard.render.com/settings#api-keys
? Render API key (rnd_…) › ********
✓ connected render: patrickdev

If Render is already connected and no --key is given, the CLI prints ✓ render already connected (patrickdev) and hints pass --key to rotate the API key.

deplo whoami#

Show the signed-in account and the provider connection checklist — the fastest way to see what is missing.

bash
deplo whoami
expected output
$ deplo whoami
✓ account              patrickdev
✓ vercel               patrickdev
✗ render               not connected  → deplo connect render

deplo deploy#

Deploy the repository in the current directory and follow the live log. This is the full dashboard deploy loop: the CLI resolves your origin git remote to a repo the platform knows (syncing your repo list from GitHub on first sight), confirms, starts the deployment, and polls the log every 2.5 seconds until it reaches a terminal state.

bash
deplo deploy [-y|--yes]
FlagDescription
-y, --yesSkip confirmation prompts. Also switches the run to non-interactive mode: missing login or provider connections become errors instead of inline prompts. Prompts are likewise skipped automatically when stdout is not a TTY (CI).

Interactive niceties, in order:

  • Not signed in? It asks “You're not signed in. Sign in now?” and runs login inline. Same for providers: “Vercel isn't connected yet. Connect now?”
  • Only the providers your repository actually needs are requested — Vercel when a frontend was detected, Render when a backend was. A backend-only repository is never blocked on a Vercel connection. When both are already connected the CLI skips detection entirely and goes straight to deploying.
  • If the deployment pauses on WAITING_FOR_ENV, the CLI prompts for each required environment variable (input masked), sends them, and the deployment resumes. See Environment Variables.
  • Log lines containing errors are shown in red; AI diagnosis lines in violet — the same content as the dashboard log.
expected output
$ deplo deploy
→ repo detected github.com/patrickdev/my-app (main)
? Deploy patrickdev/my-app? … yes

  Analyzing repository…
  Detected: frontend=Next.js (client/) · backend=Express (server/)
  Deploying backend to Render…
  Backend live: https://deplo-my-app-api.onrender.com
  Injecting NEXT_PUBLIC_API_URL into frontend build
  Deploying frontend to Vercel…
  Frontend live: https://deplo-my-app-web.vercel.app
  Deployment completed

✓ backend live   https://deplo-my-app-api.onrender.com
✓ frontend live  https://deplo-my-app-web.vercel.app
● Deployed in 2:41 — code went in, production URLs came out.
env prompt (when required variables are missing)
→ this deployment needs 2 environment variables:
? DATABASE_URL › ********
? JWT_SECRET › ********
✓ env variables sent — resuming deployment

On failure the CLI prints ✗ Deployment failed — <error>, points at deplo.in/dashboard/deployments/<id> for the full log and AI diagnosis, and exits 1 — see Troubleshooting.

deplo status#

Latest deployment state for the repository in the current directory. Run outside a repo with a GitHub remote, it falls back to your most recent deployment overall.

bash
deplo status [--all]
FlagDescription
--allShow the latest deployment for every project, not just this repo.
expected output
$ deplo status
● live  patrickdev/my-app (main)  Next.js + Express
   frontend  https://deplo-my-app-web.vercel.app
   backend   https://deplo-my-app-api.onrender.com

Status labels: ● live, ✗ failed, ○ cancelled, ◐ waiting for env, and ◌ deploying backend-style labels for in-flight states — see Deployment Lifecycle. If the repo has never been deployed: → no deployments yet for patrickdev/my-app — run deplo deploy.

deplo list#

All projects with status, stack, and URLs — the latest deployment per repository, newest first.

bash
deplo list
expected output
$ deplo list
● live  patrickdev/my-app (main)  Next.js + Express
   frontend  https://deplo-my-app-web.vercel.app
   backend   https://deplo-my-app-api.onrender.com
✗ failed  patrickdev/side-project (main)  Vite + FastAPI
◐ waiting for env  patrickdev/api-service (develop)  Express

deplo logs#

Print a deployment log. With no argument, uses the latest deployment for the current repo. For a finished deployment the log prints and exits; while a deployment is active, logs follows it live exactly like deplo deploy does — including env prompts and the final URL summary.

bash
deplo logs [id]
ArgumentDescription
[id]A deployment id (shown in the dashboard URL). Defaults to the current repo's latest deployment.
expected output (finished deployment)
$ deplo logs
  Analyzing repository…
  Detected: frontend=Next.js (client/) · backend=Express (server/)
  Deploying backend to Render…
  Backend live: https://deplo-my-app-api.onrender.com
  Deploying frontend to Vercel…
  Frontend live: https://deplo-my-app-web.vercel.app
  Deployment completed

deplo open#

Open the deployed frontend URL in your browser — or the backend, or the monitoring dashboard.

bash
deplo open [--api] [--dash]
FlagDescription
--apiOpen the backend URL instead of the frontend.
--dashOpen the deplo monitoring dashboard for this project.
expected output
$ deplo open
→ opening https://deplo-my-app-web.vercel.app

--api and the default need a completed deployment; without one the CLI prints ✗ nothing to open yet — run deplo deploy first and exits 1.

Planned for v0.2
deplo env set / deplo env ls, deplo monitor, deplo analytics, and a --json output mode are on the roadmap — they do not exist in v0.1.