# Command reference

Every uarpie command. Your AI runs these; you can too.

Run any of them with `npx uarpie <command>`. Nothing to install.

| Command | What it does |
|---|---|
| `uarpie` or `uarpie deploy` | Detect, build and put the app in the current folder online |
| `uarpie status` | Where the app is, which version is live, and this month's use |
| `uarpie logs` | Recent activity from the app |
| `uarpie doctor` (or `uarpie diagnose`) | What is wrong with the app right now, and what to change |
| `uarpie versions` | Every version, newest first |
| `uarpie rollback` | Go back to the previous version (code only: the database stays as it is) |
| `uarpie login` | Sign this computer into your account (approve a code in the browser) |
| `uarpie logout` | Forget the account on this computer |
| `uarpie whoami` | Which account this computer is signed in as |
| `uarpie projects` (or `uarpie apps`) | List the apps in your account |
| `uarpie clone <app> [dir]` | Put an app's source on this computer |
| `uarpie releases` | The phone app builds made for this app, newest first |
| `uarpie keys` (or `uarpie keys list`) | The API keys an app has, never their secrets |
| `uarpie keys new [name]` | Make a new key; it is shown once and cannot be shown again |
| `uarpie keys revoke <key-id>` | Stop a key working; requests using it are refused |
| `uarpie visibility public --confirm-public` | Let anyone with the address open the app; only once the person has agreed to that |
| `uarpie visibility private` | Back to only the people the app is shared with |
| `uarpie open-paths <paths...>` | Paths of a private app anyone may read, such as `/media/` (`--clear` for none); takes about a minute to apply |
| `uarpie build-log [deployment-id]` | The build's output: the newest version that built anything, or the one named |
| `uarpie share <emails...>` | Invite people by email to open a kept app, up to 50 at once; each gets their own link, good for 72 hours |
| `uarpie people` | Who can open the app: the email each person was invited with, and their role |
| `uarpie people remove <emails...>` | Take people off the app by the email they were invited with, up to 50 at once; within a minute or two they are refused on every address the app has |
| `uarpie open` | Open the app signed in, the way the dashboard does; `--link` prints the link instead (good for 10 minutes), so an agent can check a private app's pages and uploads itself |
| `uarpie client [email]` | Hand an app you made for someone to them ([building for clients](/docs/building-for-clients)): with their email they are sent a link to claim it onto their own account; without one, the link is printed for you to send. Until they claim it, it stays on your account and your plan pays; if nobody claims it in 7 days it is removed. Needs this computer signed in to the account the app is on |
| `uarpie client --keep` | Keep the app on your own account instead: no longer a client's, and nothing removes it |
| `uarpie mcp` | Run the MCP server over stdio for an AI agent |

## Options

| Option | Meaning |
|---|---|
| `--json` | One JSON object per line, for agents |
| `-C <dir>`, `--cwd <dir>` | Act on a different folder |
| `-p <id-or-name>`, `--project <id-or-name>` | Name the app when not in its folder (`status`, `logs`, `doctor`, `versions`, `rollback`, `releases`, `keys`, `visibility`, `open-paths`, `build-log`, `open`, `share`, `people`, `client`). For one part of a project with several, its id from `services` in `deploy.json` |
| `-V`, `--version` | Print which version of `uarpie` this is |
| `-h`, `--help` | Show the help, for the whole program or for one command |
| `deploy -y`, `--yes` | Never prompt; skip missing secrets |
| `deploy --dry-run` | Detect and write `deploy.json`, deploy nothing |
| `deploy -e KEY=value`, `--env KEY=value` | Set a secret for this deploy; give as many as you need |
| `logs --since <when>` | Only activity since then: a time, or a duration such as `15m` or `2h` |
| `logs --filter <text>` | Only lines containing this text |
| `doctor --since <when>` | How far back to look, such as `2h` or `7d`; the last hour when left out |
| `doctor --full` | The whole stack trace, not only its first few lines |
| `versions -n <n>`, `--limit <n>` | How many versions to show |
| `rollback --to <id>` | A specific version instead of the previous one |
| `login --no-browser` | Print the sign-in link instead of opening the browser |
| `open --link` | Print the app's link instead of opening the browser. Signed in, it opens the app as you; otherwise as an invited visitor (`named: false` in `--json`). Anyone holding it can open the app until it expires |
| `client -c <name>`, `--category <name>` | Your own folder for the app on your dashboard, such as the client's name; made if it does not exist yet |
| `clone --at <n>` | A specific version number instead of the live one |
| `mcp --client <name>` | The agent's name, shown in version history |

## Where things are stored

- `deploy.json` in the app's folder: the plan. Safe to commit, contains no secrets.
- Your credentials: outside the project, in your user config folder. Never in the app.
- Secrets: on the platform only.

## Exit codes and errors

`0` on success, `1` on failure. Every failure is printed as the [error contract](/docs/errors): code, message, fix, file. With `--json` the same object is the last line.
