Live dependency graph
The OpenTelemetry org, as a dependency graph.
105 repos scanned 25 July 2026, 583 parsed edges — but 425 of those are bare git URLs, not declared dependencies. Raise Min confidence to 0.8 and watch them drop away. What survives: 158 declared edges, topped by shared-workflows, a CI repo that 22 others import.
The same scan, as a table
The most depended-on repositories in open-telemetry
Riftmap scanned the
open-telemetry
GitHub organisation between 28 June and 25 July 2026 and parsed the dependency edges its manifests
declare — go.mod requires, Dockerfile FROM lines, Terraform
source blocks, Helm chart dependencies, GitHub Actions uses:
references. Across 80 active repositories (25 archived, excluded), 133 distinct repo-to-repo dependencies survived the confidence floor,
and 19 repositories (23.8%) turned out to be a
dependency of at least one sibling — an edge that is invisible from inside the repository you
are changing. Same method, same bar, and directly comparable to the nine-org scan, where the pooled
figure across 1,297 repositories was 24.7%.
| # | Repository | Direct dependents | All declared references | Declared as |
|---|---|---|---|---|
| 1 | open-telemetry/shared-workflows | 22 | 22 | github actions reusable workflow |
| 2 | open-telemetry/opentelemetry-go | 14 | 17 | go.mod require |
| 3 | open-telemetry/opentelemetry-go-instrumentation | 13 | 15 | go.mod require |
| 4 | open-telemetry/opentelemetry-proto-go | 13 | 14 | go.mod require |
| 5 | open-telemetry/opentelemetry-go-build-tools | 11 | 12 | go.mod require |
| 6 | open-telemetry/opentelemetry-go-contrib | 10 | 15 | go.mod require |
| 7 | open-telemetry/opentelemetry-collector | 8 | 16 | go.mod require |
| 8 | open-telemetry/opentelemetry-python | 8 | 9 | Python requirement, python pyproject dep |
| 9 | open-telemetry/opentelemetry-js | 7 | 8 | npm package |
| 10 | open-telemetry/weaver | 6 | 15 | github actions action |
| 11 | open-telemetry/opentelemetry-python-contrib | 6 | 7 | Python requirement, github actions reusable workflow, python pyproject dep |
| 12 | open-telemetry/opentelemetry-js-contrib | 5 | 8 | npm package |
| 13 | open-telemetry/opentelemetry-collector-contrib | 2 | 19 | go.mod require |
| 14 | open-telemetry/opamp-go | 2 | 5 | go.mod require |
| 15 | open-telemetry/sig-profiling | 2 | 2 | go.mod require |
| 16 | open-telemetry/opentelemetry-java-instrumentation | 1 | 6 | Dockerfile FROM |
| 17 | open-telemetry/otel-arrow | 1 | 5 | go.mod require |
| 18 | open-telemetry/opentelemetry-ebpf-profiler | 1 | 3 | go.mod require |
| 19 | open-telemetry/opentelemetry-php | 1 | 2 | Dockerfile FROM |
Reading the two columns.Direct dependents counts distinct active sibling repositories at or above Riftmap's 0.8 confidence floor — the same bar impact mode applies, and the one every figure in the nine-org scan is computed on. All declared references holds that scope and drops only the floor, so the gap between the columns isolates exactly one thing: how much of this org's coupling is declared outright versus inferred. Across the org the floor discards 328 of 461 repo-to-repo pairs. Multiple manifests pointing at the same repository count once. The graph above additionally draws archived repositories, so a node there can show more arrows than either column reports.
What the floor throws away here. A repository can look larger in the graph than
it reads in this table, and these are the ones where that gap is worth naming: open-telemetry/opentelemetry-specification loses 46 (bare git URL)
; open-telemetry/semantic-conventions loses 44 (bare git URL)
; open-telemetry/opentelemetry-proto loses 29 (bare git URL)
; open-telemetry/community loses 24 (bare git URL)
; open-telemetry/opentelemetry-collector-contrib loses 17 (Dockerfile FROM, bare git URL)
. What those references have in common is that they had to be inferred rather
than read: a bare git URL sitting in a shell script or a README is a text signal rather
than a declared dependency, and a bare image name has to be guessed back to the
repository that publishes it. Riftmap scores both below the floor and never counts them.
That is a deliberate choice about what the word "dependency" is allowed to mean, and it
costs this org its highest raw numbers.
Check it rather than trust it. Both columns are recomputable from the scan itself: every parsed reference as CSV — including the ones below the floor, each flagged — and the repository list with its archived flags and scan timestamps. Same export the nine-org scan publishes, per org.
See what your own org looks like.
The graph above is what you get back — interactive, file-level evidence, impact mode included. I'll sit down and look at a real cross-repo graph with you, live: a public org, or your own if you connect a read-only token. Or do it yourself: ~90 seconds to first scan, free for your whole org, up to 250 repos.
A 30-min video call with me. No pitch, no obligation.
Further reading
Cross-repo blast radius in nine public platform orgs: the most depended-on repo at Grafana isn't Grafana
Parsed cross-repo dependency edges across 1,297 repos in nine public platform orgs. One in four repos is load-bearing for a sibling. Top hub: 188 dependents.
Read the deeper dive