SupaWebApp
Ein gesicherter Core — Anmeldung, Rollen, Teams, Spaces, Chat, Kalender, Dashboards, Benachrichtigungen und Workflow-Automatisierung — und darauf aufsetzend Module, die sich über ein eigenes Protokoll andocken. Alles läuft im eigenen Haus — die KI-Inferenz auf Wunsch eingeschlossen.
- Self-hosted per Docker
- DSGVO-konform
- Deutsch & Englisch
- Helles & dunkles Theme
- LLM lokal oder in der Cloud
- Mandantenfähig
Selbst gehostet — und damit DSGVO-konform
Die Plattform läuft auf Ihren eigenen Servern. Es gibt keinen Anbieter, der mitliest, keinen Auftragsverarbeiter, der in einen Vertrag genommen werden müsste, und keine Übermittlung in ein Drittland. Auch die KI rechnet im eigenen Haus: kein Text, kein Dokument und keine Aufnahme verlässt dafür Ihr Netz.
Daten bleiben bei Ihnen
Standort, Aufbewahrung und Löschfristen bestimmen Sie — nicht die Geschäftsbedingungen eines Anbieters.
Keine Auftragsverarbeitung
Kein externer Dienstleister sieht Ihre Daten, also auch keine Verträge, Prüfungen und Drittlandtransfers, die daran hängen.
KI ohne Datenabfluss
Sprachmodelle können vollständig auf eigener Hardware laufen — dann geht kein Prompt an einen Anbieter und nichts trainiert fremde Modelle. Ob überhaupt ein Cloud-Modell zum Einsatz kommt, entscheiden Sie.
Nachweisbar
Zugriffe laufen über ein Rechtemodell und landen im Protokoll — die Rechenschaftspflicht lässt sich damit belegen.
Was die Plattform von Haus aus kann
Diese Funktionen sind kein Zubehör, sondern Teil des Core: Sie stehen ab der ersten Anmeldung bereit und gelten für jedes Modul, das später dazukommt.
Anmeldung & Zwei-Faktor
Passwörter mit argon2id, TOTP nach einer Richtlinie, die der Administrator setzt (aus, optional oder Pflicht), Single Sign-on über OIDC und serverseitige Sitzungen, die sich sofort entziehen lassen.
Rollen & Berechtigungen
Eigene Rollen neben den Systemrollen, Rechte als feste Schlüssel. Jede Route nennt die Berechtigung, die sie verlangt — wo keine steht, wird abgelehnt.
Teams & Spaces
Persönliche, Team- und Unternehmens-Spaces sind die eine Stelle, an der Zugriff entschieden wird — für Core-Inhalte wie für alles, was Module ablegen.
API-Schlüssel
Drei Stufen für Benutzer, Anwendungen und Module, jeweils mit Geltungsbereich und Ablauf. Gespeichert wird nur ein Hash; das Geheimnis zeigt sich genau einmal.
TeamChat
Kanäle in jedem Space und Direktnachrichten zu zweit, mit Anhängen, Lesebestätigungen, Ungelesen-Zählern und Kanälen, in denen nur die Leitung schreibt.
Kalender
Eigene Kalender, abonnierte ICS-Quellen als schreibgeschützte Ansicht, Freigabe in Team- und Unternehmens-Spaces sowie Erinnerungen über die Workflows.
Dashboards
Frei zusammengestellte Layouts je Space — persönlich, für ein Team oder für das ganze Unternehmen — gespeist aus Kennzahlen, die die Module beisteuern.
Benachrichtigungen
Eine Glocke für Core und Module, dazu Ankündigungen an das ganze Unternehmen — und in einer Mehr-Mandanten-Installation an alle Mandanten.
Workflows
Auslöser, Bedingung, Aktionen — als Ereignis, nach Zeitplan oder von Hand. Jeder Lauf wird mit seiner Spur protokolliert, jede Änderung an einer Regel bleibt mit Wiederherstellungspunkt erhalten.
Mandantenfähigkeit
Optional bedient eine Installation mehrere Organisationen, jede unter eigener Domain und mit streng getrennten Daten. Der Haupt-Mandant verwaltet die übrigen und kann seine Module in sie hineinreichen.
Zweisprachig, zwei Themes
Die gesamte Oberfläche gibt es auf Deutsch und Englisch, in einem hellen und einem dunklen Theme — Einstellung pro Benutzer.
Dokumentation im Produkt
Ein Einstiegs-Guide, die Referenz der Core-API und die Doku jedes installierten Moduls — durchsuchbar, zweisprachig und auf das gefiltert, was der Lesende tatsächlich aufrufen darf.
Erweiterungen, die sich sauber andocken
Jedes Modul ist ein eigenständig betriebener Dienst mit eigenem Datenbank-Schema. Der Administrator installiert es über seine Adresse; danach erreicht der Browser es ausschließlich über den Core.
IdeaPod
ideapodSprachmemo aufnehmen, live auf dem Server transkribieren lassen und den fertigen Gedanken in den passenden Space legen.
- Transkript erscheint beim Sprechen, über whisper.cpp im eigenen Haus
- Ziel wählbar: privat, Team oder Unternehmen
- Ob die Audiodatei bleibt, entscheidet eine Admin-Einstellung
- Optional Titel, Zusammenfassung und Gliederung über Cortex
Cortex
cortexChat wie man ihn kennt, dazu ein Dokumentenspeicher zum Nachschlagen — und die LLM-Fähigkeiten, aus denen sich alle anderen Module bedienen.
- GGUF-Modelle per HuggingFace-Referenz, direkter URL oder Upload
- Worker-Flotte mit Clustern, Prioritäten und GPU-Bündelung
- Websuche über SearXNG, Tavily oder Brave
- Funktionsaufrufe, sichtbares Nachdenken, Nachprüfung der Antwort, Bilder
- Nachschlagen in eigenen Dokumenten, im Knowledge Vault und in anderen Modulen
- Angebundene MCP-Server als zusätzliche Werkzeuge und Datenquellen
Email Organizer
emailorganizerPostfächer anbinden, Nachrichten laufend abholen und automatisch einsortieren — mit einem Modell, das aus den eigenen Ordnern lernt.
- IMAP sowie Gmail und Microsoft über OAuth
- Kategorien aus vorhandenen Ordnern trainieren, nach Zeitplan nachtrainieren
- Gruppierung auch ohne Vorgaben
- Auffällige Nachrichten werden in der Liste markiert
Knowledge Vault
knowledgevaultDateiablagen anbinden, Inhalte auslesen und durchsuchbar machen — die Wissensbasis des Unternehmens.
- SMB/CIFS, SharePoint, WebDAV und lokale Pfade
- Text aus PDF, DOCX, TXT und Markdown, dazu Texterkennung in Bildern
- Suche über Volltext und Bedeutung zugleich
- Bilder bekommen eine Beschreibung, die mitgesucht wird
- Liefert seine Treffer an den Chat weiter
Maßgeschneiderte Module für Kunden
Dieselbe Mechanik trägt auch Fachanwendungen: Wir entwickeln Module, die auf die Abläufe eines einzelnen Kunden zugeschnitten sind — mit eigener Oberfläche, eigenen Daten und eigenen Berechtigungen, aber vollständig in die Plattform eingebettet. Änderungsprotokoll, Papierkorb, Exporte, Kennzahlen fürs Dashboard und die Anbindung an die Workflows kommen dabei aus demselben Baukasten.
Wie ein Modul dazukommt
Manifest bereitstellen
Das Modul veröffentlicht eine Beschreibung seiner selbst: welche Rechte es braucht, welche Ereignisse es hört, welche Einstellungen es kennt und wo seine Oberfläche liegt.
Installieren und zustimmen
Der Administrator trägt die Adresse ein und bestätigt die verlangten Rechte. Der Core legt daraufhin Schlüssel und gemeinsames Geheimnis an und nimmt die Berechtigungen des Moduls in seine Rollenverwaltung auf.
Betrieb hinter dem Core
Der Browser spricht nie direkt mit dem Modul, sondern immer über den Core. Die Modul-Oberfläche läuft abgeschottet und ohne eigene Herkunft, mit einem Token, das nach zehn Minuten verfällt.
Zusammenspiel über den Core
Ereignisse kommen als signierte Nachrichten an. Und wenn ein Modul etwas von einem anderen braucht — ein Sprachmodell, eine Suche —, fragt es den Core, nie das andere Modul.
Sprachmodelle — im eigenen Haus oder in der Cloud
Wo gerechnet wird, entscheiden Sie: auf eigener Hardware, bei einem Anbieter in der Cloud — oder beides nebeneinander. Bleibt alles im Haus, verlässt kein Text, kein Dokument und keine Aufnahme Ihr Netz.
Lokal, in der Cloud oder gemischt
Ein Dienst hält die Modelle bereit und stellt sie über die verbreitete OpenAI-Schnittstelle zur Verfügung. Dahinter kann die eigene Grafikkarte stecken oder ein Anbieter in der Cloud — für den Rest des Systems sieht beides gleich aus, ein Wechsel kostet keine Zeile Code. Modelle kommen per Referenz, per Adresse oder als Datei dazu; ein Admin sagt, welches wofür zuständig ist: Chat, Einbettungen, Bilder.
Funktionsaufrufe und MCP
Das Modell antwortet nicht nur, es handelt: Pro Frage entscheidet es über echte Funktionsaufrufe, ob es sucht, ein Dokument liest oder das Datum braucht. Welche Funktionen es dabei benutzen darf, gibt ein Admin vor. Darüber hinaus lassen sich MCP-Server anbinden — damit bekommt das Modell Werkzeuge und Datenquellen, die das System selbst gar nicht kennt.
Flotte statt einzelner Karte
Rechenknoten werden zu Clustern gebündelt: mit Priorität, erlaubten Modellen, CPU oder GPU, einer Strategie für knappen Grafikspeicher und einer Zeit, nach der ein unbenutztes Modell wieder Platz macht. Ein zu großes Modell kann sich über die Karten mehrerer Knoten verteilen.
Auch ohne Internetzugang
Ein Rechner ohne Verbindung nach außen lädt seine Modelle nicht selbst: Der Core reicht die Datei von einem Knoten weiter, der sie schon hat, und prüft dabei die Prüfsumme.
Synapse — Agent auf dem Arbeitsplatz
Eine Desktop-Anwendung arbeitet in einem Projektordner: erst planen, dann handeln, mit Freigabe vor jeder Änderung, einer Liste erlaubter Befehle und einer Aufzeichnung jedes Laufs. Rechnen darf sie lokal oder zentral — was erlaubt ist, gibt die Organisation vor.
Grundsätze, die nicht verhandelbar sind
- Im Zweifel nein. Jede Route nennt die Berechtigung, die sie verlangt; eine Route ohne Angabe wird abgewiesen.
- Der Core ist die Vermittlung. Module fassen weder fremde Datenbank-Schemata noch Suchindex, Cache oder einander direkt an.
- Zwei Tore statt einem. Für ein Modul braucht es die Berechtigung und die Freigabe für diesen Benutzer — geprüft beim Token, in der Navigation und bei jedem Aufruf.
- Eine Stelle für Zugriff. Ob jemand einen Space sehen darf, beantwortet genau ein Dienst — nirgends nachgebaut.
- Abgeschottete Oberflächen. Modul-Oberflächen laufen ohne eigene Herkunft in einer Sandbox; sie können nicht im Namen des Benutzers handeln.
- Signierte Wege. Aufrufe vom Core an ein Modul sind signiert und nur wenige Minuten gültig.
- Geheimnisse bleiben geheim. Passwörter mit argon2id, API-Schlüssel nur als Hash, Zweitfaktor- und Modul-Geheimnisse verschlüsselt unter einem Hauptschlüssel — und nichts davon in Protokollen.
- Offene Punkte stehen im Dokument. Was noch zu härten ist, wird geführt und nicht verschwiegen.
Womit gebaut wird
| Bereich | Wahl |
|---|---|
| Sprache | TypeScript im Monorepo, pnpm und Turborepo |
| Core-API | NestJS mit Prisma |
| Oberfläche | React und Vite, Modul-Oberflächen in Sandbox-Rahmen |
| Datenbank | PostgreSQL 16 mit pgvector |
| Suche | OpenSearch, jederzeit aus der Datenbank neu aufbaubar |
| Sitzungen & Ereignisse | Redis 7 |
| Sprache zu Text | whisper.cpp als eigener Dienst |
| Sprachmodelle | llama.cpp mit GGUF-Modellen |
| Betrieb | Docker Compose, ein einziger Zugang nach außen |
In zwei Befehlen gestartet
# .env anlegen und einen Hauptschlüssel setzen cp .env.example .env # Stack bauen und starten docker compose -f infra/docker-compose.yml up -d --build # erreichbar unter http://localhost:7890
Werkzeuge und Karten
Tools
Kleine Helfer, die ohne Anmeldung und ohne Server auskommen — den Anfang macht ein QR-Code-Generator für Adressen, WLAN-Zugänge und Kontaktdaten.
Zu den Tools →Visitenkarten
Digitale Karten zum Weitergeben: Kontakt als Datei speichern oder den QR-Code abfotografieren lassen.
Zu den Visitenkarten →