Publish to GitHub… turns a project folder inside a VM into a GitHub repository in one step. exe commits what is not committed yet, creates the repository on your account, private by default, and pushes. Publish the same folder again later and the new commits go to the same repository.
git push inside a VM always fails, because that is the point.Publishing to the web gives a running service an address; this chapter puts the code itself on GitHub.
exe signs in with GitHub's device flow, through an OAuth app of your own:
github.client_id) and Save.Once the client ID is saved, the Publish dialog offers the same sign-in at its top. Sign Out, clicked twice, removes the token from this machine.
The dialog lists each step as it happens and ends with a link to the repository. The Newsfeed notes the publish too, with a link to the commit.
The daemon does the work, over SSH into the VM:
apt, so it expects a Debian VM.main.origin at the repository and pushes the current branch.It stops early for a folder that sits inside a larger git repository (publish that repository's own folder instead) and for a detached HEAD (check out a branch first).
Publishing again goes through the same steps, so it commits what changed and pushes the new commits to the same repository.
github_push tool on the project folder.POST /v1/vms/{name}/publish with {"path":"/home/dev/app","repo":"app","private":true} does what the dialog does. It streams its steps and ends with the repository's address and the pushed commit. Say "private":true: left out, a new repository is public.Either may leave the repository name out. exe then reuses the folder's origin when it points at your account, so publishing again updates the same repository, and otherwise takes the folder's name. If origin points at another account, it stops and asks for a name.
You sign in first, as above: without a sign-in the publish fails and says where to sign in. The Agent Skill Guide tells agents to publish only when you ask, since the call can create a repository on your account.
The point of the design: no GitHub credentials ever enter the VM.
~/.exe/github.json.