Skip to main content

AION Protocol

The trust layer for AI agents — identity, limits, and court-ready proof for every agent action.

AI agents don't just chat anymore — they spend money, run code, delete files, and call other agents. What they're missing is a bank-grade control layer. AION gives every agent:

  • 🪪 Identity — a signed Intent Mandate (budget + payee allowlist + expiry) the agent cannot exceed
  • 🚦 Limits — one-time, amount-and-payee-bound payment authorizations (replay-proof)
  • 🧾 Proof — tamper-evident, hash-chained receipts for every action
  • ⚖️ Disputes — exportable, third-party-verifiable evidence bundles

AION doesn't move money — rails like x402 do. AION decides whether a payment is allowed, and proves what happened.

Quickstart

pip install aion-core

1. Scan — find risky patterns in your agent's code:

aion scan .

2. Guard — allow, block, or require approval for actions:

aion guard-demo

3. Payments — give your agent a spending mandate and let it pay safely:

# Create a signed mandate: agent:shopbot can spend max 500/payment, 1000 total, only these payees
aion mandate-create agent:shopbot 500 1000 "api:weather,api:news"

# Agent requests a one-time payment auth (bound to exact amount + payee)
aion pay <mandate_id> 300 api:weather

# Settle it with the on-chain/off-chain reference
aion settle <jti> x402:tx_0xabc123

# Verify as a third party / export court-ready dispute evidence
aion pay-verify <jti>
aion dispute <mandate_id> --save

Attack table (all enforced, all tested):

Attack AION response
Replay a settled payment ALREADY_SETTLED
Spend over per-payment limit AMOUNT_LIMIT
Spend over total budget (race-safe) BUDGET_EXHAUSTED
Pay an unapproved payee PAYEE_NOT_ALLOWED
Tamper with stored payment terms INVALID_SIGNATURE
Tamper with the receipt chain chain_intact: false
Rogue sub-agent AGENT_MISMATCH

4. x402 adapter — enforce the human's intent on real x402 payments:

# Seller asks for 0.003 USDC on base-sepolia (x402 PAYMENT-REQUIRED body)
# Agent pre-flights it: does the signed mandate allow this exact payment?
aion x402-pay <mandate_id> @x402-requirements.json

# Seller-side: is this agent's payment actually allowed? (called inside /verify)
aion x402-check <mandate_id> @x402-requirements.json <jti>

# Bind the on-chain settlement hash into the receipt chain
aion x402-settle <jti> @x402-response.json

x402's own spec says funds "must only move in accordance with client intentions" — but the protocol has no way to sign, bind, or prove those intentions. AION adds that missing layer: a signed mandate the agent cannot exceed, one-time authorizations bound to exact amount + payee, and settlement hashes chained into verifiable receipts. Overcharge, rogue payee, double-spend, and prompt-injected terms are all blocked.

Why not just trust the model?

A modern model writes clean code — that was never the problem. The problem is authority: an agent that can act on the real world needs the same thing humans got from banks: card limits, one-time OTPs, receipts, and chargebacks. AION is that layer. It doesn't depend on the agent's goodwill — only on signatures and state the agent cannot touch.

Receipts

Every allowed/blocked/approved action gets a tamper-evident receipt (sha256-chained, secrets auto-redacted):

aion receipts 10

Optional: hosted verification API

Local mandates and receipts are free and offline. For third-party verification, revocation, and cross-company agent trust, run the API server:

pip install "aion-core[cloud]"
uvicorn aion.api:app

Endpoints: /issue, /enforce, /verify/{jti}, /revoke/{jti}, /health. The server boots in degraded mode if the database is down and reports it in /health.

Status

  • Scan: ✅ | Guard: ✅ | Authority (one-time tokens + delegation): ✅
  • Receipts + audit chain: ✅
  • Payment Trust Rails (mandate → bound auth → settlement → dispute bundle): ✅
  • x402 adapter (client pre-flight, seller-side verify, settlement binding): ✅
  • Hosted verification network: 🟡 live at https://aion-protocol.onrender.com

Built by Sourabh Ranjan Sahoo.

Release files for aion-core 2.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 aion-core 2.1.0
File Size Uploaded
aion_core-2.1.0.tar.gz 33.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aion-core 2.1.0
File Interpreter ABI Platform
aion_core-2.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 74.4 kB

Release files / aion_core-2.1.0.tar.gz

Download URL aion_core-2.1.0.tar.gz
Size 33.8 kB
Tags Source
SHA-256 checksum
How to use checksums
ddd74f7fd4c031aba2463d77892c1033df629db36c0fdf3380d1e74a0d6e96fd
BLAKE2b-256 checksum
How to use checksums
0e545aa00635597a32ccb7d781b1adbf92682be8ee2660fe66cb02b1fdab4e1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Release files / aion_core-2.1.0-py3-none-any.whl

Download URL aion_core-2.1.0-py3-none-any.whl
Size 40.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
48f83f110c8c4521787090e6f582e6004c15cd37e9ee48d3bb6cc0e97d811b47
BLAKE2b-256 checksum
How to use checksums
4fe37e62d2605f9deb6f91c6d9fbfa72b19f81faae65f6e458a560a3b0b9bcd9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Release history Release notifications | RSS feed

2.3.3

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.2

2 release files

2.1.1

2 release files

This release

2.1.0 This release

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.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