bronze · graphburn bronze

Sight across repos, not just one.

Forge is metalmind's cross-repo code graph. HTTP-route edges connect a caller in service A to its handler in service B — across language, framework, and repo boundaries — with provenance Claude can trust-grade.

01

Three edge tiers

OpenAPI specs on the metalmind shelf (never inside your repos), Java RestTemplate / WebClient / Feign callers, and URL string literals as an opt-in fallback. Each edge carries INFERRED_NAME, INFERRED_ROUTE, and INFERRED_URL_LITERAL provenance.

02

Symbol-aware navigation

symbolburn iron returns a symbol's neighbors — who calls it, what it calls, its module. renameburn steel drives a coordinated rename through Serena's LSP backend, across every repo in the forge.

03

Team-debug, primed

debugburn zinc hands a bug to the /team-debug skill with the code graph already loaded. The team agents start with context, not cold.

§ Walkthrough

One query. Two repos. One answer.

A caller in billing-svc; a handler in notif-svc. Native Claude has no concept of "the other service's code." Forge does.

forge — graph query
# add both repos to a forge group
$ metalmind forge add payments billing-svc notif-svc
2 repos · indexed in 6.2s
 
# query across both
$ metalmind graphburn bronze "how does payment-failed reach the user?" --forge payments
 
→ billing-svc/src/handlers/charge.ts:142
notifyClient.post('/notifications/payment-failed', ...)
[INFERRED_ROUTE] openapi-shelf/notif-svc-v3.yaml
 
→ notif-svc/internal/handlers/payment.go:38
router.POST("/notifications/payment-failed", h.OnFail)
→ pushes to user_inbox + email_queue
 
claude: The flow is: charge.ts catches the failure → posts to notif-svc…
§ Trust grades

Every inferred edge carries provenance.

tier 1 — strongest
openapi specs

Pulled from your ~/.metalmind/specs/ shelf. Routes match exactly; types are checked.

tier 2 — medium
framework callers

Java RestTemplate, WebClient, Feign clients with annotated routes. Strong enough for navigation; verify before refactor.

tier 3 — opt-in
url literals

String-literal URL matching as a last resort. Off by default; surfaces with explicit INFERRED_URL_LITERAL grade.

Ready to give Claude eyes across every repo?