# Command reference

This page lists every command in the Dina CLI. Each entry has the flags, a short description, and an example. If you're looking for a conceptual walkthrough, the rest of the docs go deeper on each topic.

You can also run `dina <command> --help` to see the same information inside your terminal.

## Global flags

These flags work on every command.

| Flag | Short | Default | What it does |
|---|---|---|---|
| `--no-input` | | `false` | Disable interactive prompts (error if input is required). |
| `--quiet` | `-q` | `false` | Suppress informational messages on stderr. |
| `--debug` | | `false` | Print verbose debug output. Also honours `DEBUG=1`. |
| `--no-color` | | `false` | Disable colour. Also honours `NO_COLOR` and `TERM=dumb`. |
| `--output` | `-o` | `text` | Output format: `text` or `json`. Only some commands support `json`. |

---

## Deploy and manage apps

### `dina deploy`

Deploy an application. If `--tag` is omitted, the current directory is zipped and uploaded as source. Otherwise the image tag is deployed directly.

| Flag | Short | Default | Description |
|---|---|---|---|
| `--app` | `-a` | *required* | App to deploy to. |
| `--tag` | `-t` | | Pre-built image tag. |
| `--port` | `-p` | `8080` | Port the container listens on. |
| `--replicas` | | `1` | Number of replicas. |
| `--build-arg` | | | `KEY=VALUE` build argument. Repeatable. |
| `--wait` | `-w` | `false` | Wait until the deployment reaches `running` or fails. |

```sh
dina deploy -a my-app --wait
dina deploy -a my-app --tag ghcr.io/acme/web:v1 --replicas 3 --wait
```

See [Deploy an app](/docs/deploying) for the full walkthrough.

### `dina apps`

Parent for every app-management command. Run `dina apps --help` to see its subcommands.

### `dina apps create <name>`

Create a new app.

```sh
dina apps create my-app
```

### `dina apps list`

List every app you have access to.

Flags: respects `--output json`.

```sh
dina apps list
dina apps list -o json
```

### `dina apps info`

Show one app's details: URL, owner, custom hostnames, and the active deployment.

| Flag | Short | Description |
|---|---|---|
| `--app` | `-a` | *required* — name of the app |

Respects `--output json`.

```sh
dina apps info -a my-app
```

### `dina apps update`

Rename an app.

| Flag | Short | Description |
|---|---|---|
| `--app` | `-a` | *required* — current name |
| `--name` | | New name |

```sh
dina apps update -a old-name --name new-name
```

### `dina apps delete`

Permanently delete an app and its deployments.

| Flag | Short | Description |
|---|---|---|
| `--app` | `-a` | *required* |
| `--force` | `-f` | Skip the confirmation prompt |

```sh
dina apps delete -a my-app
dina apps delete -a my-app --force
```

### `dina apps logs`

Print recent application logs.

| Flag | Short | Default | Description |
|---|---|---|---|
| `--app` | `-a` | *required* | App to read logs from |
| `--lines` | `-n` | `100` | Number of log lines |

```sh
dina apps logs -a my-app -n 500
```

### `dina apps deployments`

List deployments for an app.

| Flag | Short | Description |
|---|---|---|
| `--app` | `-a` | *required* |

Respects `--output json`.

```sh
dina apps deployments -a my-app
dina apps deployments -a my-app -o json
```

#### `dina apps deployments logs`

Print the build log for a specific deployment.

| Flag | Short | Description |
|---|---|---|
| `--app` | `-a` | *required* |
| `--id` | | *required* — deployment ID |

```sh
dina apps deployments logs -a my-app --id dep_abc123
```

### `dina apps env`

Parent for environment variable commands.

#### `dina apps env set KEY=VALUE [KEY=VALUE ...]`

Set one or more environment variables. Existing keys with the same name are replaced; other keys are left alone. Changes apply on the next deployment.

| Flag | Short | Description |
|---|---|---|
| `--app` | `-a` | *required* |

