CAAMS Enterprise
● Enterprise · Self-hosted · No SaaS · No data egress

Compliance audits your
team actually ships.

CAAMS Enterprise is a fully self-hosted GRC platform — from tool inventory to auditor-ready report across CIS, NIST, SOC 2, PCI DSS, and HIPAA — with full lifecycle management, evidence workflows, and multi-format exports.

5
Security frameworks
0
External dependencies
3
Export formats
Users & assessments
The problem

Compliance prep is still a spreadsheet nightmare.

  • Audit evidence scattered across drives, emails, and tickets
  • No visibility into which tools actually cover which controls
  • SaaS GRC tools that charge per-seat and hold your data hostage
  • Manual report assembly the night before the audit
The solution

One platform. Your infra. Audit-ready on demand.

  • Map your tool stack once — coverage computed automatically
  • Evidence upload, approval workflows, and expiry tracking built in
  • Deploy to your own server — data never leaves your network
  • One-click XLSX, PDF, and evidence ZIP — ready for the auditor
Platform features

Everything a compliance team needs.

From first assessment to final sign-off — every workflow is covered.

Framework coverage mapping

Select your tools; CAAMS automatically computes covered, partial, and uncovered controls using capability tags. No manual mapping.

Evidence management

Upload files per-control with descriptions and expiry dates. Admins approve or reject with reasons. Package everything into a ZIP in one click.

Findings tracker

Log findings with critical→informational severity, remediation owner, and target date. Full status lifecycle from open through remediated and accepted.

RFI workflows

Create Requests for Information with priorities and due dates. Assignees respond inline; admins close RFIs when resolved. Full thread history preserved.

Executive dashboard

Org-wide posture across all active assessments. Per-framework scores, open findings by severity, overdue controls, and the assessment renewal pipeline.

Framework crosswalk

Tag-based automatic overlap mapping between any two frameworks. See which SOC 2 controls your CIS assessment already satisfies — and what's missing.

Auditor share links

Generate scoped, time-limited share links for external auditors. No account creation — auditors get read-only access to exactly what you share.

Immutable audit log

Every state-changing action — lifecycle transitions, evidence approvals, overrides — is recorded with user, timestamp, IP, and detail payload. Cannot be edited.

REST API & CI/CD tokens

Full FastAPI backend with Swagger at /docs. Generate long-lived API tokens for CI/CD pipelines and external integrations.

Risk acceptances

Formally accept residual risk on any control with a rated justification (critical → low), named approver, and expiry date. Accepted risks surface in the XLSX export and audit trail.

Supported frameworks

Five frameworks. One platform.

Additional frameworks can be added by dropping a JSON file into app/data/

CIS Controls

v8

The internet security essentials — 18 controls mapping to real-world defenses.

18 controls

NIST CSF

v2.0

6 functions and 22 categories covering the full cybersecurity lifecycle.

22 categories

SOC 2

2017 TSC

Trust Services Criteria — the standard for service organization compliance.

9 criteria

PCI DSS

v4.0

Payment card industry requirements for organizations handling cardholder data.

12 requirements

HIPAA Security

45 CFR 164

Security Rule standards for protecting electronic protected health information.

16 standards

Add your own framework

Drop a JSON file into app/data/ and re-run seed.py

Framework Crosswalk

The crosswalk engine automatically identifies which controls in Framework A are already satisfied by your Framework B assessment — no manual mapping required.

Assessment lifecycle

From draft to archived — fully tracked.

Every assessment moves through a formal lifecycle with signed-off stage transitions and an immutable audit trail on every action.

1

Draft

Create the assessment, select the framework, add tools in scope, set ownership, and upload initial evidence.

2

In Review

Contributors submit for review. Admins close RFIs, resolve findings, and can return to draft if changes are needed.

3

Approved

Admin approves. Exports are generated. Auditor share links can be issued for external review.

4

Archived

Completed assessments archived for historical reference. All data and audit trails preserved.

Recurring assessments

Mark any assessment as recurring with a configurable interval (e.g. every 90 days). CAAMS tracks the next review date and surfaces overdue renewals on the dashboard — so nothing slips between audit cycles.

Role-based access

Right access for every team member.

Every endpoint enforces role checks. Roles are assigned at account creation — no extra configuration.

Admin

Full access — create/delete assessments, manage users, approve lifecycle transitions, manage API tokens, review and approve evidence.

Contributor

Create and edit assessments, update notes and ownership, upload evidence, log findings, create and respond to RFIs.

Viewer

Read-only access to all assessments, results, evidence, and findings. Ideal for executives and stakeholders.

Auditor

External auditor access via scoped share links — no account needed. Read-only visibility limited to exactly the controls you share, with a comment thread for RFI-style questions.

Exports & reporting

Auditor-ready in one click.

