Sufficient visibility into cloud infrastructure failures โ live AWS topology + Terraform drift in one CLI.
Project description
๐ฌ sudiviz
X-ray vision for your cloud infrastructure
sudiviz visualizes your live AWS infrastructure as an interactive graph. Auto-detects misconfigurations, unhealthy targets, and orphan resources โ then fixes them with one command.
๐ Zero AI tokens | ๐ธ Zero cost | ๐ Pure Python
๐ฆ Quick Start
pip install 'sudiviz[all]'
# Diagnose your infrastructure
sudiviz diagnose
# Interactive web visualization
sudiviz graph --output web --open
# Auto-fix issues
sudiviz fix --apply
Auth: Uses standard boto3 credentials (
~/.aws/credentials, env vars, SSO, or instance profile)
โจ Features
| Feature | Description |
|---|---|
| Live Topology | Real-time graph of ALB โ Target Groups โ EC2 โ Security Groups |
| Health Detection | Unhealthy targets, failing health checks, orphan resources |
| Auto-Fix | One-click remediation with sudiviz fix --apply |
| Traffic Animation | Visualize request flow with animated pulses |
| Health Heatmaps | Color-code infrastructure by health status |
| Dark/Light Mode | Toggle theme in web UI |
| Cluster Grouping | Group resources by service type (Load Balancers, ECS, Security, etc.) |
| Terraform Drift | Compare live AWS vs Terraform state |
| Multi-Service | ALB, EC2, ECS, EKS, RDS, Lambda, S3, Security Groups |
๐จ Visualization Modes
Terminal
sudiviz diagnose --region us-east-1
TUI (Interactive Terminal)
sudiviz tui
Web (Cytoscape.js)
sudiviz graph --output web --port 8000 --open
PNG Export
sudiviz graph --output png --file topology.png
๐ง Auto-Fix
sudiviz fix # Preview fixes (dry-run)
sudiviz fix --apply # Apply all fixes
sudiviz fix 1 --apply # Apply specific fix
sudiviz fix --apply --force # Include destructive operations
Supported fixes:
- Security group missing ingress rules
- S3 public access / encryption
- RDS public accessibility
- Orphan target groups (with
--force) - Unused security groups (with
--force)
๐ Terraform Drift
terraform show -json > tfstate.json
sudiviz drift --tfstate tfstate.json
๐ CI Integration
# Fail CI on critical issues
sudiviz diagnose --json | jq '.diagnosis.fixes[] | select(.severity=="critical")'
# Drift detection gate
sudiviz drift --tfstate tfstate.json --json
| Exit Code | Meaning |
|---|---|
0 |
No issues |
1 |
Drift detected |
2 |
Critical issues found |
๐ธ More Screenshots
Click to expand
Terminal TUI
Diagnose Output
Auto-Fix Preview
Traffic Flow Animation (Dark Mode)
Health Heatmap
Cluster Grouping (Dark Mode)
๐ Comparison
| Feature | sudiviz | Hava.io | Cloudcraft |
|---|---|---|---|
| Live data | โ | โ | โ |
| Auto-fix | โ | โ | โ |
| Traffic animation | โ | โ | โ |
| Health heatmaps | โ | โ | โ |
| Cluster grouping | โ | โ | โ |
| Terraform drift | โ | โ | โ |
| Orphan detection | โ | โ | โ |
| Free & open source | โ MIT | $29/mo | $49/mo |
๐ IAM Permissions
Read-only (sudiviz diagnose):
ReadOnlyAccessAWS managed policy
Write (sudiviz fix --apply):
AmazonEC2FullAccessElasticLoadBalancingFullAccessAmazonS3FullAccessAmazonRDSFullAccess
๐ Documentation
AWS Services Discovered
| Service | What's collected |
|---|---|
| ALB / NLB | Load balancers, listeners, rules |
| Target Groups | Health status per target |
| EC2 | State, IPs, security groups |
| Security Groups | Ingress/egress rules |
| ECS | Clusters, services, task counts |
| EKS | Clusters, node groups |
| RDS | Instances, encryption, public access |
| Lambda | Functions, VPC config |
| S3 | Buckets, encryption, public access |
Diagnostic Rules
| Check | Severity |
|---|---|
| Unhealthy targets | critical |
| SG missing port from ALB | critical |
| S3 public access open | critical |
| RDS publicly accessible | warning |
| Storage not encrypted | warning |
| Orphan target group | warning |
| Unused security group | info |
Architecture
sudiviz/
โโโ cli.py # Typer commands
โโโ tui.py # Textual TUI
โโโ web.py # FastAPI + WebSocket
โโโ discovery/ # AWS discovery (boto3)
โโโ graph/ # NetworkX + analyzers
โโโ remediation/ # Auto-fix engine
โโโ web_templates/ # Cytoscape.js UI
๐ License
MIT โ see LICENSE
Built by @pydevsg
Project details
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 sudiviz-0.5.0.tar.gz.
File metadata
- Download URL: sudiviz-0.5.0.tar.gz
- Upload date:
- Size: 63.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cebedd4189c4bb909e47bc0cccffc397ce9019834985a498dd7794dccfdad220
|
|
| MD5 |
9db6a583b8d4345b7a4e7bc83db825be
|
|
| BLAKE2b-256 |
678db48db26cb98e72f54605ab8fb9ad179e4e4da6f848f2b8f3fe92cd63a229
|
Provenance
The following attestation bundles were made for sudiviz-0.5.0.tar.gz:
Publisher:
publish.yml on pydevsg/sudiviz
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sudiviz-0.5.0.tar.gz -
Subject digest:
cebedd4189c4bb909e47bc0cccffc397ce9019834985a498dd7794dccfdad220 - Sigstore transparency entry: 1551144088
- Sigstore integration time:
-
Permalink:
pydevsg/sudiviz@c85a53f1474a5410aa9d08c32a2d6bfaa8c07075 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/pydevsg
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c85a53f1474a5410aa9d08c32a2d6bfaa8c07075 -
Trigger Event:
push
-
Statement type:
File details
Details for the file sudiviz-0.5.0-py3-none-any.whl.
File metadata
- Download URL: sudiviz-0.5.0-py3-none-any.whl
- Upload date:
- Size: 65.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39f2aeaa85703e81f11495e82832c7d7dc4db68be6e8a256bd8dd3cbfe64e00e
|
|
| MD5 |
0dcef9bcdbe39dac2b2045d007554aa3
|
|
| BLAKE2b-256 |
f74a9f52491ef23f1eb70467c5cc39e232f0082cf6c5023d762c1d9aa72e2cad
|
Provenance
The following attestation bundles were made for sudiviz-0.5.0-py3-none-any.whl:
Publisher:
publish.yml on pydevsg/sudiviz
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sudiviz-0.5.0-py3-none-any.whl -
Subject digest:
39f2aeaa85703e81f11495e82832c7d7dc4db68be6e8a256bd8dd3cbfe64e00e - Sigstore transparency entry: 1551144253
- Sigstore integration time:
-
Permalink:
pydevsg/sudiviz@c85a53f1474a5410aa9d08c32a2d6bfaa8c07075 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/pydevsg
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c85a53f1474a5410aa9d08c32a2d6bfaa8c07075 -
Trigger Event:
push
-
Statement type: