Open-Source Wikis

/

GitLab

/

Apps

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 .-> Metrics

In 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.

Apps – GitLab wiki | Factory