Deployment
Full-code apps can be deployed via the CLI or the UI editor. This page covers deployment options and configuration.
Deploy via CLI
Push your app to Windmill:
wmill sync push
The CLI reads raw_app.yaml, bundles your frontend code, uploads backend runnables and deploys the app. See CLI workflow for the full push flow.
Deploy via UI
From the in-browser editor, click the deploy button to save and publish your app.
Public apps
Make your app accessible without authentication by setting public: true in raw_app.yaml:
summary: "Public dashboard"
public: true
Public apps are accessible at their app URL without requiring a Windmill login. The execution policy is auto-generated at deployment time. See public apps for more details.
Custom paths
Admins can set a custom URL path for an app:
custom_path: "my-dashboard"
The app will then be accessible at https://<instance>/apps/custom/my-dashboard.
Execution policy
The execution policy is auto-generated at deployment time. It controls how backend runnables are executed:
| Mode | Description |
|---|---|
publisher | Runnables execute as the app owner (the user who deployed the app). Users don't need direct permissions on the underlying scripts. This is the default. |
anonymous | Runnables execute with the permissions of the viewer. Used for public apps or when you want per-user access control. |
The triggerables and triggerables_v2 fields map each runnable to its execution configuration and are populated automatically during push/deploy.
Versioning
Each deployment creates a new version of the app. The version counter increments on every update. Previous versions are retained and can be accessed through the API.
CI/CD integration
Full-code apps work with Windmill's git sync and deploy to prod workflows:
- Develop locally and commit your
.raw_app/(or__raw_app/) directory to git - Use
wmill sync pushin CI to deploy to a staging workspace - Promote to production using workspace-to-workspace deployment