# devtron-labs/devtron architecture

> Architecture diagram of the GitHub repository devtron-labs/devtron, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/devtron-labs/devtron
- Repository: https://github.com/devtron-labs/devtron

## Overview

Devtron is a Kubernetes management and delivery platform. Users access a dashboard/API to manage clusters and Helm, ArgoCD, and Flux applications; platform workflows also configure and trigger CI/CD pipelines, then track deployment status. The graph includes those documented product areas and sampled internal services, repositories, and authorization components. Several dashboard capabilities are documented but their implementation was not sampled, so those subsystem links rely on the README rather than inferred source calls.

Main entry points: [`api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go`](https://github.com/devtron-labs/devtron/blob/main/api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go) (Pipeline configuration API), [`pkg/appStore/installedApp/service/FullMode/deployment/FullModeDeploymentService.go`](https://github.com/devtron-labs/devtron/blob/main/pkg/appStore/installedApp/service/FullMode/deployment/FullModeDeploymentService.go) (Full-mode deployment), [`internal/sql/repository/pipelineConfig/PipelineRepository.go`](https://github.com/devtron-labs/devtron/blob/main/internal/sql/repository/pipelineConfig/PipelineRepository.go) (Pipeline repository), [`internal/sql/repository/chartConfig/PipelineOverrideRepository.go`](https://github.com/devtron-labs/devtron/blob/main/internal/sql/repository/chartConfig/PipelineOverrideRepository.go) (Pipeline overrides)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["API and access"]
  node_dashboard["Kubernetes dashboard"]
  node_pipeline_config_api["Pipeline configuration API"]
  node_pipeline_history_api["Pipeline history API"]
  node_pipeline_trigger_api["Pipeline trigger API"]
  node_helm_api["Helm app API"]
  node_cluster_api["Cluster and resource API"]
  node_auth_api["User authentication API<br/>[UserAuthHandler.go]"]
end

subgraph group_delivery["Application delivery"]
  node_pipeline_stages["Pipeline stages<br/>[pipelineStage.go]"]
  node_pipeline_model["Application pipeline model<br/>[app.go]"]
  node_plugin_service["Global plugins"]
  node_deployment_history["Pipeline history service"]
  node_status_service["Deployment status timeline"]
end

subgraph group_helm["Helm app management"]
  node_helm_deployment["Full-mode deployment"]
  node_flux_deployment["Flux deployment"]
  node_installed_apps["Installed app services"]
  node_argocd["ArgoCD integration<br/>[Application.go]"]
  node_flux["FluxCD integration"]
end

subgraph group_identity["Identity and authorization"]
  node_auth_service["User auth service<br/>[UserAuthService.go]"]
  node_auth_repository["User auth repository"]
  node_rbac["Casbin RBAC<br/>[rbac.go]"]
end

subgraph group_data["Persistence and configuration"]
  node_pipeline_repository["Pipeline repository"]
  node_ci_repository["CI pipeline repository"]
  node_override_repository["Pipeline overrides"]
  node_listing_query["App listing queries"]
  node_timeline_repository["Timeline repository"]
  node_scoped_variables["Scoped variables"]
  node_sql_store[("SQL database")]
end

node_operator(("Platform user"))
node_kubernetes["Kubernetes clusters"]

node_operator -->|"uses"| node_dashboard
node_dashboard -->|"manages Helm apps"| node_helm_api
node_dashboard -->|"browses resources"| node_cluster_api
node_dashboard -->|"authenticates users"| node_auth_api
node_dashboard -->|"views GitOps apps"| node_argocd
node_dashboard -->|"views GitOps apps"| node_flux
node_pipeline_config_api -->|"uses model"| node_pipeline_model
node_pipeline_config_api -->|"uses repository"| node_pipeline_repository
node_pipeline_config_api -->|"uses repository"| node_override_repository
node_pipeline_trigger_api -->|"uses model"| node_pipeline_model
node_pipeline_history_api -->|"reads history"| node_deployment_history
node_pipeline_trigger_api -->|"checks access"| node_rbac
node_pipeline_config_api -->|"checks access"| node_rbac
node_pipeline_stages -->|"uses repository"| node_pipeline_repository
node_pipeline_stages -->|"uses plugins"| node_plugin_service
node_deployment_history -->|"uses repository"| node_pipeline_repository
node_status_service -->|"reads and writes"| node_timeline_repository
node_helm_deployment -->|"registers apps"| node_argocd
node_helm_deployment -->|"updates status"| node_status_service
node_helm_deployment -->|"uses services"| node_installed_apps
node_flux_deployment -->|"deploys through"| node_flux
node_auth_api -->|"delegates"| node_auth_service
node_auth_service -->|"uses repository"| node_auth_repository
node_auth_repository -->|"queries"| node_sql_store
node_pipeline_repository -->|"reads and writes"| node_sql_store
node_override_repository -->|"queries"| node_sql_store
node_timeline_repository -.->|"stores timelines"| node_sql_store
node_ci_repository -.->|"stores pipeline data"| node_sql_store
node_listing_query -.->|"builds SQL queries"| node_sql_store
node_scoped_variables -->|"uses repository"| node_override_repository
node_helm_api -.->|"delegates deployment"| node_helm_deployment
node_cluster_api -.->|"manages resources"| node_kubernetes

click node_pipeline_config_api "https://github.com/devtron-labs/devtron/blob/main/api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go"
click node_pipeline_history_api "https://github.com/devtron-labs/devtron/blob/main/api/restHandler/app/pipeline/history/PipelineHistoryRestHandler.go"
click node_pipeline_trigger_api "https://github.com/devtron-labs/devtron/blob/main/api/restHandler/app/pipeline/trigger/PipelineTriggerRestHandler.go"
click node_helm_api "https://github.com/devtron-labs/devtron/blob/main/api/helm-app/HelmAppRestHandler.go"
click node_cluster_api "https://github.com/devtron-labs/devtron/blob/main/api/cluster/ClusterRestHandler.go"
click node_auth_api "https://github.com/devtron-labs/devtron/blob/main/api/auth/user/UserAuthHandler.go"
click node_pipeline_stages "https://github.com/devtron-labs/devtron/blob/main/pkg/pipeline/bean/pipelineStage.go"
click node_pipeline_model "https://github.com/devtron-labs/devtron/blob/main/pkg/bean/app.go"
click node_plugin_service "https://github.com/devtron-labs/devtron/blob/main/pkg/plugin/GlobalPluginService.go"
click node_deployment_history "https://github.com/devtron-labs/devtron/blob/main/pkg/pipeline/history/PipelineStrategyHistoryService.go"
click node_status_service "https://github.com/devtron-labs/devtron/blob/main/pkg/app/status/PipelineStatusTimelineService.go"
click node_helm_deployment "https://github.com/devtron-labs/devtron/blob/main/pkg/appStore/installedApp/service/FullMode/deployment/FullModeDeploymentService.go"
click node_flux_deployment "https://github.com/devtron-labs/devtron/blob/main/pkg/appStore/installedApp/service/FullMode/deployment/FullModeFluxDeploymentService.go"
click node_installed_apps "https://github.com/devtron-labs/devtron/tree/main/pkg/appStore/installedApp/service"
click node_argocd "https://github.com/devtron-labs/devtron/blob/main/client/argocdServer/application/Application.go"
click node_flux "https://github.com/devtron-labs/devtron/blob/main/client/fluxcd/fluxDeploymentService.go"
click node_auth_service "https://github.com/devtron-labs/devtron/blob/main/pkg/auth/user/UserAuthService.go"
click node_auth_repository "https://github.com/devtron-labs/devtron/blob/main/pkg/auth/user/repository/UserAuthRepository.go"
click node_rbac "https://github.com/devtron-labs/devtron/blob/main/pkg/auth/authorisation/casbin/rbac.go"
click node_pipeline_repository "https://github.com/devtron-labs/devtron/blob/main/internal/sql/repository/pipelineConfig/PipelineRepository.go"
click node_ci_repository "https://github.com/devtron-labs/devtron/blob/main/internal/sql/repository/pipelineConfig/CiPipelineRepository.go"
click node_override_repository "https://github.com/devtron-labs/devtron/blob/main/internal/sql/repository/chartConfig/PipelineOverrideRepository.go"
click node_listing_query "https://github.com/devtron-labs/devtron/blob/main/internal/sql/repository/helper/AppListingRepositoryQueryBuilder.go"
click node_timeline_repository "https://github.com/devtron-labs/devtron/blob/main/internal/sql/repository/pipelineConfig/PipelineStatusTimelineRepository.go"
click node_scoped_variables "https://github.com/devtron-labs/devtron/blob/main/pkg/variables/ScopedVariableCMCSManager.go"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_dashboard,node_pipeline_config_api,node_pipeline_history_api,node_pipeline_trigger_api,node_helm_api,node_cluster_api,node_auth_api,node_operator toneBlue
class node_pipeline_stages,node_pipeline_model,node_plugin_service,node_deployment_history,node_status_service toneAmber
class node_helm_deployment,node_flux_deployment,node_installed_apps,node_argocd,node_flux toneMint
class node_auth_service,node_auth_repository,node_rbac toneRose
class node_pipeline_repository,node_ci_repository,node_override_repository,node_listing_query,node_timeline_repository,node_scoped_variables,node_sql_store,node_kubernetes toneIndigo
```

## Components

### API and access

- **Kubernetes dashboard**
- [Pipeline configuration API](https://github.com/devtron-labs/devtron/blob/main/api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go): `api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go`
- [Pipeline history API](https://github.com/devtron-labs/devtron/blob/main/api/restHandler/app/pipeline/history/PipelineHistoryRestHandler.go): `api/restHandler/app/pipeline/history/PipelineHistoryRestHandler.go`
- [Pipeline trigger API](https://github.com/devtron-labs/devtron/blob/main/api/restHandler/app/pipeline/trigger/PipelineTriggerRestHandler.go): `api/restHandler/app/pipeline/trigger/PipelineTriggerRestHandler.go`
- [Helm app API](https://github.com/devtron-labs/devtron/blob/main/api/helm-app/HelmAppRestHandler.go): `api/helm-app/HelmAppRestHandler.go`
- [Cluster and resource API](https://github.com/devtron-labs/devtron/blob/main/api/cluster/ClusterRestHandler.go): `api/cluster/ClusterRestHandler.go`
- [User authentication API](https://github.com/devtron-labs/devtron/blob/main/api/auth/user/UserAuthHandler.go): `api/auth/user/UserAuthHandler.go`

### Application delivery

- [Pipeline stages](https://github.com/devtron-labs/devtron/blob/main/pkg/pipeline/bean/pipelineStage.go): `pkg/pipeline/bean/pipelineStage.go`
- [Application pipeline model](https://github.com/devtron-labs/devtron/blob/main/pkg/bean/app.go): `pkg/bean/app.go`
- [Global plugins](https://github.com/devtron-labs/devtron/blob/main/pkg/plugin/GlobalPluginService.go): `pkg/plugin/GlobalPluginService.go`
- [Pipeline history service](https://github.com/devtron-labs/devtron/blob/main/pkg/pipeline/history/PipelineStrategyHistoryService.go): `pkg/pipeline/history/PipelineStrategyHistoryService.go`
- [Deployment status timeline](https://github.com/devtron-labs/devtron/blob/main/pkg/app/status/PipelineStatusTimelineService.go): `pkg/app/status/PipelineStatusTimelineService.go`

### Helm app management

- [Full-mode deployment](https://github.com/devtron-labs/devtron/blob/main/pkg/appStore/installedApp/service/FullMode/deployment/FullModeDeploymentService.go): `pkg/appStore/installedApp/service/FullMode/deployment/FullModeDeploymentService.go`
- [Flux deployment](https://github.com/devtron-labs/devtron/blob/main/pkg/appStore/installedApp/service/FullMode/deployment/FullModeFluxDeploymentService.go): `pkg/appStore/installedApp/service/FullMode/deployment/FullModeFluxDeploymentService.go`
- [Installed app services](https://github.com/devtron-labs/devtron/tree/main/pkg/appStore/installedApp/service): `pkg/appStore/installedApp/service`
- [ArgoCD integration](https://github.com/devtron-labs/devtron/blob/main/client/argocdServer/application/Application.go): `client/argocdServer/application/Application.go`
- [FluxCD integration](https://github.com/devtron-labs/devtron/blob/main/client/fluxcd/fluxDeploymentService.go): `client/fluxcd/fluxDeploymentService.go`

### Identity and authorization

- [User auth service](https://github.com/devtron-labs/devtron/blob/main/pkg/auth/user/UserAuthService.go): `pkg/auth/user/UserAuthService.go`
- [User auth repository](https://github.com/devtron-labs/devtron/blob/main/pkg/auth/user/repository/UserAuthRepository.go): `pkg/auth/user/repository/UserAuthRepository.go`
- [Casbin RBAC](https://github.com/devtron-labs/devtron/blob/main/pkg/auth/authorisation/casbin/rbac.go): `pkg/auth/authorisation/casbin/rbac.go`

### Persistence and configuration

- [Pipeline repository](https://github.com/devtron-labs/devtron/blob/main/internal/sql/repository/pipelineConfig/PipelineRepository.go): `internal/sql/repository/pipelineConfig/PipelineRepository.go`
- [CI pipeline repository](https://github.com/devtron-labs/devtron/blob/main/internal/sql/repository/pipelineConfig/CiPipelineRepository.go): `internal/sql/repository/pipelineConfig/CiPipelineRepository.go`
- [Pipeline overrides](https://github.com/devtron-labs/devtron/blob/main/internal/sql/repository/chartConfig/PipelineOverrideRepository.go): `internal/sql/repository/chartConfig/PipelineOverrideRepository.go`
- [App listing queries](https://github.com/devtron-labs/devtron/blob/main/internal/sql/repository/helper/AppListingRepositoryQueryBuilder.go): `internal/sql/repository/helper/AppListingRepositoryQueryBuilder.go`
- [Timeline repository](https://github.com/devtron-labs/devtron/blob/main/internal/sql/repository/pipelineConfig/PipelineStatusTimelineRepository.go): `internal/sql/repository/pipelineConfig/PipelineStatusTimelineRepository.go`
- [Scoped variables](https://github.com/devtron-labs/devtron/blob/main/pkg/variables/ScopedVariableCMCSManager.go): `pkg/variables/ScopedVariableCMCSManager.go`
- **SQL database**

### Other components

- **Platform user**
- **Kubernetes clusters**

## Connections

- Platform user → Kubernetes dashboard: uses
- Kubernetes dashboard → Helm app API: manages Helm apps
- Kubernetes dashboard → Cluster and resource API: browses resources
- Kubernetes dashboard → User authentication API: authenticates users
- Kubernetes dashboard → ArgoCD integration: views GitOps apps
- Kubernetes dashboard → FluxCD integration: views GitOps apps
- Pipeline configuration API → Application pipeline model: uses model (evidence: `api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go`)
- Pipeline configuration API → Pipeline repository: uses repository (evidence: `api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go`)
- Pipeline configuration API → Pipeline overrides: uses repository (evidence: `api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go`)
- Pipeline trigger API → Application pipeline model: uses model (evidence: `api/restHandler/app/pipeline/trigger/PipelineTriggerRestHandler.go`)
- Pipeline history API → Pipeline history service: reads history (evidence: `api/restHandler/app/pipeline/history/PipelineHistoryRestHandler.go`)
- Pipeline trigger API → Casbin RBAC: checks access (evidence: `api/restHandler/app/pipeline/trigger/PipelineTriggerRestHandler.go`)
- Pipeline configuration API → Casbin RBAC: checks access (evidence: `api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go`)
- Pipeline stages → Pipeline repository: uses repository (evidence: `pkg/pipeline/bean/pipelineStage.go`)
- Pipeline stages → Global plugins: uses plugins (evidence: `pkg/pipeline/bean/pipelineStage.go`)
- Pipeline history service → Pipeline repository: uses repository (evidence: `pkg/pipeline/history/PipelineStrategyHistoryService.go`)
- Deployment status timeline → Timeline repository: reads and writes (evidence: `pkg/app/status/PipelineStatusTimelineService.go`)
- Full-mode deployment → ArgoCD integration: registers apps (evidence: `pkg/appStore/installedApp/service/FullMode/deployment/FullModeDeploymentService.go`)
- Full-mode deployment → Deployment status timeline: updates status (evidence: `pkg/appStore/installedApp/service/FullMode/deployment/FullModeDeploymentService.go`)
- Full-mode deployment → Installed app services: uses services (evidence: `pkg/appStore/installedApp/service/FullMode/deployment/FullModeDeploymentService.go`)
- Flux deployment → FluxCD integration: deploys through (evidence: `pkg/appStore/installedApp/service/FullMode/deployment/FullModeFluxDeploymentService.go`)
- User authentication API → User auth service: delegates (evidence: `api/auth/user/UserAuthHandler.go`)
- User auth service → User auth repository: uses repository (evidence: `pkg/auth/user/UserAuthService.go`)
- User auth repository → SQL database: queries (evidence: `pkg/auth/user/repository/UserAuthRepository.go`)
- Pipeline repository → SQL database: reads and writes (evidence: `internal/sql/repository/pipelineConfig/PipelineRepository.go`)
- Pipeline overrides → SQL database: queries (evidence: `internal/sql/repository/chartConfig/PipelineOverrideRepository.go`)
- Timeline repository → SQL database: stores timelines
- CI pipeline repository → SQL database: stores pipeline data
- App listing queries → SQL database: builds SQL queries
- Scoped variables → Pipeline overrides: uses repository (evidence: `pkg/variables/ScopedVariableCMCSManager.go`)
- Helm app API → Full-mode deployment: delegates deployment
- Cluster and resource API → Kubernetes clusters: manages resources
