Skip to content
Proud to collaborate with Microsoft for Startups

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 ​

PropertyValue
Workflow typeDag
LibraryApp-lovable
Version1.0

Input Schema ​

FieldTypeRequiredDefaultDescription
actorstringNo—Member or agent requesting go-live.
organization_uuiduuidYes—Organization that owns the deployment.
github_repository_uuiduuidYes—The repository Lovable syncs this project to.
cloudflare_connection_uuiduuidYes—Cloudflare connection hosting the Pages project.
project_namestringYes—Cloudflare Pages project name; created on first run.
source_refstringNo—Branch or tag to build; defaults to the project's production branch.
commit_shastringNo—Specific commit to build.
runner_group_uuiduuidNo—Runner group to build on; defaults to the org's first active group.
build_commandstringNo—Build command; defaults to 'npm ci && npm run build'.
output_dirstringNo—Static output directory; defaults to 'dist'.
env_varsjsonNo—Extra build-time env vars for the Pages project.
secretsjsonNo—Encrypted Pages secrets; values never enter state or logs.
client_keystringNo—Orkestia PKCE client key; injected as VITE_ORKESTIA_CLIENT_KEY.
workflow_api_base_urlstringNo—Injected as VITE_ORKESTIA_API_BASE_URL.
identity_app_uuiduuidNo—Identity app whose client should learn the production callback.
client_uuiduuidNo—Identity client to configure; omit to skip callback registration.
callback_pathstringNo—Callback path appended to the deployed origin (default: callback).
extra_redirect_urislistNo—Additional callback URLs to keep registered.
custom_domainstringNo—Custom domain to bind; the callback then uses it.

Output Schema ​

FieldTypeRequiredDefaultDescription
organization_uuiduuidYes——
production_urlstringNo——
deployed_urlstringNo——
deployment_refstringNo——
statusstringNo——
callback_registeredbooleanNo——
domain_boundbooleanNo——
build_and_deployjsonNo——
add_domainjsonNo——
configure_clientjsonNo——
actorstringNo——
github_repository_uuiduuidNo——
cloudflare_connection_uuiduuidNo——
project_namestringNo——
source_refstringNo——
commit_shastringNo——
runner_group_uuiduuidNo——
build_commandstringNo——
output_dirstringNo——
env_varsjsonNo——
secretsjsonNo——
client_keystringNo——
workflow_api_base_urlstringNo——
identity_app_uuiduuidNo——
client_uuiduuidNo——
callback_pathstringNo——
extra_redirect_urislistNo——
custom_domainstringNo——
failure_reasonstringNo——
failure_typestringNo——
failed_actionstringNo——
failed_at_statestringNo——
failed_stepjsonNo——
failed_layerintegerNo——
errorstringNo——
error_typestringNo——

DAG Layers ​

#LayerStepsCompensation
1buildcloudflare.pages.build-and-deploy—
2domaincloudflare.pages.add-domain—
3authidentity.app.configure-client—

Execution Flow ​

Sub-workflows ​

Sub-workflowStep name
cloudflare.pages.build-and-deploybuild_and_deploy
cloudflare.pages.add-domainadd_domain
identity.app.configure-clientconfigure_client

API Usage ​

bash
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"
  }
}