Skip to main content

AIActGuard

Drop-in EU AI Act compliance for any agent framework — audit trails, risk classification, and human-approval gates in one decorator.

License: MIT Python Status

AIActGuard is a lightweight middleware layer that any existing agent stack can adopt without ripping out its framework. It is not another agent orchestrator — it makes the one you already use (LangChain, CrewAI, AutoGen, ...) compliant.

Each module logs, drafts, tests, or flags something concrete. None of them certify compliance on their own — that's a legal determination. See Scope below.

Install

pip install aiactguard[langchain]

Other extras: crewai, claude-agent-sdk, langgraph, autogen, openai-agents, postgres (for PostgresAuditStore) — mix and match, e.g. pip install aiactguard[langgraph,postgres].

Quickstart

from aiactguard.adapters.langchain_adapter import AIActGuardCallbackHandler
from aiactguard.core.approval import ApprovalContext, ApprovalDecision


def compliance_officer(ctx: ApprovalContext) -> ApprovalDecision:
    approved = input(f"Approve {ctx.action} ({ctx.risk_tier.value})? [y/N] ").lower() == "y"
    return ApprovalDecision(approved=approved, approver_id="compliance_officer")


guard = AIActGuardCallbackHandler(
    category="essential_services",
    approvers=[compliance_officer],  # an escalation chain — add more to route to a fallback
)

agent_executor.invoke({"input": "..."}, config={"callbacks": [guard]})

See examples/ for full runnable examples: LangChain, CrewAI, Claude Agent SDK, LangGraph (using LangGraph's own interrupt() for human-in-the-loop), AutoGen, OpenAI Agents SDK, the framework-agnostic @watch decorator with an escalation chain + override, generating all five Phase 2 compliance reports from an audit trail, running the red-team scenario harness, a fairness scan, drafting an incident report + GPAI transparency card, composite-system risk aggregation, NIST/ISO mappings, using the Postgres storage backend, and a worked community plugin.

Module roadmap

All 19 modules from the original project plan are built — see Scope for what's deliberately excluded.

Core (Phase 1)

# Module Article(s) What it does Status
1 Risk classification engine Art. 6, Annex III Tags each agent action/tool call against EU AI Act risk tiers using a configurable taxonomy across all eight Annex III high-risk categories ✅
2 Immutable audit trail Art. 12 Every decision, tool call, input/output, model version, and timestamp logged to an append-only store — SQLite by default, Postgres for production ✅
3 Human-in-the-loop approval gates Art. 14 Configurable interrupt points that pause execution before a high-risk action fires, with an escalation chain of approvers and reasoned-override logging ✅
4 Explainability capture Art. 13 Structures the agent's chain-of-thought/tool-selection rationale into an auditor-readable format ✅
5 Framework adapters — LangChain, CrewAI, Claude Agent SDK, LangGraph, AutoGen, OpenAI Agents SDK — all 6 ✅
6 Policy-as-code — YAML rules defining what counts as high-risk for a given org and what triggers a human gate ✅

Documentation & assessment tooling (Phase 2)

# Module Article(s) What it does Status
7 Technical documentation generator Art. 11, Annex IV Auto-drafts the Annex IV technical file from audit logs + a guided questionnaire ✅
8 Conformity readiness checklist Art. 43 Gap-analysis against Annex IV/VI requirements — a pre-assessment aid, not the assessment itself ✅
9 FRIA template generator Art. 27 Pre-fills a Fundamental Rights Impact Assessment draft from risk classification and deployment context ✅
10 Post-market monitoring plan generator Art. 72 Monitoring plan template scaffolded from risk tier and logged incident categories ✅
11 EU database registration data prep Art. 71 Auto-compiles the metadata the Art. 71 registration form requires — filing stays manual ✅

Robustness & incident tooling (Phase 3)

# Module Article(s) What it does Status
12 Adversarial/red-team test harness Art. 15 Runs prompt-injection, jailbreak, and edge-case scenarios against your agent — heuristic detection, not semantic judgment ✅
13 Bias & fairness scan Art. 10 Statistical checks on agent decisions across a caller-supplied protected-characteristic proxy, at runtime ✅
14 Serious incident report drafter Art. 73 Turns a flagged incident into a structured draft for human review before filing ✅
15 GPAI transparency card generator Art. 53 Auto-generates a model transparency summary from config + usage patterns ✅

Multi-agent & multi-standard extensions (Phase 4 — differentiators)

# Module What it does Status
16 Composite-system risk aggregation Flags when multiple individually low-risk agents, composed into a pipeline, cross into high-risk territory as a system ✅
17 NIST AI RMF mapping layer Maps audit/risk data to NIST AI RMF's Govern/Map/Measure/Manage functions ✅
18 ISO/IEC 42001 mapping layer Maps the same data to ISO 42001 AI management system clauses ✅
19 Plugin architecture for community modules Defined interface for jurisdiction- or industry-specific community modules ✅

Scope

Explicitly out of scope, and why:

  • Prohibited-practice determination (Title II) — legal judgment call, not a runtime check
  • Conformity assessment / CE marking itself — requires formal procedures, sometimes a notified body; the toolkit preps evidence, it doesn't perform the assessment
  • Quality management system (Art. 17) — an organizational process, not code
  • GPAI systemic-risk evaluation (Art. 55) — applies to frontier model providers, not agent builders
  • Actual legal filing/registration submission — data prep is automated, submission is not

Contributing

Contributions are welcome, especially jurisdiction- or industry-specific modules. Open an issue to discuss before submitting a large PR.

Writing a plugin: implement aiactguard.plugins.Plugin — a name, a description, and a generate(logger, *, questionnaire=None, **kwargs) -> str method (the same shape every built-in report/mapping already has). See examples/plugins/example_gxp_plugin.py for a worked example. To publish one for others to auto-discover, register it under the aiactguard.plugins entry-point group in your own package's pyproject.toml:

[project.entry-points."aiactguard.plugins"]
gxp = "aiactguard_gxp_plugin:plugin"

Callers pick it up with aiactguard.plugins.discover_entry_points().

License

MIT — see LICENSE.

Metadata

Release files for aiactguard 0.1.3

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

Source distribution (sdist)

Source distribution for aiactguard 0.1.3
File Size Uploaded
aiactguard-0.1.3.tar.gz 53.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aiactguard 0.1.3
File Interpreter ABI Platform
aiactguard-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 104.9 kB

Release files / aiactguard-0.1.3.tar.gz

Download URL aiactguard-0.1.3.tar.gz
Size 53.7 kB
Tags Source
SHA-256 checksum
How to use checksums
1962030cba2e5bd8f9b2369605f3c5cd96dc1e4bad07ef6d380c17a764fcc567
BLAKE2b-256 checksum
How to use checksums
71ba92fbc9e68121ac86f9b88d5ed353bc13156f38acba0c1dc2d4a0b11a2fa5
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 Aug 6, 2026.

Transparency log

Release files / aiactguard-0.1.3-py3-none-any.whl

Download URL aiactguard-0.1.3-py3-none-any.whl
Size 51.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
db74e278a09188c7d8927f843e761ffbb5d07f7cd80ae195c64c0c7ae2fc2db9
BLAKE2b-256 checksum
How to use checksums
98a46f1579c320bc6b1bc537abe991c1f2e349fbcbc53eff8e76b4dd8da4d1e2
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 Aug 6, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.6

2 release files

0.1.5

2 release files

This release

0.1.3 This release

2 release files

0.1.0

2 release files

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