> For the complete documentation index, see [llms.txt](https://developer.harness.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.harness.io/continuous-delivery/use-gitops/get-started/gitops-architecture.md).

# Harness GitOps Agent architecture

This topic describes the Harness GitOps architecture.

Harness GitOps has two components:

* Harness GitOps service: A REST-based service to manage the GitOps deployment.
* Harness GitOps Agent: The worker process responsible for GitOps tasks along with Argo CD components.

Harness GitOps supports **Argo CD** as the only GitOps reconciler. Flux is not supported.

![High-level architecture diagram showing Harness GitOps service in SaaS connecting to GitOps Agent in customer environment, with the Agent managing Git repositories and Kubernetes clusters](https://3694223630-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fy1JhZ4oKIppwY7d5AhPj%2Fuploads%2Fgit-blob-44f0f482ec70bf76aca915d52bd702283111ffc9%2Fgitops-agent-architecture.png?alt=media)

The following sections describe the Harness GitOps Agent architecture.

Harness GitOps Agent has four components:

* GitOps Agent: Harness component
* Application controller: Argo CD component
* Repo server: Argo CD component
* Redis cache: Argo CD component

#### GitOps Agent <a href="#gitops-agent" id="gitops-agent"></a>

GitOps Agent is a Harness owned and managed worker process responsible for:

* Executing GitOps tasks along with the Argo CD Components. Tasks are CRUD events triggered from the UI like creating, reading, updating, or deleting a connection to the repository from where Harness reads the manifests or to a cluster where you want to deploy.
* Interacting with Argo CD components to fulfill these tasks. For example, interacting with the repo server for fetching the branches released from a repository, or with the application controller when a user creates an application.
* Serving as an entry point to the customer’s premises.
* Updating Harness SaaS with GitOps-related details by establishing an outbound connection to the Harness GitOps service.

#### Application controller <a href="#application-controller" id="application-controller"></a>

The application controller is an Argo CD component responsible for:

* Continuously monitoring the applications.
* Comparing the live state against the desired state.
* Detecting application state and optionally taking corrective action.

#### Repo server <a href="#repo-server" id="repo-server"></a>

The repo server is an Argo CD component responsible for:

* Downloading manifests from the repository.
* Generating and returning the Kubernetes manifests when asked by the application controller.

#### Redis cache <a href="#redis-cache" id="redis-cache"></a>

Redis cache is an Argo CD component responsible for caching data required by the repo server.

![Detailed GitOps Agent architecture diagram showing the four components: GitOps Agent, Application Controller, Repo Server, and Redis Cache, with their interactions and connections to Git repositories, Kubernetes clusters, and Harness SaaS](https://3694223630-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fy1JhZ4oKIppwY7d5AhPj%2Fuploads%2Fgit-blob-998e43380ccea663e02bcb0b7c8902956eb6d7b1%2Fgitops-agent-architecture1.png?alt=media)

{% hint style="info" %}
**IMPORTANT**

ConfigMaps and secrets store details such as cluster and repository information directly on the cluster where the Agent is deployed. Harness SaaS does not store credentials. Everything is stored in the customer environment with the Agent.
{% endhint %}

{% @harness-feedback/feedback %}
