Skip to main content

GRC Lake — collect, evaluate, resolve, and export: read-only evidence from cloud, identity, code, and data sources, evaluated through a common control framework and framework packs.

PyPI version Python 3.11+ CI status License: Apache 2.0 OpenSSF Scorecard OpenSSF Best Practices

Turn security evidence into traceable control assessments and reviewable audit workpapers. Open-source and self-hosted: read evidence from the systems and security lakes you already run, evaluate versioned control tests, and keep the evidence and review decisions behind every result.

  • Traceable: each result links to its source records, rule version, and review decision; snapshots form a hash-chained ledger you can re-verify.
  • Works with what you have: connect cloud, identity, endpoint, and code systems directly, or query OCSF tables already in your lake.
  • One control, many frameworks: reusable safeguards map to SOC 2, ISO 27001, NIST, and more, with reviewed and proposed mappings kept apart.

Open the live demo → Click through the console on synthetic data. Nothing to install.

Quick start · Product tour · Connect evidence · Already on OCSF? · Frameworks · Self-host · Docs

Quick start

Python 3.11+ and uv:

uvx --from "grc-lake[server]" grc-lake demo

This loads a synthetic company into a temporary lake, serves the console on localhost:8787 without authentication, and opens your browser. Ctrl+C stops it and deletes the lake. With pip: pip install "grc-lake[server]", then grc-lake demo.

First task: find a failing control, inspect its evidence and mapping, and export the frozen result: follow the sample-data tutorial, then the auditor workpaper example.

Keep a lake, Docker, source development, or MCP

Keep a lake between runs:

grc-lake fixtures load --company golden --out ./lake --rebase-times
grc-lake serve --server --allow-insecure-no-auth --lake ./lake

Docker (public image, no registry login):

git clone --branch v0.3.12 --depth 1 https://github.com/koda-ai-studio/grc-lake.git
cd grc-lake && docker compose up

Current source, with uv and Node 22+:

git clone https://github.com/koda-ai-studio/grc-lake.git
cd grc-lake && uv sync --frozen --extra dev --extra server && make demo-local

MCP over stdio (headless GRC covers agent credentials):

pip install "grc-lake[server,mcp]"
GRC_LAKE_LAKE=./lake grc-lake-mcp

Release notes: changelog · verified release records.

Product tour

Collect → Evaluate → Resolve → Export. Screens use the bundled synthetic company.

Start with the assessment overview

Assessed coverage, open findings, evidence freshness, and priority actions in one view.

Overview showing assessment coverage, findings, stale evidence, framework posture, and priority actions

Explore framework coverage

Catalogued, mapped, reviewed, and assessed requirements stay separate measures per framework.

Frameworks showing requirement coverage, mapping-review status, and the framework roster

Inspect control results and evidence

Filter by result, owner, or framework; open a control for its evidence, findings, freshness, and confidence.

Controls worklist showing test results, evidence freshness, confidence, and owners

Navigate control families and the CCF

The Common Control Framework (CCF) groups reusable safeguards into families linked to framework requirements. Proposed mappings are not attestable. How common safeguards work.

Trace a finding through the evidence graph

Follow exact records between controls, safeguards, evidence, repositories, and assets; drill in or roll up.

Evidence investigation graph connecting a SOC 2 control to evidence, a repository, an asset, and a safeguard, with a selected-node inspector

Review AI assets and their next actions

Models and agents with owners, environments, governance signals, and next actions. Recorded lineage is evidence presence, not a passing control (AI inventory semantics).

AI model and agent worklist showing owners, governance signals, and next actions

Five-minute console tour · How evidence investigation works

Architecture

Read-only collection feeds deterministic evaluation; console, REST API, CLI, and MCP share one evidence and assessment model.

flowchart LR
  Sources["Cloud · identity · code · existing lakes"] --> Collect["Read-only collection"]
  Collect --> Evaluate["Version-pinned control tests"]
  Evaluate --> Assessments["Assessment generations"]
  Assessments --> Review["Console · API · CLI · MCP"]
  Assessments --> Export["Snapshots · workpapers · OSCAL"]

Exports: portable CCF/OSCAL bundles, framework coverage reports, and verifiable auditor workpapers. Recovery behavior and API limits: architecture guide and assessment contract.

