gitlab-org/gitlab
GitLab
GitLab is an open-core, single-application DevSecOps platform that combines Git repository hosting, code review, CI/CD, container and package registries, security scanning, observability, and project management in one Ruby on Rails monolith. The canonical source lives at gitlab-org/gitlab on GitLab.com, and the same code powers both self-managed installations and the GitLab.com SaaS service. Most of the tree is MIT-licensed; files under ee/ are proprietary but source-available.
This wiki documents the canonical monorepo at version 19.0.0-pre (default branch: master). It is intended for engineers contributing to GitLab itself, not end users administering an installation. For user-facing documentation, see https://docs.gitlab.com.
What's in the box
The repository contains:
- A Rails 7.2 web application (
app/,lib/,config/) that serves the web UI, REST API, and GraphQL API. - A Vue.js / TypeScript frontend in
app/assets/javascripts/plus standalone "frontend islands" infrontend_islands/andee/frontend_islands/. - The Enterprise Edition tree under
ee/(proprietary features: Geo, advanced security, Duo, audit events, etc.). - Workhorse — a Go reverse proxy that handles long-running and resource-intensive HTTP traffic in front of Puma.
- The Sidekiq cluster for background jobs, with ~170 worker namespaces.
- A QA/end-to-end test framework in
qa/. - 26 in-tree Ruby gems under
gems/extracted from the monolith. - Database schema for PostgreSQL 16+ in
db/structure.sql(~2.8 MB DDL) and migrations indb/migrate/anddb/post_migrate/.
Companion repositories (not in this repo)
GitLab is delivered as a constellation of related projects whose versions are pinned here via *_VERSION files at the repo root:
- Gitaly — gRPC service for Git storage.
- GitLab Shell — handles SSH push/pull.
- GitLab Pages — static site hosting daemon.
- GitLab KAS — Kubernetes agent server.
- GitLab Zoekt — code search indexer.
- GitLab Elasticsearch Indexer — Elasticsearch indexer.
The pinned versions live in GITALY_SERVER_VERSION, GITLAB_SHELL_VERSION, GITLAB_PAGES_VERSION, GITLAB_KAS_VERSION, GITLAB_ZOEKT_VERSION, GITLAB_ELASTICSEARCH_INDEXER_VERSION, etc.
Where to start in this wiki
- New contributors should read Architecture and Getting started, then How to contribute.
- Backend engineers should browse Systems and Features.
- Frontend engineers should jump to Frontend.
- Database engineers should read Database.
- API consumers should read API.
Editions
Three editions ship from this tree:
- Community Edition (CE) — MIT-licensed, excludes
ee/at build time via theFOSS_ONLY=1flag. - Enterprise Edition (EE) — adds the
ee/tree under a proprietary "GitLab Source Available" license. - JiHu Edition (JH) — a downstream fork tailored for the Chinese market, hosted separately at https://about.gitlab.cn/.
Most code in this repository is shared between CE and EE; the build pipeline strips ee/ to produce CE artifacts.
Software stack
| Layer | Technology |
|---|---|
| Application server | Puma (Ruby on Rails 7.2.3 on Ruby 3.3.10) |
| Reverse proxy | Workhorse (Go) |
| Background jobs | Sidekiq |
| Database | PostgreSQL 16.5+ (multi-database: main + ci + sec + jh) |
| Cache and queues | Redis 6.0+ |
| OLAP analytics | ClickHouse |
| Search | Elasticsearch / Zoekt (code search) |
| Frontend | Vue 2/3, GraphQL via Apollo, Vite + Webpack |
| Object storage | S3-compatible (Fog) |
| Git RPC | Gitaly (gRPC) |
| CI runners | GitLab Runner (separate repo) |
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.