CloudWire
AWS infrastructure visualization tool — scan your account and explore service dependencies as an interactive graph, directly in your browser.
If CloudWire saves you time, a GitHub star helps others find it.
No data leaves your system. AWS credentials never leave your terminal. The graph is built locally using your existing credential chain (~/.aws/credentials, aws sso login, saml2aws, aws-vault — all work out of the box).
Quick start
# Install
pip install cloudwire
# Launch (opens http://localhost:8080 automatically)
cloudwire
# Target a specific profile and region
cloudwire --profile staging --region us-east-1
Tip: Prefer isolated installs? Use
pipx install cloudwireinstead.
Requirements: Python 3.9+ and valid AWS credentials configured locally.
On first load, select the services you want to scan from the top bar and click Scan. The graph populates in real time as resources are discovered.
Why CloudWire?
Tools like Rover, Terravision, and Inframap visualize infrastructure from Terraform state files. CloudWire takes a different approach:
- Live scanning, not plan-file parsing — CloudWire queries your AWS account directly via boto3, discovering resources and relationships in real time. No Terraform required. You can also import
.tfstate/.tffiles if you prefer. - Relationship inference — edges aren't just "resource A references resource B." CloudWire resolves IAM policies, environment variable references, event triggers, and VPC containment to surface connections that don't appear in any state file.
- Runs entirely local — single Python process, no database, no cloud backend, no signup. Your AWS credentials never leave your machine.
Key features
- Interactive graph — dark-themed canvas with animated data flow, pan/zoom, and SVG export
- 24 AWS services with dedicated scanners, icons, colors, and relationship inference
- Real edges — API integrations, event triggers, IAM policy inference, env var references, VPC containment
- VPC topology — subnets, security groups, IGWs, NAT GWs, route tables with AZ grouping and internet exposure detection
- Tag-based scanning — discover and scan resources by AWS tags
- Terraform import — upload
.tfstateor.tffiles to visualize without AWS credentials - Analysis tools — blast radius, shortest path, architecture summary, pattern detection
- Three layout modes — Circular, Flow, Swimlane — switchable from the toolbar
- Permission-aware — missing IAM policies surfaced clearly, never blocks the scan
Required IAM permissions
CloudWire is read-only. All operations use List*, Describe*, and Get* API actions only — no write access required.
A minimal IAM policy is documented in docs/USAGE.md. The recommended starting point:
arn:aws:iam::aws:policy/ReadOnlyAccess
If you use a more restrictive policy, CloudWire will scan what it can and clearly report which services were denied — it never fails silently.
Supported services
| Service | Scanner |
|---|---|
| API Gateway | Dedicated — REST + HTTP APIs, multi-service integrations, Cognito authorizers |
| Lambda | Dedicated — functions, event source mappings, env var references, IAM policy inference |
| SQS | Dedicated — queues, attributes, dead letter queue edges |
| SNS | Dedicated — topics and subscriptions |
| EventBridge | Dedicated — rules and targets |
| DynamoDB | Dedicated — tables, streams, global table replicas |
| EC2 | Dedicated — instances, VPC, subnet, security group, instance profile edges |
| ECS | Dedicated — clusters, services, task definitions, load balancer edges |
| S3 | Dedicated — buckets and Lambda notification edges |
| RDS | Dedicated — DB instances and clusters |
| Step Functions | Dedicated |
| Kinesis | Dedicated |
| IAM | Dedicated — roles with full policy resolution |
| Cognito | Dedicated — user pools |
| CloudFront | Dedicated — distributions, S3/API GW/ELB origins, Lambda@Edge |
| Route 53 | Dedicated — hosted zones, record sets, alias target edges |
| ElastiCache | Dedicated — cache clusters |
| Redshift | Dedicated — clusters |
| Glue | Dedicated — jobs, crawlers, triggers |
| AppSync | Dedicated — GraphQL APIs |
| Secrets Manager | Dedicated |
| KMS | Dedicated |
| VPC Network | Dedicated — VPCs, subnets, security groups, IGWs, NAT GWs, route tables |
| ELB | Discovered via CloudFront, Route 53, ECS edges |
| Everything else | Generic (tagged resources only) |
How it works
CloudWire is a Python CLI (FastAPI backend) that serves a pre-compiled React frontend. The backend scans AWS via boto3 and builds a networkx graph. The frontend visualizes it using a custom SVG canvas engine. No database, no cloud dependency — everything runs in a single process on your machine.
Contributing
We welcome contributions! See CONTRIBUTING.md for setup instructions, project structure, code style, and PR guidelines.
git clone https://github.com/Himanshu-370/cloudwire
cd cloudwire
make dev # starts backend + frontend in parallel
Links
- Architecture deep dive
- Full feature list
- Usage & setup guide
- Changelog
- Release guide for maintainers
- Security policy
License
MIT — see LICENSE.
Metadata
Release files for cloudwire 0.2.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| cloudwire-0.2.13.tar.gz | 160.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cloudwire-0.2.13-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 340.6 kB
Release files / cloudwire-0.2.13.tar.gz
| Download URL | cloudwire-0.2.13.tar.gz |
|---|---|
| Size | 160.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c7a21132b15c7e3e2556a94f0ca915e39b0802d1766fb6e67903dc771bf5725d
|
|
BLAKE2b-256 checksum How to use checksums |
75a9dd1c574d9e33c223d67e819116bba0a258c0a2c1dae34f1a69f14fe35cb1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.1.0 CPython/3.12.13
|
Release files / cloudwire-0.2.13-py3-none-any.whl
| Download URL | cloudwire-0.2.13-py3-none-any.whl |
|---|---|
| Size | 179.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
508ceddd43f280e3662ce281013af34120a9ebcc9bc7a840d78d274216c8c20a
|
|
BLAKE2b-256 checksum How to use checksums |
7feffc32d3e1eae2a4c4137e23e5cbdadc1a6cf7a8d2596e685245b25e66640f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.1.0 CPython/3.12.13
|
Security for cloudwire 0.2.13
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.