# Connect a Git Repo

:::important Alpha Feature
Features described on this page are in alpha and subject to change. For access, contact your Replicated account representative.
:::

Enterprise Portal content is driven by a GitHub repo you control. Connecting a repo is a prerequisite to offer versioned docs, advanced theming, and Terraform module delivery.

The Vendor Portal walks you through setup in three steps:

## Step 1: Connect GitHub

Go to **Enterprise Portal** in Vendor Portal. The **Content** tab is the default landing page. Click **Connect GitHub** and authorize the Replicated GitHub App on your GitHub organization.

:::note
When installing the Replicated GitHub App, grant access to all repositories you plan to use with Enterprise Portal (content repos AND Terraform module repos). If you need to add access to additional repos later, update the GitHub App's repository permissions in your GitHub org settings (Settings > Integrations > Applications > Replicated > Configure > Repository access).
:::

## Step 2: Create from template

Click **Create Repo from Template** to generate a new content repository from Replicated's template. This opens GitHub's "Create a new repository" flow, pre-configured with the `replicatedhq/enterprise-portal-content` template. The repository name is pre-filled as `<your-app-slug>-enterprise-portal-content` and visibility defaults to **private**. Choose an owner, adjust the name if needed, and click **Create repository** on GitHub.

The template includes a working `toc.yaml`, example pages for installation (Linux and Helm), operations, updates, and support, along with built-in MDX components for interactive install instructions. See [Content Template Structure](/vendor/enterprise-portal-v2-content#content-template-structure) for what's included out of the box.

If you already have a content repository (or prefer to create one from scratch), click **Continue** to skip this step.

## Step 3: Link repository

Select your GitHub organization and the repository containing your Enterprise Portal content, then click **Link Repository**. When only one GitHub organization or repository is available, it is auto-selected for you.

:::note
The selected repository must contain a `toc.yaml` file at the root of its default branch. If none is found, you'll see a warning and won't be able to link the repo. Use the content template (Step 2) or add a `toc.yaml` manually before linking.
:::

All branches are synced automatically. Pushes trigger automatic syncs via webhook.

Once linked, the Content tab shows sync status for each branch. A branch labeled **Fallback** means it doesn't match any release `version_label` on the customer's channel. Fallback content is shown when no version-matched branch is available for a customer. See [Naming Your Branches](/vendor/enterprise-portal-v2-versioned-docs#naming-your-branches) for how to set up version gating.

You can also trigger a manual sync from the **Content** tab.

Via API:

```
# Your APP_ID is visible in the Vendor Portal URL when viewing your app,
# or via:
replicated api get /v3/apps | jq '.apps[] | {id, name}'

# List your content repos to get the REPO_ID:
replicated api get /v3/app/<APP_ID>/enterprise-portal/content-repos

# Trigger a sync:
replicated api post /v3/app/<APP_ID>/enterprise-portal/content-repos/<REPO_ID>/sync
```

:::important
Content branches must be named with semver versions (e.g., 1.0.0) that match your release version_label values. The main branch is synced but never shown to customers directly. See [Naming Your Branches](/vendor/enterprise-portal-v2-versioned-docs#naming-your-branches) for details.
:::