From Invariant Systems: cryptographic infrastructure for AI-era engineering.

Tamper-evident provenance for AI-assisted code · Apache 2.0

AIIR: AI Integrity Receipts

Deterministic, locally verifiable receipts for declared AI involvement in every commit. No account required.

pip install aiir
aiir --pretty
aiir --verify .aiir/receipts.jsonl

Latest: v1.6.0 · Python 3.9+ ·

Same commit metadata produces the same receipt. Verify locally, in CI, in the browser, or offline. No hosted service required.

Published to PyPI · GitHub Marketplace · GitLab CI/CD Catalog · VS Code Marketplace · OpenSSF Scorecard

About Invariant Systems · Company directions · Read the spec

Generate → Verify anywhere → Add CI when needed

1 Generate a deterministic receipt

$ aiir --pretty
┌─ Receipt: g1-a3f8b2c1d4e5...
│  Commit:  c4dec85630
│  AI:      YES (copilot)
│  Hash:    sha256:7f3a8b...
└──────────────────────────────

2 Verify independently

$ aiir --verify .aiir/receipts.jsonl
✅ Receipt g1-a3f8b2c1... VALID
   Hash matches. 0 tampering detected.
   Receipt core is intact.

3 Add CI signing when you need it

# .github/workflows/aiir.yml
- uses: invariant-systems-ai/aiir@a54fe440a2be18fe51ad30149f1bbab944d578e5 # v1
  with:
    output-dir: .receipts/
# → signed receipts uploaded as artifacts

Try the browser verifier →. Paste any JSON receipt; verification runs client-side. No upload. No account.

What AIIR does and does not do

What it does

AIIR records declared AI involvement in a commit and produces a deterministic receipt that can be verified locally, in CI, in the browser, or offline.

What it does not do

AIIR does not attempt to prove hidden AI usage. Detection signals are optional enrichment, not the authoritative source of truth.

How it works

1

Declare AI involvement

Use commit trailers, bot metadata, or editor and assistant workflows that carry AI context into commit metadata.

2

AIIR generates a deterministic receipt

AIIR records the declared AI context and creates a content-addressed receipt for the commit with stable hashes and receipt IDs.

3

Verify anywhere

Verify locally in the CLI, in the browser, or later in CI. Change any core field and the receipt breaks. No central service is required to check it.

A real receipt

This is a sample receipt. Real receipts are deterministic for the same commit metadata; the page rotates demo values for presentation only.

┌─ Receipt: g1-a3f8b2c1d4e5f6a7...
  Commit:  c4dec8563023
  Subject: feat: add auth middleware
  Author:  Jane Dev <jane@example.com>
  Files:   4 changed
  AI:      YES (message_match:co-authored-by: copilot)
  Hash:    sha256:7f3a8b...
  Time:    2026-03-07T09:48:59Z
  Signed:  optional (CI / release)
└──────────────────────────────────────────

Who it's for

💻

Developers

Use pip install aiir to generate and verify declared AI provenance per commit in one repository. Takes 30 seconds. Works offline. No account required.

Quick start →
🔒

Security & Release Owners

Tamper-evident commit proof with SHA-256 hashing, optional Sigstore signing, and structured JSONL output for release checks, incident review, and durable audit trails.

Security posture →
🏢

Teams & CI

GitHub Action and GitLab CI for automated receipts on every push. Keep receipts in your repo or artifact store, export JSONL for your own tooling, and add policy gates without sending code to a third-party service.

See integrations →

One kernel, multiple trust layers

Everything in AIIR hangs off one core: receipts plus verification. Assurance features and integrations sit around the same receipt format instead of redefining the product.

Kernel

Receipts + verification

The product identity: deterministic proof for declared AI involvement

  • Deterministic receipt generation
  • Canonical JSON + SHA-256 hashing
  • Stable receipt IDs
  • Independent local and offline verification
  • Append-only JSONL ledger
  • Deterministic CBOR envelope (RFC 8949)
Install AIIR →
Assurance

Trust amplifiers

Optional when you need stronger release or policy evidence

  • Sigstore keyless signing in CI
  • Policy presets for stricter gates
  • Release verification + VSA emission
  • Published release-evidence verification
  • GitHub Action + GitLab CI templates
See assurance →
Adapters

Surfaces around the kernel

Multiple ways to emit and verify the same receipt format

  • CLI + VS Code extension
  • GitHub Action + GitLab CI
  • MCP server + local automation
  • Browser verifier for shareable proof checks
  • Optional signal enrichment
