Skip to main content

airmkit

Operationalise the MAS Guidelines on AI Risk Management for LLM and agentic AI systems.

CI PyPI Python License

The Monetary Authority of Singapore issued its Guidelines on Artificial Intelligence Risk Management on 7 October 2026. They take effect on 7 October 2027 for oversight, identification, inventory and risk materiality assessment, and on 7 October 2028 for life cycle controls and capability (§1.8, as clarified by the Response to Feedback §13.5).

The Guidelines are 30 pages of principles. airmkit turns them into artefacts an engineer can produce and an auditor can read: a machine-readable clause index, an AI inventory schema with first-class support for agents, a transparent risk-materiality rubric, a control catalogue where every control cites a paragraph, evidence records that cannot be quietly edited, and an audit pack.

Read the paper on the web · PDF · Docs · One page for a CRO

Not affiliated with MAS. Not legal or regulatory advice. Independent open-source project. Every interpretation and every threshold is the authors'; MAS declines to prescribe materiality formulae, metrics or testing methodologies (Response to Feedback §7.19, §10.28, §10.66). See DISCLAIMER.md.

Why

Most AI governance tooling stops at a spreadsheet of policies. The hard part of these Guidelines is not writing the policy, it is answering three questions per use case, repeatedly, with evidence:

  1. What AI do we actually have? Including AI embedded in SaaS the vendor does not call AI (§4.2 fn21), and shadow AI staff adopted without asking (§4.4 fn22).
  2. How material is it? On Impact, Complexity and Reliance (§4.12), where moving a use case from "staff reviews every suggestion" to "the agent calls the tool itself" changes the answer.
  3. Which controls bind, and can we show they work? Including the expectation that guardrails be tested for effectiveness, not merely present (§5.15 fn46).

airmkit answers all three from files in your repository, and prints the paragraph behind every answer.

Install

pip install airmkit                 # core
pip install "airmkit[evals]"        # adapters for inspect-ai, deepeval, ragas, garak
pip install "airmkit[report,docs]"  # DOCX output and the docs site

Python 3.11+. No GPU, no API key and no network access required for the core or for make reproduce.

Three-command quickstart

airm init --institution "Merlion Commercial Bank"   # scaffold a register and rubric
airm scan . --out candidates.yaml                   # find AI already in your code and configs
airm report --register ai-inventory.yaml --out audit-pack/

The third command writes the audit pack: an inventory register, a materiality report, a control-applicability statement, a gap analysis by effective date and a one-page board summary.

$ airm assess --register examples/synthetic_bank/ai-inventory.yaml

  Use case                     Impact      Complexity  Reliance    Inherent   Residual
 ─────────────────────────────────────────────────────────────────────────────────────────
  credit-decision-model        critical    medium      high        Critical   High
  aml-alert-triage             high        medium      medium      High       Medium
  kyc-document-agent           high        critical    high        Critical   High
  policy-rag-assistant         low         medium      low         Medium     Low
  ...
  Rubric: default-v1 · dimensions MAS-AIRM §4.12(a)-(c) · tiering is this toolkit's proposal
$ airm check --register examples/synthetic_bank/ai-inventory.yaml --use-case kyc-document-agent

  FAIL  AIRM-5.15-GUARDRAIL-EFFECTIVENESS   guardrail 'injection filter' has no effectiveness test
        MAS-AIRM §5.15, §5.15 fn46 · auto
  ATTEST AIRM-5.19-INDEPENDENT-VALIDATION    validator must be independent of dev and deployment
        MAS-AIRM §5.19 · semi · inherent tier Critical
  PASS  AIRM-4.8-FN25-AGENT-ATTRIBUTES      agent identifier, tools, components, guardrails present
        MAS-AIRM §4.8 fn25 · auto

What is in the box

Module Serves What it does
airm.catalog §1.1–§1.8 65 paragraphs and 51 footnotes as data: tags, effective dates, agent attributes, GenAI failure modes
airm.inventory §4.5–§4.9, fn25 Pydantic models for use cases, with an AgentExtension for tools, permissions, components and guardrails; register diff and completeness scoring
airm.materiality §4.10–§4.13 Impact / Complexity / Reliance scoring from a YAML rubric; inherent and residual tiers; every score carries its reasons
airm.controls Section 5 Control catalogue with applicability by tier, required evidence, automated checks and an automatability class
airm.evals §5.14–§5.15 Adapters that read inspect-ai, promptfoo, deepeval, ragas and garak output and map it to controls; agent tool-scope audit
airm.monitor §5.17, §5.23 Hash-chained JSONL evidence and incident log
airm.thirdparty §5.10–§5.11 Vendor assessment records, independent-assessment vs self-attestation, limit/suspend/replace decision
airm.crosswalk — MAS-AIRM ↔ ISO/IEC 42001, NIST AI RMF (+ GenAI Profile), EU AI Act, FEAT
airm.scan §4.2, §4.4 Shadow-AI discovery: LLM SDK imports, model endpoints, MCP server configs, agent frameworks, vendor AI SaaS
airm.report — Markdown → DOCX/PDF audit pack

