---
title: Git Provider
slug: edgemanager/git-provider
docTags: 
createdAt: 2025-12-18T19:46:44.276Z
---

Litmus Edge Manager (LEM) supports native integration with Git providers such as GitHub, GitLab and Azure DevOps. This integration enables organizations to manage Edge templates using standard Git workflows, ensuring version control, auditability, and centralized governance.

The Git Provider integration allows LEM to:&#x20;

- Store and version template files in a Git repository
- Automatically synchronize template updates of Edge devices to Git
- Track template changes across companies and projects
- Maintain a consistent configuration baseline across distributed deployments

![](https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/Bu01wJ2HxZb-PbP99pfOH_image.png)

This diagram shows how template synchronization occurs from edge devices to LEM and to your Git provider.

:::hint{type="info"}
The current implementation operates in one-directional manner and is intended primarily for audit and tracking purposes.&#x20;
:::

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/jwAq0GUdKSiCZFoFvf4yw_git-integration-feature-2.png" size="80" width="22326" height="11239" position="flex-start" showCaption="false"}

## Prerequisites

The configuration requires:

- Administrative access to Litmus Edge Manager Admin Console
- A valid SSH GIT URL (for example, git\@github.com\:org/repo.git)
- An ED25519/RSA-SHA2-512 public key generated by LEM
- A deploy key with write access added to the Git repository

## Synchronization Model

LEM supports the following synchronization mechanisms:

- Synchronization on a schedule:
  - Hourly
  - Daily at 00:00 UTC
  - Weekly on Monday at 00:00 UTC
  - Monthly on the 1st at 00:00 UTC
- Synchronization triggered during edge device backup
- Synchronization that you triggered manually

## Error Handling and Validation

LEM performs validation and provides actionable error messages for:

- Valid SSH keys
- Whether the repository is accessible
- Write permissions
- Template schema compliance
- Detecting sync conflicts

## Security Considerations

- Authentication uses ED25519/RSA-SHA2-512 SSH keys
- Deploy keys are scoped to a single repository
- Write access is required in the Git Provider for LEM to commit changes
- No credentials beyond the SSH keypair are stored

## Best Practices

- Use a dedicated private repository for Edge templates
- Restrict deploy key permissions to the minimum required scope
- Apply branch protection rules for production environments
- Use scheduled sync for predictable updates
- Use manual sync for validation and testing

# Configuration workflow

The following workflow shows how you set up Git Provider.

:::hint{type="info"}
**Note:** Also see the [How to Setup Git Provider Integration](docId\:lrbAPAbg_jke-fuTAXF-j).
:::

**Setup a GitHub repository**

1. In GitHub, create a new private repository.
2. Record the repository name.

**Configure Git Provider in LEM**

1. In LEM, navigate to **Integration&#x20;**>**&#x20;Git Provider**.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/5_q9UpyHFiV5ihsLqsuO6_image.png" size="80" width="1354" height="523" position="flex-start" showCaption="false" indent="2"}

2. Select the Git provider (GitHub, GitLab, or Azure DevOps).
3. Enter the **SSH URL&#x20;**&#x66;rom the private repository that you created with the following syntax: `git@github.com:github-name/github-repo.git`
4. Copy the generated **SSH Public Key**.
5. Add the public key to the repository. For example, in GitHub add the public key to the Git repository as a **deploy key&#x20;**&#x77;ith `write access`.
6. In LEM, validate access to the repository. Confirm that the `Repository access successful` message displays.
7. Save the configuration.

**Configure Project Tracking**

You set tracking at the project level.

1. Navigate to **Edge Devices&#x20;**>**&#x20;Edge Git Integration**.
2. Set the synchronization frequency: hourly, daily, weekly, or monthly. Syncs occur at 00:00 (UTC) daily, weekly on Mondays, and monthly on the first day of the month.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/8Ea7h6HQttDxgOFaXT2oD_image.png" size="80" width="1917" height="673" position="flex-start" showCaption="false" indent="2"}

3. For each company and project, choose when syncs occur. To set syncs:
   - Based on the synchronization frequency that you set, select **Track**.
   - When the device is backed up, select **Sync on Backup**.
4. To run the synchronization manually, select **Run Manual Sync&#x20;**&#x66;rom the **Actions** menu.

Configure integration for edge devices at the company and project level in **Project Tracking**. View the number edge devices and synced devices, last sync and commit ID, and integration status. The following columns display in **Project Tracking**:

| **Field**           | **Description**                                                                                                   |
| ------------------- | ----------------------------------------------------------------------------------------------------------------- |
| Company&#xD;        | Company to which the devices belongs                                                                              |
| Project&#xD;        | Project to which the devices belong                                                                               |
| Track               | Enable to push changes to Git based on the selected synchronization frequency                                     |
| Sync on Backup&#xD; | Enable to push changes to Git when the device is backed up                                                        |
| Edge Devices&#xD;   | Number of devices in the project                                                                                  |
| Synced Devices&#xD; | Number of devices that have been synchronized                                                                     |
| Last Sync Time&#xD; | The last time that a synchronization was performed from all edge devices in the current project to LEM            |
| Last Commit&#xD;    | Git commit hash which is a unique identifier representing a specific commit in a Git repository                   |
| Status              | Status of the integration: `NEW`, `WAITING`, `RUNNING`, `CANCELING`, `SUCCESS`, `ERROR`, or `CANCEL`              |
| Action&#xD;         | Options to&#xD; enable or disable tracking on the predefined schedule, on device backup, or to run a manual synch |





