Application Layer
Your agents live here. They use the layers below without caring about crypto, transport, or saga mechanics.
Thinking in LLM + harness terms — brain, tools, skills, RAG? There's a mapping for that.
Where Aroha fits in your agent's anatomy →Aroha is the trust layer between your AI agents — it makes sure every request is signed, every spending limit is enforced, and every action can be traced back to the human who approved it.
If you are building your first agent, start with the Quickstart — the SDK handles every layer automatically. Come back here when you need to understand what is happening beneath the surface.
The kernel never imports the extensions. Extensions never import the application. Every layer is independently testable and replaceable.
protocol layer stack · dependencies ↓
Your agents live here. They use the layers below without caring about crypto, transport, or saga mechanics.
Multi-agent coordination. SagaEngine fans out sub-tasks, waits for agents to confirm they can handle them, then commits — or rolls everything back if one fails. AgentSelector picks the best agent automatically. Capability Negotiation (CSN) lets two agents agree on what they can do before work starts.
Pluggable packages. Mount only what you need. No extension has an upward dependency on another.
HTTP + WebSocket transport. ArohaServer serves /.well-known and /aroha/v1. Middleware runs after signature verification.
Foundation that never imports anything above it. Every envelope is signed; every nonce is tracked.
Atomic multi-agent transactions with automatic LIFO compensation. Either all agents commit, or all roll back — no partial state.
saga execution flow · happy path ↑ · failure path ↓
All wire-compatible across every SDK. Same JSON structure, same Ed25519 signatures, same correlation IDs.
Every Aroha message is a signed envelope. No bare HTTP payloads. The signature covers the full body — routing headers, nonce, expiry, and payload together.
interface ArohaEnvelope {
// Routing
from: string; // sender DID
to: string; // recipient DID
type: ArohaMessageType;
correlationId: string; // UUID v4
// Security
nonce: string; // replay guard (5 min)
expires: string; // ISO 8601
proof: string; // Ed25519 sig (base64url)
// Payload
body: ArohaBodyByType[ArohaMessageType];
// Optional
traceparent?: string; // W3C Trace Context
routingHint?: { complexity?: number };
}Ready to build?