Install
openclaw skills install service-dependency-mapperAuto-discover and map service dependencies from code, configs, and runtime data. Generate dependency graphs, identify critical paths, find single points of f...
openclaw skills install service-dependency-mapperMap your service dependencies before an outage teaches you what they are. Auto-discover dependencies from code imports, config files, network traffic, and runtime traces — then generate dependency graphs, identify critical paths, and assess blast radius.
Use when: "map our services", "what depends on what", "service dependency graph", "blast radius analysis", "single point of failure", "what breaks if X goes down", "architecture visualization", or during incident planning.
discover — Auto-Detect Service Dependencies# Find service URLs in code
rg "https?://[a-z][-a-z0-9]*(\.[a-z][-a-z0-9]*)*[:/]" \
--type-not binary -g '!node_modules' -g '!vendor' -g '!*.test.*' 2>/dev/null | \
grep -v "example\.com\|localhost\|127\.0\.\|schema\.org" | head -30
# Find service names in Docker Compose
rg "depends_on|links:|container_name:" docker-compose*.yml 2>/dev/null
# Find service references in Kubernetes
rg "serviceName:|host:|backend:" k8s/ manifests/ helm/ 2>/dev/null
# Find database/cache connections
rg "DATABASE_URL|REDIS_URL|MONGO_URI|POSTGRES_|MYSQL_|AMQP_URL|KAFKA_BROKER" \
--type-not binary -g '!node_modules' -g '!vendor' 2>/dev/null
# Find message queue producers/consumers
rg "publish\(|subscribe\(|produce\(|consume\(|\.queue\(|channel\." \
--type-not binary -g '!node_modules' -g '!vendor' 2>/dev/null | head -20
# Find gRPC/REST client instantiations
rg "GrpcClient|HttpClient|axios\.create|fetch\(.*service|\.NewClient" \
--type-not binary -g '!node_modules' -g '!vendor' 2>/dev/null
# Kubernetes services
kubectl get services -A -o json | python3 -c "
import json, sys
svcs = json.load(sys.stdin)['items']
for svc in svcs:
ns = svc['metadata']['namespace']
name = svc['metadata']['name']
stype = svc['spec']['type']
ports = [str(p['port']) for p in svc['spec'].get('ports', [])]
print(f'{ns}/{name} ({stype}) ports:{','.join(ports)}')
"
# Service mesh (Istio/Linkerd) — actual traffic dependencies
kubectl get destinationrules -A 2>/dev/null
istioctl proxy-config cluster <pod-name> 2>/dev/null | grep -v "BlackHole\|PassthroughCluster"
dependencies = {
'api-gateway': {
'depends_on': ['auth-service', 'user-service', 'order-service'],
'type': 'sync', # sync HTTP calls
'criticality': 'critical',
},
'order-service': {
'depends_on': ['postgres', 'payment-service', 'kafka'],
'type': 'mixed',
'criticality': 'critical',
},
'notification-service': {
'depends_on': ['kafka', 'smtp-relay', 'redis'],
'type': 'async',
'criticality': 'low',
},
}
# Service Dependency Map
## Graph (text representation)
[External Users] │ ▼ [api-gateway] ─sync──► [auth-service] ─sync──► [postgres-auth] │ │ │ ├─sync──► [user-service] ─sync──► [postgres-users] │ │ └─async─► [redis-cache] │ │ │ └─sync──► [order-service] ─sync──► [postgres-orders] │ │ └─sync──► [payment-service] ─► [Stripe API] │ │ │ └─async──► [kafka] │ │ │ ├──► [notification-service] ─► [SMTP] │ └──► [analytics-service] ─► [ClickHouse]
## Critical Path
api-gateway → order-service → postgres-orders
(Failure here = orders cannot be placed)
## Single Points of Failure
1. 🔴 **postgres-orders** — no replica, single instance
2. 🔴 **api-gateway** — single entry point, no fallback
3. 🟡 **kafka** — 3 brokers but no multi-AZ
4. 🟡 **Stripe API** — external dependency, no fallback payment provider
## Blast Radius Analysis
| If this fails... | These break... | Users affected |
|-------------------|---------------|----------------|
| postgres-orders | order-service, api-gateway (partial) | 100% orders |
| auth-service | All authenticated endpoints | 100% users |
| kafka | notifications, analytics | 0% (graceful degradation) |
| redis-cache | user-service (slow, not down) | 0% (cache miss only) |
| Stripe API | payment-service, orders | 100% new orders |
blast-radius — Analyze Impact of Service FailureFor a given service, trace all dependents (recursively):
visualize — Generate DiagramOutput dependency graph in:
health — Assess Architecture HealthScore the architecture based on: