REPO= Set up Go on this VM by following the exe.dev recipe at https://exe.dev/deploy/go.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 Go app Ask me for any that still say before you need them. The recipe's example VM name is my-go. This VM's name is the output of `hostname`: use it wherever the recipe writes my-go. Skip the step that creates the VM; you are on it. You are done when all of these are true. Check each one yourself: - The app's binary answering on port 8000 as app.service, enabled to come back after a reboot. - A ~/app.git repository whose pre-receive hook builds each push to main into a new release and rejects the push if the deploy fails. - Settings and secrets in ~/app.env (mode 600), read by the build and by the server. - Data in ~/data, backed up nightly by app-backup.timer, with the newest backup opened and checked in a scratch directory. - With REPO=new, a net/http guestbook that saves messages to SQLite, with its templates and static files embedded in the binary. Read the whole recipe, including the closed details. Follow "Set up by hand" from "Check Go" to the end of it, as exedev; the walkthrough above it is for the owner afterwards. Do not run Restore or Update, and do not reboot. Leave public sharing off. REPO picks one path in "Get the code": `new` starts a fresh app; anything else is a GitHub repository (turn URLs into owner/name). Never commit to a repository you cloned: its settings go in ~/app.env. If a clone fails, follow the private-repository steps, and if that fails too, give the owner the integration command and wait for them. For a cloned app, find its main package and set MAIN_PACKAGE; fill ~/app.env from its README or .env.example: make it listen on port 8000, generate secrets with openssl, ask the owner for keys to outside services, and never invent values. If a build fails, read its output, fix what you can without editing the code, and redeploy with ~/app.git/hooks/pre-receive HEAD. Finish with the app's URL and the git commands the owner runs on their own computer, from "Deploy with git push": `git clone -o exe` for a new app, `git remote add exe` for a GitHub repository, then `git push exe main` (or their default branch). Finish with the URLs I should open.