Feature-Flags
Owlat ist modular — jede in dieser Anleitung beschriebene Funktion lässt sich ein- oder ausschalten. Diese Seite ist die anwenderseitige Übersicht dazu.
Feature-Flags
Owlat wird als eine einzige Codebasis ausgeliefert, aber Sie entscheiden, welche Funktionen auf Ihrer Installation laufen. Marketing-Kampagnen, der Team-Posteingang, KI-Unterstützung, persönliche Post mit Postbox — jede davon ist eine Funktion, für die Sie sich aktiv entscheiden, und kein Produkt, auf das Sie sich von Anfang an festlegen müssen.
Die Versand-Flags (campaigns, transactional, automations) funktionieren nur mit einem konfigurierten Zustellanbieter (MTA, Resend oder SES) — ein verbundenes externes Postfach zählt nicht dazu. Die stimmigen Kombinationen und die von Owlat durchgesetzten Regeln finden Sie unter Betriebsmodi.
Diese Seite ist die Referenz für Betreiber. Zur zugrunde liegenden Mechanik (Single Source of Truth, Auflösung von Abhängigkeiten, Docker-Profile) siehe Feature-Flags — Entwicklerreferenz.
Wo Sie umschalten
Es gibt drei Stellen, an denen Sie ein Flag umlegen können: die Admin-Oberfläche, die Host-CLI und den Setup-Assistenten beim ersten Start.
Admin-Oberfläche
Einstellungen → Features im Dashboard. Jedes Flag hat eine Beschreibung, Hinweise auf Abhängigkeiten und einen Umschalter. Beim Deaktivieren eines Flags mit abhängigen Flags erscheint eine Bestätigung, die auflistet, was ebenfalls deaktiviert wird.
Setup-CLI
Auf einer VPS-Installation stellt der Host-Wrapper (scripts/owlat, installiert als owlat) die Flag-Befehle bereit:
# Turn one flag on or off:
owlat feature postbox on
owlat feature ai off
# Set a required env var, then apply:
owlat env LLM_API_KEY sk-...
owlat restart
Diese führen die containerisierte TS-CLI (owlat-setup) im Image wolvesdotink/setup aus. Jedes Umschalten schreibt das CLI-seitige Flag-Spiegelbild (.owlat-flags.json) neu, generiert docker-compose.override.yml neu, damit die richtigen Hintergrund-Worker ausgewählt werden, und weist Sie an, owlat restart auszuführen, um die Änderung anzuwenden.
Die innere CLI hat außerdem einen Befehl pack, um mehrere Flags auf einmal umzuschalten — er ist nur direkt über owlat-setup verfügbar, nicht über den owlat-Wrapper:
owlat-setup pack marketing on
owlat-setup pack emailClient on
Um den aktuellen Zustand einzusehen, lesen Sie .owlat-flags.json in Ihrem Installationsverzeichnis oder öffnen Sie Einstellungen → Features im Dashboard. Einen --show- oder Listen-Befehl gibt es nicht.
Setup-Assistent
Der Web-Assistent beim ersten Start (bereitgestellt vom Container wolvesdotink/setup, erreichbar über owlat setup oder den Einzeiler zur Installation) enthält den Schritt „Wählen Sie aus, was aktiviert werden soll“ (der erste Schritt nach dem Willkommensbildschirm), der die drei Feature-Pakete sowie jedes einzelne Flag nach Kategorie gruppiert präsentiert. Schalten Sie ein Paket um oder legen Sie Flags einzeln um; die Abhängigkeitskaskaden greifen dabei sofort. Sie können die Antworten jederzeit später über die Admin-Oberfläche oder die oben genannte CLI ändern.
Der ältere Assistent bash scripts/setup.sh (owlat setup --legacy) konfiguriert keine Feature-Flags — er behandelt nur den Deployment-Modus, Umgebungsvariablen und den E-Mail-Anbieter.
Feature-Pakete
Ein Paket ist lediglich eine Schaltfläche, die mehrere zusammengehörige Flags auf einmal umschaltet. Owlat bringt drei Pakete mit:
| Paket | Flags | Sinnvoll, wenn |
|---|---|---|
| Marketing | campaigns, automations, transactional | Sie Marketing-E-Mails und auslöserbasierte Abläufe versenden möchten. |
| E-Mail-Client | inbox, chat, postbox | Sie ein gemeinsames Team-Postfach, eine Chat-Oberfläche und persönliche Post (Postbox) möchten. |
| KI | ai, ai.agent, ai.autonomy, ai.knowledge, ai.knowledge.autoLink, ai.knowledge.graphRetrieval, ai.knowledge.analytics, ai.assistant, ai.visualizations | Sie jede KI-Funktion auf einmal aktivieren möchten. |
Beim Umschalten eines Pakets durchläuft jedes enthaltene Flag die normale Abhängigkeitskaskade, sodass Sie nicht in einen ungültigen Zustand geraten können.
Abhängigkeiten und Kaskaden
Manche Flags setzen andere voraus. Die Regeln:
- Das Aktivieren eines abhängigen Flags aktiviert automatisch dessen Voraussetzungen. Wer
ai.agentaktiviert, aktiviert damit auchaiundinbox. - Das Deaktivieren eines Flags deaktiviert alles, was davon abhing. Das Deaktivieren von
aikaskadiert aufai.agent,ai.autonomy,ai.knowledge(samt der Unter-Flagsai.knowledge.autoLink,ai.knowledge.graphRetrieval,ai.knowledge.analytics),ai.assistantundai.visualizations.
| Flag | Setzt voraus | Hinweise |
|---|---|---|
campaigns.archive | campaigns | Archivlinks benötigen Kampagnen |
inbox.codeTasks | inbox, ai.agent | Benötigt den Posteingang und den KI-Agenten |
ai.agent | ai, inbox | Der Agent klassifiziert Posteingangs-Mail und entwirft Antworten |
ai.autonomy | ai, ai.agent | Autonomie erweitert den Agenten |
ai.knowledge | ai | |
ai.visualizations | ai |
Das oberste Flag ai (nicht ai.agent) steuert die gesamte beratende KI von Postbox, sowohl beim Lesen als auch beim Verfassen:
- Thread zusammenfassen und Antworten vorschlagen in einem geöffneten Thread
- Automatische Thread-Zusammenfassungen — der zwischengespeicherte einzeilige Zusammenfassungsstreifen bei langen Threads
- Zu diesem Thread fragen — fundierte Fragen und Antworten zur geöffneten Konversation
- Meeting-Absichts-Chip — „Antwort entwerfen?“ bei einer in Prosa formulierten Terminanfrage
- Ghost-Text-Autovervollständigung — Inline-Vorschläge im Composer, die per Tab übernommen werden
- Tonalität umschreiben — eine Auswahl umschreiben (kürzer / freundlicher / förmlich / Grammatik korrigieren / übersetzen)
- Schreibstimme — „KI-Entwürfe personalisieren“, damit Vorschläge wie Ihre gesendeten Mails klingen
- Die Frage-Zusammenfassungen und die Dringlichkeitsbewertung der Antwort-Warteschlange sowie die KI-Verfeinerung mehrdeutiger Absender im Smart Inbox
Schalten Sie ai aus, und all das entfällt (die jeweils deterministischen Anteile funktionieren, sofern vorhanden, weiterhin). Für jede dieser Funktionen gibt es zusätzlich einen Schalter pro Benutzer in den Postbox-Einstellungen, und die Aktionen sind pro Benutzer ratenbegrenzt. Die Ausgabe ist immer beratend — sie wird nie automatisch versendet. Wie bei jeder KI benötigen Sie einen konfigurierten LLM-Anbieter (LLM_API_KEY).
Was sich beim Aktivieren eines Flags ändert
Das Umschalten eines Flags hat drei konkrete Auswirkungen:
- Die Oberfläche blendet ein oder aus: Navigationseinträge in der Seitenleiste, Einstellungsbereiche und Onboarding-Aufgaben für die Funktion.
- Hintergrund-Worker starten oder stoppen — allerdings nur auf den Pfaden über den Assistenten und die CLI. Jedes Flag kann Docker-Compose-Profile deklarieren. Beispiele:
postbox→personal-mail;mail.external→external-mail;scan.files→clamav;inbox.codeTasks→inbox-codetasks;ai→ai. Der Setup-Assistent und die Befehleowlat feature/owlat-setup packberechnen die aktive Profilmenge neu und generierendocker-compose.override.ymlneu, sodass einowlat restartden Worker tatsächlich startet oder stoppt. Das Umschalten eines Flags in der Admin-Oberfläche persistiert das Flag lediglich inapps/api(instanceSettings.featureFlags); es generiert das Override nicht neu und startet keine Container neu. Um einen Worker vom Dashboard aus hoch- oder herunterzufahren, führen Sie den passendenowlat feature-Befehl (oder den Assistenten) erneut auf dem Host aus und anschließendowlat restart. - Erforderliche Umgebungsvariablen werden sichtbar gemacht. Manche Flags benötigen zusätzliche Umgebungsvariablen (z. B. erfordert
aidie VariablenLLM_PROVIDERundLLM_API_KEY;scan.urlserfordertGOOGLE_SAFE_BROWSING_API_KEY;analytics.posthogerfordertPOSTHOG_API_KEYundPOSTHOG_HOST). Der Setup-Assistent fragt sie ab. Die Admin-Oberfläche kann Ihre.envnicht lesen und blockiert das Umschalten daher nicht — sie zeigt ein Hinweismodal, das Sie daran erinnert, welche Variablen Sie mitowlat env <KEY> <VALUE>setzen sollten (danachowlat restart).
Alle Flags
| Flag | Kategorie | Standard | Was es aktiviert |
|---|---|---|---|
campaigns | Versand | An | Marketing-Kampagnen an Kontakte und Segmente |
campaigns.archive | Versand | An | Öffentliche „Im Browser ansehen“-Links |
transactional | Versand | An | Programmatischer Versand über die API |
automations | Versand | Aus | Mehrstufige, auslöserbasierte Workflows |
inbox | Empfang | Aus | Gemeinsamer Team-Posteingang mit Threading |
inbox.codeTasks | Empfang | Aus | Extraktion von Fehlerberichten aus eingehender Mail |
chat | Empfang | Aus | Echtzeit-Chat neben dem Posteingang |
postbox | Empfang | Aus | Persönliche Postfächer mit IMAP/SMTP |
mail.external | Empfang | Aus | Ein eigenes externes Gmail-/Fastmail-/Firmenpostfach eines Benutzers über IMAP+SMTP verbinden (keine Versanddomain erforderlich) |
ai | KI | Aus | Hauptschalter (benötigt LLM-Anbieter) |
ai.agent | KI | Aus | Klassifizieren + Antworten entwerfen |
ai.autonomy | KI | Aus | Der Agent versendet ohne menschliche Freigabe |
ai.knowledge | KI | Aus | Semantischer Wissensgraph |
ai.knowledge.autoLink | KI | Aus | Vom LLM abgeleitete typisierte Kanten zwischen Einträgen (zusätzlich zum stets aktiven regelbasierten Linker); erfordert ai.knowledge |
ai.knowledge.graphRetrieval | KI | Aus | Suchergebnisse entlang der Graphkanten erweitern, bevor Entwürfe fundiert werden (Notausschalter); erfordert ai.knowledge |
ai.knowledge.analytics | KI | Aus | Cron für Zentralität/Cluster + Wissensgraph-Dashboard; erfordert ai.knowledge |
ai.assistant | KI | Aus | KI-Assistent mit mehreren Gesprächsrunden, Streaming und Tool-Calling + @assistant-Antworten im Team-Chat |
ai.visualizations | KI | Aus | Dashboards aus Diagrammen, die per natürlichsprachlichem Prompt entstehen |
webhooks | Integrationen | Aus | Ausgehende Ereigniszustellung |
forms | Integrationen | An | Einbettbare Anmelde-/Erfassungsformulare |
imports.mailchimp | Integrationen | Aus | Mailchimp-Import mit einem Klick |
imports.stripe | Integrationen | Aus | Synchronisation von Stripe-Kunden |
imports.mandrill | Integrationen | Aus | Übernahme der Mandrill-Sperrliste |
scan.content | Sicherheit | An | Prüfung auf Spam / Phishing / Homoglyphen vor dem Versand |
scan.files | Sicherheit | An | ClamAV-Malware-Scan für Anhänge |
scan.urls | Sicherheit | Aus | URL-Reputation über Google Safe Browsing |
analytics.posthog | Zustellbarkeit | Aus | PostHog-Produktanalyse |
domains.verification | Zustellbarkeit | An | Prüfschranke für SPF/DKIM/DMARC-Validierung |
domains.dkimRotation | Zustellbarkeit | An | Geplante Rotation der DKIM-Schlüssel |
Einige Flags steuern Funktionen, deren Oberfläche zwar ausgeliefert ist, deren tiefergehende Automatisierung aber noch nicht durchgängig verdrahtet ist:
ai.autonomy— die Agentenkonfiguration (automatische Antwort, Konfidenzschwelle, Tonalität, Signatur, Tageslimit) ist real, aber für abgestufte Autonomieregeln und die Autonomie-Rückkopplungsschleife gibt es noch keine produktiven Aufrufer. Siehe KI-Agent & Autonomie.inbox.codeTasks— Code-Aufgaben lassen sich manuell anlegen und verwalten, aber die automatische Erstellung einer Aufgabe aus einer eingehenden E-Mail ist nicht verdrahtet. Siehe Code-Aufgaben.
Im Zweifelsfall
Sie können ein Flag jederzeit aktivieren, sich umsehen, entscheiden, dass es nichts für Sie ist, und es wieder deaktivieren — in beide Richtungen entstehen keine Migrationskosten. Daten, die zu einer Funktion gehören (Postfächer, Kampagnen, Automationen), bleiben beim Deaktivieren eines Flags erhalten; beim erneuten Aktivieren ist der Zugriff wiederhergestellt.
Flags der gehosteten Cloud (billing.stripe, multiTenancy, tier.autoProvision) sind im Self-Host-Modus ausgeblendet und erscheinen nicht in der Admin-Oberfläche.