lovable.project.go-live ​
Build a Lovable project's synced repo and deploy it to production
Build the app's GitHub repository and publish it, then register its callback.
Lovable has no deployment API, but it has two-way GitHub sync: on paid plans every prompt commits to the customer's repository. That repo is the handle this workflow takes. Nothing here talks to Lovable — it builds a Vite SPA from a git ref on an Orkestia runner and deploys it to Cloudflare Pages, then points the identity client at the resulting origin so hosted login returns to the right place.
Free Lovable plans have no GitHub sync, only ZIP export. Those apps go through apphost.release.create / .publish instead, which serves them at <slug>.app.orkestia.dev and registers the callback automatically.
For continuous deployment, wire the repository's push webhook to cloudflare.pages.auto-deploy-push — every Lovable prompt then ships.
Overview ​
| Property | Value |
|---|---|
| Workflow type | Dag |
| Library | App-lovable |
| Version | 1.0 |
Input Schema ​
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
actor | string | No | — | Member or agent requesting go-live. |
organization_uuid | uuid | Yes | — | Organization that owns the deployment. |
github_repository_uuid | uuid | Yes | — | The repository Lovable syncs this project to. |
cloudflare_connection_uuid | uuid | Yes | — | Cloudflare connection hosting the Pages project. |
project_name | string | Yes | — | Cloudflare Pages project name; created on first run. |
source_ref | string | No | — | Branch or tag to build; defaults to the project's production branch. |
commit_sha | string | No | — | Specific commit to build. |
runner_group_uuid | uuid | No | — | Runner group to build on; defaults to the org's first active group. |
build_command | string | No | — | Build command; defaults to 'npm ci && npm run build'. |
output_dir | string | No | — | Static output directory; defaults to 'dist'. |
env_vars | json | No | — | Extra build-time env vars for the Pages project. |
secrets | json | No | — | Encrypted Pages secrets; values never enter state or logs. |
client_key | string | No | — | Orkestia PKCE client key; injected as VITE_ORKESTIA_CLIENT_KEY. |
workflow_api_base_url | string | No | — | Injected as VITE_ORKESTIA_API_BASE_URL. |
identity_app_uuid | uuid | No | — | Identity app whose client should learn the production callback. |
client_uuid | uuid | No | — | Identity client to configure; omit to skip callback registration. |
callback_path | string | No | — | Callback path appended to the deployed origin (default: callback). |
extra_redirect_uris | list | No | — | Additional callback URLs to keep registered. |
custom_domain | string | No | — | Custom domain to bind; the callback then uses it. |
Output Schema ​
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
organization_uuid | uuid | Yes | — | — |
production_url | string | No | — | — |
deployed_url | string | No | — | — |
deployment_ref | string | No | — | — |
status | string | No | — | — |
callback_registered | boolean | No | — | — |
domain_bound | boolean | No | — | — |
build_and_deploy | json | No | — | — |
add_domain | json | No | — | — |
configure_client | json | No | — | — |
actor | string | No | — | — |
github_repository_uuid | uuid | No | — | — |
cloudflare_connection_uuid | uuid | No | — | — |
project_name | string | No | — | — |
source_ref | string | No | — | — |
commit_sha | string | No | — | — |
runner_group_uuid | uuid | No | — | — |
build_command | string | No | — | — |
output_dir | string | No | — | — |
env_vars | json | No | — | — |
secrets | json | No | — | — |
client_key | string | No | — | — |
workflow_api_base_url | string | No | — | — |
identity_app_uuid | uuid | No | — | — |
client_uuid | uuid | No | — | — |
callback_path | string | No | — | — |
extra_redirect_uris | list | No | — | — |
custom_domain | string | No | — | — |
failure_reason | string | No | — | — |
failure_type | string | No | — | — |
failed_action | string | No | — | — |
failed_at_state | string | No | — | — |
failed_step | json | No | — | — |
failed_layer | integer | No | — | — |
error | string | No | — | — |
error_type | string | No | — | — |
DAG Layers ​
| # | Layer | Steps | Compensation |
|---|---|---|---|
| 1 | build | cloudflare.pages.build-and-deploy | — |
| 2 | domain | cloudflare.pages.add-domain | — |
| 3 | auth | identity.app.configure-client | — |
Execution Flow ​
Sub-workflows ​
| Sub-workflow | Step name |
|---|---|
cloudflare.pages.build-and-deploy | build_and_deploy |
cloudflare.pages.add-domain | add_domain |
identity.app.configure-client | configure_client |
API Usage ​
POST /api/workflows/start
Content-Type: application/json
{
"workflow_type": "lovable.project.go-live",
"initial_data": {
"organization_uuid": "value",
"github_repository_uuid": "value",
"cloudflare_connection_uuid": "value",
"project_name": "value"
}
}