Connect evidence

Use direct connectors or read an existing lake. Both are read-only and keep assessment evidence in storage you operate.

Supported sources
Category Sources
Cloud AWS, Microsoft Azure, Google Cloud; Kubernetes (preview, including GPU clouds); Lambda (preview)
Identity Okta (directory and System Log), Google Workspace, Microsoft Entra (preview), generic identity provider
Endpoint Microsoft Intune; Jamf, CrowdStrike Falcon (preview)
Code GitHub, GitLab
Vulnerability scanning Snyk (preview)
People and training BambooHR, Rippling, Workday; training-completion exports from any LMS (preview)
Workflow and detections Atlassian Jira, ticketing, SIEM alerts, AI runtime gateway
Existing lakes Snowflake, ClickHouse, S3 object storage, OCSF presets; Databricks, BigQuery, Iceberg/Parquet (preview)
Imports Agent-Bom scan reports, CycloneDX and SPDX AI bills of materials

Stages, permissions, and live receipts: connector catalog · qualification matrix. Missing a source? Request a connector or build one.

Already on OCSF?

If your telemetry is already normalized to OCSF, for example in Amazon Security Lake or OCSF tables on Databricks or Snowflake, point GRC Lake at those tables. No new pipeline: the reader runs read-only queries and keeps a mapped copy of the rows it assesses. Built-in presets bind events to CCF safeguards, and framework requirements follow each safeguard's reviewed crosswalk:

flowchart LR
  A["OCSF Authentication 3002<br/>successful Logon, is_mfa"] --> S1["SG-IDENTITY-001<br/>Logical access and MFA"]
  B["OCSF Account Change 3001<br/>Attach Policy"] --> S2["SG-IDENTITY-002<br/>Access review"]
  G["OCSF Group Management 3006<br/>Add User, Assign Privileges"] --> S2
  V["OCSF Vulnerability Finding 2002<br/>EC2 instance, ECR image"] --> S3["SG-VULNERABILITYMANAGEMENT-001<br/>Vulnerability management"]
  C["OCSF Compliance Finding 2003<br/>EC2 instance"] --> S4["SG-CONFIGBASELINE-001<br/>Hardened configuration baselines"]
  S1 --> R1["SOC 2 CC6.1 · NIST 800-53 IA-2<br/>CIS AWS 1.10 · …"]
  S2 --> R2["SOC 2 CC6.2 · ISO 27001 A.8.2 · …"]
  S3 --> R3["SOC 2 CC7.1 · ISO 27001 A.8.8<br/>NIST 800-53 RA-5 · …"]
  S4 --> R4["NIST CSF PR.PS-01 · …"]
What the rules conclude, and a Databricks example

The rules state only what an event shows. A successful logon with MFA passes for that user; one without MFA is open. A privilege grant, including adding a user to a group, blocks an access-review pass until someone reviews it, but is not a failure. Vulnerability findings and configuration checks keep their own status and bind a safeguard only for resource types with a clear catalog equivalent. Failed sign-ins, API activity, and detection findings stay unbound. Proposed crosswalk mappings are never attested.

CREDS='{"host":"dbc-example.cloud.databricks.com","warehouse_id":"abc123","catalog":"security",
        "schema":"ocsf","client_id":"<sp-client-id>","client_secret_ref":"DATABRICKS_CLIENT_SECRET"}'
OPTS='{"mappings":[{"preset":"ocsf/authentication","source":{"table":"ocsf_events"}},
                   {"preset":"ocsf/account_change","source":{"table":"ocsf_events"}}]}'
grc-lake connectors probe --lake ./lake --connector-id databricks-evidence-lake \
  --credentials-json "$CREDS" --options-json "$OPTS"
grc-lake connectors configure --lake ./lake --connector-id databricks-evidence-lake \
  --state enabled --credentials-json "$CREDS" --options-json "$OPTS"
grc-lake connectors sync --lake ./lake --connector-id databricks-evidence-lake
grc-lake frameworks assessment --lake ./lake

Preview a preset against sample rows with grc-lake lake map --dry-run. Rules, limits, and Snowflake, ClickHouse, BigQuery, and Iceberg setup: OCSF events in the CCF.

