GKG Core Development Workstream
**Parent Epic**: [GitLab Knowledge Graph Second Iteration - GKG as a Service](https://gitlab.com/groups/gitlab-org/-/epics/19744)
---
## Summary
This epic tracks the broader application development workstreams for the GitLab Knowledge Graph (GKG) service. GKG is a unified data layer that exposes SDLC data (issues, MRs, pipelines, security findings) and code metadata through a Graph Query Engine built on ClickHouse.
The Knowledge Graph service consists of two primary components delivered as a unified binary:
- **`gkg-webserver`**: Serves web traffic requests, executes MCP tool calls, builds graph queries, and communicates with Rails for authorization
- **`gkg-indexer`**: Performs SDLC ETL indexing and code indexing by converting normalized tables into property graph tables
This epic focuses on the application logic and does not cover infrastructure deployment (see [GitLab Knowledge Graph Infra / Delivery gitlab-org/rust&36](https://gitlab.com/groups/gitlab-org/rust/-/epics/36)) or observability (see [GitLab Knowledge Graph Observability gitlab-org/rust&25](https://gitlab.com/groups/gitlab-org/rust/-/epics/25)).
---
## Work Stream Leads
| Work Stream | Lead | GitLab Username |
|-------------|------|-----------------|
| **SDLC Indexing** | Jean-Gabriel Doyon | @jgdoyon1 |
| **Code Indexing** | Jean-Gabriel Doyon | @jgdoyon1 |
| **Graph Engine & Query Planner** | Michael Usachenko | @michaelusa |
| **Schema Management** | Jean-Gabriel Doyon | @jgdoyon1 |
| **Cluster Configuration and Deployment** | Bohdan Parkhomchuk | @bohdanpk |
| **CI/CD & Developer Experience** | Bohdan Parkhomchuk | @bohdanpk |
| **Web Server (API + Auth)** | Angelo Rivera | @michaelangeloio |
| **Rails Integration** | Angelo Rivera | @michaelangeloio |
| **Data Model** | KG Team (collaborative) | \- |
---
## Architecture Overview
```mermaid
flowchart TD
subgraph Query ["Query Engine"]
A[Adapter Layer<br/>JSON Tools / Cypher Parser]
PL[Planner<br/>SQL Generation]
V[Validator<br/>Grammar-based AST Check]
end
subgraph Auth ["Authorization Layers"]
L1[Layer 1: org_id Filter]
L2[Layer 2: traversal_ids Filter]
L3[Layer 3: Rails Redaction]
end
subgraph Clients
MCP[MCP/REST Client]
Rails[GitLab Rails]
end
CH[(ClickHouse)]
MCP --> Rails
Rails --> A
A --> PL
PL --> V
V --> L1
L1 --> L2
L2 --> CH
CH --> L3
L3 --> Rails
Rails --> MCP
```
## References
- **Design Document**: [MR !16424](https://gitlab.com/gitlab-com/content-sites/handbook/-/merge_requests/16424)
- **Engineering Executive Summary**: [Google Doc](https://docs.google.com/document/d/193lERl7XvQX2aipqTW8v8QBV4UmHYUPehTK7mgOnQUI/edit)
- **Product Documentation**: [Google Doc](https://docs.google.com/document/d/1EN5Y7IxMgEZIUZESCxcKxICHOGL_xx1wPsBXPHdw7gE/edit)
- **Database Selection Research**: [Epic gitlab-org/rust&31](https://gitlab.com/groups/gitlab-org/rust/-/epics/31)
- **First Iteration Epic**: [Knowledge Graph (First Iteration)](https://gitlab.com/groups/gitlab-org/-/epics/17514)
epic