SDKs
Your language.
Same protocol.
All four official SDKs implement the same message types, the same Ed25519 signing scheme, and the same saga state machine.
TS
TypeScript SDK
v1.0.0 · MIT License
The reference implementation. 18 packages covering every protocol primitive. Native ESM, full type safety, Vitest-tested.
Install
npm install @aroha-sdk/core @aroha-sdk/orchestrator @aroha-sdk/credentials
Quickstart
import { ArohaServer } from "@aroha-sdk/core";
import { SagaEngine } from "@aroha-sdk/orchestrator";
const server = new ArohaServer({
agentDID: "did:aroha-web:myco.ai:agents:personal",
port: 3000,
onMessage: async (envelope, respond) => {
// Handle incoming Aroha messages
},
resolvePublicKey: async (did) => { /* DID resolution */ },
});
await server.start();Packages
@aroha-sdk/coreTransport, crypto, identity, messages
@aroha-sdk/orchestratorSagaEngine, AgentSelector, CSN
@aroha-sdk/credentialsRBAC, spending mandates, registry
@aroha-sdk/registryAgent discovery, on-chain + federated
@aroha-sdk/settlementPayment backends: null, quota, stripe, escrow
@aroha-sdk/reputationBayesian Beta engine, Thompson Sampling
@aroha-sdk/policyCapability rules, prompt injection defense
@aroha-sdk/cacheSemantic caching for ArohaRequest
@aroha-sdk/telemetryOpenTelemetry + W3C Trace Context
@aroha-sdk/commerceB2B agreements, subscriptions, audit trail
@aroha-sdk/preferencesUser preference profiles, soft scoring
@aroha-sdk/trusted-meshVPC/mTLS signature bypass
@aroha-sdk/mcp-bridgeMCP tools ↔ Aroha capabilities
@aroha-sdk/a2a-bridgeGoogle A2A ↔ Aroha protocol
@aroha-sdk/langchain-bridgeLangChain, AutoGen, Semantic Kernel
@aroha-sdk/hermes-bridgeHermes Agent + ZeroClaw — MCP stdio server
@aroha-sdk/openclaw-bridgeOpenClaw skills ↔ Aroha capabilities
@aroha-sdk/composio-bridgeComposio actions for TrustClaw + any LLM
@aroha-sdk/micro5-line dev API for local testing
@aroha-sdk/cliScaffold agents, convert from other frameworks
Py
Python SDK
v1.0.0 · MIT License
asyncio-native. FastAPI transport, Pydantic validation, LangChain + CrewAI + AutoGen bridges. Python 3.11+.
Install
pip install aroha
Quickstart
from aroha.transport import ArohaServer
from aroha.mandate import issue_intent_mandate, SpendingConstraints
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey
key = Ed25519PrivateKey.generate()
intent = issue_intent_mandate(
grantor_did="did:aroha-web:myco.ai:agents:user",
grantee_did="did:aroha-web:myco.ai:agents:personal",
constraints=SpendingConstraints(spend_limit_usd=500.0),
private_key=key,
)Packages
aroha.cryptoEd25519 signing, AES-256-GCM encryption
aroha.identityDID resolution, did:aroha-web:
aroha.messages16 message types, envelope builder
aroha.transportFastAPI-based ArohaServer, async client
aroha.orchestratorSagaEngine, AgentSelector
aroha.mandateSpendingMandate issue, attenuation, verify
aroha.reputationBayesian Beta engine, Thompson Sampling
aroha.csnCapability Schema Negotiation
Go
Go SDK
v1.0.0 · MIT License
Zero external dependencies for the core. Idiomatic Go interfaces, stdlib ed25519, Go 1.22+.
Install
go get pkg.aroha-labs.com/sdk-go
Quickstart
package main
import (
"time"
"pkg.aroha-labs.com/sdk-go/aroha/mandate"
"crypto/ed25519"
"crypto/rand"
)
func main() {
pub, priv, _ := ed25519.GenerateKey(rand.Reader)
intent, err := mandate.IssueIntent(
"did:aroha-web:myco.ai:agents:user",
"did:aroha-web:myco.ai:agents:personal",
mandate.SpendingConstraints{SpendLimitUSD: 500},
priv, time.Hour,
)
_ = intent
}Packages
aroha/cryptoEd25519 sign/verify, AES-GCM
aroha/identityDID, did:aroha-web:
aroha/messagesEnvelope types, nonce registry
aroha/transportArohaServer, ArohaClient
aroha/orchestratorSagaEngine, AgentSelector, CSN
aroha/mandateSpendingMandate chain
aroha/reputationBayesian Beta reputation engine
Jv
Java SDK
v1.0.0 · MIT License
Java 21 records, sealed interfaces, Bouncy Castle for Ed25519, Spring AI bridge included.
Install
// Gradle implementation 'io.aroha:aroha-sdk:1.0.0' // Maven <dependency> <groupId>io.aroha</groupId> <artifactId>aroha-sdk</artifactId> <version>1.0.0</version> </dependency>
Quickstart
import io.aroha.mandate.ArohaMandateCredential;
import io.aroha.mandate.ArohaMandateCredential.*;
var constraints = new SpendingConstraints.Builder()
.spendLimit(500.0)
.currency("USD")
.build();
var intent = ArohaMandateCredential.issueIntent(
"did:aroha-web:myco.ai:agents:user",
"did:aroha-web:myco.ai:agents:personal",
constraints,
userPrivateKey,
Duration.ofHours(1)
);Packages
io.aroha.cryptoEd25519, AES-GCM via Bouncy Castle
io.aroha.identityDID, did:aroha-web:
io.aroha.messagesEnvelope, NonceRegistry
io.aroha.transportArohaServer, ArohaClient
io.aroha.orchestratorSagaEngine, AgentSelector, CSNHandler
io.aroha.mandateArohaMandateCredential
io.aroha.reputationReputationEngine
io.aroha.bridgesSpringAiBridge