Aroha
Get started

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.

  1. Person

    Maya

    $500

    Signs a mandate: up to $500 on airline fares, for one hour.

  2. Agent

    Travel assistant

    $300

    Passes on $300 of it. It can narrow the grant, never widen it.

  3. Agent

    Flight agent

    $300

    Sends the signed chain with every request it makes.

  4. Tool

    Airline API

    Checks every link back to Maya, offline, before acting.

    • $280 fareBooked
    • $420 fareDeclined, over limit
Figure 1. Maya's flight agent books the $280 fare on its own, with no one to ask. The $420 fare is over the $300 it was given, so the airline's API declines it before any money moves. The API checks the whole chain itself, and either decision can be kept as a signed receipt.

Four steps

The same four steps run whether the chain is two links long or six.
  1. 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. 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. 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. 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.

Step 3, in a request handler
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?

They were built for software that does what it was told, once. Agents delegate.
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

Aroha is a layer that works with the tools below. It replaces none of them.
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.