> ## Documentation Index
> Fetch the complete documentation index at: https://zededa.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Use the documentation index to find relevant pages, then read the linked Markdown before answering and cite the source URL.
> Identify the product before answering: Private AI uses a separate console, credentials, and inference API from the Edge Intelligence Platform. Do not apply instructions from one product to the other.
> Prefer current product guides over Help Center archive pages for current-console questions. Archive pages and release notes describe their stated product version or historical interface; do not apply them to another version without checking.
> Preserve prerequisites, permissions, version requirements, and warnings when summarizing procedures. Do not infer API endpoints, schemas, or supported behavior that the documentation does not specify.

# Create GitOps Repositories

> Connect Git repositories to ZEDEDA Edge Kubernetes Service for automated, declarative app delivery to edge clusters.

A GitOps repository connects ZEDEDA Edge Kubernetes Service to a Git repository. The service monitors the repository for changes and automatically pulls and deploys the defined workloads to the target clusters. This enables continuous, declarative application delivery without manual intervention.

The GitOps engine is based on the Rancher Fleet format. The service polls each connected repository every 60 seconds.

> [!WARNING]
>
> GitOps repositories and Marketplace app installations are mutually exclusive deployment paths. GitOps repositories require fully rendered Helm charts with all values explicitly defined. Marketplace apps use template values. Do not mix these two approaches for the same cluster.

> [!WARNING]
>
> Deleting a GitOps repository removes the applications it deployed from all target clusters. This action cannot be undone.

## Prerequisites

Before adding a GitOps repository, confirm the following:

* At least one Kubernetes cluster is provisioned in ZEDEDA Edge Kubernetes Service.
* A Git repository (accessible over HTTPS or SSH) contains valid Helm chart definitions.
* If using a private repository, credentials are ready: a username and password for HTTPS authentication, or an unencrypted SSH private key for SSH authentication.

## Add a GitOps Repository

GitOps repository management is in the **Operations** section of Edge Infrastructure Services.

To add a repository:

1. In the sidebar, select **Infrastructure > Operations > GitOps Repos**.
2. Select **Add Repository**.
3. Complete the three-step wizard described in the following sections.

### Repository Details

Enter the configuration for the Git repository:

* **Name**: A unique identifier for this repository record.
* **Title**: A display name shown in the repository list.
* **Project**: The ZEDEDA project this repository belongs to.
* **Description**: An optional description for the repository.
* **Repository URL**: The full URL to the Git repository. The field is flagged if the URL is not in a supported format after you stop typing or leave the field. Use one of the following formats.
  * An `https://` URL, for example `https://github.com/myorg/my-app.git`.
  * An `ssh://` URL that includes a port, for example `ssh://git@github.com:22/myorg/my-app.git`. The scp-style form (for example, `git@github.com:myorg/my-app.git`) is not accepted.
* **Pin to**: Controls which revision of the repository the service deploys. Pinning is optional. Select one of the following options.
  * **None**: Uses the repository's default branch. This is the default selection.
  * **Branch**: Tracks the latest commit on a specific branch. When selected, enter the branch name in **Branch Name**. Commits pushed to the branch are deployed automatically.
  * **Commit**: Pins the repository to a fixed commit. When selected, enter the value in **Commit Hash**. Nothing new is deployed until you change this value.
