From 0c41e5e1f3f1333c051c8ff0422784e334714e77 Mon Sep 17 00:00:00 2001
From: Christian Cleberg <hello@cleberg.net>
Date: Sun, 2 Aug 2026 15:29:30 -0500
Subject: convert readme to nfo; fold nested readme; relicense to 0bsd

1 file changed, 81 insertions(+)
create mode 100644 README.nfo

(limited to 'README.nfo')

diff --git a/README.nfo b/README.nfo
new file mode 100644
index 0000000..8e7f8b6
--- /dev/null
+++ b/README.nfo
@@ -0,0 +1,81 @@

+│  A W S   S U M M A R Y                     [ KRZ ]   krz.sh

+WHAT
+  python tool. sends one plaintext email a day summarizing an aws
+  account: billing, security hub findings, route 53 health checks,
+  cloudwatch alarms, s3 audit, expiring acm certs, config compliance,
+  cloudfront changes, waf blocks.

+  built for solo or small-team accounts. add a section by dropping
+  new_section.py in sections/ and listing it in config.toml.

+CONFIGURE
+  edit config.toml:

+      [aws]
+      profile = "default"
+      region = "us-east-1"

+      [email]
+      from = "you@example.com"
+      to = ["you@example.com"]
+      subject = "Daily AWS Report"

+      [report]
+      sections = ["acm"]

+  no aws profile yet:

+      aws configure --profile default

+RUN
+      python main.py

+  or with uv (installs deps, makes a venv):

+      uv run main.py

+  emails are plaintext with ascii tables via tabulate.

+INSTALL
+  python 3.11+.

+      pip install -r requirements.txt
+      # or: uv sync

+  needs boto3 and tabulate. the iam user or role needs read access to
+  cost explorer, security hub, s3, cloudfront, cloudwatch, route 53,
+  acm, config, waf, and ses if sending from aws.

+STRUCTURE
+  config.toml          aws profile, region, email, report options
+  main.py              entry point; builds and sends the report
+  email_formatter.py   formats the email body
+  utils.py             shared helpers
+  pyproject.toml       metadata and dependencies
+  sections/            one generator per section
+    acm.py             expiring certs
+    cloudfront.py      distribution changes
+    cloudwatch.py      alarms
+    config.py          config compliance
+    costexplorer.py    billing
+    route53.py         health checks
+    s3.py              bucket audit
+    securityhub.py     findings

+  each section implements get_section(config) -> str. add, remove, or
+  order sections in config.toml.

+TODO
+  - csv or html export
+  - slack or teams notifications
+  - lambda deployment

+LICENSE
+  0bsd. see LICENSE.

+│  krz.sh

cgit v1.2.3