Plexavo
Plexavo is an open-source cloud security tool that audits AWS accounts
for real-world misconfigurations. It runs entirely with your own local
AWS credentials, the same way you'd run aws s3 ls, so nothing about
your account is ever handed to anyone else. Each scan produces a 0-100
security score and a plain-English report: what's wrong, what an
attacker would actually do with it, and the exact command to fix it.
Detection is pure Python/boto3, never AI. Claude only rewrites already-found technical findings into something a non-security founder can read, and it's entirely optional. See Cost.
What it checks
31 checks across 6 categories, run against real AWS accounts:
- IAM: privilege escalation paths, wildcard admin, cross-account trust, root usage, dormant credentials
- Network: security groups and RDS instances exposed to the internet
- Storage: public S3 buckets, via ACLs, bucket policies, or missing Block Public Access
- Encryption: unencrypted EBS volumes, RDS instances, S3 buckets
- Logging: CloudTrail coverage and encryption, GuardDuty status
- Usage: permissions granted but never used, roles nobody has assumed in 90+ days
See the docs/*-TEST-MATRIX.md files for exactly how each check was
verified.
Installation
Every path below installs Plexavo into its own isolated environment.
macOS & Linux
curl -LsSf https://astral.sh/uv/install.sh | sh # skip if you have uv
uv tool install plexavo
Prefer pipx? pipx install plexavo works the
same way.
Windows
uv/pipx still work, but the launcher they put on your PATH is
unsigned, and Windows Smart App Control blocks it. Run Plexavo through
Python instead, two options:
Option 1, uv (recommended)
uv tool install plexavo
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
if (!(Test-Path $PROFILE)) { New-Item -ItemType File -Path $PROFILE -Force }
Add-Content $PROFILE 'function plexavo { & "$env:APPDATA\uv\tools\plexavo\Scripts\python.exe" -m plexavo @args }'
Open a new terminal. plexavo now works exactly like it does on
macOS/Linux, routed through uv's signed Python instead of the blocked
launcher.
Option 2, plain venv
py -m venv plexavo-venv
.\plexavo-venv\Scripts\Activate.ps1
python -m pip install plexavo
python -m plexavo
Use python -m for everything here too. The venv's own pip.exe and
plexavo.exe are unsigned as well, only python.exe is signed.
AI narration (optional)
Want each finding rewritten as a full narrative? Install "plexavo[ai]"
instead of plexavo, and set ANTHROPIC_API_KEY. See Cost.
Using Plexavo
Run it with no arguments and it walks you through everything: picking an AWS profile, choosing HTML or PDF, then scanning and showing your score with every finding.
plexavo # macOS/Linux, and Windows Option 1
python -m plexavo # Windows Option 2
The report
Reports are generated as HTML, PDF, or both. Every finding gets a free,
template-based fix by default, no key, no cost. Full AI-written
narration is offered automatically only when an ANTHROPIC_API_KEY is
detected, see Cost.
Severity, confidence, and evidence are always shown as separate signals. A low-confidence Critical never reads the same as a high-confidence Medium.
Cost
Detection and the free templates always cost nothing. Live AI only runs
with --explain, using your own ANTHROPIC_API_KEY in your own
Anthropic account. Plexavo never sees your key and never calls the API
without it. A full scan with --explain typically costs a few cents.
Contributing
git clone https://github.com/plexavo/plexavo.git
cd plexavo
uv pip install -e .
See CONTRIBUTING.md for the pattern used to add a
new check.
Security
Found a vulnerability in the tool itself, not a misconfiguration in your
own AWS account (that's the tool working correctly)? See
SECURITY.md for a private reporting path.
License
AGPL-3.0, see LICENSE. Use, run, and modify it freely. If
you run a modified version as a hosted service, you're required to
publish those modifications too.
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 plexavo-0.2.6.tar.gz.
File metadata
- Download URL: plexavo-0.2.6.tar.gz
- Upload date:
- Size: 1.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d2f2dd466576bc22f4769f3ecd034a7f0655c8ea18e01c2f216d6d026bd935b5
|
|
| MD5 |
abda2727834e363fa60b17e3bca7d600
|
|
| BLAKE2b-256 |
43b468df13011529a38b74c9cb876d5b048b7b5ca94ba71e7537d04a9229edec
|
Provenance
The following attestation bundles were made for plexavo-0.2.6.tar.gz:
Publisher:
publish.yml on plexavo/Plexavo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
plexavo-0.2.6.tar.gz -
Subject digest:
d2f2dd466576bc22f4769f3ecd034a7f0655c8ea18e01c2f216d6d026bd935b5 - Sigstore transparency entry: 2694424507
- Sigstore integration time:
-
Permalink:
plexavo/Plexavo@ee389c78901c5c53abb6d1aa8d30edb83ee3c78e -
Branch / Tag:
refs/tags/v0.2.6 - Owner: https://github.com/plexavo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ee389c78901c5c53abb6d1aa8d30edb83ee3c78e -
Trigger Event:
push
-
Statement type:
File details
Details for the file plexavo-0.2.6-py3-none-any.whl.
File metadata
- Download URL: plexavo-0.2.6-py3-none-any.whl
- Upload date:
- Size: 1.6 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1488382152c1de74d943f5f89bd169bba1cc9b67010a58a31533fe8dbfa1ce03
|
|
| MD5 |
ae3826cb42fad6020ad33f4cd4c9f9a0
|
|
| BLAKE2b-256 |
0a342fb15f3f60f55c93ce331fc830a4d8c467930f793a3d1cf1c77bb44da45e
|
Provenance
The following attestation bundles were made for plexavo-0.2.6-py3-none-any.whl:
Publisher:
publish.yml on plexavo/Plexavo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
plexavo-0.2.6-py3-none-any.whl -
Subject digest:
1488382152c1de74d943f5f89bd169bba1cc9b67010a58a31533fe8dbfa1ce03 - Sigstore transparency entry: 2694424540
- Sigstore integration time:
-
Permalink:
plexavo/Plexavo@ee389c78901c5c53abb6d1aa8d30edb83ee3c78e -
Branch / Tag:
refs/tags/v0.2.6 - Owner: https://github.com/plexavo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ee389c78901c5c53abb6d1aa8d30edb83ee3c78e -
Trigger Event:
push
-
Statement type: