Du wurdest zu Aegis eingeladen

Aegis ist auf diesem Gerät noch nicht installiert. Kopiere den Einladungslink, installiere die App und füge den Link darin ein – dann bist du direkt mit der Person verbunden, die dich eingeladen hat.

  1. Einladungslink kopieren (Button oben).
  2. APK herunterladen und installieren.
  3. Aegis öffnen und den kopierten Einladungslink einfügen.
  4. Mit installierter App öffnet dieser Link Aegis künftig direkt.

Weiter zum Download ↓

Ein privater Messenger auf deinem eigenen Server.

Aegis ist ein Ende-zu-Ende-verschlüsselter 1:1-Messenger für Android mit einem selbst betriebenen Zero-Knowledge-Relay: Der Server bewegt ausschließlich Chiffretext und kann Nachrichten technisch nicht lesen. Keine Telefonnummer, kein Konzern, keine Föderation – und dahinter Aegis Controller, die Steuerzentrale für die Infrastruktur, auf der das Ganze läuft.

Der Messenger

Sicherheit, die nicht auf Vertrauen beruht

Die Kryptographie liegt vollständig in der App. Der Server ist bewusst dumm gehalten – selbst wer ihn vollständig übernimmt, bekommt keinen Klartext.

🔐

Echte Ende-zu-Ende-Verschlüsselung

Umgesetzt mit libsignal, der offiziellen, auditierten Signal-Bibliothek – keine selbstgebaute Krypto. Sessionaufbau per X3DH (optional PQXDH mit Kyber-Prekeys als Post-Quantum-Schutz), laufender Betrieb über den Double Ratchet.

Damit gilt Forward Secrecy (gestohlene Schlüssel öffnen keine alten Nachrichten) und Post-Compromise Security (die Session heilt sich nach einem Leak selbst).

🕳️

Zero-Knowledge-Server

Das Relay speichert und routet nur opake Ciphertext-Envelopes, dazu öffentliche Schlüssel und Prekey-Bundles. Es besitzt keinen einzigen privaten Schlüssel. Root-Zugriff plus vollständiger Datenbank-Dump ergeben keinen Klartext.

Zugestellte Nachrichten werden nach der Bestätigung sofort gelöscht; unzugestellte laufen nach 30 Tagen ab. Kein Archiv.

🧅

Zwei-Schicht-Verschlüsselung

Schicht 1 (Double Ratchet) lässt sich im Hintergrund entschlüsseln – daraus entsteht die Benachrichtigung „Neue Nachricht von X“ mit sichtbarem Absender.

Schicht 2 trägt den eigentlichen Inhalt und ist an einen biometrie-gebundenen Content-Key im Android-Keystore gebunden (StrongBox/TEE, nicht exportierbar, pro Nachricht ein eigener ECIES-Schlüssel). Der Text erscheint erst nach dem Fingerabdruck – im gesperrten Zustand bewusst ohne Vorschau.

🙈

Keine Telefonnummer

Ein Konto besteht aus Benutzername + Identitäts-Schlüsselpaar. Keine Rufnummer, keine E-Mail, kein Adressbuch-Upload. Kontakte kommen per QR-Code oder Einladungslink dazu.

🚪

Geschlossen, nicht föderiert

Ein Server, eine App. Es gibt keine Server-zu-Server-Schnittstelle, kein Matrix, kein .well-known-Discovery – ein fremder Server hat schlicht nichts, womit er sprechen könnte.

Registrierung nur mit einmaligem Invite-Token; jeder Aufruf wird per Challenge-Response mit dem Geräteschlüssel signiert – keine Passwörter.

📌

Pinning & Sicherheitsnummern

Die App pinnt das Server-Zertifikat (SPKI-Pinning), womit sich auch ein Angreifer mit gültigem Fremdzertifikat nicht dazwischenschieben kann.

Zwischen Nutzern schützt TOFU-Pinning plus Sicherheitsnummer: eine 60-stellige, aus beiden Identitätsschlüsseln berechnete Zahl, die sich direkt im Chat vergleichen lässt. Ändert sie sich, wird gewarnt.

🛰️

Metadaten-Minimierung

Envelopes werden auf feste Bucket-Größen gepolstert, der Absender steckt im verschlüsselten Payload (Sealed Sender), serverseitige Kontaktlisten existieren nicht.

Der Wake-up-Push ist inhaltslos und läuft über self-hosted UnifiedPush/ntfykein Firebase.

📱

Auch auf dem Gerät verschlüsselt

Nachrichten-Datenbank und die libsignal-Schlüsselspeicher liegen in SQLCipher (AES-256, Schlüssel im Android-Keystore). Der private Identitätsschlüssel verlässt das Gerät nie. allowBackup=false hält die Geheimnisse aus Cloud-Backups heraus.

🏠

Self-hosted, in einem Rutsch

