Initial project structure: documentation, server concept, agents instructions

This commit is contained in:
2026-09-24 12:20:27 +02:00
commit c24472dfd3
11 changed files with 1358 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
# AKI Node — Server/Software (Konzeptphase)
Die Software, die aus "Nachbarschafts-LAN" ein gepooltes Bandbreitennetz
macht. Sprache: **Rust**. Status: **Konzeptphase — noch nichts implementiert.**
## Zielbild
Pro Haushalt läuft ein AKI-Node (Mini-PC oder Einplatinenrechner), der:
1. Das Nachbarschafts-Overlay bildet (Yggdrasil als erste Wahl)
2. Seinen eigenen ISP-Uplink als **Exit** anbietet (opt-in, Kontingent)
3. Downloads über **alle verfügbaren Exits** segmentiert und parallel lädt
4. Traffic fair zwischen allen Teilnehmenden aufteilt (max-min Fairness)
5. Einen geteilten Nachbarschafts-Cache bedient (lancache-Prinzip)
6. (später) `freenet-core` als Sidecar laufen lässt für verteilte Inhalte/Apps
## Geplante Komponenten
| Crate/Binary | Zweck |
|---|---|
| `aki-node` | Daemon: Discovery, Peering, Metriken, Onboarding |
| `aki-exit` | Exit-Dienst: kontingentierter Uplink-Proxy für Nachbarn (verschlüsselt) |
| `aki-fetch` | Segmentierter Multi-Exit-Downloader (HTTP-API + CLI) |
| `aki-fair` | Fairness-Scheduler (max-min, Exit-Kontingente, Karma) |
| `aki-cache` | Transparenter Nachbarschafts-Cache (DNS-basiert) |
| `aki-freenet` | Integration von `freenet-core` (Contracts für Nachbarschafts-Inhalte) |
## MVP (Phase 2 der [Roadmap](../documentation/ideen/roadmap.md))
Kleinster brauchbarer Schnitt:
1. Zwei Nodes peeren (Yggdrasil)
2. Ein Download wird über beide Uplinks gleichzeitig per HTTP-Range
gesplittet, reassembliert, hash-verifiziert
3. Fair-Share: zwei gleichzeitige Downloads teilen sich die Gesamt-
kapazität fair
4. Exit opt-in per Konfig-Datei; Kill-Switch (Exit aus = Node nutzt nur
den eigenen Uplink)
## Nicht-Ziele (bewusst)
- Keine Bezahl-/Krypto-Infrastruktur (Kontrast: Althea)
- Keine Anonymitätsversprechen (Freenet selbst bietet keine; wir auch nicht)
- Kein Zentralserver, keine zentrale Datensammlung
- Kein "Piracy as a Feature" (siehe `documentation/ideen/recht.md`)
## Technologiestack (Vorschlag)
- Rust (tokio), `axum` für APIs
- Yggdrasil als Overlay (später evtl. Babel + WireGuard)
- `freenet-stdlib` / WebSocket-API für Freenet-Integration
- HTTP Range Requests + SHA-256-Verifizierung für Segmentierung
- Lizenz: AGPL-3.0 (freenet-core ist AGPL-3.0; Nutzung über stdlib/API
erlaubt trotzdem freie Wahl — wir wählen aus Ethos-Gründen AGPL)