From a Lovable repository to your own cluster
What Ankra does for you
Adding an application is a wizard, and the work is done by Ankra’s AI, not by you.Chat and deploy from inside Lovable
The Ankra — Chat & Deploy extension for Chrome puts an Ask Ankra button on your Lovable project. From that panel you can chat with Ankra AI, connect the project’s GitHub repository and deploy it to your cluster, without switching to the portal.Install and connect
lovable.dev and click Ask Ankra. Choose Connect to Ankra, sign in, and approve the extension in the browser sign-in screen the CLI also uses. An Ankra API token works too.Pick where it deploys
Connect GitHub and deploy
lovable.dev and talks only to platform.ankra.app. It reads the project’s address and title and the repository and branch Lovable shows in its Git settings, never cookies, passwords or page contents. Your sign-in and recent chats are kept in local extension storage, and Disconnect clears them. Chat in the panel uses Ask mode; continue writes that need approval in the portal.
Install the extension without the Chrome Web Store
The Chrome Web Store listing is in review. Until it is live, load the same package into Chrome yourself:- Download ankra-chrome-extension.zip and unzip it into a folder you will keep. Chrome loads the extension from that folder, so do not delete it.
- Open
chrome://extensionsand turn on Developer mode in the top-right corner. - Choose Load unpacked and select the unzipped folder.
- Reload any open Lovable tab, then click Ask Ankra.
chrome://extensions and install the extension from the store to get updates. The same steps work in other Chromium browsers such as Edge and Brave, from that browser’s own extensions page.
Add the app with the wizard
Connect Lovable to GitHub
Add the repository in Ankra
Let Ankra write the Dockerfile
package.json (Vite, a build script, no start script) and writes the Dockerfile for it. You add nothing to the repository.The Dockerfile builds the app with Vite and serves the result from an unprivileged nginx on port 8080, running as a non-root user:- A refresh on
/dashboard/settingsreturns the app instead of a 404, while a missing file under/assets/is still a 404. - Hashed assets are cached for a year and
index.htmlnever is, so a new release is picked up on the next load. /healthzanswers without touching anything, so the cluster has something to probe.
Review the setup pull request and ship
ankra pipeline get --application shop --latest, which prints the exact approve command, and run it as yourself.Run the backend on your cluster
A Lovable app is a front end plus a backend, and the backend is usually a hosted service. On Ankra the backend is open-source software on your own cluster, run by Ankra. What Ankra runs for you todayThe part to be honest about: the data layer
Lovable generates apps that talk to Supabase withsupabase-js: sign-in, tables, storage and functions all go through Supabase’s own API. Ankra does not recognise Supabase, and its wizard does not rewrite application code, so a repository that calls Supabase keeps calling Supabase unless the data layer changes. There are two ways to get fully onto your cluster:
-
Replace the data layer in the code. Move tables to the Postgres Ankra generated, files to the S3 service, and sign-in to an open-source identity provider such as Ory Kratos, Keycloak or authentik. This is a code change, and it is the right job for an AI coding assistant working in the repository, with the Ankra skills installed so it knows where the pieces live:
-
Run Supabase’s open-source stack on your cluster. Supabase is open source and can be self-hosted, which keeps the app’s code unchanged because only its address changes. Ankra can convert a Supabase self-host Docker Compose file with
ankra migrateand restore its Postgres through a backup vault, but there is no one-step Supabase package yet, and the compose file’s mounted configuration needs care. Treat this as an advanced route.
Use your own domain
Add two options to the deploy:Development, then production
Add a second cluster so each change is proved before production sees it. An application deploys to as many environments as you give it, and each environment is a cluster and namespace with its own database and secrets.One image, two environments: the backend address is injected when the container starts
Deploy to development
Promote the tag that passed
promote_application. To roll back, deploy an earlier tag the same way.Dockerfile that reads its backend address at start
Dockerfile that reads its backend address at start
SUPABASE_URL and SUPABASE_PUBLISHABLE_KEY (the names follow Lovable’s; rename them to match your .env), including a self-hosted one. Give each environment its values with an environment secret, which is stored per application, sealed into the workloads and rolled on apply:.env Lovable commits, so the committed address never reaches the bundle. A container started without a variable exits at once and names it.What you get without asking
- Scans on every change. Semgrep over the source, Checkov over the manifests and Trivy over the image, judged against your organisation’s gate before anything is published. A generated app is mostly code you did not write, so this is where an unsafe pattern or a leaked key shows up.
- An immutable tag per commit. Every deployment is a
sha-tag. - Tests when you add them. The pipeline has a test stage only when
package.jsonhas atestscript, and Lovable projects usually have none. - An AI review and a watcher. Ankra reads every pull request, watches every run, and opens a fix when a build breaks.
- Pull request previews. A live preview of each branch, with its own throwaway Postgres if you ask for one. See Pull request preview environments.
Verify
Troubleshooting
Ankra says it wrote no Dockerfile, or the build cannot find the app
Ankra says it wrote no Dockerfile, or the build cannot find the app
package.json has a start script or a main file, or a server.js sits beside the app, Ankra treats the repository as a Node server instead. If vite.config moves the build output out of dist/, the generated image cannot find it. In either case add your own Dockerfile at the repository root and commit it to the branch Lovable tracks: Ankra builds whatever Dockerfile it finds and never overwrites it.The page loads but refreshing a nested route shows a 404
The page loads but refreshing a nested route shows a 404
try_files $uri /index.html; line is missing from the nginx config, or the config was not copied into the image.Sign-in redirects to localhost or the old address
Sign-in redirects to localhost or the old address
The app still talks to the hosted Supabase
The app still talks to the hosted Supabase
The build stops at the image gate
The build stops at the image gate
ankra pipeline findings <run-id> --application shop lists it, worst first. Fix it, or accept it deliberately and write down why.The pod restarts and its log says a variable is not set
The pod restarts and its log says a variable is not set
ankra application env-secrets apply <application-id>.My own domain shows no certificate or does not resolve
My own domain shows no certificate or does not resolve
ankra cluster custom-dns-zones list <cluster> and add it with its credential.