Frameworks

  • Reviewed requirements by framework: SOC 2 33/61 (10 with no recorded reviewer), ISO 27001 17/93 (10 with no recorded reviewer), HIPAA 4/24 (4 with no recorded reviewer), PCI DSS 0/12 (top-level), NIST CSF 2.0 72/106, NIST SP 800-53 495/1,014 (381 source-native self-maps; 96 with no recorded reviewer). Every pack is in the coverage matrix.
  • 21 framework packs, 2,282 catalogued requirements (1,995 distinct; FedRAMP Moderate's 287 rows restate NIST SP 800-53 controls), linked through 1195 safeguards, including source-native assessment contracts. 2,196 requirements have safeguard mappings; 1,163 have reviewed mappings and the other 1,033 are proposed. Of the reviewed, 381 are source-native self-maps (written from that requirement's own pinned source) and 782 rest on reviewed crosswalk mappings; 339 rest only on legacy reviews with no recorded reviewer. The blended total is not a per-framework readiness figure.
  • 28 read-only source adapters (10 in preview), plus OCSF presets for existing security lakes.
  • Evidence stays scoped: missing or stale evidence leaves gaps; a passing sample does not prove complete population coverage. Proposed mappings are not attestable.
  • One engine, four surfaces: console, REST API, CLI, and MCP server. Agents propose; humans approve.

Framework coverage · Common safeguards · Audit readiness · Qualification

What these numbers mean

Counts are generated from source. Reviewed counts record maintainer mapping decisions (review method and limits); mapping decisions do not change access at a provider. The audit-readiness index shows score, evaluated-framework, and blocking-gap gates, so a high score cannot hide an unresolved framework assessment. Fixture tests, screenshots, and the demo do not establish live-provider accuracy, production capacity, certification, or an audit opinion; see the roadmap for remaining gaps.

Self-host

Deploy with Docker or Helm on infrastructure you control:

Releases ship signed provenance and an SBOM (verify artifacts). Upgrading from TrustOps? Read the migration guide.

Engineering review

Start with one control and follow its evidence into a verified workpaper: the synthetic access/change workflow runs passing, failing, missing, stale, conflicting, and incomplete-population cases.

Where to look for each review question
Question Start here
How do the layers fit together? Architecture and source map, data flow
What makes a result pass, fail, or remain unknown? Evaluation semantics, population reconciliation
What prevents cross-tenant access and unauthorized decisions? Trust boundaries, identity and scopes
What happens after partial writes, retries, or interrupted jobs? Generation publication, operation contracts
How are integrity and reproducibility checked? Workpaper qualification, backup and restore
What performance has actually been measured? Pipeline measurements, graph latency and memory

Run checks from the revision under review; the CI badge tracks main, and benchmark receipts name their own revisions and workloads.

Documentation

Task Guide
Try the console Product walkthrough
Connect evidence Connector setup · Existing lakes
Integrate an agent Headless GRC · Agent API
Operate a deployment Deployment · Operations
Contribute Contributing · Security

All documentation · License: Apache 2.0

Metadata

Release files for grc-lake 0.3.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for grc-lake 0.3.12
File Size Uploaded Provenance
grc_lake-0.3.12.tar.gz 4.0 MB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for grc-lake 0.3.12
File Interpreter ABI Platform
grc_lake-0.3.12-py3-none-any.whl Python 3 none any Details

Total release size: 7.8 MB

Release files / grc_lake-0.3.12.tar.gz

Download URL grc_lake-0.3.12.tar.gz
Size 4.0 MB
Tags Source
SHA-256 checksum
How to use checksums
03d15bda11b4e1f28d9aaf373063c669bdfb8d82cab61d03e6361b33fd900839
BLAKE2b-256 checksum
How to use checksums
8b2068148d94e73da3cc5e414412c45d1394936bc0025a7c2827512fe3d9cc41
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / grc_lake-0.3.12-py3-none-any.whl

Download URL grc_lake-0.3.12-py3-none-any.whl
Size 3.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
4b3c500bbb79a6325dc08b662efb6f07e1279c5a70c4ff0ccf640f36360e1ac9
BLAKE2b-256 checksum
How to use checksums
a790cd09ec864052c9bb7a871555dfccf788c8f1d7fbfb70262ec6a59e886378
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Security for grc-lake 0.3.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for grc_lake-0.3.12.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page