JSON Schemas for every model live in schemas/, so a GRC platform or a spreadsheet can adopt the formats without Python — regenerate them with airm schemas.

Full documentation, including a concepts guide, the CLI reference and a cookbook, is at https://thanatchon36.github.io/airmkit/ (make docs builds it locally).

The paper

Operationalising the MAS Guidelines on AI Risk Management for LLM and Agentic Systems: A Machine-Checkable Control Catalogue and Empirical Study.

📄 Read it on the web https://thanatchon36.github.io/airmkit/paper/
⬇️ Download the PDF (22 pp) paper/paper.pdf — direct download
📝 Markdown source paper/paper.md, rendered from paper/paper.md.in
🔢 Every number in it injected from results/summary.json; nothing is typed by hand
📋 One page for a CRO docs/EXEC_SUMMARY.md

Research

The repository is also a reproducible study of how far these Guidelines can be machine-checked. Five questions, thresholds fixed in advance, in docs/RESEARCH_QUESTIONS.md: automatability of each expectation, how autonomy changes materiality, measured guardrail failure rates on a local model, crosswalk coverage, and the shape of the compliance workload.

Of 17 pre-registered hypotheses, 10 held and 7 were refuted — including that the guardrail patterns which suppress attacks also refuse half of benign in-scope requests, and that what an ISO 42001 + NIST-aligned institution still owes is governance machinery rather than the agent clauses. All of them are reported, with the thresholds they failed.

make reproduce     # rebuilds every table and figure in paper/paper.md
make quick         # under 5 minutes, no model calls

Results are in results/summary.json, the figures in results/figures/ with their captions, and the write-up in paper/paper.md (PDF, web). make paper rebuilds all three.

Clause index

Every paragraph of the Guidelines maps to the module, control and CLI command that implements it. The table is generated from the catalogue, never hand-maintained:

airm clauses --format markdown        # or: make docs

Development

make setup      # uv venv -p 3.11 and an editable install with every extra
make quick      # lint, fast tests and the worked example — under 5 minutes
make test lint  # full suite with coverage; ruff + mypy --strict
make help       # every target

Generated files (schemas/, results/summary.json, paper/paper.md, docs/EXEC_SUMMARY.md, docs/posts/*.md, docs/clause-index.md) have staleness tests: edit the source, then run make schemas paper docs.

Contributing

The most useful contributions are new crosswalks (HKMA, BNM, Bank of Thailand, APRA), new eval adapters, and challenges to the interpretations in docs/INTERPRETATIONS.md — if you read a paragraph differently, open an issue and say which paragraph. See CONTRIBUTING.md.

Citation

@software{airmkit,
  author  = {Chongmankhong, Thanatchon},
  title   = {airmkit: Operationalising the MAS Guidelines on AI Risk Management
             for LLM and Agentic Systems},
  year    = {2026},
  url     = {https://github.com/thanatchon36/airmkit},
  version = {0.1.0}
}

See CITATION.cff. Release notes are in CHANGELOG.md.

Licence

Apache-2.0. The MAS documents reproduced under docs/sources/ remain MAS copyright and are included only so that every citation in this repository can be verified offline.

Metadata

Release files for airmkit 0.1.0

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

Source distribution (sdist)

Source distribution for airmkit 0.1.0
File Size Uploaded
airmkit-0.1.0.tar.gz 210.9 kB Details

Built distribution (wheel)

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

Total release size: 383.4 kB

Release files / airmkit-0.1.0.tar.gz

Download URL airmkit-0.1.0.tar.gz
Size 210.9 kB
Tags Source
SHA-256 checksum
How to use checksums
56142a4271456ece0c6642ba57632837cc35a91b5f2c39cc7e831627395587c1
BLAKE2b-256 checksum
How to use checksums
219a2f9e0bea860125386c803db95a1c7bddfa40b02976bf7191019725188709
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 13, 2026.

Transparency log

Release files / airmkit-0.1.0-py3-none-any.whl

Download URL airmkit-0.1.0-py3-none-any.whl
Size 172.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e3e719d140b3596260cc0916b0a3395d463b9161ed33eed4f50b620393d15dd0
BLAKE2b-256 checksum
How to use checksums
d848e16f3f9922d9cc66697bcfccf406c996d4b57f02189b4817542233a74987
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 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

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