```sh
dina apps env set -a my-app DATABASE_URL=postgres://... LOG_LEVEL=info
```

### `dina apps hostnames`

Parent for custom-hostname commands.

#### `dina apps hostnames add <hostname>`

Attach a custom hostname to an app. You still need to point DNS at the app's Dina URL.

| Flag | Short | Description |
|---|---|---|
| `--app` | `-a` | *required* |

```sh
dina apps hostnames add -a my-app api.example.com
```

#### `dina apps hostnames remove <hostname>`

Detach a hostname from an app.

| Flag | Short | Description |
|---|---|---|
| `--app` | `-a` | *required* |
| `--force` | `-f` | Skip the confirmation prompt |

```sh
dina apps hostnames remove -a my-app api.example.com
```

---

## Share feedback

### `dina feedback`

Send general feedback. Opens an interactive form if `--message` isn't given.

| Flag | Short | Description |
|---|---|---|
| `--message` | `-m` | Feedback text |
| `--rating` | `-r` | Optional 1-to-5 rating |

```sh
dina feedback -m "Love the new error messages" -r 5
```

### `dina feedback bug`

Submit a bug report. Works signed in or out.

| Flag | Short | Description |
|---|---|---|
| `--title` | `-t` | Short summary |
| `--description` | `-d` | What happened, what you expected, how to reproduce |
| `--severity` | `-s` | `low`, `medium`, or `high` |
| `--context` | | Optional context (logs, stack trace). Mutually exclusive with `--context-file`. |
| `--context-file` | | Path to a file with context. Use `-` for stdin. |

```sh
dina feedback bug -t "deploy hangs" -d "Expected exit 1" -s high --context-file ./build.log
```

### `dina feedback feature`

Submit a feature request.

| Flag | Short | Description |
|---|---|---|
| `--title` | `-t` | Short summary |
| `--description` | `-d` | What you'd like the CLI to do |

```sh
dina feedback feature -t "Support .env files" -d "Would love --env-file on apps env set"
```

---

## Account

### `dina auth`

Parent for authentication commands.

### `dina auth login`

Sign in with the Dina platform. Opens a browser for OAuth, or falls back to a device code flow on headless systems.

```sh
dina auth login
```

Credentials are stored at `~/.config/dina/auth.json` (mode `0600`).

### `dina auth logout`

Delete the saved credentials.

```sh
dina auth logout
```

### `dina auth status`

Report whether you're signed in, and when the current token expires.

Respects `--output json`.

```sh
dina auth status
dina auth status -o json
```

---

## CLI maintenance

### `dina install`

Install resources for the CLI. Today, the only supported resource is agent skills.

| Flag | Description |
|---|---|
| `--skills` | Install agent skills for AI tools (Claude Code, Cursor, Copilot, Gemini, Codex). |

```sh
dina install --skills
```

### `dina update`

Download the latest release and replace the running CLI binary in place.

| Flag | Description |
|---|---|
| `--check` | Only report whether an update is available; don't install. |

```sh
dina update --check
dina update
```

### `dina doctor`

Run diagnostic checks on the CLI's local state: authentication, installed skills, and version.

| Flag | Description |
|---|---|
| `--fix` | Auto-repair any fixable issues. |

```sh
dina doctor
dina doctor --fix
```

### `dina version`

Print the CLI version.

```sh
dina version
```

---

## Admin

These commands require admin privileges on the Dina platform.

### `dina users list`

List every user on the platform.

Respects `--output json`.

```sh
dina users list
```

### `dina users activate <user-id>`

Activate a user.

```sh
dina users activate u_abc123
```

---

## Getting help

`dina --help` shows the top-level list. Every command accepts `--help` to see its own flags and examples:

```sh
dina apps --help
dina apps env set --help
```

If something's broken, start with `dina doctor`. If it can't fix it, [send a bug report](/docs/feedback).
