Authority that narrows at every hop, and can be checked by anyone.
People hand work to AI agents, and those agents hand it to other agents and tools, often run by other companies. Nothing that travels with the work proves what each agent was allowed to do, that it stayed inside that, or what it actually did. Aroha is the part that travels with the work.
Four steps
- 1
A person signs a mandate
It names the agent it is for, what may be done, how much may be spent, and when it expires. It is signed with the person's own key.
- 2
Each agent passes on less
An agent that delegates signs a narrower mandate for the next agent. It can lower a limit or shorten an expiry, never raise or extend one.
- 3
The tool verifies before it acts
The receiving tool checks every link back to the person, offline, and refuses anything forged, altered, widened or expired.
- 4
The person can stop it, and anyone can check it
The person can revoke a mandate at any time, and verifiers check for revocation before acting. Each allowed or refused action can be signed as a receipt.
import { verifyMandateChain } from "@aroha-sdk/credentials";
const { valid, chainVerified, mandate, reason } = await verifyMandateChain(
token,
undefined, // identifiers commit to their own keys: no lookup
{ expectedRoot: PERSON_DID, expectedGrantee: MY_DID },
);
if (!valid || !chainVerified) return refuse(reason);
// mandate.constraints.spendLimitUsd, merchantCategory, validUntil …Why not API keys or OAuth?
- Per-hop credentials (API keys, OAuth tokens)
- Each hop enforces its own key. The person's limit, purpose and expiry are lost along the way.
- Framework guardrails
- Checks inside one codebase. Nothing survives the hop to another company's agent.
- Aroha mandates
- A signed chain back to the person. Scope only narrows. Any verifier checks it offline, and every action can leave a signed receipt.
What Aroha is not
- An agent framework or orchestratorUse LangGraph, CrewAI, the Claude Agent SDK, the OpenAI Agents SDK
- Aroha bounds what their agents may do. It does not plan or run them.
- A transport or tool protocolUse MCP, A2A
- Aroha travels on them: in MCP request metadata, and in signed A2A agent cards.
- An identity providerUse Entra Agent ID, Okta, Auth0, AWS AgentCore Identity
- Aroha can take the identity they issue as the root of a chain, and carry that authority past their boundary.
- A payments network or checkout protocolUse AP2, Visa Intelligent Commerce, Mastercard Agent Pay, ACP
- Spending mandates map onto theirs. Aroha also covers the actions that are not payments.
- A blockchain project
- The registry is a signed witness. Nothing in the core needs a chain.
Light to adopt
No new infrastructure
A verifier needs the token and nothing else. Checking a two-link chain took 3.6 ms on a laptop, with no network call.
No round trip per hop
Agents delegate by signing a narrower mandate, not by asking a central server for a new token at every hop.
Adopt at the edge
One verify call in a handler, or one wrapper around an MCP server. Your agents, identity provider and frameworks stay.
Standards where they exist
MCP authorization, A2A signed agent cards, OpenTelemetry. Aroha defines only narrowing mandates and verifiable receipts.