See integrations →

Detection is enrichment, not proof of hidden AI usage. The kernel remains the same: declared AI involvement, recorded as a deterministic receipt and verified independently.

Built for trust

Numbers you can verify. Every stat maps to a public CI run or an open-source file you can audit.

0
Dependencies
2499
Tests passing
100%
Coverage (stmt + branch)
145
Public checks on main push

Last reviewed: 2026-06-04 · Release Health → · Security posture →

Zero runtime dependencies: no supply chain to compromise. The entire codebase is open and auditable, with roughly 9,200 lines of core logic.
Public threat model: full STRIDE/DREAD analysis with concrete mitigations. Read it →
Adversarial testing: every release goes through structured attack rounds: fuzzing, path traversal, homoglyph evasion, TOCTOU races.
145 public checks, 3 required gates: Python 3.9–3.13 on Ubuntu, Windows, macOS. The latest main push fans out across CI, Quality, Security, CodeQL, ClusterFuzzLite, Sync, Scorecard, and receipt automation. Branch protection requires ci-ok, quality-ok, and security-ok before merge.

Multiple operator surfaces, one receipt format

Start with the CLI, then add the surface that matches how your team works. Every path emits the same content-addressed receipt.

💻 CLI

pip install aiir is the zero-dependency CLI path. Receipt commits, verify locally, and keep the first workflow simple.

🧩 VS Code Extension

The local-first operator surface for one repo. Record the current commit, inspect receipts, and carry AI tool context directly from the editor. Install from Marketplace →

⚙️ CI/CD

GitHub Action, GitLab component, and templates for the rest. Add repeatable pipeline receipts and optional Sigstore signing when you need stronger release evidence.

🤖 AI assistants via MCP

Let Copilot, Claude, Cursor, Continue, Cline, Windsurf, or another MCP client call the same local AIIR install. Assistant workflow, same receipt format.

See all integrations → including Azure Pipelines, Bitbucket, CircleCI, Jenkins, and policy engines.

Quick start

# CLI - receipt your last commit
pip install aiir
aiir --pretty

# Receipt a whole PR branch
aiir --range origin/main..HEAD --pretty

# Sign receipts with Sigstore
aiir --sign --output .receipts/

# GitHub Action (CI gate - signing on by default)
uses: invariant-systems-ai/aiir@a54fe440a2be18fe51ad30149f1bbab944d578e5 # v1

# GitLab CI/CD component
include:
  - component: gitlab.com/invariant-systems/aiir/receipt@1

Full documentation →

Why this matters

AI tools are now part of ordinary development. Copilot, ChatGPT, Claude, Cursor, and others all feed into git commit, but the durable record is still usually thin: a trailer, a bot author, or nothing.

Teams usually start here for practical reasons first: better local provenance, clearer release history, and a repeatable way to verify what was declared. Customer review, internal policy, and regulation including the EU AI Act are part of the backdrop, but they are not the only reason to adopt AIIR.

Sooner or later someone asks: "Which commits involved AI tools, and what can you actually prove from the record?"

AIIR answers that question for every commit with declared AI markers. One command. Zero runtime dependencies. Apache 2.0.

See how AIIR compares to other provenance formats in the landscape overview, or review the conformance guide to build your own verifier.

What AIIR records, and what remains outside scope:
  • Records: Commits with declared AI markers including Co-authored-by: Copilot, Generated-by: trailers, bot authors like dependabot, and 40+ known AI-tool signals in git metadata.
  • Does not prove: Silent copy-paste from ChatGPT, Copilot inline completions with no trailer, squash merges that strip markers, or amended commits that remove signals.

Signal enrichment is heuristic. Receipts prove what was declared, not what was silently used. See the threat model.

Need help or want to engage?

Bug reports

File reproducible product bugs in the public tracker so fixes, regressions, and workarounds stay visible.

Open a GitHub issue →

Questions and ideas

Use discussions for implementation questions, rollout feedback, and community conversation around AIIR.

Join the discussion →

Security reports

Do not post vulnerabilities publicly. Use the coordinated disclosure path with our published policy and response target.

View security reporting options →

Company

Invariant Systems, Inc. is a Delaware C-Corp building receipt-based provenance systems for AI-assisted software and adjacent audit workflows.

AIIR is the current product surface. The public research line extends the same receipt model to inference receipts and receipted actions; see Research.

noah@invariantsystems.io