Claude
Skills
Sign in
Back

cli-commands

Included with Lifetime
$97 forever

MUST use when using the CLI, including debugging job failures and inspecting run history via `wmill job`.

General

What this skill does


# Windmill CLI Commands

The Windmill CLI (`wmill`) provides commands for managing scripts, flows, apps, and other resources.

## Global Options

- `--workspace <workspace:string>` - Specify the target workspace. This overrides the default workspace.
- `--debug --verbose` - Show debug/verbose logs
- `--show-diffs` - Show diff informations when syncing (may show sensitive informations)
- `--token <token:string>` - Specify an API token. This will override any stored token.
- `--base-url <baseUrl:string>` - Specify the base URL of the API. If used, --token and --workspace are required and no local remote/workspace already set will be used.
- `--config-dir <configDir:string>` - Specify a custom config directory. Overrides WMILL_CONFIG_DIR environment variable and default ~/.config location.

## Commands

### app

app related commands

**Options:**
- `--json` - Output as JSON (for piping to jq)

**Subcommands:**

- `app list` - list all apps
  - `--json` - Output as JSON (for piping to jq)
- `app get <path:string>` - get an app's details
  - `--json` - Output as JSON (for piping to jq)
- `app push [file_path:string] [remote_path:string]` - push a local app. With no args, infers the app from the current directory and the remote path from its location relative to wmill.yaml.
- `app dev [app_folder:string]` - Start a development server for building apps with live reload and hot module replacement
  - `--port <port:number>` - Port to run the dev server on (will find next available port if occupied)
  - `--host <host:string>` - Host to bind the dev server to
  - `--entry <entry:string>` - Entry point file (default: index.ts for Svelte/Vue, index.tsx otherwise)
  - `--no-open` - Don't automatically open the browser
- `app lint [app_folder:string]` - Lint a raw app folder to validate structure and buildability
  - `--fix` - Attempt to fix common issues (not implemented yet)
- `app new` - create a new raw app from a template
  - `--summary <summary:string>` - App summary (short description). Skips the prompt when provided. Triggers non-interactive mode.
  - `--path <path:string>` - App path (e.g., f/folder/my_app or u/username/my_app). Skips the prompt when provided. Triggers non-interactive mode.
  - `--framework <framework:string>` - Framework template: react19 | react18 | svelte5 | vue. Skips the prompt when provided. Triggers non-interactive mode.
  - `--datatable <datatable:string>` - Datatable to wire up. Without this flag in non-interactive mode, no datatable is configured.
  - `--schema <schema:string>` - Schema to use with --datatable. Created (CREATE SCHEMA IF NOT EXISTS) if it doesn't already exist.
  - `--overwrite` - Overwrite the target directory if it already exists, without prompting.
  - `--no-open-in-desktop` - Do not prompt to open the new app in Claude Desktop.
- `app generate-agents [app_folder:string]` - regenerate AGENTS.md and DATATABLES.md from remote workspace
- `app set-permissioned-as <path:string> <email:string>` - Set the on_behalf_of_email for an app (requires admin or wm_deployers group)

### audit

View audit logs (requires admin)

**Subcommands:**

- `audit list` - List audit log entries
- `audit get <id:string>` - Get a specific audit log entry
  - `--json` - Output as JSON (for piping to jq)

### config

Show all available wmill.yaml configuration options

**Options:**
- `--json` - Output as JSON for programmatic consumption

**Subcommands:**

- `config migrate` - Migrate wmill.yaml from gitBranches/environments to workspaces format

### datatable

datatable related commands

**Subcommands:**

- `datatable list` - list all datatables in the workspace
  - `--json` - Output as JSON (for piping to jq)
- `datatable run <sql:string>` - run a SQL query on a datatable
  - `-n --name <name:string>` - Datatable name (default: main)
  - `-s --silent` - Output only the final result as JSON. Useful for scripting.
- `datatable serve` - Serve all datatables as a Postgres-wire endpoint (psql, DBeaver, pgAdmin); the client picks the datatable via the database name in its connection string
  - `--port <port:number>` - Port to listen on (default: first free port in 5433-5500)
  - `--host <host:string>` - Bind address (default: 127.0.0.1)
  - `--password <password:string>` - Password for Postgres clients (default: generate a random password at startup)
- `datatable psql` - Start a serve listener and launch psql connected to it
  - `-n --name <name:string>` - Datatable to connect psql to (default: main)
  - `--port <port:number>` - Port the proxy listens on (default: first free port in 5433-5500)
  - `--host <host:string>` - Bind address for the proxy (default: 127.0.0.1)
  - `--password <password:string>` - Password for the temporary Postgres proxy (default: generate a random password at startup)

### dependencies

workspace dependencies related commands

**Alias:** `deps`

**Subcommands:**

- `dependencies push <file_path:string>` - Push workspace dependencies from a local file

### dev

Watch local file changes and live-reload the dev page for preview. Does NOT deploy to the remote workspace — use wmill sync push for that.

**Options:**
- `--includes <pattern...:string>` - Filter paths given a glob pattern or path
- `--proxy-port <port:number>` - Port for a localhost reverse proxy to the remote Windmill server
- `--path <path:string>` - Watch a specific windmill path (e.g., u/admin/my_script or f/my_flow)
- `--no-open` - Do not open the browser automatically

### docs

Search Windmill documentation.

**Arguments:** `<query:string>`

**Options:**
- `--json` - Output results as JSON.

### ducklake

ducklake related commands

**Subcommands:**

- `ducklake list` - list all ducklakes in the workspace
  - `--json` - Output as JSON (for piping to jq)
- `ducklake run <sql:string>` - run a SQL query on a ducklake
  - `-n --name <name:string>` - Ducklake name (default: main)
  - `-s --silent` - Output only the final result as JSON. Useful for scripting.

### flow

flow related commands

**Options:**
- `--show-archived` - Enable archived flows in output
- `--json` - Output as JSON (for piping to jq)

**Subcommands:**

- `flow list` - list all flows
  - `--show-archived` - Enable archived flows in output
  - `--json` - Output as JSON (for piping to jq)
- `flow get <path:string>` - get a flow's details
  - `--json` - Output as JSON (for piping to jq)
- `flow push <file_path:string> <remote_path:string>` - push a local flow spec. This overrides any remote versions.
  - `--message <message:string>` - Deployment message
- `flow run <path:string>` - run a flow by path.
  - `-d --data <data:string>` - Inputs specified as a JSON string or a file using @<filename> or stdin using @-.
  - `-s --silent` - Do not ouput anything other then the final output. Useful for scripting.
- `flow preview <flow_path:string>` - preview a local flow without deploying it. Runs the flow definition from local files and uses local PathScripts by default. Pass --step <id> to run only one module in isolation (resolves nested steps inside branchone/branchall/forloopflow/whileloopflow plus the special preprocessor/failure modules; supported step types: rawscript, script, flow).
  - `-d --data <data:string>` - Inputs specified as a JSON string or a file using @<filename> or stdin using @-.
  - `-s --silent` - Do not output anything other then the final output. Useful for scripting.
  - `--remote` - Use deployed workspace scripts for PathScript steps instead of local files.
  - `--step <step_id:string>` - Run only the named step instead of the whole flow. Honors --data as the step's args and --remote / local-PathScript resolution the same way the full-flow preview does.
- `flow new <flow_path:string>` - create a new empty flow
  - `--summary <summary:string>` - flow summary
  - `--description <description:string>` - flow description
- `flow bootstrap <flow_path:string>` - create a new empty flow (alias for new)
  - `--summary <summary:string>` - flow summary
  - `--description <descriptio

Related in General