🔍
Instant Root-Cause Analysis
Gemini 2.5 Flash reads your pipeline logs and pinpoints the exact failure in seconds — not just "build failed".
🔧
Diff-Ready Fix Proposals
Returns unified diffs with high/medium/low confidence, ready to apply with git apply.
💬
Auto MR Comments
Posts the diagnosis directly on the failing merge request in GitLab — zero manual copy-paste.
⚡
Dual-MCP Architecture
Gemini drives two MCP servers simultaneously: the official GitLab MCP + a purpose-built pipeline MCP.
Live Demo
Try a pre-loaded scenario or enter any public GitLab project. Gemini fetches the logs and returns a structured diagnosis. Read-only — no MR comment will be posted.
⏳ Fetching logs & running Gemini analysis… (15–45 s for live pipelines)
Architecture
GitLab Pipeline Fails
│
▼ webhook POST /webhook/gitlab (X-Gitlab-Token validated)
PipelineGuard / FastAPI (Cloud Run — scale-to-zero)
│
▼ agentic tool-call loop (≤15 iterations, Gemini decides when done)
Gemini 2.5 Flash ◄──► MCP Router
├── gl_* → Official GitLab MCP Server (StreamableHTTP)
└── * → pipelineguard.mcp_server (stdio subprocess)
list_pipelines · get_pipeline_jobs
get_job_log · find_mr_by_sha
create_merge_request_note
│
▼ structured, schema-validated DiagnosisReport
├─ root_cause (exact failure reason, not "build failed")
├─ failure_category (env_var / dependency / flaky / config / code)
├─ fix_proposals (unified diffs, high/med/low confidence)
└─ mr_comment_url (posted on the MR automatically)
API Endpoints
GET
/
This page
GET
/health
Health check → {"status":"ok","backend":"vertex"}
POST
/demo
Read-only diagnosis — {"project":"org/repo","pipeline_id":123} or {"scenario":"env_var"}
GET
/demo?project=org/repo
Same diagnosis via query params — curl-friendly
POST
/webhook/gitlab
GitLab Pipeline webhook receiver (auto-diagnoses + posts MR comment)
GET
/docs
Interactive OpenAPI (Swagger UI)
GET
/pricing
Pricing & subscription management
Built With
Gemini 2.5 Flash
Vertex AI
Official GitLab MCP Server
FastAPI
python-gitlab
Google Cloud Run
google-genai SDK
FastMCP