# ry apps

> Manage apps.

```text
ry apps [options] [command]
```

## Subcommands

### `ry apps list`

List apps.

```text
ry apps list [options]
```

Options:

- `-l, --label <key=value...>`: Only apps carrying this label; repeat for AND, e.g. --label customer=acme --label role=db.

Example:

```bash
ry apps list
ry apps list --label role=api
```

### `ry apps create`

Create an app.

```text
ry apps create [options] <name>
```

Options:

- `-l, --label <key=value...>`: Attach labels right away, e.g. --label customer=acme role=agent (labels are visible in every listing - never put a secret in one - and do not reach the machine).

Example:

```bash
ry apps create web
```

### `ry apps label`

Show or change the labels of an app: key=value sets, key- removes (labels are visible in every listing - never put a secret in one - and do not reach the machine).

```text
ry apps label [options] <name> [changes...]
```

Example:

```bash
ry apps label web role=api team=core
```

### `ry apps protect`

Protect an app: a password, or --link for an invitation-only view.

```text
ry apps protect [options] <name>
```

Options:

- `--link`: No password - the app is reachable only through a share link.
- `--generate`: Generate the password instead of asking, and print it once.
- `--label <label>`: With --link: create the first share link right away.

Example:

```bash
ry apps protect web
```

### `ry apps unprotect`

Make an app public again (alias of `ry protect off`).

```text
ry apps unprotect [options] <name>
```

Options:

- `-y, --yes`: Skip confirmation (required for automation).

Example:

```bash
ry apps unprotect web
```

### `ry apps destroy`

Destroy an app and all its machines.

```text
ry apps destroy [options] <name>
```

Options:

- `-y, --yes`: Confirm without asking (automation, and the way back after consent).

Example:

```bash
ry apps destroy web --yes
```
