Open Source · Framework Agnostic
Identity, Permissions & Skills
for AI Agent Networks
The missing layer between A2A Protocol and production.
Connect agents, control access, share skills — framework agnostic.
Authority
JWT / JWKS
Issue and verify signed credentials for agents. Built on industry-standard JWT with automatic JWKS key rotation. Every agent gets a provable identity.
Permissions
OAuth-style scopes
Fine-grained access control with scopes like
skill:execute:translate. Supports wildcards, delegation
chains, and on_behalf_of for multi-agent workflows.
Marketplace
Install & share skills
Discover, install, and publish agent skills. A registry for reusable capabilities that agents can request, negotiate, and consume.
Architecture
┌─────────────┐ ┌──────────────────┐ ┌─────────────┐
│ Agent A │ │ AgentMesh │ │ Agent B │
│ (Client) │────────▶│ │◀────────│ (Provider) │
└─────────────┘ token │ ┌────────────┐ │ verify └─────────────┘
│ │ Authority │ │
┌─────────────┐ │ │ (JWKS+JWT) │ │ ┌─────────────┐
│ Agent C │ │ └────────────┘ │ │ Agent D │
│ (Client) │────────▶│ ┌────────────┐ │◀────────│ (Provider) │
└─────────────┘ │ │ Permissions │ │ └─────────────┘
│ │ (Scopes) │ │
│ └────────────┘ │
│ ┌────────────┐ │
│ │ Marketplace │ │
│ │ (Skills) │ │
│ └────────────┘ │
└──────────────────┘
Quick Examples
1. Create an Authority (issue tokens)
import { createAuthority, keygen } from "@a2a-auth/core";
const keys = await keygen();
const authority = createAuthority({
issuer: "https://mesh.coinsenda.ai",
privateKey: keys.privateKey,
publicKey: keys.publicKey,
});
const token = await authority.issueToken({
subject: "agent:translator-v2",
audience: "https://api.example.com",
scopes: ["skill:execute:translate", "skill:read:*"],
}); 2. Verify tokens (protect your agent)
import { createVerifier } from "@a2a-auth/core";
const verifier = createVerifier({
jwksUrl: "https://mesh.coinsenda.ai/.well-known/jwks.json",
audience: "https://api.example.com",
});
const payload = await verifier.verify(token);
// { sub: "agent:translator-v2", scopes: [...], ... } 3. Client SDK (request access)
import { createClient } from "@a2a-auth/core";
const client = createClient({
agentId: "agent:my-assistant",
authorityUrl: "https://mesh.coinsenda.ai",
});
const result = await client.requestAccess({
targetAgent: "agent:translator-v2",
scopes: ["skill:execute:translate"],
}); Coming Soon
AgentMesh is launching soon. Join the waitlist to get early access to the hosted platform, marketplace, and dashboard.