Trace cross-file dependency blast radius with GitLab Orbit, before you break things.
Project description
Blast Radius Analyzer
Trace cross-file dependencies before you break things.
Every developer has shipped a change that broke something downstream — a function signature change that killed an import three projects away, a moved constant that crashed a service you forgot depended on it. CI caught it hours later.
Blast Radius Analyzer fixes this. It's a GitLab Duo custom agent powered by GitLab Orbit's knowledge graph that maps every dependency chain before you change code.
Mention @blast-radius with a file path in any issue or MR comment, and the agent traverses Orbit's dependency graph to show you:
- Direct impact — every file that imports your changed code
- Transitive impact — every file that depends on those dependents
- Project impact — which projects are in the blast radius
- Risk score — Low/Medium/High/Critical
Demo
Developer: @blast-radius src/auth/tokens.py -- checkToken function
@blast-radius:
DIRECT IMPACT (3 files):
- src/api/middleware.ts:47 — imports checkToken
- src/graphql/resolvers.ts:112 — calls checkToken via auth middleware
- src/webhooks/stripe.ts:89 — validates webhook tokens
TRANSITIVE IMPACT (12 files):
- src/api/routes/*.ts — all routes use middleware
- src/graphql/schema/*.ts — schema files import resolvers
- 3 downstream microservices import the webhook handler
PROJECT IMPACT: core-api, billing-service, notifications-service
RISK SCORE: HIGH — 15 dependents across 3 projects
Recommended: notify @backend-team before landing this change.
How It Works
Blast Radius Analyzer is a custom agent on the GitLab Duo Agent Platform. It uses GitLab Orbit's knowledge graph to traverse code dependencies:
- Developer mentions
@blast-radius <file-path>in a GitLab issue or MR - Agent queries Orbit's
query_graphto find allgl_definitionnodes for the target file - Traverses
gl_referenceedges backwards to find all callers and importers - Recursively traverses to find transitive dependents
- Assembles a risk report and posts it as a comment
Tech Stack
- GitLab Duo Agent Platform — custom agent hosting and invocation
- GitLab Orbit — knowledge graph of the codebase (definitions, references, relationships)
- Agent Skills — reusable skill files following the Agent Skills spec
- Orbit CLI — local fallback using
orbit sqlfor projects without Orbit Remote
Quick Start
Prerequisites
- GitLab account with access to a group that has Orbit enabled (or Orbit CLI installed locally)
- A project with the Blast Radius Analyzer agent enabled
Setup
- Enable the agent in your GitLab project: Project → AI → Agents → Enable "Blast Radius Analyzer"
- Use in any issue or MR: Comment
@blast-radius src/components/Auth.tsx - Read the report: Agent posts a dependency analysis as a comment
Run Locally with Orbit CLI
The repo ships a real local engine (blast_radius/) that wraps the Orbit CLI
and implements cycle-safe, depth-limited traversal with deterministic risk
scoring. It has zero third-party runtime dependencies.
# 1. Install the local engine
pip install -e .
# 2. Install the Orbit CLI from a pinned release (do NOT pipe curl to bash from
# a mutable branch). Use the official package or a versioned release asset:
# https://gitlab.com/gitlab-org/orbit/knowledge-graph/-/releases
# e.g. download the release for your platform, verify its checksum, then:
# chmod +x orbit && sudo mv orbit /usr/local/bin/
# Install Orbit CLI (v1.x)
curl -fsSL "https://gitlab.com/gitlab-org/orbit/knowledge-graph/-/raw/v1.0.0/install.sh" | bash
# 3. Index your project
orbit index /path/to/your/project
# 4. Analyze blast radius
blast-radius src/auth/tokens.py --function checkToken
# or, fully offline against a graph fixture (no Orbit needed):
blast-radius src/auth/tokens.py --graph tests/fixtures/sample_graph.json --json
# Analyze blast radius
./bin/blast-radius-local.sh src/auth/tokens.py 3
# Or query manually
orbit sql "SELECT t2.name FROM gl_definition t1 JOIN gl_reference ON t1.id = gl_reference.target_id JOIN gl_definition t2 ON gl_reference.source_id = t2.id WHERE t1.path LIKE '%auth.py'"
Configuration is read from .env (see .env.example): Orbit mode, CLI path,
max traversal depth, risk thresholds, and exclude patterns.
Repository Structure
blast-radius-agent/
├── README.md # This file
├── AGENTS.md # Context for AI agents working on this project
├── agent.yml # Deployable GitLab Duo agent manifest
├── pyproject.toml # Package metadata + `blast-radius` entrypoint
├── blast_radius/ # Local engine (Orbit CLI wrapper, traversal, risk)
│ ├── cli.py # `blast-radius` / `python -m blast_radius`
│ ├── engine.py # Cycle-safe, depth-limited traversal
│ ├── orbit_client.py # Orbit CLI + in-memory fixture clients
│ ├── risk.py # Deterministic risk classification
│ └── config.py # .env-driven configuration
├── skills/
│ └── blast-radius/
│ └── SKILL.md # Reusable blast-radius agent skill
├── docs/
│ ├── ARCHITECTURE.md # Architecture diagrams and flow
│ ├── ORBIT_CONTRACT.md # Orbit/Duo tool contract (SQL vs Cypher modes)
│ └── SUBMISSION.md # Devpost submission content
├── scripts/
│ └── validate_skill.py # CI validation for skill/manifest/fixture
├── tests/ # pytest suite + graph fixture
├── demo/
│ ├── demo_script.md # 3-minute video script
│ └── demo_terminal.html # Terminal SIMULATION for demo video
└── assets/
└── thumbnail.png # Architecture diagram thumbnail
License
MIT — see LICENSE
Built for the GitLab Transcend Hackathon — Showcase Track.
Deadline: June 24, 2026 @ 2pm EDT.
Devpost: gitlab-transcend.devpost.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file blast_radius_agent-0.1.0.tar.gz.
File metadata
- Download URL: blast_radius_agent-0.1.0.tar.gz
- Upload date:
- Size: 17.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93566bfac97b129596e447ecd598c77a88cdace49f170a870674f53a8e5d348b
|
|
| MD5 |
4313c6f3a566d5d10b5bbd06ab12a86a
|
|
| BLAKE2b-256 |
0c8b4abf0bb7be1c9e8418cc77111a23699269c5a9e0eed91dcf333987b5b526
|
File details
Details for the file blast_radius_agent-0.1.0-py3-none-any.whl.
File metadata
- Download URL: blast_radius_agent-0.1.0-py3-none-any.whl
- Upload date:
- Size: 15.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e2c93d233000dbc988f527ac45926d12e872a93391184067f6db50005896b7f
|
|
| MD5 |
ec2e29ad54f4ed24f165226f3c04b4ec
|
|
| BLAKE2b-256 |
ef0ec3c32044582bb314afcec8d6ca10f6c57dbe1dcd97b0c3e1c0eb9d6c37b0
|