Compliance gap analysis for any codebase — standalone scanner, CI/CD integration, and web dashboard
Project description
BespokeTracker Comply
Compliance gap analysis for any codebase. Scan any repository against 10 regulatory frameworks. Get evidence-backed compliance reports with specific file paths, control status, and remediation recommendations.
Regulatory deadlines: Colorado SB 24-205 (June 30, 2026) | EU AI Act (August 2, 2026)
Install
# Standalone (pip)
pip install bespoketracker-comply
# From source
pip install -e ./comply
# With semantic analysis support
pip install bespoketracker-comply[semantic]
Quick Start
# Scan a local repository
bespoketracker-comply scan /path/to/your/repo
# Scan a GitHub repository
bespoketracker-comply scan https://github.com/org/repo --framework eu-ai-act
# Multi-framework scan
bespoketracker-comply scan . --framework eu-ai-act,nist-ai-rmf,iso-42001
# Start the web dashboard
bespoketracker-comply serve
# Open http://localhost:8001
# Or run in background (returns to shell)
bespoketracker-comply serve --background
# Stop a background server
bespoketracker-comply stop
Docker
# Build and run
docker build -t comply .
docker run -p 8001:8001 -v comply-data:/root/.comply comply
# With docker-compose (includes optional gateway sidecar)
docker compose up
# With gateway for three-layer evidence
docker compose --profile with-gateway up
Supported Frameworks
| Framework | Controls | Description |
|---|---|---|
eu-ai-act |
8 | EU AI Act 2024/1689 (Articles 9-14) |
nist-ai-rmf |
12 | NIST AI Risk Management Framework 1.0 |
iso-42001 |
10 | ISO/IEC 42001:2023 AI Management System |
california-ab-2013 |
3 | California AB 2013 AI Transparency Act |
california-sb-942 |
4 | California SB 942 AI Transparency |
colorado-sb-24-205 |
5 | Colorado SB 24-205 Consumer Protections |
soc2-ai |
6 | SOC 2 AI Trust Services Criteria |
insurance-attestation |
5 | Insurance AI Attestation (NAIC) |
owasp-llm-top10 |
10 | OWASP Top 10 for LLM Applications |
owasp-agentic-top10 |
10 | OWASP Agentic AI Top 10 |
Three-Layer Evidence
Comply evaluates compliance across three layers:
- Layer 1 — Code: Static analysis of your codebase (logging, tests, docs, auth, monitoring)
- Layer 2 — Process: Development process maturity (baselines, regression tracking, CI gates)
- Layer 3 — Traffic: AI agent governance (audit logs, access control, policy enforcement)
Layer 1 runs automatically. Layer 2 builds as you set baselines and track regressions. Layer 3 requires connecting audit log adapters.
Audit Log Adapters
Connect external systems for Layer 3 evidence:
# ~/.comply/config.yaml
adapters:
gateway:
mode: sqlite
db_path: ./gateway.db
kong:
admin_url: http://localhost:8001
gravitee:
management_url: http://localhost:8083/management
file:
paths:
- ./audit-logs/*.jsonl
# List adapters
bespoketracker-comply adapters list
# Test connectivity
bespoketracker-comply adapters test gateway
# Ingest records
bespoketracker-comply adapters ingest gateway
CLI Reference
comply scan
bespoketracker-comply scan <target> [options]
Options:
-f, --framework FRAMEWORK Framework(s), comma-separated (default: eu-ai-act)
-d, --depth DEPTH structure | content | semantic (default: content)
-o, --output DIR Output directory for reports
--llm-key KEY LLM API key (required for semantic depth)
--llm-provider PROVIDER anthropic | openai | gemini | grok
--format FORMAT terminal | json | sarif | junit | markdown
--fail-below N Exit 1 if score < N (for CI/CD)
--fail-on-regression Exit 1 if new gaps vs baseline
--no-cache Skip scan model cache
Other Commands
| Command | Description |
|---|---|
serve [--port 8001] [--background] |
Start the web dashboard |
stop |
Stop a background server |
config show |
Show current configuration |
config set KEY VALUE |
Set a config value (e.g. llm_api_key, llm_provider) |
config path |
Print config file path |
frameworks |
List supported frameworks |
history [--repo PATH] |
Browse past scans |
diff SCAN1 SCAN2 |
Compare two scans |
baseline --set ID |
Set compliance baseline |
cache stats|clear |
Manage scan cache |
adapters list|test|ingest |
Manage audit log adapters |
activate KEY |
Activate Pro/Enterprise license |
deactivate |
Revert to free tier |
license |
Show current license status |
API Reference
| Method | Endpoint | Description |
|---|---|---|
POST |
/scan |
Start a scan |
GET |
/scan/{id} |
Poll scan status |
GET |
/scan/{id}/report |
Get report JSON |
GET |
/scan/{id}/download?fmt= |
Download (json/sarif/junit/markdown/docx/zip) |
GET |
/scan/{id}/regression |
Regression check |
GET |
/scan/{id}/progress |
Progress polling |
GET |
/history |
Scan history |
GET |
/diff?scan1=&scan2= |
Diff two scans |
GET |
/adapters |
List adapters |
POST |
/adapters/{name}/test |
Test adapter |
POST |
/adapters/{name}/ingest |
Ingest records |
GET |
/adapters/{name}/records |
Query records |
GET |
/posture |
All-framework posture |
GET |
/posture/{framework} |
Three-layer posture |
POST |
/baseline/{id} |
Set baseline |
GET |
/frameworks |
List frameworks |
POST |
/audit |
Predicate gap audit (free) |
GET |
/matrix?frameworks= |
Cross-framework matrix |
GET |
/license |
License status |
POST |
/license/activate |
Activate license key |
GET |
/health |
Health + version |
CI/CD Integration
GitHub Actions
- uses: ./comply/ci/github-action.yml
with:
framework: eu-ai-act
fail-below: '50'
upload-sarif: true
post-comment: true
GitLab CI
include:
- local: comply/ci/gitlab-ci-template.yml
comply-scan:
extends: .comply-scan
variables:
COMPLY_FRAMEWORK: "eu-ai-act"
COMPLY_FAIL_BELOW: "50"
Generic CI
# Score gate
bespoketracker-comply scan . --fail-below 50
# SARIF for code scanning
bespoketracker-comply scan . --format sarif -o ./reports
# Regression detection
bespoketracker-comply baseline --auto
bespoketracker-comply scan . --fail-on-regression
Standalone vs Monorepo
Comply works in two modes:
- Standalone (
pip install bespoketracker-comply): Uses a vendored pure-Python scanner. No Kuzu or monorepo dependencies. - Monorepo: When run inside the BespokeTracker monorepo, uses the full Kuzu-based pipeline for richer analysis.
Auto-detected at runtime — no configuration needed.
Self-Hosted: All Features Included
Comply is source-available under the BSL 1.1 license. All features — every framework, every scan depth, every export format — are included with no feature gates.
Update Subscription ($29-99/mo): Subscribers get continuous improvements to evidence evaluation, new framework support, and priority fixes via a private update channel. Public releases happen on major versions.
Configuration stored in ~/.comply/config.yaml.
Contributing
We welcome contributions! See CONTRIBUTING.md for guidelines.
Adding a New Framework
Framework definitions live in data/frameworks.yaml (CC-BY-4.0 licensed). To add a new framework:
- Add the framework definition to
data/frameworks.yaml - Map evidence functions in
_vendor/compliance_eval.py_EVIDENCE_FN_MAP - Add tests in the test suite
- Submit a PR
Adding an Evidence Function
Evidence functions detect compliance-relevant patterns in codebases. See existing functions in _vendor/compliance_eval.py for the pattern.
License
Business Source License 1.1. You may use Comply for any purpose including production, except offering a competing hosted compliance scanning service. Converts to Apache 2.0 on 2030-03-10. See LICENSE for details.
Framework definitions (data/frameworks.yaml) are licensed under CC-BY-4.0.
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 bespoketracker_comply-1.2.1.tar.gz.
File metadata
- Download URL: bespoketracker_comply-1.2.1.tar.gz
- Upload date:
- Size: 413.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34620f36ac369b1d804c16bd8fae23586fc87003e4bc43c6d60804e391657e96
|
|
| MD5 |
986b229c33425e1c66f03f1880d2c689
|
|
| BLAKE2b-256 |
18188233e06d1c55d39e2aba87efb6ee660edc2827059c9c0d0c7f04ff56ab7e
|
File details
Details for the file bespoketracker_comply-1.2.1-py3-none-any.whl.
File metadata
- Download URL: bespoketracker_comply-1.2.1-py3-none-any.whl
- Upload date:
- Size: 467.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd8fcac58d9ee48334412c03f5d0180767669f4793125a8bad589a424adaaacf
|
|
| MD5 |
c52e3e079758b058de2362cedc23e164
|
|
| BLAKE2b-256 |
9a0c0392ec3759f33b33994d2212aa84673e1ecd17ae58940c6b02d6c035dd9a
|