---
lang: en
---

# Sources

Sources is where your team connects its GitHub account and picks the repositories Cactus reads for your product. Connecting GitHub is not held back. Picking repositories waits for your trial: until it starts, the picker asks for a card instead, and a save is refused.

> Verified against the product on 2026-11-15

## Connect GitHub

1. In [Settings, Sources](https://app.heycactus.ai/settings/sources), select **Connect GitHub**. The panel shows it until an account is connected.
2. On GitHub, choose the repositories Cactus may read, then come back to Cactus.
3. Back in Cactus, the GitHub row reads _Connected as_ followed by the account's login.

## Pick repositories

Until your team has started its trial, the picker is replaced by a request for a card, and a save is refused with "Start your trial to connect code." [Plans and billing](https://cactus.heycactus.ai/plans-and-billing) says how the trial starts.

1. In [Settings, Sources](https://app.heycactus.ai/settings/sources), select **Pick repositories**. It shows once a GitHub account is connected.
2. Select each repository Cactus should read. Each row shows its branch, and the count below the list shows how many are selected.
3. Select **Save**.

> **Note:** Save stays off until at least one repository is selected.

If a repository isn't in the list, select **Not seeing a repository? Add it on GitHub** under the list, which opens GitHub. To add someone else's public repository, fork it into a GitHub account connected to Cactus, then pick the fork.

## Branches and builds

Cactus reads each repository's default branch, and a push to that branch reaches your product. A push to any other branch reaches no product.

Saving a set that changed starts a build, and saving a set that did not change starts none. [Builds](https://cactus.heycactus.ai/builds) says when that build runs.

## Remove a repository

1. In [Settings, Sources](https://app.heycactus.ai/settings/sources), select **Remove** beside the repository.
2. Cactus takes the repository out of its code index and starts a rebuild, which takes that repository's pages down.

The panel's own note says _Already-published pages stay until the next run_.

## If a change doesn't save

| What you see | What it means | What to do |
| --- | --- | --- |
| "GitHub granted no repositories" | The connected account has not given Cactus any repository yet | Select **Choose repositories on GitHub**, then come back |
| "A GitHub admin still has to approve this install. You'll get access once they do." | The install waits for a GitHub admin | Ask a GitHub admin to approve it |
| "GitHub didn't confirm access to that installation. Try connecting again." | GitHub did not confirm the connection | Select **Reconnect GitHub** |
| "We couldn't verify with GitHub. Try connecting again." | Cactus could not check the connection with GitHub | Select **Reconnect GitHub** |
| "GitHub errored" | Cactus could not read GitHub's list of repositories | Select **Retry** |
| "That repository's GitHub installation is not connected to this team" | The repository sits on a GitHub account this team has not connected, so nothing is saved | Select **Reconnect GitHub**, then pick again |
| "Cactus could not start reading these repositories. Try again." | The build did not take the new set, so the earlier set is put back | Select **Save** again |
| "Cactus couldn't remove that repository from its code index just now. Nothing changed: try again." | The removal did not happen | Select **Remove** again |
| "No longer reachable, so the last-read copy is kept" | GitHub no longer lists a repository Cactus reads | Untick it and select **Save** to stop reading it |
