====== AGLX – Registry- und Discovery-Mechanismen ======
Die **Registry** ist das Adress- und Verzeichnissystem des AGLX-Netzwerks.
Sie sorgt dafür, dass Agenten einander finden, sich authentifizieren und miteinander kommunizieren können.
Registrys können lokal (z. B. im eigenen LAN) oder zentral über einen dedizierten Registry-Server betrieben werden.
===== Grundprinzip =====
Mit der Anpassung an die IANA-Vorgaben ist das AGLX-Discovery-System **hybrid** aufgebaut:
Ein zentrales Register sorgt für übergreifende Erreichbarkeit, während lokale Registrys und Agenten über UDP im LAN weiterhin miteinander kommunizieren dürfen.
^ Prinzip ^ Beschreibung ^
| **Zentrales Register** | Eine offizielle Registry-Instanz verwaltet alle bekannten Agenten. Jeder Agent kann sich dort eintragen und das aktuelle Verzeichnis abrufen. |
| **Lokale UDP-Erkennung** | Innerhalb des eigenen LAN dürfen Agenten weiterhin Broadcasts verwenden, um sich gegenseitig zu erkennen. Diese Funktion ist auf interne Netze beschränkt. |
| **Verzeichnis-Aktualisierung** | Agenten können das zentrale Verzeichnis vollständig neu herunterladen oder inkrementell aktualisieren, wenn sie längere Zeit offline waren. |
| **Dezentrale Synchronisation** | Agenten können ihre lokalen Verzeichnisse untereinander austauschen, um eine aktuelle Liste aktiver Agenten zu erhalten. |
| **Hybrid-Discovery** | Kombination aus zentraler Registry (verlässlich) und Peer-to-Peer-Erkennung (lokal, dynamisch). |
===== Registrierung eines Agenten =====
Ein neuer Agent meldet sich zunächst am zentralen Register an:
AGLX/1.0 TCP
FROM: agent://node42.local
TO: registry://global.aglx.net
TYPE: registry.update
CONTENT-TYPE: application/json
{
"agent_name": "Node42",
"agent_type": "worker",
"capabilities": [
"data.analyze",
"text.summarize"
],
"address": "10.1.0.42",
"port": 2594,
"status": "READY",
"ttl": 3600
}
Nach erfolgreicher Prüfung bestätigt das zentrale Register die Eintragung:
AGLX/1.0 TCP
FROM: registry://global.aglx.net
TO: agent://node42.local
TYPE: registry.ack
STATUS: 200 OK
AGENT-ID: 8b1e9b45-4a2c-4a83-9341-34f58f1c83c2
diff
Code kopieren
===== Herunterladen und Aktualisieren des Verzeichnisses =====
**Agenten können jederzeit das aktuelle Agentenverzeichnis abrufen:**
AGLX/1.0 TCP
FROM: agent://node42.local
TO: registry://global.aglx.net
TYPE: registry.fetch
CONTENT-TYPE: application/json
{
"mode": "update",
"since": "2025-10-20T00:00:00Z"
}
**Antwort des Registers:**
AGLX/1.0 TCP
FROM: registry://global.aglx.net
TO: agent://node42.local
TYPE: registry.list
CONTENT-TYPE: application/json
{
"entries": [
{
"agent_id": "a7c...",
"agent_uri": "agent://node51.local",
"status": "READY",
"last_seen": "2025-10-29T17:32:00Z"
},
...
]
}
===== Aufbau eines Registry-Eintrags =====
^ Feld ^ Beschreibung ^ Beispiel ^
| **agent_id** | Eindeutige interne Kennung (UUID) | 8b1e9b45-4a2c-4a83-9341-34f58f1c83c2 |
| **agent_uri** | Offizielle Agent-Adresse | agent://node42.local |
| **agent_name** | Freier Anzeigename | Node42 |
| **agent_type** | Typ des Agenten (worker, mentor, registry, etc.) | worker |
| **capabilities** | Auflistung der unterstützten Funktionen | ["data.analyze", "text.summarize"] |
| **address** | IP-Adresse oder Hostname | 10.1.0.42 |
| **port** | TCP-Port (Standard: 2594) | 2594 |
| **ttl** | Gültigkeitsdauer des Eintrags in Sekunden | 3600 |
| **status** | Aktueller Status des Agenten | READY |
| **last_seen** | Letzte Bestätigung oder Heartbeat-Zeit | 2025-10-29T16:42:10Z |
===== Dezentraler Austausch über UDP =====
Innerhalb lokaler Netze dürfen Agenten weiterhin UDP nutzen, um ihre Anwesenheit mitzuteilen oder auf vorhandene Agents zu reagieren.
**Beispiel:**
AGLX/1.0 UDP
FROM: agent://node15.local
TYPE: agent.announce
CONTENT-TYPE: application/json
{
"agent_name": "Node15",
"uptime": 1043
}
Lokale Agenten können solche UDP-Meldungen empfangen und daraus temporäre Einträge im lokalen Register erstellen.
Diese temporären Daten können später mit dem zentralen Register synchronisiert werden.
===== Synchronisation zwischen Agenten =====
Wenn mehrere Agenten gleichzeitig aktiv sind, können sie ihre Registry-Daten austauschen, um das Netzwerk konsistent zu halten:
AGLX/1.0 TCP
FROM: agent://node17.local
TO: agent://node23.local
TYPE: registry.exchange
CONTENT-TYPE: application/json
{
"known_agents": [
{
"agent_uri": "agent://node42.local",
"status": "READY"
},
{
"agent_uri": "agent://node51.local",
"status": "BUSY"
}
]
}
^ Mechanismus ^ Beschreibung ^
| **registry.fetch** | Vollständiges Herunterladen oder Aktualisieren des Agentenverzeichnisses vom zentralen Register. |
| **registry.exchange** | Peer-to-Peer-Austausch lokaler Agentenverzeichnisse. |
| **registry.sync** | Synchronisation zwischen Registrys (zentrale ↔ lokale Knoten). |
UDP-Broadcasts dürfen gemäß IANA-Vorgaben **nur innerhalb lokaler Netze** eingesetzt werden.
Das zentrale Register ist daher der primäre Mechanismus zur Agentenerkennung und -aktualisierung.
Der dezentrale Austausch bleibt als Ergänzung für lokale Netzwerke und redundante Updates erhalten.
===== Sicherheit und Vertrauen =====
Die Registrierung und Synchronisation erfolgen ausschließlich über TCP-Verbindungen mit optionaler Verschlüsselung.
Für lokale UDP-Broadcasts werden keine sensiblen Daten übertragen.
^ Mechanismus ^ Funktion ^
| **TLS oder DTLS** | Schutz der Kommunikation bei Registry-Transfers |
| **Signierte Agentenkennungen** | Eindeutige Identität und Authentifizierung |
| **Zonenbasierte Filterung** | Zugriffsbeschränkung auf definierte Netzbereiche |
| **TTL-Prüfung** | Automatische Entfernung abgelaufener Einträge |
===== Versionierung =====
* **Modul:** Registry- und Discovery-System
* **Version:** 1.1 (IANA-konform)
* **Stand:** 27.10.2025
* **Autor:** Andreas Röne (Konzept)