Skip to main content
Early access. GitHub and Slack runs start in a cloud sandbox operated by Mutagent, and cloud sandboxes are not open to every account yet: we are letting accounts in gradually while we test. There is nothing to host, and nobody has to be at a terminal.
GitHub plays two parts in Mutagent:

Ship fixes as pull requests

Helix never writes to your default branch. When Optimize applies a remedy you approved, Helix prepares the change on a branch and opens a pull request with the diff. Markdown agents apply as file edits; code agents apply as a code change. Your merge is the final approval. Point a target at the repository and say how fixes apply. A local target uses the checkout you already have; a remote target clones from repo_url:
.mutagent/config.yaml
platform selects the coding agent or framework, root scopes where fixes are written, and apply.kind is markdown for agent files or code-pr for a code change. See the config reference and apply targets. Local targets use your existing git credentials. Remote targets clone over repo_url with the credential named by credential_ref (the name of an environment variable, never the secret itself). Helix needs read access to evaluate and write access to open the pull request branch.

Start runs from GitHub

With the GitHub channel, GitHub events start Helix runs in a cloud sandbox. A run started from an issue or an issue comment reports back on that issue. Every run, including one started by a failed CI run, is listed in mutagent gateway runs.

Before you start

  • The mutagent CLI is installed, you are signed in, and a workspace is selected. See Sign in.
  • Cloud sandboxes are enabled for your account (early access).
  • A person who can install GitHub Apps on the account or organization that owns the repositories is at a browser. That step cannot be done from the CLI.

Connect

A person connects GitHub once for the organization, in a browser. There are three places to start:
  • When you sign up in the web app, at the Connect GitHub step. You can skip it and connect later.
  • In the web app, under Configuration › Integrations: click Connect on the GitHub card.
  • From the CLI:
    The command prints two links and exits 0. Open the sign-in link (data.signInUrl) first and sign in to Mutagent, then open the second link (data.url) in the same browser. Then wait for it to finish:
    <attempt-id> is data.attempt from the first command. Running connect again once GitHub is connected does nothing and exits 0.
Whichever you start from, you install the Mutagent GitHub App on GitHub and choose its repository access there: All repositories or Only select repositories.

Check that it worked

status shows what is connected in data.connections and the next command to run in next. doctor exits 0 when every check passes, and 1 with GATEWAY_CHECKS_FAILED and the fix for each failing check otherwise. To prove a run end to end, run mutagent gateway test-run --repo <owner/name> --wait --json. The full connect flow, including why signing in with GitHub does not install the app and what to do when a step fails, is in Connecting GitHub and Slack.

Which repositories you can use

The repositories Mutagent can work on are exactly the ones you give the Mutagent GitHub App access to on GitHub. There is no separate list to keep in Mutagent: a repository is linked to your workspace automatically the first time you use it, when you start a session on it in the web app, create a trigger or routine for it with --repo, or pick it for a Slack mention.
To add or remove repositories, change the app’s access on GitHub. mutagent gateway repos grant-more prints the GitHub page where you do that. A repository the app cannot reach is refused with REPOSITORY_INACCESSIBLE, with the instruction to give the app access to it on GitHub first. Linking by hand with mutagent gateway repos link your-org/your-repo is optional. mutagent gateway repos unlink your-org/your-repo keeps a repository out of the ones a Slack mention chooses from, and pauses the triggers and routines that run on it. See Repositories.

What the app can do

  • Read the repositories you granted, to check them out into the run’s sandbox. Each run gets a short-lived, read-only token for one repository.
  • Comment on the issue that started the run, with the run’s result.
You choose the repositories at install time and can change them later on GitHub.

What starts a run

Mentions on pull requests do not start a run. There is no default repository: each trigger and routine names its repository when you create it. For example, a trigger that triages every new issue:
Mentions are built in, so --on github.mention is refused (TRIGGER_KIND_BUILTIN_ONLY). A failed CI run uses --on github.ci-failed. Each trigger and routine carries the instruction Helix receives when it fires. To create them, see Triggers and routines and the mutagent gateway commands. Run history, like everything the gateway stores, is kept for 90 days.
For runs on Helix Cloud, see Managed agents.