Compliance evidence from AIops audit trails: HIPAA/PCI/SOC2/GDPR, OSCAL export, 19 tools.
Disclaimer: Community-maintained open-source project. Not affiliated with, endorsed by, or sponsored by any framework body or GRC vendor. HIPAA, PCI-DSS, SOC 2, GDPR and OSCAL are referenced descriptively; the frameworks and trademarks belong to their owners. MIT licensed.
Governed compliance-evidence tooling for AI-agent infrastructure ops. It
reads the audit trails your governed AIops agents already write — the local
~/.<tool>-aiops/audit.db SQLite trails, all sharing one audit_log schema —
and turns that activity into framework-mapped, hash-chain-sealed compliance
evidence. It never scans your infrastructure and never replaces a GRC
platform: it converts the trails you already produce into auditor-ready,
tamper-evident evidence bundles.
Unlike the other tools in the AIops-tools line it is not a platform wrapper: no external API, no network, no platform credentials. Its only inputs are those on-disk audit databases, read read-only. That also makes it the easiest-to-self-test tool in the line — fully offline and deterministic.
Evidence, not certification. Fully offline; the source
audit.dbfiles remain the system of record. OSCAL export is a documented v0.2 roadmap item (v0.1 emits JSON + Markdown + CSV shaped to ease a future OSCAL Assessment-Results adapter).
strong or partial.
gap_analysis says so per control, with the caveat and a remediation hint.hash = SHA-256(prev_hash ‖ canonical_json(record)), genesis prev = 64
zeros). The chainHead is reproducible for the same (framework, period,
sources). verify_bundle catches tampering; verify_source_chain detects
row-id gaps / deletions in a source trail. An optional HMAC signature seals a
bundle under a stored signing key.~/.compliance-aiops/bundles/.AuditEngine, a golden reproducible chainHead is
asserted, and tamper tests confirm detection. No live infrastructure needed.It reads your audit trails and writes evidence bundles — and records every
operation. It does not decide whether producing or signing a bundle is
allowed: that is the agent's judgement, or the filesystem permissions of the
account it runs as. The source audit.db files are opened strictly read-only
regardless, and the only thing ever written is a bundle under
~/.compliance-aiops/bundles/.
So there is no read-only switch, no policy file, no approval gate to configure.
The one thing the tool guarantees is that nothing is silent: every call, over
MCP and over the CLI alike, lands an audit row in
~/.compliance-aiops/audit.db.
Each tool declares a
risk_level, kept in agreement with its[READ]/[WRITE]documentation tag by a test, and carried into the audit row as a descriptive tier — so a reviewer can see at a glance what a row was. It is a label, not a gate.
| Tool | Purpose |
|---|---|
list_audit_sources | Discovered sibling audit DBs (path, tool, readable, row count) |
query_audit_events | Cross-tool event query — filter by tool/skill/status/risk/approved/selector/since/until |
activity_timeline | Event counts bucketed by hour or day |
list_frameworks | Supported frameworks + control counts |
coverage_summary | Per-control covered/weak/uncovered for ONE framework |
control_evidence | Evidence rows + population + a reproducible query for ONE control |
gap_analysis | Controls with no/weak evidence + honest caveat + remediation |
approval_report | High-risk write ops + who approved + rationale (the CC8.1 / PCI 7-8 / HIPAA §312(a) artifact) |
exceptions_report | Denied / error / budget_exceeded ops — enforcement + anomaly evidence |
verify_source_chain | Chain head + row-id gap detection for one source |
verify_bundle | Verify a sealed bundle: chain + seal head + optional signature |
list_bundles | Bundles under ~/.compliance-aiops/bundles/ |
oscal_assessment_results | A sealed bundle as a NIST OSCAL 1.2.3 Assessment Results document, inline, with its limitations named |
bundle_schedule_hint | Ready-to-paste cron line + non-interactive command for periodic sealing (writes nothing) |
| Tool | Risk | Purpose |
|---|---|---|
generate_evidence_bundle | low | One call: coverage + approval trail + exceptions + sealed records → a bundle .json |
export_bundle | low | Render a bundle to markdown / csv / json / oscal |
sign_bundle | medium | HMAC over the seal using the stored signing key |
The CLI exposes a convenience subset; the full 19-tool surface is available over MCP.
| Framework | Sample controls (strength) |
|---|---|
| HIPAA (§164.312) | 164.312(b) Audit controls (strong), 164.312(a)(1) Access control (strong), 164.312(c)(1) Integrity (strong) |
| PCI-DSS v4.0 | 10.2 Audit log content (strong), 10.3 Protect audit logs (strong), 7-8 Least privilege / authn (partial) |
| SOC 2 TSC | CC6.1 Logical access (strong), CC7.2 Monitoring (strong), CC8.1 Change management (strong) |
| GDPR | Art.30 Records of processing (partial), Art.32 Security of processing (strong) |
| ISO/IEC 27001:2022 (Annex A) | A.5.15 Access control (strong), A.5.16 Identity mgmt (strong), A.5.18 Access rights (partial), A.8.2 Privileged access (partial), A.8.15 Logging (strong), A.8.16 Monitoring (strong), A.8.32 Change management (strong) |
| 等保2.0 (DJCP L3) (GB/T 22239-2019 三级) | 8.1.5.4 安全审计 (strong), 8.1.4.2 访问控制 (partial), 8.1.5 安全管理中心/集中审计 (strong) |
uv tool install compliance-aiops # or: pipx install compliance-aiops
One install gives an agent both the skill and the MCP server:
/plugin marketplace add AIops-tools/marketplace
/plugin install compliance-aiops@aiops-tools
The MCP server is fetched with uv and pinned to the
package version this plugin declares, so an audit row can be traced back to the
code that wrote it. Credentials are still configured with compliance-aiops init — see below.
The same bundle is published on ClawHub, where one install delivers the skill and its MCP server together:
openclaw plugins install clawhub:@zw008/compliance-aiops
openclaw skills info compliance-aiops # expect: Visible to model: yes
Restart the OpenClaw gateway afterwards so it loads the plugin. The MCP server is
fetched with uv, pinned to this exact release, so
uvx has to be on PATH — without it the skill still installs but reports
Visible to model: no. Credentials are configured exactly as below.
compliance-aiops init # discover sibling ~/.*-aiops/audit.db, set org name, optional signing key
compliance-aiops doctor # which sibling audit DBs are present/readable
compliance-aiops overview # audit sources + per-framework covered/total
compliance-aiops report coverage soc2 # per-control SOC 2 coverage
compliance-aiops bundle generate soc2 # sealed evidence bundle → ~/.compliance-aiops/bundles/
compliance-aiops bundle verify <path> # re-verify the chain + seal (+ signature)
Run as an MCP server (stdio):
export COMPLIANCE_AIOPS_MASTER_PASSWORD=... # only needed to unlock a signing key
compliance-aiops mcp # or: compliance-aiops-mcp
Where that password then lives: an exported variable is readable by every process this shell starts and is recorded by shell history. On a shared or long-lived host, prefer the interactive prompt, or inject it from a secret manager for the life of the one command that needs it.
Evidence bundles are most useful when sealed on a cadence (e.g. weekly), so
each period has a tamper-evident anchor. This tool ships no daemon — instead
bundle schedule prints a ready-to-paste cron line plus the exact non-interactive
command, and writes nothing:
compliance-aiops bundle schedule soc2 --cron "0 2 * * 1" --period 7d --sign
It returns a cronLine you paste into crontab -e, for example:
0 2 * * 1 compliance-aiops bundle generate soc2 --period 7d --sign
--period (also available on bundle generate) is a convenience relative
window — 7d, 24h, 2w, or last-7-days — resolved to a since/until pair
ending "now", so each scheduled run seals the trailing window.COMPLIANCE_AIOPS_MASTER_PASSWORD in the cron job's environment so a
stored signing key unlocks non-interactively. Do not inline the real
password in the crontab file — reference it from a protected env file.audit.db files remain the system of record — record the chainHead
out-of-band if you need an independent anchor.strong / partial label and
gap_analysis surfaces the caveat rather than overclaiming.audit_log trails written by
governed AIops tools discovered via ~/.*-aiops/audit.db.docs/VERIFICATION.md for the reproducible run.Want another framework, control mapping, export format (OSCAL, CSV shape), or a verification you don't see here? Open an issue or a PR — contributions welcome.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
uvx compliance-aiopsMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-aiops-tools-compliance-aiops": {
"command": "uvx",
"args": [
"compliance-aiops"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencecompliance-aiopspypiCompliance AIops works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.