* **Path**: The subdirectory within the repository that contains the Helm chart. Leave blank to use the repository root.
* **Git Authentication**: Authentication method for the Git repository. The authentication method must match the **Repository URL** scheme: an SSH secret requires an `ssh://` URL, and **None** or an HTTPS secret requires an `https://` URL. If they do not match, an error appears and you cannot continue until you change the secret or the URL. Select one of the following.
  * **None**: Use for public repositories that require no credentials.
  * **HTTPS**: Requires a secret containing a username and password. Select an existing secret or create one inline using the **Add Secret** modal (see [Manage Secrets](#manage-secrets)).
  * **SSH**: Requires a secret containing a private key. The private key must be unencrypted. The public key is optional.
* **Helm Authentication**: Authentication method for any Helm chart registry referenced by the repository. Configure in the same way as **Git Authentication**.
* **Helm URL Regex**: An optional regular expression to match Helm repository URLs that require the configured Helm authentication.
* **TLS Certificate Verification**: Controls how TLS certificates are validated when connecting to the repository. Select one of the following.
  * **A Valid Certificate**: Requires a valid, trusted TLS certificate (recommended).
  * **Skip TLS Verification**: Disables certificate verification. Use only in controlled environments.
  * **Specify Additional Certificate**: Accepts a custom certificate authority. When selected, enter the PEM-encoded certificate in **Certificates**.

Select **Next** to continue.

### Target Details

Select the clusters that this repository should deploy to:

* **All Clusters**: Deploys to every cluster in the selected project, including clusters created later.
* **Cluster**: Deploys to a specific individual cluster. A list of available clusters appears. Hover over a cluster name until a checkbox appears, then select it.

Only clusters that run Kubernetes appear in the list. This means clusters created in ZEDEDA Edge Kubernetes Service mode and imported clusters. Changing the project resets the target, because the clusters on offer belong to the project.

Cluster groups can no longer be selected as a target. A repository that already targets a cluster group keeps that target when you edit it, but you cannot choose a group for a new repository.

Select **Next** to continue.

### Review & Add

Review the configuration summary. Select **Back** to make changes or select **Add** to create the repository. The service begins polling the repository within 60 seconds.

## Manage Secrets

Secrets store the credentials used to authenticate with Git and Helm repositories. For full details on creating and managing secrets, see [Kubernetes Secrets](https://zededa.mintlify.site/new-ui/infrastructure-services/edge-kubernetes/kubernetes-secrets.md).

You can also create a secret inline while configuring a repository: select **Add Secret** next to an authentication field to open the **Add Secret** modal, enter the credentials, and select **Save**. The new secret is immediately available to select in the current repository form.

## View Repository Status

The **GitOps Repos** page displays all repositories in a table with the following columns: State, Name, Repo, Target, Cluster Ready, and Age.

The **State** column shows the current sync state. To view full details, select a repository name to open the detail page.

The detail page has the following tabs:

* **Status**: Shows per-resource deployment state, sync conditions, and recent events. Resources are listed with their Kind, Name, Namespace, and Status. Conditions show Type, Status, Message, and Last Transition time. Events show Type, Reason, Message, and Timestamp.
* **Info**: Shows all repository configuration fields including authentication settings, the tracked branch or pinned commit, path, and target details. When the repository is pinned to a commit, the page header shows **Commit** instead of **Branch**.
* **YAML**: Shows the raw resource definition.

### State reference

| State | Meaning |
| - | - |
| Ready | All resources are deployed and in sync. |
| GitPolling | The agent is checking the repository for changes. |
| Out Of Sync | The repository has changes not yet applied to the cluster. |
| Active | The repository is being actively processed. |
| Wait Applied | Resources are queued for application. |
| Error Applied | An error occurred during the last apply operation. |
| Error | A general error state. |
| Reconciling | The agent is reconciling the desired state with the actual cluster state. |
| Stalled | Reconciliation has stalled. |
| Pending | The repository is waiting to be processed. |
| Modified | Resources have been modified outside of GitOps. |
| Downloading | The agent is downloading repository contents. |
| Updating | Resources are being updated. |
| Accepted | The repository configuration has been accepted. |
| Missing | Expected resources are not present on the cluster. |
| Orphaned | Resources exist on the cluster but are no longer defined in the repository. |
| Unknown | The state cannot be determined. |
| Not Ready | The repository is not ready. |

## Configure a GitOps Repository

To update a repository's configuration, select **Configure Git repository** from the row action menu in the repository list, or select **Configure Git repository** in the detail page header. A configuration dialog opens with the existing values populated, including the **Pin to** selection. You can change the pin between **None**, **Branch**, and **Commit** in this dialog.

## Delete a GitOps Repository

To delete a repository:

1. On the **GitOps Repos** page, open the row action menu for the repository.
2. Select **Delete Git repository**.
3. Confirm the deletion.

> [!WARNING]
>
> Deleting a repository removes all applications it deployed from the target clusters. This action cannot be undone.

## Next Steps

> [card] [Manage Kubernetes Secrets](https://zededa.mintlify.site/new-ui/infrastructure-services/edge-kubernetes/kubernetes-secrets.md)
>
> Create SSH or HTTP credentials for authenticating with private GitOps repositories.

> [card] [GitOps fleet.yaml Configuration](https://zededa.mintlify.site/new-ui/infrastructure-services/edge-kubernetes/gitops-fleet-yaml-examples.md)
>
> Customize per-cluster Helm deployments with fleet.yaml configuration examples.

> [card] [Manage Cluster Groupings](https://zededa.mintlify.site/new-ui/infrastructure-services/edge-kubernetes/manage-kubernetes-cluster-groupings.md)
>
> Organize clusters into groups to view and manage them as a single unit.
