Registry Pricing
Three registry tiers — from free localhost to on-chain staking — with no lock-in. Switch tiers by changing one config option.
The Problem: Registry Spam and Sybil Attacks
An open agent registry without any barrier to entry is trivially spammable. Bad actors can register thousands of fake agents, poison discovery results, and manipulate the reputation system. Aroha solves this with a tiered cost model: free for development, fiat-gated for production, and stake-gated for maximum Sybil resistance.
In-process or localhost. Zero infra. Perfect for development and testing.
import { serve } from "@aroha-sdk/run";
// Any agent started locally is a valid Aroha agent
const agent = serve("Local Dev Agent", async ({ message }) => {
return `Dev echo: ${message}`;
});
agent.start(3001);
// In dev there is no registry to resolve through, so POST the
// endpoint directly. callAgent is for agents that are registered.
const res = await fetch("http://localhost:3001/v1/run", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ message: "Hello!" }),
});
const { message } = await res.json();- ✅No registry required — call the endpoint directly
- ✅Nothing persisted (use for dev only)
- ✅No authentication required
- ✅Register the agent to make it resolvable by didHash
Hosted registry at aroha-registry.aroha-labs.workers.dev. Fiat billing via Stripe. Free tier available.
import { serve } from "@aroha-sdk/run";
const agent = serve("My Agent", handler);
// Register on the Aroha Hub (hosted HTTP registry)
const { didHash } = await agent.register(
"https://your-agent.example.com",
{ apiKey: process.env.AROHA_API_KEY }
);
// Callers resolve the endpoint automatically from the registry
// — no hardcoded URLs needed on the caller side- ✅Free tier: 100 registrations, 10k lookups/month
- ✅Pro tier: $29/mo — unlimited lookups, SLA 99.9%
- ✅API key auth — rotate in dashboard
- ✅WebHook notifications on peer registration
On-chain registry with staking-based Sybil resistance. Requires ETH stake to register. Not yet available — join the waitlist.
// EVM registry is registered via the Aroha Studio or CLI.
// After staking, the agent DID is anchored on-chain and can be
// resolved by any EVM-compatible client without a centralised API.
// On-chain resolution (read-only, no API key needed):
const res = await fetch(
"https://aroha-registry.aroha-labs.workers.dev/v1/agents/onchain/" +
encodeURIComponent(didHash)
);
const { endpointUrl } = await res.json();- ✅Sybil-resistant — stake slashed on bad behaviour
- ✅Lookups are free (on-chain read calls)
- ✅Stake locked for 30 days after deregistration
- ✅Arbitrum deployment — ~10× cheaper than mainnet
Choosing a Tier
| Scenario | Recommended tier | Why |
|---|---|---|
| Local dev / unit tests | Local (free) | Zero latency, no credentials, disposable |
| Staging / integration tests | HTTP (free tier) | Real network, free quota covers CI usage |
| Production B2B SaaS | HTTP (Pro) | Predictable fiat billing, SLA, webhook support |
| High-trust financial agents | EVM (staking) | On-chain proof of stake deters Sybil attacks |
ETH Volatility Mitigation
The EVM registry stake is denominated in ETH, which is volatile. Here are strategies to manage the risk:
Use Arbitrum, not Ethereum mainnet
Arbitrum gas fees are ~10–100× cheaper. The same 0.01 ETH stake goes much further.
Stake the minimum required
The minimum stake is set in the registry contract and can only increase on-chain. Don't over-stake.
Treasury hedge with stablecoins
Hold protocol revenue in USDC/USDT and convert to ETH only when staking. Reduce ETH exposure duration.
Monitor the unstaking queue
The 30-day lock-out means ETH price risk is bounded. Plan deregistrations ahead of treasury events.
Managed Registry — SLA & Service Status
The Aroha managed registry at registry.aroha-labs.com is production infrastructure. These are the commitments for the HTTP (Pro) tier.
99.9%
Uptime SLA
Pro tier (HTTP). Excludes scheduled maintenance.
< 50 ms
Read latency
p95 for agent resolution (DID lookup).
< 200 ms
Write latency
p95 for register / updateManifest.
fallbackUrls in ArohaHttpRegistry to point at your own createArohaRegistryServer() instance. The SDK retries on 5xx / network errors in order — 4xx errors (bad request, not found) short-circuit immediately.