Unified CLI for cost, security, waste, DR, lifecycle, drift, tagging, observability, quota, and network analysis on cloud infrastructure.
Project description
Kulshan
Free, open-source AWS audit CLI with no infrastructure mutation or remediation.
Kulshan scans your AWS account across ten audit dimensions and produces a unified scored report. Scanning and report generation are local-first by default.
Install
pip install kulshan # all platforms: macOS, Linux, Windows
Requires Python 3.9+. Works with the AWS credentials you already use (aws sts get-caller-identity).
Quick Start
kulshan doctor # Check AWS readiness (no cost, no writes)
kulshan report --quick # Quick scan (3 regions)
kulshan report -o report.html # Full HTML report
kulshan report --packs security,sweep # Free packs only ($0 AWS cost)
kulshan shell # Interactive REPL
What You Get
- Cost analysis — multi-method anomaly detection (z-score, IQR, MAD), RI/SP coverage, forecasting
- Security posture — 50+ checks across IAM, network, encryption, logging
- Waste detection — orphaned EBS, EIPs, snapshots, idle ALBs, NAT gateways
- DR readiness — backup coverage, Multi-AZ, single points of failure
- Lifecycle audit — EOL runtimes, expiring certs, stale AMIs
- IaC drift — CloudFormation drift detection, coverage gaps
- Tag compliance — untagged resources, cost attribution gaps
- Observability — alarm coverage, logging gaps, blind spots
- Quota headroom — service limits, scaling blockers
- Network topology — CIDR overlaps, route integrity, flow log coverage
Output formats: terminal (scored dashboard), JSON, HTML, SARIF, CSV.
Trust & Security
- No infrastructure mutation — no remediation or customer-resource changes
- Auditable permissions — 147 explicit actions, including non-mutating
DetectStackDrift - Local-first by default — no active telemetry implementation
- Explicit integrations — optional webhooks send data only when deliberately invoked
- Published IAM policy — inspect every action before granting access
- Open source — Apache 2.0, read every line of code on GitHub
- Sensitive-data masking — common identifiers are masked by default; review reports before sharing
AWS API Costs
- Cost pack: ~$0.20-0.40/run (Cost Explorer @ $0.01/request, billed by AWS)
- All other 9 packs: $0 (free-tier APIs only)
- Skip cost pack:
kulshan report --packs security,sweep,dr
About the Name
Kulshan is the Lummi name for the mountain known colonially as Mt. Baker — meaning "great white watcher." We acknowledge the Lummi and Nooksack peoples as the original namers of this mountain.
Built by
Mission FinOps — Mission, BC, Canada.
AI Agents
Kulshan works with Claude Code, Codex, Kiro, Cursor, and any agent that can run shell commands. See agent-pack/ for integration instructions.
License
Apache 2.0 — free and open source forever.
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 kulshan-0.1.0.tar.gz.
File metadata
- Download URL: kulshan-0.1.0.tar.gz
- Upload date:
- Size: 218.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
621c015b24b7ab92dc2522504534643637d98f8037de4b58615db01842942b35
|
|
| MD5 |
71524904da3e56d7648b0ad09433b923
|
|
| BLAKE2b-256 |
23f54934752be81b05a8a254f5c80485c2a72b674ee6ba09246c93c061b7b66b
|
Provenance
The following attestation bundles were made for kulshan-0.1.0.tar.gz:
Publisher:
publish.yml on azz-kikkr/kulshan
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kulshan-0.1.0.tar.gz -
Subject digest:
621c015b24b7ab92dc2522504534643637d98f8037de4b58615db01842942b35 - Sigstore transparency entry: 1845873708
- Sigstore integration time:
-
Permalink:
azz-kikkr/kulshan@8194e0a259e52f61c78427734232f9b76feda21d -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/azz-kikkr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8194e0a259e52f61c78427734232f9b76feda21d -
Trigger Event:
push
-
Statement type:
File details
Details for the file kulshan-0.1.0-py3-none-any.whl.
File metadata
- Download URL: kulshan-0.1.0-py3-none-any.whl
- Upload date:
- Size: 287.1 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 |
c4f56183efe53a0d0bea4d8201293cd90f91b69d0c8704a72d9e1caf7a697926
|
|
| MD5 |
428b6d8059e465dba331e0b0958d864f
|
|
| BLAKE2b-256 |
cde071114f01c7cb29b4eaecc9977d54a02e3ebfb5c36f0a709db433b827bad5
|
Provenance
The following attestation bundles were made for kulshan-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on azz-kikkr/kulshan
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kulshan-0.1.0-py3-none-any.whl -
Subject digest:
c4f56183efe53a0d0bea4d8201293cd90f91b69d0c8704a72d9e1caf7a697926 - Sigstore transparency entry: 1845873868
- Sigstore integration time:
-
Permalink:
azz-kikkr/kulshan@8194e0a259e52f61c78427734232f9b76feda21d -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/azz-kikkr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8194e0a259e52f61c78427734232f9b76feda21d -
Trigger Event:
push
-
Statement type: