REPO= Set up FastAPI on this VM by following the exe.dev recipe at https://exe-staging.dev/deploy/fastapi.md from top to bottom. The values at the top of this message are mine: - REPO: the GitHub repository to deploy, as owner/name or a URL, or `new` to start a fresh FastAPI app Ask me for any that still say before you need them. The recipe's example VM name is my-fastapi. This VM's name is the output of `hostname`: use it wherever the recipe writes my-fastapi. Skip the step that creates the VM; you are on it. You are done when all of these are true. Check each one yourself: - Your app, or a new FastAPI + SQLModel starter, running as `app.service` on port 8000 and enabled to start after a reboot. - `git push exe main` deploys: the hook builds a new release in `~/releases` (uv, Alembic migrations), switches `~/app` to it, restarts, and checks the app answers. A failed deploy rejects the push and leaves the running version up. - exe.dev's proxy headers trusted from 127.0.0.1 (the Uvicorn flags in `ExecStart`), so redirects and generated URLs use `https://.exe.xyz`. For a server without such flags, the owner is told what to change. - Data in `~/data` (SQLite for the starter), backed up every night to `~/backups`, with a backup restored and checked in a scratch directory. - The interactive API docs at `https://.exe.xyz/docs`, private behind exe.dev login. Read the whole recipe, including the closed details, and follow "Set up by hand" in order, skipping VM creation. The walkthrough above it is for the owner afterwards. Ask for REPO first if it says . For REPO=new, build the starter exactly as written. For a repository, follow "Bring your app": adapt ExecStart, ~/app.env, and the hook's install step to the app. Never commit to the owner's repository or push to ~/app.git (run the hook by hand instead), so the owner's first push fast-forwards, and keep the hook deploying the repository's default branch. Remove whatever you make only for testing. If a private repository can't be cloned, give the owner the `integrations add github` command with this VM's name and wait for them. Don't reboot, don't make the VM public, and don't run the Restore steps on live data: test the backup in a scratch directory as written. The VM can't open its own https://.exe.xyz; "Check it" tests the proxy's view through localhost instead. Finish with https://.exe.xyz/docs and only the one git command from "Deploy with git push" that fits: `git clone -o exe` for REPO=new, `git remote add exe` for a repository, plus the branch to push if it isn't main, and anything you adapted or that the owner should change. Finish with the URLs I should open and these commands, which only I can run, from my own computer (with this VM's name in them): git clone -o exe my-fastapi.exe.xyz:app.git # if you started fresh git remote add exe my-fastapi.exe.xyz:app.git # or, in your own app's checkout