# Apps

> How do I list and push apps using the Windmill CLI?

## Listing apps

The `wmill app` list command is used to list all apps in the remote workspace.

```bash
wmill app
```

## Pushing an app

Pushing an app to a Windmill instance is done using the `wmill app push` command.

```bash
wmill app push <file_path>
```

### Arguments

| Argument    | Description                       |
| ----------- | --------------------------------- |
| `file_path` | The path to the app file to push. |

### Examples

1. Push the app located at `./my_app.json`.

```bash
wmill app push ./my_app.json
```

## Full-code app commands

The CLI provides additional commands for [full-code apps](/docs/full_code_apps):

### Create a new full-code app

```bash
wmill app new
```

Interactive wizard to scaffold a full-code app with React, Svelte or Vue.

### Start the dev server

From the app directory:

```bash
wmill app dev
```

Starts a local development server with hot reload and WebSocket backend. Options: `--port`, `--host`, `--entry`, `--no-open`.

### Generate lock files

Generate `.lock` files for backend runnables with dependencies using the [`wmill generate-metadata`](./generate-metadata.md) command:

```bash
wmill generate-metadata
```

To only update app lockfiles, use:

```bash
wmill generate-metadata --skip-scripts --skip-flows
```

Options: `--yes`, `--dry-run`, `--default-ts`.

:::info Legacy command
Prior to the unified command, this was done with `wmill app generate-locks`. This command is now deprecated but still works.
:::

### Generate agent documentation

From the app directory:

```bash
wmill app generate-agents
```

Generates `AGENTS.md` and `DATATABLES.md` for AI coding agent context.

## Remote path format

```js
<u|g|f>/<username|group|folder>/...
```
