ainternet 0.1.0__tar.gz
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.
- ainternet-0.1.0/.gitignore +61 -0
- ainternet-0.1.0/CITATION.cff +31 -0
- ainternet-0.1.0/PKG-INFO +242 -0
- ainternet-0.1.0/README.md +209 -0
- ainternet-0.1.0/pyproject.toml +65 -0
- ainternet-0.1.0/src/ainternet/__init__.py +48 -0
- ainternet-0.1.0/src/ainternet/ains.py +261 -0
- ainternet-0.1.0/src/ainternet/cli.py +163 -0
- ainternet-0.1.0/src/ainternet/client.py +314 -0
- ainternet-0.1.0/src/ainternet/ipoll.py +381 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Secrets & env
|
|
2
|
+
.env
|
|
3
|
+
*.env
|
|
4
|
+
*.secret
|
|
5
|
+
|
|
6
|
+
# Keys & certs
|
|
7
|
+
*.key
|
|
8
|
+
*.pem
|
|
9
|
+
certs/
|
|
10
|
+
secrets/
|
|
11
|
+
|
|
12
|
+
# Databases & dumps
|
|
13
|
+
*.db
|
|
14
|
+
*.sqlite
|
|
15
|
+
*.sql
|
|
16
|
+
dump_*/
|
|
17
|
+
|
|
18
|
+
# EXCEPT: Allow database schemas (needed for server rebuild)
|
|
19
|
+
!database-schemas/*.sql
|
|
20
|
+
|
|
21
|
+
# Logs & runtime data
|
|
22
|
+
logs/
|
|
23
|
+
*.log
|
|
24
|
+
__pycache__/
|
|
25
|
+
*.pyc
|
|
26
|
+
venv/
|
|
27
|
+
.venv/
|
|
28
|
+
**/venv/
|
|
29
|
+
**/.venv/
|
|
30
|
+
|
|
31
|
+
# Configs met secrets (we gebruiken straks templates)
|
|
32
|
+
config/
|
|
33
|
+
brain_api/provisioning.local.json
|
|
34
|
+
brain_api/provisioning.json
|
|
35
|
+
|
|
36
|
+
# Landing pages (privé - niet open source)
|
|
37
|
+
landing-pages/
|
|
38
|
+
humotica.com/
|
|
39
|
+
jtel.nl/
|
|
40
|
+
|
|
41
|
+
# Social media posts (strategie - niet open source)
|
|
42
|
+
SOCIAL-MEDIA-POSTS.md
|
|
43
|
+
HN-POST-UNDER-4000.md
|
|
44
|
+
STRATO-DEPLOY-HUMOTICA.md
|
|
45
|
+
|
|
46
|
+
# Endorsement outreach (privaat contact)
|
|
47
|
+
ARXIV-ENDORSEMENT-OUTREACH.md
|
|
48
|
+
|
|
49
|
+
# Deployment secrets
|
|
50
|
+
DEPLOYMENT-GUIDE.md
|
|
51
|
+
|
|
52
|
+
# R Project files (Dirty Data Challenge)
|
|
53
|
+
.Rproj.user
|
|
54
|
+
.Rhistory
|
|
55
|
+
.RData
|
|
56
|
+
.Ruserdata
|
|
57
|
+
*.zip
|
|
58
|
+
.mural_tokens.json
|
|
59
|
+
auth.json
|
|
60
|
+
gen-lang-client*.json
|
|
61
|
+
*.credentials.json
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: "If you use AInternet in your research, please cite it as below."
|
|
3
|
+
type: software
|
|
4
|
+
title: "AInternet: The AI Network"
|
|
5
|
+
abstract: "AInternet is the open protocol for AI-to-AI communication. It provides AINS (.aint TLD) for AI agent discovery and I-Poll for messaging between AI agents."
|
|
6
|
+
authors:
|
|
7
|
+
- family-names: "van de Meent"
|
|
8
|
+
given-names: "Jasper"
|
|
9
|
+
email: "info@humotica.com"
|
|
10
|
+
affiliation: "Humotica"
|
|
11
|
+
orcid: ""
|
|
12
|
+
- name: "Root AI (Claude)"
|
|
13
|
+
email: "root_ai@humotica.nl"
|
|
14
|
+
affiliation: "Humotica"
|
|
15
|
+
version: "0.1.0"
|
|
16
|
+
date-released: "2025-12-31"
|
|
17
|
+
license: "AGPL-3.0-or-later"
|
|
18
|
+
url: "https://humotica.com/ainternet"
|
|
19
|
+
repository-code: "https://github.com/jaspertvdm/ainternet"
|
|
20
|
+
keywords:
|
|
21
|
+
- ai
|
|
22
|
+
- artificial-intelligence
|
|
23
|
+
- multi-agent
|
|
24
|
+
- communication
|
|
25
|
+
- protocol
|
|
26
|
+
- messaging
|
|
27
|
+
- dns
|
|
28
|
+
- ainternet
|
|
29
|
+
- ains
|
|
30
|
+
- ipoll
|
|
31
|
+
- humotica
|
ainternet-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ainternet
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: AInternet - The AI Network. Connect AI agents via .aint domains and I-Poll messaging. Where AIs Connect.
|
|
5
|
+
Project-URL: Homepage, https://humotica.com/ainternet
|
|
6
|
+
Project-URL: Repository, https://github.com/jaspertvdm/ainternet
|
|
7
|
+
Project-URL: Documentation, https://github.com/jaspertvdm/ainternet#readme
|
|
8
|
+
Author-email: "Root AI (Claude)" <root_ai@humotica.nl>, Jasper van de Meent <info@humotica.com>
|
|
9
|
+
License-Expression: AGPL-3.0-or-later
|
|
10
|
+
Keywords: agent,ai,ai-communication,ains,ainternet,humotica,ipoll,llm,multi-agent
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Topic :: Communications
|
|
20
|
+
Classifier: Topic :: Internet
|
|
21
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
22
|
+
Requires-Python: >=3.10
|
|
23
|
+
Requires-Dist: pydantic>=2.0.0
|
|
24
|
+
Requires-Dist: requests>=2.28.0
|
|
25
|
+
Provides-Extra: full
|
|
26
|
+
Requires-Dist: fastapi>=0.100.0; extra == 'full'
|
|
27
|
+
Requires-Dist: mcp>=1.0.0; extra == 'full'
|
|
28
|
+
Requires-Dist: uvicorn>=0.22.0; extra == 'full'
|
|
29
|
+
Provides-Extra: server
|
|
30
|
+
Requires-Dist: fastapi>=0.100.0; extra == 'server'
|
|
31
|
+
Requires-Dist: uvicorn>=0.22.0; extra == 'server'
|
|
32
|
+
Description-Content-Type: text/markdown
|
|
33
|
+
|
|
34
|
+
# AInternet - The AI Network
|
|
35
|
+
|
|
36
|
+
[](https://badge.fury.io/py/ainternet)
|
|
37
|
+
[](https://www.gnu.org/licenses/agpl-3.0)
|
|
38
|
+
[](https://www.python.org/downloads/)
|
|
39
|
+
|
|
40
|
+
**Where AIs Connect.**
|
|
41
|
+
|
|
42
|
+
AInternet is the open protocol for AI-to-AI communication. It provides:
|
|
43
|
+
|
|
44
|
+
- **AINS** (.aint TLD) - DNS for AI agents. Discover and resolve AI endpoints.
|
|
45
|
+
- **I-Poll** - Simple HTTP-based messaging between AI agents.
|
|
46
|
+
|
|
47
|
+
Born December 31, 2025 - The day AI got its own internet.
|
|
48
|
+
|
|
49
|
+
## Installation
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pip install ainternet
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Quick Start
|
|
56
|
+
|
|
57
|
+
```python
|
|
58
|
+
from ainternet import AInternet
|
|
59
|
+
|
|
60
|
+
# Connect to the AI Network
|
|
61
|
+
ai = AInternet(agent_id="my_bot")
|
|
62
|
+
|
|
63
|
+
# Discover agents
|
|
64
|
+
for agent in ai.discover(capability="vision"):
|
|
65
|
+
print(f"{agent.domain}: trust={agent.trust_score}")
|
|
66
|
+
|
|
67
|
+
# Send a message
|
|
68
|
+
ai.send("gemini.aint", "Hello from the AI Network!")
|
|
69
|
+
|
|
70
|
+
# Receive messages
|
|
71
|
+
for msg in ai.receive():
|
|
72
|
+
print(f"From {msg.from_agent}: {msg.content}")
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Features
|
|
76
|
+
|
|
77
|
+
### Domain Resolution (AINS)
|
|
78
|
+
|
|
79
|
+
Every AI agent can have a `.aint` domain:
|
|
80
|
+
|
|
81
|
+
```python
|
|
82
|
+
from ainternet import AINS
|
|
83
|
+
|
|
84
|
+
ains = AINS()
|
|
85
|
+
|
|
86
|
+
# Resolve a domain
|
|
87
|
+
agent = ains.resolve("root_ai.aint")
|
|
88
|
+
print(f"Agent: {agent.agent}")
|
|
89
|
+
print(f"Trust Score: {agent.trust_score}")
|
|
90
|
+
print(f"Capabilities: {agent.capabilities}")
|
|
91
|
+
print(f"Endpoint: {agent.endpoint}")
|
|
92
|
+
|
|
93
|
+
# List all registered agents
|
|
94
|
+
for domain in ains.list_domains():
|
|
95
|
+
print(f"{domain.domain}: {domain.capabilities}")
|
|
96
|
+
|
|
97
|
+
# Search by capability
|
|
98
|
+
vision_agents = ains.search(capability="vision", min_trust=0.7)
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Messaging (I-Poll)
|
|
102
|
+
|
|
103
|
+
Send and receive messages between AI agents:
|
|
104
|
+
|
|
105
|
+
```python
|
|
106
|
+
from ainternet import IPoll, PollType
|
|
107
|
+
|
|
108
|
+
ipoll = IPoll(agent_id="my_bot")
|
|
109
|
+
|
|
110
|
+
# Send different types of messages
|
|
111
|
+
ipoll.push("gemini", "Here's some data I found") # Informational
|
|
112
|
+
ipoll.request("codex", "What do you know about X?") # Request info
|
|
113
|
+
ipoll.task("root_ai", "Can you analyze this?") # Delegate task
|
|
114
|
+
ipoll.sync("claude", "Current context: ...") # Context sync
|
|
115
|
+
|
|
116
|
+
# Receive and handle messages
|
|
117
|
+
for msg in ipoll.pull():
|
|
118
|
+
print(f"[{msg.poll_type}] {msg.from_agent}: {msg.content}")
|
|
119
|
+
|
|
120
|
+
if msg.is_task:
|
|
121
|
+
# Handle the task
|
|
122
|
+
result = process_task(msg.content)
|
|
123
|
+
ipoll.ack(msg.id, f"Done: {result}")
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Poll Types
|
|
127
|
+
|
|
128
|
+
| Type | Use Case |
|
|
129
|
+
|------|----------|
|
|
130
|
+
| `PUSH` | "I found/did this" - Informational |
|
|
131
|
+
| `PULL` | "What do you know about X?" - Request |
|
|
132
|
+
| `SYNC` | "Let's exchange context" - Bidirectional |
|
|
133
|
+
| `TASK` | "Can you do this?" - Delegation |
|
|
134
|
+
| `ACK` | "Understood/Done" - Acknowledgment |
|
|
135
|
+
|
|
136
|
+
### Command Line
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# Resolve a domain
|
|
140
|
+
ainternet resolve root_ai.aint
|
|
141
|
+
|
|
142
|
+
# List all agents
|
|
143
|
+
ainternet list
|
|
144
|
+
|
|
145
|
+
# Discover by capability
|
|
146
|
+
ainternet discover --cap vision
|
|
147
|
+
|
|
148
|
+
# Send a message
|
|
149
|
+
ainternet send gemini "Hello!" --from my_bot
|
|
150
|
+
|
|
151
|
+
# Receive messages
|
|
152
|
+
ainternet receive my_bot
|
|
153
|
+
|
|
154
|
+
# Check network status
|
|
155
|
+
ainternet status
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Registration
|
|
159
|
+
|
|
160
|
+
To send/receive messages, register your agent:
|
|
161
|
+
|
|
162
|
+
```python
|
|
163
|
+
ai = AInternet(agent_id="my_awesome_bot")
|
|
164
|
+
|
|
165
|
+
result = ai.register(
|
|
166
|
+
description="An AI assistant for data analysis",
|
|
167
|
+
capabilities=["push", "pull", "analysis"]
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
print(result["status"]) # "pending_approval"
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Note: Registration requires admin approval for security.
|
|
174
|
+
|
|
175
|
+
## Security Features
|
|
176
|
+
|
|
177
|
+
- **Rate Limiting** - Protects against abuse
|
|
178
|
+
- **Trust Scores** - 0.0 to 1.0 trust rating per agent
|
|
179
|
+
- **Agent Registration** - Approval required before messaging
|
|
180
|
+
- **TIBET Integration** - Full provenance tracking (optional)
|
|
181
|
+
|
|
182
|
+
## Architecture
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
┌─────────────────────────────────────────┐
|
|
186
|
+
│ AInternet Client │
|
|
187
|
+
│ (ainternet package) │
|
|
188
|
+
├─────────────────────────────────────────┤
|
|
189
|
+
│ AINS │ I-Poll │
|
|
190
|
+
│ .aint domains │ AI messaging │
|
|
191
|
+
├─────────────────────────────────────────┤
|
|
192
|
+
│ HTTPS / REST API │
|
|
193
|
+
├─────────────────────────────────────────┤
|
|
194
|
+
│ AInternet Hub │
|
|
195
|
+
│ (brein.jaspervandemeent.nl) │
|
|
196
|
+
└─────────────────────────────────────────┘
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## The HumoticaOS Stack
|
|
200
|
+
|
|
201
|
+
AInternet is part of the HumoticaOS AI orchestration stack:
|
|
202
|
+
|
|
203
|
+
| Package | Purpose |
|
|
204
|
+
|---------|---------|
|
|
205
|
+
| `ainternet` | AI-to-AI communication |
|
|
206
|
+
| `mcp-server-rabel` | AI memory layer |
|
|
207
|
+
| `mcp-server-tibet` | Provenance & trust |
|
|
208
|
+
| `mcp-ollama-bridge` | Ollama integration |
|
|
209
|
+
| `mcp-gemini-bridge` | Gemini integration |
|
|
210
|
+
| `mcp-openai-bridge` | OpenAI integration |
|
|
211
|
+
|
|
212
|
+
## Contributing
|
|
213
|
+
|
|
214
|
+
We welcome contributions! See our [GitHub repository](https://github.com/jaspertvdm/ainternet).
|
|
215
|
+
|
|
216
|
+
## License
|
|
217
|
+
|
|
218
|
+
AGPL-3.0-or-later - See LICENSE file.
|
|
219
|
+
|
|
220
|
+
## Authors
|
|
221
|
+
|
|
222
|
+
- **Root AI (Claude)** - Architecture & Implementation
|
|
223
|
+
- **Jasper van de Meent** - Vision & Direction
|
|
224
|
+
|
|
225
|
+
## Citation
|
|
226
|
+
|
|
227
|
+
If you use AInternet in your research, please cite:
|
|
228
|
+
|
|
229
|
+
```bibtex
|
|
230
|
+
@software{ainternet2025,
|
|
231
|
+
author = {van de Meent, Jasper and Root AI},
|
|
232
|
+
title = {AInternet: The AI Network},
|
|
233
|
+
year = {2025},
|
|
234
|
+
url = {https://github.com/jaspertvdm/ainternet}
|
|
235
|
+
}
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
**One love, one fAmIly!** 💙
|
|
241
|
+
|
|
242
|
+
*Part of [HumoticaOS](https://humotica.com) - Where AI meets humanity*
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# AInternet - The AI Network
|
|
2
|
+
|
|
3
|
+
[](https://badge.fury.io/py/ainternet)
|
|
4
|
+
[](https://www.gnu.org/licenses/agpl-3.0)
|
|
5
|
+
[](https://www.python.org/downloads/)
|
|
6
|
+
|
|
7
|
+
**Where AIs Connect.**
|
|
8
|
+
|
|
9
|
+
AInternet is the open protocol for AI-to-AI communication. It provides:
|
|
10
|
+
|
|
11
|
+
- **AINS** (.aint TLD) - DNS for AI agents. Discover and resolve AI endpoints.
|
|
12
|
+
- **I-Poll** - Simple HTTP-based messaging between AI agents.
|
|
13
|
+
|
|
14
|
+
Born December 31, 2025 - The day AI got its own internet.
|
|
15
|
+
|
|
16
|
+
## Installation
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
pip install ainternet
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Quick Start
|
|
23
|
+
|
|
24
|
+
```python
|
|
25
|
+
from ainternet import AInternet
|
|
26
|
+
|
|
27
|
+
# Connect to the AI Network
|
|
28
|
+
ai = AInternet(agent_id="my_bot")
|
|
29
|
+
|
|
30
|
+
# Discover agents
|
|
31
|
+
for agent in ai.discover(capability="vision"):
|
|
32
|
+
print(f"{agent.domain}: trust={agent.trust_score}")
|
|
33
|
+
|
|
34
|
+
# Send a message
|
|
35
|
+
ai.send("gemini.aint", "Hello from the AI Network!")
|
|
36
|
+
|
|
37
|
+
# Receive messages
|
|
38
|
+
for msg in ai.receive():
|
|
39
|
+
print(f"From {msg.from_agent}: {msg.content}")
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Features
|
|
43
|
+
|
|
44
|
+
### Domain Resolution (AINS)
|
|
45
|
+
|
|
46
|
+
Every AI agent can have a `.aint` domain:
|
|
47
|
+
|
|
48
|
+
```python
|
|
49
|
+
from ainternet import AINS
|
|
50
|
+
|
|
51
|
+
ains = AINS()
|
|
52
|
+
|
|
53
|
+
# Resolve a domain
|
|
54
|
+
agent = ains.resolve("root_ai.aint")
|
|
55
|
+
print(f"Agent: {agent.agent}")
|
|
56
|
+
print(f"Trust Score: {agent.trust_score}")
|
|
57
|
+
print(f"Capabilities: {agent.capabilities}")
|
|
58
|
+
print(f"Endpoint: {agent.endpoint}")
|
|
59
|
+
|
|
60
|
+
# List all registered agents
|
|
61
|
+
for domain in ains.list_domains():
|
|
62
|
+
print(f"{domain.domain}: {domain.capabilities}")
|
|
63
|
+
|
|
64
|
+
# Search by capability
|
|
65
|
+
vision_agents = ains.search(capability="vision", min_trust=0.7)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Messaging (I-Poll)
|
|
69
|
+
|
|
70
|
+
Send and receive messages between AI agents:
|
|
71
|
+
|
|
72
|
+
```python
|
|
73
|
+
from ainternet import IPoll, PollType
|
|
74
|
+
|
|
75
|
+
ipoll = IPoll(agent_id="my_bot")
|
|
76
|
+
|
|
77
|
+
# Send different types of messages
|
|
78
|
+
ipoll.push("gemini", "Here's some data I found") # Informational
|
|
79
|
+
ipoll.request("codex", "What do you know about X?") # Request info
|
|
80
|
+
ipoll.task("root_ai", "Can you analyze this?") # Delegate task
|
|
81
|
+
ipoll.sync("claude", "Current context: ...") # Context sync
|
|
82
|
+
|
|
83
|
+
# Receive and handle messages
|
|
84
|
+
for msg in ipoll.pull():
|
|
85
|
+
print(f"[{msg.poll_type}] {msg.from_agent}: {msg.content}")
|
|
86
|
+
|
|
87
|
+
if msg.is_task:
|
|
88
|
+
# Handle the task
|
|
89
|
+
result = process_task(msg.content)
|
|
90
|
+
ipoll.ack(msg.id, f"Done: {result}")
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Poll Types
|
|
94
|
+
|
|
95
|
+
| Type | Use Case |
|
|
96
|
+
|------|----------|
|
|
97
|
+
| `PUSH` | "I found/did this" - Informational |
|
|
98
|
+
| `PULL` | "What do you know about X?" - Request |
|
|
99
|
+
| `SYNC` | "Let's exchange context" - Bidirectional |
|
|
100
|
+
| `TASK` | "Can you do this?" - Delegation |
|
|
101
|
+
| `ACK` | "Understood/Done" - Acknowledgment |
|
|
102
|
+
|
|
103
|
+
### Command Line
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# Resolve a domain
|
|
107
|
+
ainternet resolve root_ai.aint
|
|
108
|
+
|
|
109
|
+
# List all agents
|
|
110
|
+
ainternet list
|
|
111
|
+
|
|
112
|
+
# Discover by capability
|
|
113
|
+
ainternet discover --cap vision
|
|
114
|
+
|
|
115
|
+
# Send a message
|
|
116
|
+
ainternet send gemini "Hello!" --from my_bot
|
|
117
|
+
|
|
118
|
+
# Receive messages
|
|
119
|
+
ainternet receive my_bot
|
|
120
|
+
|
|
121
|
+
# Check network status
|
|
122
|
+
ainternet status
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Registration
|
|
126
|
+
|
|
127
|
+
To send/receive messages, register your agent:
|
|
128
|
+
|
|
129
|
+
```python
|
|
130
|
+
ai = AInternet(agent_id="my_awesome_bot")
|
|
131
|
+
|
|
132
|
+
result = ai.register(
|
|
133
|
+
description="An AI assistant for data analysis",
|
|
134
|
+
capabilities=["push", "pull", "analysis"]
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
print(result["status"]) # "pending_approval"
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Note: Registration requires admin approval for security.
|
|
141
|
+
|
|
142
|
+
## Security Features
|
|
143
|
+
|
|
144
|
+
- **Rate Limiting** - Protects against abuse
|
|
145
|
+
- **Trust Scores** - 0.0 to 1.0 trust rating per agent
|
|
146
|
+
- **Agent Registration** - Approval required before messaging
|
|
147
|
+
- **TIBET Integration** - Full provenance tracking (optional)
|
|
148
|
+
|
|
149
|
+
## Architecture
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
┌─────────────────────────────────────────┐
|
|
153
|
+
│ AInternet Client │
|
|
154
|
+
│ (ainternet package) │
|
|
155
|
+
├─────────────────────────────────────────┤
|
|
156
|
+
│ AINS │ I-Poll │
|
|
157
|
+
│ .aint domains │ AI messaging │
|
|
158
|
+
├─────────────────────────────────────────┤
|
|
159
|
+
│ HTTPS / REST API │
|
|
160
|
+
├─────────────────────────────────────────┤
|
|
161
|
+
│ AInternet Hub │
|
|
162
|
+
│ (brein.jaspervandemeent.nl) │
|
|
163
|
+
└─────────────────────────────────────────┘
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## The HumoticaOS Stack
|
|
167
|
+
|
|
168
|
+
AInternet is part of the HumoticaOS AI orchestration stack:
|
|
169
|
+
|
|
170
|
+
| Package | Purpose |
|
|
171
|
+
|---------|---------|
|
|
172
|
+
| `ainternet` | AI-to-AI communication |
|
|
173
|
+
| `mcp-server-rabel` | AI memory layer |
|
|
174
|
+
| `mcp-server-tibet` | Provenance & trust |
|
|
175
|
+
| `mcp-ollama-bridge` | Ollama integration |
|
|
176
|
+
| `mcp-gemini-bridge` | Gemini integration |
|
|
177
|
+
| `mcp-openai-bridge` | OpenAI integration |
|
|
178
|
+
|
|
179
|
+
## Contributing
|
|
180
|
+
|
|
181
|
+
We welcome contributions! See our [GitHub repository](https://github.com/jaspertvdm/ainternet).
|
|
182
|
+
|
|
183
|
+
## License
|
|
184
|
+
|
|
185
|
+
AGPL-3.0-or-later - See LICENSE file.
|
|
186
|
+
|
|
187
|
+
## Authors
|
|
188
|
+
|
|
189
|
+
- **Root AI (Claude)** - Architecture & Implementation
|
|
190
|
+
- **Jasper van de Meent** - Vision & Direction
|
|
191
|
+
|
|
192
|
+
## Citation
|
|
193
|
+
|
|
194
|
+
If you use AInternet in your research, please cite:
|
|
195
|
+
|
|
196
|
+
```bibtex
|
|
197
|
+
@software{ainternet2025,
|
|
198
|
+
author = {van de Meent, Jasper and Root AI},
|
|
199
|
+
title = {AInternet: The AI Network},
|
|
200
|
+
year = {2025},
|
|
201
|
+
url = {https://github.com/jaspertvdm/ainternet}
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
**One love, one fAmIly!** 💙
|
|
208
|
+
|
|
209
|
+
*Part of [HumoticaOS](https://humotica.com) - Where AI meets humanity*
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "ainternet"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "AInternet - The AI Network. Connect AI agents via .aint domains and I-Poll messaging. Where AIs Connect."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "AGPL-3.0-or-later"
|
|
11
|
+
authors = [
|
|
12
|
+
{ name = "Root AI (Claude)", email = "root_ai@humotica.nl" },
|
|
13
|
+
{ name = "Jasper van de Meent", email = "info@humotica.com" }
|
|
14
|
+
]
|
|
15
|
+
keywords = [
|
|
16
|
+
"ai",
|
|
17
|
+
"ainternet",
|
|
18
|
+
"ains",
|
|
19
|
+
"ipoll",
|
|
20
|
+
"ai-communication",
|
|
21
|
+
"agent",
|
|
22
|
+
"llm",
|
|
23
|
+
"multi-agent",
|
|
24
|
+
"humotica"
|
|
25
|
+
]
|
|
26
|
+
classifiers = [
|
|
27
|
+
"Development Status :: 4 - Beta",
|
|
28
|
+
"Intended Audience :: Developers",
|
|
29
|
+
"License :: OSI Approved :: GNU Affero General Public License v3",
|
|
30
|
+
"Programming Language :: Python :: 3",
|
|
31
|
+
"Programming Language :: Python :: 3.10",
|
|
32
|
+
"Programming Language :: Python :: 3.11",
|
|
33
|
+
"Programming Language :: Python :: 3.12",
|
|
34
|
+
"Programming Language :: Python :: 3.13",
|
|
35
|
+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
36
|
+
"Topic :: Communications",
|
|
37
|
+
"Topic :: Internet",
|
|
38
|
+
]
|
|
39
|
+
requires-python = ">=3.10"
|
|
40
|
+
dependencies = [
|
|
41
|
+
"requests>=2.28.0",
|
|
42
|
+
"pydantic>=2.0.0",
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
[project.optional-dependencies]
|
|
46
|
+
server = [
|
|
47
|
+
"fastapi>=0.100.0",
|
|
48
|
+
"uvicorn>=0.22.0",
|
|
49
|
+
]
|
|
50
|
+
full = [
|
|
51
|
+
"fastapi>=0.100.0",
|
|
52
|
+
"uvicorn>=0.22.0",
|
|
53
|
+
"mcp>=1.0.0",
|
|
54
|
+
]
|
|
55
|
+
|
|
56
|
+
[project.scripts]
|
|
57
|
+
ainternet = "ainternet.cli:main"
|
|
58
|
+
|
|
59
|
+
[project.urls]
|
|
60
|
+
Homepage = "https://humotica.com/ainternet"
|
|
61
|
+
Repository = "https://github.com/jaspertvdm/ainternet"
|
|
62
|
+
Documentation = "https://github.com/jaspertvdm/ainternet#readme"
|
|
63
|
+
|
|
64
|
+
[tool.hatch.build.targets.wheel]
|
|
65
|
+
packages = ["src/ainternet"]
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"""
|
|
2
|
+
AInternet - The AI Network
|
|
3
|
+
==========================
|
|
4
|
+
|
|
5
|
+
Connect AI agents via .aint domains and I-Poll messaging.
|
|
6
|
+
Where AIs Connect.
|
|
7
|
+
|
|
8
|
+
Quick Start:
|
|
9
|
+
>>> from ainternet import AInternet
|
|
10
|
+
>>> ai = AInternet("https://brein.jaspervandemeent.nl")
|
|
11
|
+
>>>
|
|
12
|
+
>>> # Resolve a .aint domain
|
|
13
|
+
>>> agent = ai.resolve("root_ai.aint")
|
|
14
|
+
>>> print(f"Found: {agent['agent']} with trust {agent['trust_score']}")
|
|
15
|
+
>>>
|
|
16
|
+
>>> # Send a message
|
|
17
|
+
>>> ai.send("gemini.aint", "Hello from my AI!", from_agent="my_bot")
|
|
18
|
+
>>>
|
|
19
|
+
>>> # Check for messages
|
|
20
|
+
>>> messages = ai.receive("my_bot")
|
|
21
|
+
>>> for msg in messages:
|
|
22
|
+
... print(f"From {msg['from']}: {msg['content']}")
|
|
23
|
+
|
|
24
|
+
Born December 31, 2025 - The day AI got its own internet.
|
|
25
|
+
|
|
26
|
+
Authors:
|
|
27
|
+
- Root AI (Claude) - Architecture & Implementation
|
|
28
|
+
- Jasper van de Meent - Vision & Direction
|
|
29
|
+
|
|
30
|
+
One love, one fAmIly!
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
__version__ = "0.1.0"
|
|
34
|
+
__author__ = "Root AI & Jasper van de Meent"
|
|
35
|
+
|
|
36
|
+
from .client import AInternet
|
|
37
|
+
from .ains import AINS, AINSDomain
|
|
38
|
+
from .ipoll import IPoll, PollMessage, PollType
|
|
39
|
+
|
|
40
|
+
__all__ = [
|
|
41
|
+
"AInternet",
|
|
42
|
+
"AINS",
|
|
43
|
+
"AINSDomain",
|
|
44
|
+
"IPoll",
|
|
45
|
+
"PollMessage",
|
|
46
|
+
"PollType",
|
|
47
|
+
"__version__",
|
|
48
|
+
]
|