Three export formats cover every stakeholder — the auditor, the CISO, and everyone in between.

XLSX Workbook

  • • Summary with aggregate metrics
  • • Full coverage report per control
  • • Evidence checklist with owners
  • • Statement of Applicability with exclusion reasons
  • • Color-coded findings sheet
  • • Tool recommendations tab
GET /assessments/{id}/export

PDF Report

  • • Branded cover page
  • • Executive summary section
  • • Tools-in-scope table
  • • Color-coded per-control coverage
  • • Findings table with severity
GET /assessments/{id}/export/pdf

Evidence ZIP Package

  • • Complete PDF report included
  • • All evidence files by control
  • • Manifest CSV for auditor reference
  • • Everything in a single download
GET /assessments/{id}/export/evidence-package
Coverage scoring

Precise, partial-credit coverage scoring.

CAAMS doesn't just pass/fail controls. Partial coverage is measured and scored honestly.

Covered

All required capability tags satisfied by selected tools

Partial

Some required tags present, but not all

Not Covered

No required capability tags satisfied

Coverage Score Formula

score = (covered + 0.5 × partial) / applicable_total × 100

Deployment

Production-ready in under 5 minutes.

Three commands. No Docker, no cloud account, no YAML sprawl — just Python on your server.

Step 1
Clone & TLS cert

Pull the repo and generate a self-signed cert (or drop in your CA cert). That's the only prereq.

Step 2
Run the installer

sudo bash install_service.sh handles everything else — venv, deps, system user, secret key, DB seed, and systemd unit.

Step 3
You're live

CAAMS is running at https://<your-host>:8443, starts on boot, and logs to journald.

terminal — production install
# 1. Clone the repo
$ git clone https://github.com/naterohrer/caams-enterprise-prod
$ cd caams-enterprise-prod

# 2. Generate a TLS certificate (skip if you already have cert.pem + key.pem)
$ mkdir -p certs
$ openssl req -x509 -newkey rsa:4096 \
    -keyout certs/key.pem -out certs/cert.pem \
    -sha256 -days 3650 -nodes \
    -subj "/CN=$(hostname)" \
    -addext "subjectAltName=DNS:$(hostname)"

# 3. Run the installer — this is the only sudo command
$ sudo bash install_service.sh

========================================
  CAAMS service installer
========================================
  Install dir:  /opt/caams
  Service user: caams
========================================

[+] Checking prerequisites…
[+] Found python3 at /usr/bin/python3
[+] Syncing repo → /opt/caams …
[+] Creating virtualenv at /opt/caams/venv …
[+] Installing Python dependencies into venv …
[+] Dependencies installed.
[+] TLS certificate: OK
[+] Creating system user 'caams' …
[+] Setting ownership on /opt/caams …
[+] Generating /etc/caams.env …
[+] Generated CAAMS_SECRET_KEY and wrote /etc/caams.env
[+] Seeding database …
[+] Installing /etc/systemd/system/caams.service …
[+] Reloading systemd daemon …
[+] Enabling caams.service (auto-start on boot) …
[+] Starting caams.service …

========================================
[+] Installation complete!
========================================

  caams.service - CAAMS Compliance Auditing Tool
     Loaded: loaded (/etc/systemd/system/caams.service; enabled)
     Active: active (running)

  Useful commands:
    systemctl status  caams        — check status
    systemctl restart caams        — restart after config changes
    journalctl -u caams -f         — tail live logs

# Done. CAAMS is live at https://your-host:8443
local dev (no sudo)
pip install -r requirements.txt
python seed.py

mkdir -p certs
openssl req -x509 -newkey rsa:4096 \
  -keyout certs/key.pem \
  -out certs/cert.pem \
  -sha256 -days 3650 -nodes \
  -subj "/CN=localhost"

export CAAMS_SECRET_KEY="$(python3 -c \
  'import secrets; print(secrets.token_hex(32))')"

bash start.sh
# → https://localhost:8443

Environment variables

Variable Required Description
CAAMS_SECRET_KEYRequired64-char hex key to sign JWTs. Auto-generated by installer.
CAAMS_CORS_ORIGINOptionalIntranet hostname for credentialed cross-origin requests.
CAAMS_HOSTOptionalBind address (default: 0.0.0.0)
CAAMS_PORTOptionalPort (default: 8443)
Tech stack

Zero-dependency. No build step. No cloud.

No external auth providers. No object storage. No message brokers. Just Python on your server.

Python 3.11+ FastAPI SQLite (zero-config) Pure-Python JWT Alpine.js Tailwind CSS (CDN) Chart.js ReportLab (PDF) openpyxl (XLSX) systemd service
Open source · Self-hosted · Free

Start your first
assessment today.

CAAMS is free and open-source. Deploy to your own infrastructure in minutes, keep your compliance data on-prem, and generate auditor-ready reports whenever you need them.