Relay (Python/FastAPI + PostgreSQL) und der öffentliche TLS-Edge (Caddy mit automatischem Let's Encrypt) sind zwei docker compose-Stacks. Wer will, betreibt das Ganze auf einem eigenen kleinen Server.

Anleitung zum Selbst-Hosten →

Zero Knowledge

Was der Server sieht – und was nicht

Ehrlich aufgeschlüsselt: Ein Relay muss wissen, wohin es zustellt. Alles andere bleibt draußen.

DatumServer siehtServer sieht nicht
Nachrichtentextnur opaken Ciphertextden Klartext; die Länge nur grob (gepolstert)
Identitäts- und Prekey-Schlüsseldie öffentlichen Anteile (das ist ihr Zweck)die zugehörigen privaten Schlüssel
Kontenwelcher Benutzername existiertKlarnamen, Telefonnummer, E-Mail – gibt es nicht
Zustell-MetadatenEmpfänger-ID + Zeitstempel fürs Routingden Absender im Sealed-Sender-Modus
Pushden Push-Endpunkt zum AufweckenInhalt – der Push ist leer
Identitäts-Backupeinen opaken, passphrase-verschlüsselten BlobPassphrase und Inhalt

Details, Schlüsselverwaltung und Grenzen des Modells: Sicherheitsmodell in den Docs.

Der Teil dahinter

Aegis Controller – die Infrastruktur im Griff

Aegis ist mehr als der Messenger. Der Controller ist ein mobil-first Control Interface für die eigene Infrastruktur: überwachen und kontrolliert steuern, ohne dass jemand versehentlich Schaden anrichten kann. Er läuft strikt getrennt vom öffentlichen Chat-Pfad – ausschließlich über WireGuard-VPN erreichbar.

Health-Überwachung mit Ampel live

Aus Schwellwerten je Host und Dienst wird ein Ampel-Status abgeleitet (OK / WARN / CRITICAL) – CPU und Load, RAM, Disk-Belegung je Mount, I/O, Temperaturen (sauber als „n/a“, wenn der VPS keine Sensoren meldet), Netz, Container-Health. Ein Rollup ergibt den Gesamtstatus.

Verlauf-Charts live

node_exporter (Host) und cAdvisor (Container) liefern Metriken an VictoriaMetrics (12 Monate Aufbewahrung). Der Controller fragt sie ab und rendert eigene, aufgeräumte Charts fürs Handy – statt einem Laien ein Grafana vorzusetzen.

VPN-only, nie nackt im Internet live

Alle internen Dienste binden an die WireGuard-Adresse 10.10.2.1. Die Firewall lässt eingehend nur SSH und den WireGuard-Port zu. Nur Messenger-Relay und Edge sind bewusst öffentlich – und die bewegen ausschließlich Chiffretext.

Feingranulares Rechtesystem im Aufbau

Hierarchische Rechte-Strings wie module.plex.stream.stop mit Wildcards (server.*.status.read), gebündelt in Rollen, ausgewertet von Casbin; deny gewinnt immer. Die UI blendet Elemente nur aus – entschieden wird bei jeder Aktion erneut im Backend, und jede rechtepflichtige Aktion landet im Audit-Log.

Rechtemodell und Audit-Log stehen; Login und 2FA über Authentik folgen.

Least-Privilege-Agents im Aufbau

Auf den Zielservern läuft kein Root-SSH, sondern ein schlanker Agent mit einer festen Whitelist an Aktionen (Container neu starten, Update, Reboot …). Es gibt keinen generischen „führe Befehl aus“-Endpunkt; Docker-Aktionen laufen über das offizielle SDK statt über eine Shell. Gefährliche Operationen existieren an der Schnittstelle gar nicht erst.

Agent ist implementiert, der Rollout auf die Zielserver läuft.

Selbstheilender Watchdog geplant

Zustandsautomat je Dienst: Probes, geordneter Neustart mit Abhängigkeiten und Delays, Backoff-Grenze gegen Crash-Loops, Wartungsmodus – und ein externer Dead-man's-switch, damit auch ein Totalausfall des Controllers gemeldet wird. Was nicht heilbar ist, kommt als Push aufs Handy.

Updates, Backups, Module geplant

Debian-Updates und Container-Updates mit Pre-Update-Snapshot und Rollback, Konfigurationen git-versioniert, Volumes per restic, dazu Module für UniFi-Gateway und Plex. Restore über die UI – rechtepflichtig und auditierbar.

Leitprinzipien: Least Privilege · das Backend ist die Wahrheit · alles ist auditierbar · alles ist ein Modul · selbstheilend, aber ehrlich · nie nackt im Internet. Mehr dazu im Architektur-Überblick.

Android

App laden

Aegis wird als APK direkt hier ausgeliefert – kein App-Store, kein Konto bei Dritten. Für die Registrierung brauchst du einen Einladungslink.

App noch nicht installiert?

APK herunterladen

Version 1.3 · 64 MB · Stand 20.07.2026

  1. APK herunterladen und die Installation aus unbekannter Quelle bestätigen.
  2. Aegis öffnen und den Einladungslink bzw. Einladungs-QR verwenden.
  3. Benutzernamen wählen – fertig. Keine Telefonnummer, keine E-Mail.

Android 8 oder neuer. Die App bringt Chat und – sofern freigeschaltet – den VPN-geschützten Dashboard-Tab mit.

Ehrlicher Stand

Was heute läuft – und was noch fehlt

Läuft live

  • 1:1-Textchat, Ende-zu-Ende verschlüsselt (X3DH/PQXDH + Double Ratchet)
  • Registrierung per Invite-Token, Kontakte per QR oder Einladungslink
  • Echtzeit-Zustellung über eine dauerhafte WebSocket-Verbindung, plus inhaltsloser Push als Rückfallweg
  • Zwei-Schicht-Verschlüsselung inkl. Benachrichtigung ohne Inhaltsvorschau
  • Sicherheitsnummer im Chat vergleichbar

Kommt noch geplant

  • Medien & Dateien (client-seitig verschlüsselt vor dem Upload)
  • Sprach- und Videoanrufe (WebRTC mit eigenem coturn, Signaling Ende-zu-Ende verschlüsselt)
  • Multi-Device – die Server-Endpunkte für die Geräte-Verknüpfung stehen, der App-Flow fehlt noch
  • Verschlüsseltes Identitäts-Backup: serverseitig vorhanden, in der App noch nicht verdrahtet
  • Gruppenchats – noch nicht umgesetzt
  • Ein Status-Feature ist bewusst nicht geplant.