gitlab-org/gitlab
Apps
The runnable units that make up the GitLab installation. Each is a separate process (or process group) with its own entry point and concerns.
| App | Language | Lives in | Page |
|---|---|---|---|
| Rails monolith (Puma) | Ruby on Rails | app/, lib/, ee/app/, ee/lib/ |
Rails monolith |
| Sidekiq cluster | Ruby | app/workers/, sidekiq_cluster/ |
Sidekiq cluster |
| Workhorse | Go | workhorse/ |
Workhorse |
| Frontend | Vue.js / TypeScript | app/assets/javascripts/, frontend_islands/ |
Frontend |
| Action Cable | Ruby (Rails) | app/channels/, ee/app/channels/ |
Action Cable |
| QA / E2E framework | Ruby | qa/ |
QA framework |
| Metrics server | Ruby | metrics_server/ |
Metrics server |
Other binaries that ship alongside this repo (Gitaly, GitLab Shell, GitLab Pages, KAS, Zoekt) live in their own repos. This wiki documents how the monolith talks to them; for their internals see their dedicated repos.
Process topology
graph LR
NGINX[NGINX / LB]
Workhorse[gitlab-workhorse]
Puma[Puma - Rails]
Sidekiq[sidekiq-cluster]
Cable[Action Cable]
Metrics[metrics-server]
Gitaly[Gitaly process]
Shell[gitlab-shell]
Pages[gitlab-pages]
NGINX --> Workhorse
NGINX --> Pages
Workhorse --> Puma
Workhorse --> Cable
Puma --> Gitaly
Sidekiq --> Gitaly
Shell --> Puma
Puma -. exposes :prom .-> MetricsIn Omnibus packages and the GDK, all of these are managed by runit / foreman-like supervision. In Helm-chart-based deployments each runs as a Kubernetes Deployment.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.