GitHub Integration

Instead of setting up a GitHub personal access token, the GitHub integration connects your GitHub account to exe.dev so that you can work on private repos without managing tokens, and without having tokens on the VM itself.

Linking your GitHub account

Link your GitHub account from the Integrations page.

The exe.dev GitHub App will need to be installed into your account or into your organization. If someone else has already installed it, you may need to sign into your account instead of clicking the install button.

Creating repo integrations

Once connected, create per-repo integrations:

exe.dev ▶ integrations add github --name blog --repository ghuser/blog --attach vm:my-vm
Added integration blog

Usage from a VM:
  ssh my-vm.exe.xyz 'cd $(mktemp -d) && git clone https://github.int.exe.xyz/ghuser/blog.git'

Then, from inside the VM:

git clone https://github.int.exe.xyz/ghuser/blog.git

Acting as your user (--act-as-user)

By default the integration acts as the exe.dev GitHub App, so pushes show up as exe-dev-github-integration[bot]. Pass --act-as-user on integrations add github or integrations edit (or use the toggle in the web UI) to authenticate as your GitHub user instead, attributing activity to your account. Not available on team integrations.

Read-only integrations (--readonly)

Pass --readonly on integrations add github or integrations edit (or check "Read-only" in the web UI) to allow reads but not writes, for both the API and git.

Using the gh CLI

The integration also supports the GitHub CLI (gh). Set GH_HOST to the aggregate integration hostname:

export GH_HOST=github.int.exe.xyz
gh repo view ghuser/blog
gh issue list -R ghuser/blog
gh pr list -R ghuser/blog