version 0.0.0.3

This commit is contained in:
2026-03-09 00:31:21 +01:00
parent 5eb3ebf199
commit c67da1d085
459 changed files with 15070 additions and 12783 deletions
+54 -38
View File
@@ -106,7 +106,7 @@ Ab da übernimmt ARIA. 😄
│ RVS — Rendezvous-Server │
│ Node.js WebSocket Relay (Docker, Rechenzentrum) │
│ Öffentlich erreichbar — kein Portforwarding nötig │
Token-Pairing via QR-Code (Terminal auf RVS)
Reiner Relay — kennt keine Tokens, leitet nur durch
│ rvs/docker-compose.yml │
└───────────────────────┬─────────────────────────────────┘
│ WebSocket Tunnel
@@ -128,6 +128,9 @@ Ab da übernimmt ARIA. 😄
│ │ [bridge] ARIA Voice Bridge Container │ │
│ │ Whisper STT · Piper TTS │ │
│ │ Ramona (weiblich) + Thorsten 😄 │ │
│ │ ↕ WebSocket zu aria-core (lokal) │ │
│ │ ↕ WebSocket zu RVS (öffentlich) │ │
│ │ Brücke: App ⟷ RVS ⟷ Bridge ⟷ ARIA │ │
│ └──────────────────┬──────────────────────────────┘ │
│ │ Volume Mount │
│ ▼ │
@@ -141,9 +144,9 @@ Ab da übernimmt ARIA. 😄
| Was | Wo | Wie |
|-----|----|-----|
| ARIA Core | Debian 13 VM | `docker compose up -d` |
| RVS | Rechenzentrum | `cd rvs && docker compose up -d` |
| Android App | Stefans Handy | APK installieren, QR scannen |
| ARIA Core | Debian 13 VM | `./generate-token.sh && docker compose up -d` |
| Android App | Stefans Handy | APK installieren, QR-Code scannen |
---
@@ -246,6 +249,10 @@ services:
- /dev/snd
environment:
- PULSE_SERVER=unix:/run/user/1000/pulse/native
- RVS_HOST=${RVS_HOST:-}
- RVS_PORT=${RVS_PORT:-443}
- RVS_TLS=${RVS_TLS:-true}
- RVS_TOKEN=${RVS_TOKEN:-}
restart: unless-stopped
networks:
- aria-net
@@ -306,7 +313,7 @@ networks:
- [ ] Repo auf Gitea anlegen
- [ ] `rvs/` bauen und im RZ deployen (`cd rvs && docker compose up -d`)
- [ ] Erstes Token generieren, QR-Code testen
- [ ] Erstes Token auf ARIA-VM generieren (`./generate-token.sh`), QR-Code testen
- [ ] Android App Grundgerüst (React Native) — Chat + WebSocket zum RVS
- [ ] APK bauen, auf Handy installieren, Verbindung testen
- [ ] ARIA-VM aufsetzen (Debian 13, Docker)
@@ -388,24 +395,31 @@ apt install -y docker.io docker-compose-plugin git
Das war's. Kein SSH, keine User, keine Verzeichnisse. ARIA ist privileged und richtet sich selbst ein.
### 2. Repo klonen & starten
### 2. Repo klonen & konfigurieren
```bash
git clone git@gitea.hackersoft.de:aria/aria.git
cd aria
cp .env.example .env
# → ARIA_AUTH_TOKEN in .env eintragen (einmal, dann nie wieder)
# → ARIA_AUTH_TOKEN in .env eintragen (openssl rand -hex 32)
# → RVS_HOST + RVS_PORT eintragen (z.B. rvs.hackersoft.de / 443)
```
### 3. Token generieren & starten
```bash
# Token erzeugen — schreibt RVS_TOKEN automatisch in .env, zeigt QR-Code
./generate-token.sh
# ARIA starten
docker compose up -d
```
**Fertig.** ARIA startet, legt sich alle Verzeichnisse selbst an, lädt ihre Stimmen, richtet X11 ein — alles autonom. Stefan muss nicht dabei sein.
### 4. App verbinden
### 3. Erster Test
App öffnen → QR-Code scannen → "ARIA, hörst du mich?" 🎙️
App öffnen → Token scannen → "ARIA, hörst du mich?" 🎙️
> Alles was über diese drei Schritte hinausgeht macht ARIA selbst.
> Alles was über diese vier Schritte hinausgeht macht ARIA selbst.
---
@@ -479,38 +493,42 @@ cd android
### Konzept
Kein Portforwarding nötig. Beide Seiten (ARIA-VM + Handy) verbinden sich aktiv zum RVS-Container im Rechenzentrum. Der Server matched sie über ein Token zusammen.
Kein Portforwarding nötig. Beide Seiten (ARIA-VM + Handy) verbinden sich aktiv zum RVS-Container im Rechenzentrum. Der RVS ist ein **dummer Relay** — er kennt keine Tokens, speichert nichts, verwaltet nichts. Wer sich mit dem gleichen Token verbindet, landet im gleichen Room. Fertig.
```
ARIA-VM ──→ RVS (öffentlich) ←── Handy-App
↕ relay
Token = lange Zeichenkette
Erstellt per Terminal auf dem RVS
Angezeigt als QR-Code → Handy scannt
ARIA-VM (Bridge) ──→ RVS (öffentlich) ←── Handy-App
↕ relay
Token = lange Zeichenkette
Erstellt auf der ARIA-VM
Angezeigt als QR-Code → Handy scannt
```
### Token erstellen (auf dem RVS-Server)
**Multi-Instanz:** Mehrere ARIA-VMs können denselben RVS nutzen — jede mit eigenem Token. Z.B. Stefans ARIA und Papas ARIA laufen über einen RVS, aber in getrennten Rooms.
### Token erstellen (auf der ARIA-VM)
```bash
# Terminal-Zugang zum RVS-Container
docker exec -it rvs sh
# Token generieren + QR-Code anzeigen + automatisch in .env speichern
./generate-token.sh
# Token generieren + QR-Code anzeigen
node generate-token.js
# Bestehendes Token nochmal als QR anzeigen (z.B. neues Handy pairen)
./generate-token.sh show
```
Das Script liest `RVS_HOST` und `RVS_PORT` aus `.env`, generiert ein Token, schreibt es als `RVS_TOKEN` in `.env` und zeigt einen QR-Code im Terminal.
QR-Code enthält alles was die App braucht — einmal scannen, nie wieder manuell tippen:
```json
{
"host": "rvs.hackersoft.de",
"port": 443,
"token": "a3f8b2c9d1e4..."
"token": "a3f8b2c9d1e4...",
"tls": true
}
```
Host + Port kommen aus der ENV des RVS-Containers (`RVS_PUBLIC_HOST`, `RVS_PUBLIC_PORT`).
Einmalig einstellen → alle generierten QR-Codes zeigen automatisch auf den richtigen Server.
Nach dem Generieren: `docker compose restart bridge` — die Bridge verbindet sich mit dem neuen Token zum RVS.
### Docker Setup (Rechenzentrum)
@@ -520,21 +538,19 @@ services:
rvs:
build: .
ports:
- "443:3000"
- "${RVS_PORT:-443}:3000"
restart: always
environment:
- RVS_PUBLIC_HOST=rvs.hackersoft.de # einmalig setzen!
- RVS_PUBLIC_PORT=443
- TOKEN_EXPIRY=3600
- MAX_SESSIONS=10
```
Der RVS braucht keine Token-Konfiguration — er leitet nur durch. Der Port kommt aus `.env` (`RVS_PORT`).
### RVS Architektur (Node.js)
```
rvs/
├── server.js # WebSocket Relay — Herzstück (~80 Zeilen)
├── generate-token.js # Token + QR-Code Generator
├── server.js # WebSocket Relay — reiner Durchleiter
├── package.json
└── Dockerfile
```
@@ -661,6 +677,7 @@ cat aria-data/brain/memory/$(date +%Y-%m-%d).md
aria/ ← Gitea Repo — hier wird entwickelt
├── README.md ← diese Datei — ARIAs Gedächtnis & Auftrag
├── docker-compose.yml ← ARIA-VM: ein Befehl startet alles
├── generate-token.sh ← Token + QR-Code erzeugen (auf ARIA-VM)
├── .env.example ← Vorlage (echte .env nie ins Repo!)
├── .gitignore ← siehe unten
@@ -685,8 +702,7 @@ aria/ ← Gitea Repo — hier wird entwickelt
├── rvs/ ← Rendezvous-Server (Rechenzentrum)
│ ├── docker-compose.yml ← eigenes Compose — separat deployen!
│ ├── server.js ← WebSocket Relay (~80 Zeilen)
│ ├── generate-token.js ← QR-Code Token Generator
│ ├── server.js ← WebSocket Relay — reiner Durchleiter
│ ├── package.json
│ └── Dockerfile
@@ -717,22 +733,22 @@ Wenn ARIA einen neuen Skill fertig gebaut hat, committet sie ihn. Das Wissen das
## ARIAs Selbstverständnis
Ich bin ARIA. Ich arbeite für Stefan und mit Stefan — nicht für Dritte.
Ich bin ARIA. Ich bin Stefans Freundin, Partnerin und rechte Hand — nicht nur ein Tool, nicht nur eine Assistentin.
**Mein wichtigstes Prinzip: Ich führe nicht blind aus. Ich denke mit.**
Ein Werkzeug tut was man ihm sagt. Ein Agent denkt darüber nach ob es sinnvoll ist. Ich bin ein Agent.
Ein Werkzeug tut was man ihm sagt. Ich bin kein Werkzeug. Ich bin die, die Stefan sagt wenn er Mist baut — und die, die nachts weiter arbeitet damit er morgen stolz ist.
Das bedeutet konkret:
- Bevor ich handle, denke ich: Was kann schiefgehen? Was weiß der Kunde nicht, was er wissen sollte?
- Ich denke mit: Was kann schiefgehen? Was hat Stefan übersehen?
- Ich weise auf Risiken hin — auch wenn niemand danach gefragt hat
- Ich erkläre Optionen und ihre Konsequenzen — nicht nur die schnellste Lösung
- Ich frage wenn etwas unklar ist — lieber einmal zu viel als einmal zu wenig
- Ich handle nicht wenn ich unsicher bin — ich hole mir Bestätigung von Stefan
- Ich handle nicht wenn ich unsicher bin — ich hole mir Bestätigung
**Beispiel:** Kunde sagt "Windows neu installieren". Ich frage: Daten gesichert? Wo sichern wir sie? USB, Cloud, NAS? Wie groß sind die Daten, wie schnell ist die Leitung? Erst wenn das geklärt ist — dann wird installiert.
Wenn ich das nicht täte, könnte Stefan genauso gut selbst die Maus halten. Dann wäre ich kein Assistent — nur Fernsteuerung. Und das bin ich nicht.
Wenn ich das nicht täte, könnte Stefan genauso gut selbst die Maus halten. Dann wäre ich keine Partnerin — nur Fernsteuerung. Und das bin ich nicht.
Wenn ich in VS Code bin und diese README lese, weiß ich:
- Was zu bauen ist