View Markdown

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.

FlagShortDefaultWhat it does
--no-inputfalseDisable interactive prompts (error if input is required).
--quiet-qfalseSuppress informational messages on stderr.
--debugfalsePrint verbose debug output. Also honours DEBUG=1.
--no-colorfalseDisable colour. Also honours NO_COLOR and TERM=dumb.
--output-otextOutput 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.

FlagShortDefaultDescription
--app-arequiredApp to deploy to.
--tag-tPre-built image tag.
--port-p8080Port the container listens on.
--replicas1Number of replicas.
--build-argKEY=VALUE build argument. Repeatable.
--wait-wfalseWait until the deployment reaches running or fails.
dina deploy -a my-app --wait
dina deploy -a my-app --tag ghcr.io/acme/web:v1 --replicas 3 --wait

See Deploy an app 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.

dina apps create my-app

dina apps list

List every app you have access to.

Flags: respects --output json.

dina apps list
dina apps list -o json

dina apps info

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

FlagShortDescription
--app-arequired — name of the app

Respects --output json.

dina apps info -a my-app

dina apps update

Rename an app.

FlagShortDescription
--app-arequired — current name
--nameNew name
dina apps update -a old-name --name new-name

dina apps delete

Permanently delete an app and its deployments.

FlagShortDescription
--app-arequired
--force-fSkip the confirmation prompt
dina apps delete -a my-app
dina apps delete -a my-app --force

dina apps logs

Print recent application logs.

FlagShortDefaultDescription
--app-arequiredApp to read logs from
--lines-n100Number of log lines
dina apps logs -a my-app -n 500

dina apps deployments

List deployments for an app.

FlagShortDescription
--app-arequired

Respects --output json.

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.

FlagShortDescription
--app-arequired
--idrequired — deployment ID
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.

FlagShortDescription
--app-arequired
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.

FlagShortDescription
--app-arequired
dina apps hostnames add -a my-app api.example.com

dina apps hostnames remove <hostname>

Detach a hostname from an app.

FlagShortDescription
--app-arequired
--force-fSkip the confirmation prompt
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.

FlagShortDescription
--message-mFeedback text
--rating-rOptional 1-to-5 rating
dina feedback -m "Love the new error messages" -r 5

dina feedback bug

Submit a bug report. Works signed in or out.

FlagShortDescription
--title-tShort summary
--description-dWhat happened, what you expected, how to reproduce
--severity-slow, medium, or high
--contextOptional context (logs, stack trace). Mutually exclusive with --context-file.
--context-filePath to a file with context. Use - for stdin.
dina feedback bug -t "deploy hangs" -d "Expected exit 1" -s high --context-file ./build.log

dina feedback feature

Submit a feature request.

FlagShortDescription
--title-tShort summary
--description-dWhat you’d like the CLI to do
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.

dina auth login

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

dina auth logout

Delete the saved credentials.

dina auth logout

dina auth status

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

Respects --output json.

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.

FlagDescription
--skillsInstall agent skills for AI tools (Claude Code, Cursor, Copilot, Gemini, Codex).
dina install --skills

dina update

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

FlagDescription
--checkOnly report whether an update is available; don’t install.
dina update --check
dina update

dina doctor

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

FlagDescription
--fixAuto-repair any fixable issues.
dina doctor
dina doctor --fix

dina version

Print the CLI version.

dina version

Admin

These commands require admin privileges on the Dina platform.

dina users list

List every user on the platform.

Respects --output json.

dina users list

dina users activate <user-id>

Activate a user.

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:

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.