Feature-Flags
Aktivieren Sie eine Beeuni-Oberfläche für ein Projekt und sehen Sie, welche Funktionen jedes Flag steuert.
Ein Feature-Flag aktiviert eine Beeuni-Oberfläche für ein Projekt. Jede Oberfläche kann hinter einem Flag ausgeliefert werden — experimentell, Beta oder vollständig stabil. „Experimental“ ist ein Stabilitäts-Badge für ein Flag, nicht der Name des Systems.
Flags gelten pro Projekt. Wenn du ein Flag in einem Projekt aktivierst, ändert sich in keinem anderen Projekt etwas und auch nichts für andere Konten.
Ein Flag aktivieren
- Öffne Settings → Feature flags. Der Tab listet alle Flags auf, die von der Plattform unterstützt werden.
- Lies die Zeile: den Namen des Flags, sein Stabilitäts-Badge, eine einzeilige Beschreibung und seinen Ursprung —
Default on,Default offoderOverridden for this project. - Verwende den Schalter. Die Änderung gilt sofort für das aktuelle Projekt.
Du benötigst die Berechtigung project.settings.write für das Projekt. Die Route antwortet
403 für alle anderen Aufrufenden.
Über die CLI
Dieselben Schalter sind über beeuni projects features auch für Skripte und Agents verfügbar:
beeuni projects features # every flag: key, state, origin
beeuni projects features enable reminders
beeuni projects features disable reminders
beeuni projects features reset reminders # drop the override; follow the platform default
beeuni projects features --json # the full catalog as JSON
Füge --project <id> hinzu, um ein anderes als das verknüpfte/standardmäßige Projekt anzusprechen. Ein von der Plattform als nicht verfügbar markiertes Flag bleibt deaktiviert, unabhängig von der Projektüberschreibung; die CLI gibt dies als n/a / unavailable aus.
Stabilitäts-Badges
Das Badge beschreibt den Vertrag, nicht den Schalter. Ein Flag mit dem Badge stable muss weiterhin ausdrücklich aktiviert werden: apps ist stabil und standardmäßig trotzdem deaktiviert.
| Badge | Bedeutung |
|---|---|
| Experimental | Die Oberfläche und ihr Vertrag können sich noch ändern. |
| Beta | Die Oberfläche funktioniert und ihre Form nimmt Gestalt an. |
| Stable | Der Vertrag gilt. Das Flag muss weiterhin ausdrücklich aktiviert werden. |
So wird ein Flag durchgesetzt
Für jedes Flag ist ein Durchsetzungsmodus festgelegt.
| Modus | Verhalten des Servers, wenn das Flag deaktiviert ist |
|---|---|
routes |
Die HTTP-Oberfläche weist die Anfrage mit 403 zurück. |
behavioral |
Das Verhalten tritt nicht ein — kein Connector wird bereitgestellt, keine Umgebungsvariable eingefügt und kein Agent registriert. |
ui-only |
Der Server setzt das Flag bewusst nicht durch. Das Flag blendet nur die Client-Oberfläche aus. |
Eine Zurückweisung mit routes ist überall identisch:
{
"error": "Apps is not enabled for this project. Contact Beeuni to enable it.",
"code": "feature_disabled",
"feature": "apps"
}
Die Zeichenfolge error benennt die Flag-Liste, nicht einen bestimmten Tab. Die Liste ist der Tab Experimental in den Einstellungen.
Verzweige anhand von code, niemals anhand des Nachrichtentextes. Das SDK exportiert isFeatureDisabledError(error) und featureDisabledKey(error) genau dafür.
Alle Flags
Reihenfolge im Register — dieselbe Reihenfolge wie unter Settings → Feature flags.
Apps werden von Beeuni pro Projekt aktiviert. Kontaktiere Beeuni für Zugang. Nach der Aktivierung zeigt Settings Managed by Beeuni.
| Schlüssel | Name | Stabilität | Standard |
|---|---|---|---|
marketplace |
Marketplace | Beta | Aktiviert |
connectors_api_discover |
Connectors API Discover | Experimental | Deaktiviert |
agentmail_email |
AgentMail Email | Experimental | Deaktiviert |
llm_gateway |
LLM Gateway | Experimental | Aktiviert |
meta_agent |
Meta Agent | Experimental | Deaktiviert |
apps |
Apps | Stable | Deaktiviert |
monitors |
Monitors | Experimental | Deaktiviert |
reminders |
Reminders | Beta | Deaktiviert |
warm_sessions |
Warm Sessions | Beta | Aktiviert |
secrets_egress |
Network-Enforced Secrets | Experimental | Aktiviert |
pi_harness |
Pi Harness | Experimental | Deaktiviert |
Was die einzelnen Flags steuern
marketplace— Skills aus Community- und Anbieterregistern durchsuchen und installieren.connectors_api_discover— Direkte APIs, MCP-, GraphQL-, CLI- und Postman-Oberflächen neben verwalteten OAuth-Apps durchsuchen. Siehe Connectors.agentmail_email— AgentMail-Postfachverbindungen zuweisen, damit eingehende E-Mails Sitzungen starten und fortsetzen.llm_gateway— Das Projekt über das verwaltete Beeuni-LLM-Gateway leiten. Siehe Models.meta_agent— Einen plattformverwalteten Koordinator-Agent hinzufügen, der spezialisierte Sitzungen startet und verwaltet.apps— Statische Websites, Bundles, Dockerfiles und OCI-Images unter stabilen serverlosen URLs bereitstellen. Siehe Apps.monitors— 24/7-Watcher aus deinem Repository ausführen, die Triggerereignisse an Sitzungen senden. Siehe Triggers.reminders— Geplante Check-ins, die eine Sitzung einmalig oder wiederholt erneut anstoßen. Bei deaktiviertem Flag antworten die Reminder-Routen mitfeature_disabledund vorhandene Reminders werden nicht ausgelöst. Siehe Reminders.warm_sessions— Eine Sandbox eingeschaltet lassen, solange ein Projekt geöffnet ist, damit neue Sitzungen ohne Kaltstart beginnen.secrets_egress— Netzwerkdurchsetzung für ein Secret aktivieren: Die Sandbox hält einen Verweis, und Beeuni setzt den echten Wert nur bei Anfragen an zugelassene Hosts ein. Siehe Secrets.pi_harness— Die Sitzungen dieses Projekts mit dem Pi-Agent-Harness innerhalb der gewöhnlichen Sitzungs-Sandbox ausführen (BEEUNI_HARNESS=pi). Aktiviert: Jede neue oder neu gestartete Sitzung startet Pi, unabhängig vom Manifest. Deaktiviert: Das Manifest entscheidet —runtime: pistartet weiterhin Pi, alles andere startet die Standard-Agent-Laufzeit. Pi ruft Modelle nur über das LLM-Gateway auf: Wennllm_gatewaydeaktiviert ist, startet jede Sitzung die Standard-Agent-Laufzeit, unabhängig von diesem Flag oder dem Manifest. Repository-Struktur, Agents und Skills bleiben gleich; eine laufende Sitzung behält ihr Harness, bis sie neu gestartet oder fortgesetzt wird. Subagents funktionieren mit Pi: Der Agent delegiert mit dem Tooltaskangeneral,explore(schreibgeschützt) oder jeden Projekt-Agent mitmode: subagentin seinem.md, und das Transkript zeigt die Schritte jedes Subagents direkt an der entsprechenden Stelle. Pi-Sitzungen laden außerdem Pi.dev-Pakete: sieheharnesses:. Pi bietet nicht alle Sitzungsfunktionen von die Standard-Agent-Laufzeit: siehe die Übersicht unter Harnesses.
Graduierte Flags
Ein graduiertes Feature ist für jedes Projekt aktiviert und hat keinen Schalter.
- Agents as principals ist Standardverhalten und hat keinen Schalter. Eine Agent-Sitzung agiert als der Agent selbst — mit seinen Beeuni-Berechtigungen innerhalb seiner Rollenobergrenze, unabhängig davon, wer sie ausführt. Siehe Agent permissions.
- Review Center wurde aus dem Flag-System herausgenommen. Die Review-Seite, der Eintrag Review in der Seitenleiste und der Eintrag in der Befehlspalette werden für jedes Projekt angezeigt; die Berechtigungen
project.review.readundproject.review.actgelten weiterhin.review_centerist kein Flag-Schlüssel mehr:PATCH /v1/projects/:id/featuresantwortet mit400Unknown feature flag, undbeeuni projects features enable review_centerprints that error and exits1. Eine vor der Graduierung gespeicherte Überschreibung hat keine Wirkung. - Computers wurde aus dem Flag-System herausgenommen. Jedes Mitglied kann über die Projektseitenleiste den eigenen Computer verbinden; die Einstellung
TUNNEL_ENABLEDder Plattform ist die einzige Schranke.agent_tunnelist kein Flag-Schlüssel mehr:PATCH /v1/projects/:id/featuresantwortet mit400Unknown feature flag. Siehe Computers. - Microsoft Teams wurde aus dem Flag-System herausgenommen. Jedes Projekt kann Teams über Connectors → Channels verbinden; ein Mandantenadministrator muss weiterhin einmalig seine Zustimmung geben oder das Projekt bringt seinen eigenen Bot mit.
teamsist kein Flag-Schlüssel mehr:PATCH /v1/projects/:id/featuresantwortet mit400Unknown feature flag. Eine vor der Graduierung gespeicherte Überschreibung hat keine Wirkung. Siehe Microsoft Teams.
Nebenwirkungen eines Schalters
Einige Flags führen nach dem Commit der Änderung zu einer Angleichung des Plattformstatus.
| Flag | Wirkung nach dem Umschalten |
|---|---|
agentmail_email |
Beeuni führt die Bereitstellung des Channel-Connectors erneut aus, sodass der Connector entsprechend dem Flag erscheint oder verschwindet. |
llm_gateway |
Beeuni überträgt den neuen Anbietermodus an aktive Sandboxes. |
Diese Effekte dienen der Statusangleichung und sind nicht Teil des Erfolgs des Umschaltens. Die API-Antwort wartet nicht darauf. Jeder Effekt wird einmal wiederholt; die dahinterliegenden Reconciler sind idempotent und werden bei ihren regelmäßigen Durchläufen erneut ausgeführt.
Ein Flag im Code lesen und setzen
Lies den effektiven Status pro Projekt über die Projektdetails oder den React-Hook:
import { useFeatureFlag } from '@beeuni/sdk/react';
function AppsNavItem({ projectId }: { projectId: string }) {
const apps = useFeatureFlag(projectId, 'apps');
if (!apps.enabled) return null;
return <Link href={`/projects/${projectId}/apps`}>Apps</Link>;
}
enabled ist nur dann true, wenn der Server exakt true zurückgegeben hat. Eine fehlende Projekt-ID, eine laufende Abfrage und ein Fehler ergeben alle false. Setze die Schranke standardmäßig auf „geschlossen“.
Setze die Projektüberschreibung mit dem Client:
const p = beeuni.project(projectId);
await p.updateFeatureFlag('apps', true); // turn it on for this project
await p.updateFeatureFlag('apps', null); // clear the override, inherit the default
updateFeatureFlag ruft PATCH /v1/projects/:id/features auf. feature ist einer von FEATURE_FLAG_KEYS, exportiert aus @beeuni/sdk und typisiert als FeatureFlagKey. Siehe SDK-Referenz.
Behandle ein deaktiviertes Feature anhand des Codes, nicht anhand der Nachricht:
import { featureDisabledKey, isFeatureDisabledError } from '@beeuni/sdk';
try {
await beeuni.project(projectId).apps.list();
} catch (error) {
if (isFeatureDisabledError(error)) {
console.log(`${featureDisabledKey(error)} is off for this project`);
}
}