
Research
Malicious npm Packages Impersonate Flashbots SDKs, Targeting Ethereum Wallet Credentials
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
✓ Create A2A-compliant agent cards in .well-known/agent.json
✓ Manage agent skills according to A2A protocol
✓ Search for agents in registries
✓ Search for skills in registries
✓ Import skills from registries to agent cards
✓ Register agents in curated registries
✓ Interactive wizard interface with colorful UI
The Agent-to-Agent (A2A) protocol is designed to enable AI agents to discover and collaborate with each other. The protocol standardizes how agents describe themselves and their capabilities through "Agent Cards" which are hosted at a well-known location (typically .well-known/agent.json
).
Learn more about the A2A protocol at Google's A2A Protocol Documentation.
npm install -g aam
AAM is implemented as an ES Module, which means you can import its functions directly in your JavaScript files:
import { createAgentCard, initialize, addSkill } from 'aam/lib/index.js'
// Initialize a new project
const init = initialize()
// Create an agent card
const agent = createAgentCard({
name: 'My Agent',
description: 'A custom A2A agent',
url: 'https://example.com/a2a'
})
// Add a skill
const skill = {
id: 'custom-skill',
name: 'Custom Skill',
description: 'A custom skill',
inputModes: ['text'],
outputModes: ['text']
}
addSkill(skill)
AAM includes an interactive wizard-style interface to guide you through the process of creating and managing agents with a colorful and user-friendly CLI:
aam wizard
The wizard provides a step-by-step interface for:
This is the recommended approach for new users or when you prefer an interactive experience over command-line arguments.
Create the necessary templates and directories:
aam init
Create an A2A-compliant agent card in .well-known/agent.json
:
aam create-agent --name "My Agent" --description "A custom A2A agent" --url "https://example.com/a2a"
Optional parameters:
--provider-name
: Name of the agent provider--provider-url
: URL of the agent provider--version
: Version of the agentAdd a custom skill to your agent card:
aam add-skill --id "custom-skill" --name "Custom Skill" --description "A custom skill" --input-modes "text" --output-modes "text"
Optional parameters:
--example-input
: Example input for the skill--example-output
: Example output for the skill--card
: Path to the agent card (default: .well-known/agent.json
)Import a skill from the registry to your agent card:
aam import-skill text-generation
Optional parameters:
--card
: Path to the agent card (default: .well-known/agent.json
)--registry
: Path to the skills registry (default: built-in registry)Search for agents in the registry:
aam search-agents chatbot
Optional parameters:
--registry
: Path to the agents registry (default: built-in registry)Search for skills in the registry:
aam search-skills image
Optional parameters:
--registry
: Path to the skills registry (default: built-in registry)Register your agent in the registry:
aam register-agent
Optional parameters:
--card
: Path to the agent card (default: .well-known/agent.json
)--registry
: Path to the agents registry (default: built-in registry)Display help information about all commands:
aam help
The supported commands are:
init
: Initialize the project with necessary templates and directorieswizard
: Start the interactive wizard with colorful UIcreate-agent
: Create an agent card in .well-known/agent.json
add-skill
: Add a skill to an agent cardimport-skill
: Import a skill from registry to agent cardsearch-agents
: Search for agents in the registrysearch-skills
: Search for skills in the registryregister-agent
: Register an agent in the registryThe A2A protocol provides several strategies for discovering agents:
.well-known/agent.json
following RFC 8615.AAM supports all these discovery methods and makes it easy to generate compliant agent cards.
Here's an example of an agent card in A2A protocol format:
{
"name": "Text Generation Agent",
"description": "An agent that can generate text content using AI",
"url": "https://example.com/agents/text-generation",
"version": "1.0.0",
"provider": {
"name": "Example AI",
"url": "https://example.ai"
},
"capabilities": {
"streaming": true,
"pushNotifications": false,
"multiTurn": true
},
"authentication": {
"schemes": [
{
"type": "Bearer",
"description": "JWT token authentication"
}
]
},
"skills": [
{
"id": "text-generation",
"name": "Text Generation",
"description": "Generate text content based on prompts",
"inputModes": ["text"],
"outputModes": ["text"],
"examples": [
{
"input": { "text": "Write a short poem about the moon" },
"output": {
"text": "Silver orb in night's embrace,\nCasting light on Earth's dark face.\nAncient witness, timeless grace,\nGuiding dreamers through space."
}
}
]
}
]
}
Here's an example of a skill in A2A protocol format:
{
"id": "language-translation",
"name": "Language Translation",
"description": "Translate text between languages",
"inputModes": ["text"],
"outputModes": ["text"],
"parameters": {
"targetLanguage": {
"type": "string",
"required": true,
"description": "The language code to translate to"
}
},
"examples": [
{
"input": {
"text": "Hello, world!",
"parameters": {
"targetLanguage": "fr"
}
},
"output": { "text": "Bonjour, monde!" }
}
]
}
This project is under the MIT License. See the LICENSE file for the full license text.
FAQs
Agent-to-Agent Manager for A2A protocol
The npm package aam receives a total of 8 weekly downloads. As such, aam popularity was classified as not popular.
We found that aam demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.
Security News
Following last week’s supply chain attack, Nx published findings on the GitHub Actions exploit and moved npm publishing to Trusted Publishers.