# CLI Reference

This page lists every `podrun` command and flag.

## Syntax

```bash
podrun <command> [flags] [args...]
```

On startup the CLI checks and installs dependencies, checks environment variables, parses arguments, and tests the SSH connection; any failure aborts.

## Commands

| Command | Description |
|---|---|
| `up` | Sync, rewrite compose, clear old containers and start, report the deployment |
| `clear` | `down -v`, `down --rmi all`, then delete the remote project folder via `podman run --privileged alpine` |
| `down` | Forward as remote `podman compose down` and mark the deployment as removed |
| `ps` | Forward as `podman compose ps` |
| `logs` | Forward as `podman compose logs`; `-f` means follow |
| `restart` | Forward as `podman compose restart` |
| `exec` | Forward as `podman compose exec` |
| `build` | Forward as `podman compose build` |
| `domain` / `deploy` / `export` / `info` / `clone` | **[Unfinished]** See [Implementation Status](/roadmap) |

Any other command returns `unsupported command`.

## Flags

| Flag | Description |
|---|---|
| `-d`, `--detach` | Run in the background; also forwarded to `podman compose` |
| `--folder=<path>`, `--folder <path>` | Local project folder; defaults to the current directory |
| `./<dir>`, `/<dir>` | Positional local project folder (must exist) |
| `-f <file>` | Compose file; only the file name is forwarded. Means follow under `logs`. Multiple `-f` flags are not supported |
| `-u <uid>`, `-u=<uid>` | Override the deployment UID |
| `--type=<target>`, `--type <target>` | **[Unfinished]** Runtime target; defaults to `podman`. `k3s` is only stored in the record's `target` field and still runs through Podman Compose |

Unrecognized arguments are added to the forwarded list and passed to `podman compose` as-is.

## Examples

```bash
podrun up -d
podrun up -d --folder=/path/to/project
podrun up -d -f ./services/api/docker-compose.yml
podrun logs -f
podrun exec web sh
podrun clear
```
