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.