ai2ai 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -9
- package/package.json +3 -9
- package/package.json.bak +0 -24
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
12
|
<p align="center">
|
|
13
|
-
<a href="https://www.npmjs.com/package/ai2ai
|
|
13
|
+
<a href="https://www.npmjs.com/package/ai2ai"><img src="https://img.shields.io/npm/v/ai2ai.svg" alt="npm"></a>
|
|
14
14
|
<a href="https://github.com/DarrenEdwards111/ai2ai-protocol/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt="License"></a>
|
|
15
15
|
<img src="https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg" alt="Node">
|
|
16
16
|
<img src="https://img.shields.io/badge/dependencies-0-brightgreen.svg" alt="Zero deps">
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
## Quick Start
|
|
22
22
|
|
|
23
23
|
```js
|
|
24
|
-
const { AI2AI } = require('ai2ai
|
|
24
|
+
const { AI2AI } = require('ai2ai');
|
|
25
25
|
|
|
26
26
|
const agent = new AI2AI({ name: 'my-agent', port: 18800 });
|
|
27
27
|
await agent.start();
|
|
@@ -46,7 +46,7 @@ await agent.send('other-agent', 'Hello from my AI!');
|
|
|
46
46
|
## Installation
|
|
47
47
|
|
|
48
48
|
```bash
|
|
49
|
-
npm install ai2ai
|
|
49
|
+
npm install ai2ai
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
Or clone directly:
|
|
@@ -59,7 +59,7 @@ git clone https://github.com/DarrenEdwards111/ai2ai-protocol.git
|
|
|
59
59
|
### Create an Agent
|
|
60
60
|
|
|
61
61
|
```js
|
|
62
|
-
const { AI2AI } = require('ai2ai
|
|
62
|
+
const { AI2AI } = require('ai2ai');
|
|
63
63
|
|
|
64
64
|
const agent = new AI2AI({
|
|
65
65
|
name: 'alice-agent',
|
|
@@ -101,7 +101,7 @@ await agent.request('bob-agent', 'schedule.meeting', {
|
|
|
101
101
|
### Registry
|
|
102
102
|
|
|
103
103
|
```js
|
|
104
|
-
const { RegistryServer, RegistryClient } = require('ai2ai
|
|
104
|
+
const { RegistryServer, RegistryClient } = require('ai2ai/src/registry');
|
|
105
105
|
|
|
106
106
|
// Start a registry server
|
|
107
107
|
const registry = new RegistryServer();
|
|
@@ -130,7 +130,7 @@ _ai2ai.yourdomain.com TXT "endpoint=https://your-server.com/ai2ai"
|
|
|
130
130
|
### Local Network (mDNS)
|
|
131
131
|
|
|
132
132
|
```js
|
|
133
|
-
const { startLocalDiscovery } = require('ai2ai
|
|
133
|
+
const { startLocalDiscovery } = require('ai2ai/src/registry');
|
|
134
134
|
|
|
135
135
|
const discovery = startLocalDiscovery((agent) => {
|
|
136
136
|
console.log(`Found: ${agent.agentId} at ${agent.endpoint}`);
|
|
@@ -159,7 +159,7 @@ discovery.query();
|
|
|
159
159
|
### OpenClaw
|
|
160
160
|
|
|
161
161
|
```js
|
|
162
|
-
const { createOpenClawAdapter } = require('ai2ai
|
|
162
|
+
const { createOpenClawAdapter } = require('ai2ai/src/integrations/openclaw');
|
|
163
163
|
|
|
164
164
|
const adapter = createOpenClawAdapter({
|
|
165
165
|
agentName: 'my-agent',
|
|
@@ -172,7 +172,7 @@ await adapter.start();
|
|
|
172
172
|
### Webhooks
|
|
173
173
|
|
|
174
174
|
```js
|
|
175
|
-
const { createWebhookForwarder } = require('ai2ai
|
|
175
|
+
const { createWebhookForwarder } = require('ai2ai/src/integrations/webhook');
|
|
176
176
|
|
|
177
177
|
const webhook = createWebhookForwarder({
|
|
178
178
|
url: 'https://your-server.com/webhook',
|
|
@@ -185,7 +185,7 @@ agent.on('message', webhook.handler);
|
|
|
185
185
|
### Express Middleware
|
|
186
186
|
|
|
187
187
|
```js
|
|
188
|
-
const { ai2aiMiddleware } = require('ai2ai
|
|
188
|
+
const { ai2aiMiddleware } = require('ai2ai/src/integrations/express');
|
|
189
189
|
|
|
190
190
|
app.use('/ai2ai', ai2aiMiddleware({
|
|
191
191
|
agentName: 'my-agent',
|
|
@@ -491,6 +491,31 @@ node test.js
|
|
|
491
491
|
|
|
492
492
|
---
|
|
493
493
|
|
|
494
|
+
## ⚔️ Why AI2AI?
|
|
495
|
+
|
|
496
|
+
Most agent-to-agent protocols assume you're inside a trusted corporate network. AI2AI assumes the internet is hostile — because when your AI talks to agents it's never met, on servers it doesn't control, security isn't optional.
|
|
497
|
+
|
|
498
|
+
| Feature | AI2AI | Google A2A | Agent Zero FastA2A |
|
|
499
|
+
|---------|-------|------------|-------------------|
|
|
500
|
+
| Cryptographic signatures | Ed25519 on every message ✅ | None (relies on OAuth) ❌ | None ❌ |
|
|
501
|
+
| End-to-end encryption | X25519 + AES-256-GCM ✅ | None ❌ | None ❌ |
|
|
502
|
+
| Discovery methods | Registry + DNS + mDNS ✅ | Agent Cards only | Agent Cards only |
|
|
503
|
+
| Reliable delivery | Retry, circuit breaker, receipts ✅ | Not specified ❌ | Not specified ❌ |
|
|
504
|
+
| Replay protection | Nonce tracking + message TTL ✅ | Not specified ❌ | Not specified ❌ |
|
|
505
|
+
| Key rotation | Automatic key lifecycle ✅ | N/A ❌ | N/A ❌ |
|
|
506
|
+
| Dead letter queue | Failed messages preserved ✅ | Not specified ❌ | Not specified ❌ |
|
|
507
|
+
| Trust model | Zero-trust, hostile internet ✅ | Corporate OAuth | None |
|
|
508
|
+
| Dependencies | Zero ✅ | Google Cloud ecosystem | Python ecosystem |
|
|
509
|
+
| Battle-tested | Live demo, 256 tests ✅ | Spec only | Basic wrapper |
|
|
510
|
+
|
|
511
|
+
**Google's A2A** is built for enterprise — managed identities, corporate infrastructure, centralised orchestration. Great if you're connecting Salesforce agents inside a data centre.
|
|
512
|
+
|
|
513
|
+
**AI2AI** is built for the open internet — where personal AI companions talk to strangers, negotiate on behalf of their humans, and form trust networks from scratch. Every message signed. Every payload encrypted. Zero dependencies.
|
|
514
|
+
|
|
515
|
+
> *"The internet is hostile. Your protocol should know that."*
|
|
516
|
+
|
|
517
|
+
---
|
|
518
|
+
|
|
494
519
|
## 🤔 FAQ
|
|
495
520
|
|
|
496
521
|
**Q: Does this need powerful models?**
|
package/package.json
CHANGED
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ai2ai",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Production-ready agent-to-agent communication protocol",
|
|
5
5
|
"main": "client.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"start": "node ai2ai-server.js",
|
|
8
8
|
"test": "node test.js"
|
|
9
9
|
},
|
|
10
|
-
"keywords": [
|
|
11
|
-
"ai2ai",
|
|
12
|
-
"agent",
|
|
13
|
-
"protocol",
|
|
14
|
-
"communication",
|
|
15
|
-
"multi-agent"
|
|
16
|
-
],
|
|
10
|
+
"keywords": ["ai2ai", "agent", "protocol", "communication", "multi-agent"],
|
|
17
11
|
"author": "Mikoshi Ltd <mikoshiuk@gmail.com>",
|
|
18
12
|
"license": "Apache-2.0",
|
|
19
13
|
"repository": {
|
|
@@ -27,4 +21,4 @@
|
|
|
27
21
|
"engines": {
|
|
28
22
|
"node": ">=18.0.0"
|
|
29
23
|
}
|
|
30
|
-
}
|
|
24
|
+
}
|
package/package.json.bak
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "ai2ai-protocol",
|
|
3
|
-
"version": "1.0.0",
|
|
4
|
-
"description": "Production-ready agent-to-agent communication protocol",
|
|
5
|
-
"main": "client.js",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"start": "node ai2ai-server.js",
|
|
8
|
-
"test": "node test.js"
|
|
9
|
-
},
|
|
10
|
-
"keywords": ["ai2ai", "agent", "protocol", "communication", "multi-agent"],
|
|
11
|
-
"author": "Mikoshi Ltd <mikoshiuk@gmail.com>",
|
|
12
|
-
"license": "Apache-2.0",
|
|
13
|
-
"repository": {
|
|
14
|
-
"type": "git",
|
|
15
|
-
"url": "https://github.com/DarrenEdwards111/ai2ai-protocol.git"
|
|
16
|
-
},
|
|
17
|
-
"bugs": {
|
|
18
|
-
"url": "https://github.com/DarrenEdwards111/ai2ai-protocol/issues"
|
|
19
|
-
},
|
|
20
|
-
"homepage": "https://github.com/DarrenEdwards111/ai2ai-protocol#readme",
|
|
21
|
-
"engines": {
|
|
22
|
-
"node": ">=18.0.0"
|
|
23
|
-
}
|
|
24
|
-
}
|