Enterprise — Registrierung & Flotte
Eine einzelne Kopie von Bromure Agentic Coding ist ein persönliches Werkzeug. In einem Team muss ein Administrator oft organisatorische Fragen beantworten: Welche Macs führen die App aus, welche Pakete ziehen Agenten herein, wie viele Token werden verbraucht und ob in einem Arbeitsbereich ein Prompt-Injection-Detektor ausgelöst hat. Die Registrierung beim Bromure Enterprise Manager — einem Arbeitsbereich auf bromure.io — bietet genau diese Flotten-Transparenz, indem sie von jedem registrierten Mac Sitzungs-Metadaten (niemals Prompts, niemals Geheimnisse) überträgt.
Dieses Kapitel behandelt die Registrierung eines Macs, die mTLS-Identität, die dessen Uploads authentifiziert, was genau hochgeladen wird und was nicht, den Opt-out pro Arbeitsbereich, die Flottenansicht des Administrators, den Umgang mit Remote-Zustimmung und das Off-Boarding. Das lokale Tracing — der Audit-Verlauf auf dem Mac, den die Registrierung nicht ersetzt — wird unter Tracing behandelt; das Paket-Inventar, das das Enterprise-Reporting speist, ist Lieferketten-Schutz.
Zwei unabhängige Systeme
Das Wort „Flotte" umfasst zwei Funktionen, die man unbedingt auseinanderhalten sollte, da sie keine gemeinsame Vertrauenswurzel teilen:
- bromure.io-Registrierung (dieses Kapitel) meldet einen Mac bei Ihrem Arbeitsbereich an und überträgt Sitzungs-Metadaten in die Cloud, authentifiziert durch ein Mutual-TLS-Zertifikat, das von der CA Ihrer Organisation ausgestellt wurde.
- Der Rich Client (Fernzugriff) lässt einen Mac laufende Instanzen anderer Macs über SSH spiegeln, authentifiziert durch SSH-Host-Schlüssel und registrierte öffentliche Schlüssel.
Keines hängt vom anderen ab. Sie können sich registrieren, ohne je den Rich Client zu nutzen, Hosts spiegeln, ohne einen von ihnen zu registrieren, oder beides tun. Der mTLS-Stack der Registrierung dient ausschließlich der Flotten-Telemetrie; die Rich-Client-Spiegelung vertraut auf SSH — die beiden sind in dieser Version bewusst nicht zusammengeführt.
Registrierung beim Bromure Enterprise Manager
Die Registrierung erfolgt codebasiert. Ein Administrator erzeugt auf der Detailseite Ihres Benutzers in bromure.io einen einmaligen, aus sechs Wörtern bestehenden Registrierungscode, der auf die App agentic-coding beschränkt ist. Sie fügen diesen Code in die App (oder die CLI) ein, und der Mac registriert sich als Install des Arbeitsbereichs.
Aus der App
- Beschaffen Sie sich von Ihrem Administrator einen aus sechs Wörtern bestehenden Registrierungscode.
- Öffnen Sie Bromure Agentic Coding (das Menü mit dem App-Namen) → In bromure.io registrieren… — der Eintrag befindet sich direkt unter Nach Updates suchen…. Ein Fenster mit dem Titel bromure.io-Registrierung öffnet sich.
- Fügen Sie den Code in das Feld Registrierungscode ein (Platzhalter:
six-word-enrollment-code). - Bearbeiten Sie optional den Gerätenamen (er entspricht standardmäßig dem Namen dieses Macs; Hilfetext: „Wird Ihrem Administrator angezeigt, damit er diesen Mac erkennen kann.").
- Klappen Sie optional Erweitert auf und legen Sie eine Server-URL (optional) für einen selbst gehosteten oder Staging-Server fest.
- Klicken Sie auf Registrieren (Return) oder Abbrechen (Esc).
Das Blatt gibt unmissverständlich an, was die Registrierung aktiviert: Sie „sendet Sitzungs-Metadaten (Tools, Dateien, Befehle, Token-Verbrauch) an Ihren Arbeitsbereich, damit Administratoren die Aktivität überprüfen können. Arbeitsbereiche im privaten Modus übertragen niemals." Bei Erfolg erscheint das Install auf der Seite /agentic-coding/installs des Administrators.
Hinweis: Manche In-App-Hinweistexte lauten noch „Öffnen Sie Fenster → In bromure.io registrieren…", aber der Eintrag befindet sich tatsächlich im Anwendungsmenü (App-Name) — das ist der maßgebliche Ort. Ein für eine andere Bromure-App erzeugter Code wird mit Der Code wurde für die App '…' ausgestellt, erwartet wurde 'agentic-coding'. abgelehnt, und eine zweite Registrierung schlägt mit Bromure Agentic Coding ist bereits registriert. fehl.
Aus der CLI
Die GUI-Abläufe haben exakte CLI-Entsprechungen, gruppiert unter Enterprise features in bromure-cli --help und mit demselben Speicher auf der Festplatte. Sie sind praktisch für skriptbasiertes Provisioning oder für die Registrierung über eine bestehende SSH-Sitzung.
| Befehl | Was er tut |
|---|---|
bromure-cli enroll --code <code> [--server-url <url>] [--device-name <name>] | Registriert diesen Mac. Gibt bei Erfolg E-Mail, Arbeitsbereich, Install-ID, Server und Gerät aus; beendet sich bei Fehler mit einem Wert ungleich null. |
bromure-cli enrollment-status | Gibt den aktuellen Zustand aus. Bei aufgehobener Registrierung gibt er not enrolled aus und beendet sich mit 0, sodass Automatisierung sicher prüfen kann. |
bromure-cli unenroll [--force] | Meldet ab (siehe Widerruf, Off-Boarding und Aufheben der Registrierung). |
Die Standardwerte entsprechen der GUI: Server-URL https://bromure.io/api (überschreibbar über BROMURE_MANAGED_URL oder den UserDefaults-Schlüssel managed.serverURL), Gerätename der lokalisierte Hostname des Macs.
Die mTLS-Install-Identität
Telemetrie-Uploads tragen keinen Token — sie authentifizieren sich mit einem Client-Zertifikat. Bei der Registrierung (und bei jeder Erneuerung) generiert die App einen frischen RSA-2048-Schlüssel, erstellt eine Zertifikatssignieranforderung mit dem Common Name bromure-install-<installId> und lässt sie von der Org-CA Ihres Arbeitsbereichs über den verwalteten Server signieren. Das Leaf- und das CA-Zertifikat werden als einsehbare PEM-Dateien gespeichert; der private Schlüssel liegt im macOS-Schlüsselbund.
Zum Anforderungszeitpunkt werden Zertifikat und Schlüssel in ein PKCS#12 im Arbeitsspeicher verpackt und ohne Berührung des Schlüsselbunds importiert, sodass für die Identität selbst nie ein Schlüsselbundverwaltungs-Eintrag oder eine Entsperraufforderung erscheint. Das eigene Serverzertifikat des Analytics-Endpunkts wird gegen den normalen System-Root-Speicher validiert.
Hinweis: Die Leaf-Zertifikatsanforderung während der Registrierung erfolgt nach dem Best-Effort-Prinzip. Ist die Org-CA noch nicht konfiguriert, gelingt die Registrierung dennoch, und das Zertifikat wird beim ersten Heartbeat abgerufen.
Das Registrierungs-Statusfenster
Nach der Registrierung benennt sich derselbe Menüeintrag in bromure.io-Registrierung… um und öffnet ein Statusfenster (Titel bromure.io-Registrierung) statt des Eingabeformulars. Es zeigt die Zeilen Arbeitsbereich, Benutzer, Gerät, Server, Registriert (Datum) und Zertifikat — alle als Text auswählbar. Die Zeile Zertifikat lautet Gültig bis <date> oder, falls es abgelaufen ist, Abgelaufen — wird automatisch erneuert.
Am unteren Rand befinden sich zwei Schaltflächen: Zertifikat erneuern erzwingt ein neues Leaf-Zertifikat; Abmelden hebt die Registrierung auf (destruktiv — siehe unten). Gesundheitsprobleme erscheinen als orangefarbenes Warnbanner:
| Banner | Bedeutung | Was zu tun ist |
|---|---|---|
| Registrierung widerrufen | „Ihr Administrator hat dieses Install widerrufen. Melden Sie sich ab und registrieren Sie sich erneut mit einem neuen Code, um den verwalteten Modus fortzusetzen." | Melden Sie sich ab und registrieren Sie sich mit einem frischen Code. |
| Registrierung nicht mehr akzeptiert | „Der Server hat die Zugangsdaten dieses Installs abgelehnt — sie sind möglicherweise abgelaufen oder wurden zurückgesetzt." | Melden Sie sich ab und registrieren Sie sich mit einem frischen Code. |
Eine erfolgreiche Zertifikat erneuern-Aktion behebt einen veralteten Zustand abgelehnter Zugangsdaten, hebt aber niemals einen widerrufenen Zustand auf — das gelingt nur durch erneute Registrierung.
Heartbeat und Zertifikatserneuerung
Während die App registriert läuft, sendet eine Hintergrundaufgabe alle 10 Minuten (sowie einmal sofort beim Start und bei der Registrierung) einen Heartbeat an den Arbeitsbereichsserver, was den „Zuletzt gesehen"-Zeitstempel des Administrators aktuell hält. Die Antwort des Servers ist für die Gesundheit maßgeblich: Ein Widerruf schaltet das Banner um; eine saubere Antwort behebt vorherige Fehlzustände. Nur ein 401/403 auf dem Bearer-Token des Heartbeats setzt die Gesundheit auf „Token abgelehnt" — vorübergehende Fehler (offline, 5xx) ändern sie nie.
Jeder Heartbeat-Takt prüft außerdem das mTLS-Leaf-Zertifikat und erneuert es, sobald es fehlt oder innerhalb von 72 Stunden vor dem Ablauf liegt. Die Erneuerung wird durch den Bearer-Token statt durch das Leaf authentifiziert, sodass selbst ein bereits abgelaufenes Zertifikat beim nächsten Start geheilt wird.
Warnung: Ein Mac, der über den Ablauf seines Zertifikats hinaus geschlossen bleibt, scheitert stillschweigend bei verwalteten Uploads, bis der nächste Start das Leaf erneuert. Im Normalbetrieb ist das transparent, aber gut zu wissen, wenn eine Maschine lange ausgeschaltet bleibt.
Was hochgeladen wird — und was nicht
Registrierte, nicht private Sitzungen übertragen strukturierte Cloud-Ereignisse — je ein Datensatz: Sitzungs-ID, Arbeitsbereich-ID, Zeitstempel, Ereignistyp und eine kleine JSON-Nutzlast. Sitzungen sind hier Aktivitätsfenster, keine VM-Lebenszyklen: eine Sitzungs-ID pro Arbeitsbereich pro Aktivitätsfenster, die nach 20 Minuten Inaktivität übergeht.
| Ereignis | Nutzlast-Höhepunkte |
|---|---|
session.start / session.end | Beginn und Ende eines Aktivitätsfensters; session.end trägt einen Grund (z. B. idle_timeout) und wird auf die Inaktivitätsgrenze zurückdatiert. |
llm.request | Anbieter, Host, Pfad, Statuscode, Latenz, Modell sowie Eingabe-/Ausgabe-/Cache-Token-Zählungen. Echtzeit-WebSocket-Sitzungen ergänzen Transport und Antwort-ID. |
tool.use | Tool-Name und eine Eingabe-Zusammenfassung (auf 240 Zeichen gekürzt). |
file.read / file.write | Dateipfad und das Tool, das sie berührt hat. |
command.run | Der Befehlstext (auf 500 Zeichen gekürzt) und das Tool. |
credential.token_swap | Host und Pfad sowie kurze Vorschauen des gefälschten und des echten Tokens — niemals die Token selbst. |
credential.ssh_sign | Schlüsselbezeichnung, SHA-256-Fingerabdruck und Schlüsselart (verwaltet / importiert). |
credential.aws_sign | Methode, Host, Pfad, Dienst, Region und ein maskierter Zugriffsschlüssel. |
supply_chain.fetch | Ökosystem, Paket, Version, Anforderungsart, Ergebnis und Grund. |
vm.disk_reset | Der Grund und die beteiligten Base-Image-Versionen. |
prompt_injection.detection | Detektor, Methode, Aktion, Host, Quelle, Score, Signale, Tool-Use-ID und das gesamte markierte Snippet (bis zu 20.000 Zeichen). |
Der Übertragungsstatus ist in jedem Sitzungsfenster sichtbar und spiegelt sich im Flotten-Reporting, das ein Administrator sieht.
Was den Mac nie verlässt
Das ist der Teil, bei dem man präzise sein muss. Der Stream besteht aus Metadaten; der Inhalt Ihrer Arbeit bleibt lokal. Bromure lädt niemals hoch:
- Rohe Benutzer-Prompts oder Antwortkörper des Modells.
- Geheime Werte. Zugangsdaten-Ereignisse tragen nur maskierte Vorschauen oder Fingerabdrücke — echte Schlüssel-Bytes verlassen den Mac nie.
- Nichts aus einem Arbeitsbereich im privaten Modus (siehe unten) und überhaupt nichts, wenn die Registrierung aufgehoben ist.
Gepufferte Ereignisse werden nur im Arbeitsspeicher gehalten; ein hartes Beenden verwirft alle noch nicht übertragenen, und es gibt keine festplattengestützte Wiederholungswarteschlange. Das ist so gewollt — Telemetrie erfolgt nach dem Best-Effort-Prinzip, niemals auf Kosten Ihrer Arbeit.
Warnung: Es gibt eine bewusste Ausnahme von der Metadaten-only-Regel:
prompt_injection.detectionlädt das gesamte markierte Snippet hoch (bis zu 20.000 Zeichen), damit ein Administrator genau sehen kann, was der Agent im Begriff war zu lesen. Das ist Inhalt, keine Metadaten — der Kompromiss besteht darin, dass ein Prompt-Injection-Versuch genau das ist, was Sicherheitsteams wortwörtlich prüfen müssen. Alles Übrige bleiben Vorschauen, Pfade, Zählungen und Masken. Siehe Prompt-Injection-Schutz dazu, was eine Erkennung auslöst.
Bündelung und Zustellung
Ereignisse werden im Arbeitsspeicher gebündelt und an den Analytics-Ingest-Endpunkt gesendet, rein durch das mTLS-Leaf-Zertifikat authentifiziert — mit Telemetriedaten reist kein Bearer-Token mit. Der Puffer wird alle 5 Sekunden geleert, leert sich automatisch bei 200 ausstehenden Ereignissen und sendet höchstens 500 Ereignisse pro Anfrage. Während eines langen Ausfalls wird der Puffer auf die neuesten Ereignisse getrimmt (die ältesten werden verworfen), statt unbegrenzt zu wachsen; ein fehlgeschlagenes Leeren wiederholt denselben Batch beim nächsten Takt.
Privater Modus
Die Übertragung ist pro Arbeitsbereich abwählbar. Der Umschalter Privater Modus (Symbol durchgestrichenes Auge) im Editor eines Arbeitsbereichs hält die Aktivität dieses Arbeitsbereichs vollständig lokal: Es werden keine Metadaten übertragen, der Indikator in der Titelleiste verschwindet dafür, und die Sitzungsliste des Administrators sieht nichts davon. Der lokale Trace-Inspektor bleibt unberührt — er zeichnet weiter gemäß seinem eigenen Trace-Level auf. Der Umschalter ist für jeden Arbeitsbereich aus (Übertragung aktiviert) und erscheint nur auf registrierten Macs, da er sonst nichts bewirken würde.
Der private Modus liegt bei den Tracing-Einstellungen im Arbeitsbereich-Editor. Auf einem nicht registrierten Mac fehlt der Schalter schlicht, weshalb der folgende Bereich nur die Trace-Auswahl zeigt:
Ereignisse werden zum Emissionszeitpunkt gefiltert — Datenverkehr im privaten Modus gelangt gar nicht erst in den Upload-Puffer.
Tipp: Der private Modus ist der richtige Schalter, wenn Sie in einem Arbeitsbereich einen persönlichen API-Schlüssel verwenden und diese Aktivität nicht für die Administratoren Ihrer Organisation sichtbar machen möchten. Am lokalen Audit-Verlauf ändert er nichts.
Der Übertragungsindikator
Immer wenn ein Mac registriert ist und ein Arbeitsbereich nicht im privaten Modus ist, erscheint ein pulsierender roter, aufnahmeähnlicher Punkt in der Symbolleiste dieses Sitzungsfensters (und als Punkt auf den Seitenleistenzeilen des vereinheitlichten Fensters). Sein Tooltip lautet „Sitzungs-Metadaten werden an bromure.io gesendet. Schalten Sie den privaten Modus des Arbeitsbereichs um, um die Übertragung zu stoppen." und sein Barrierefreiheits-Label ist Übertragung an bromure.io. Der Punkt ist rein informativ und wird ausgeblendet, wenn die Registrierung aufgehoben ist oder der private Modus aktiv ist.
Egress-IP-Registrierung
Registrierte Installs senden zudem alle 60 Sekunden (sowie einmal beim Start und bei der Registrierung) einen winzigen, mTLS-authentifizierten Ping an den Endpunkt /register-ip des Analytics-Dienstes, sodass die Datensätze des Arbeitsbereichs die aktuelle öffentliche IP des Macs widerspiegeln. Bei aufgehobener Registrierung wird er stillschweigend übersprungen. Der Endpunkt ist standardmäßig https://analytics.bromure.io/register-ip, überschreibbar über BROMURE_AC_REGISTER_IP_URL oder den UserDefaults-Schlüssel managed.acRegisterIPURL.
Lieferketten-Inventar und Token-Verbrauchs-Rollups
Zwei der übertragenen Ereignistypen machen das Reporting auf Enterprise-Ebene über ein ganzes Team hinweg nützlich.
- Lieferketten-Inventar. Jeder Abruf von Metadaten und Artefakten sendet ein
supply_chain.fetch-Ereignis, das Ökosystem, Paket, Version, Anforderungsart, Ergebnis (allowed,rewritten,blockedoderstripped) und Grund trägt. Allein die Registrierung gibt Administratoren ein organisationsweites Inventar jedes Pakets, das jeder Agent hereingezogen hat — selbst in Arbeitsbereichen mit sämtlichen abgeschalteten Lieferketten-Durchsetzungsebenen, da die Beobachtung von der Durchsetzung entkoppelt ist. Die Durchsetzungsseite davon ist in Lieferketten-Schutz dokumentiert. - Token-Verbrauchs-Rollups. Jedes
llm.request-Ereignis trägt das Modell, die Eingabe- und Ausgabe-Token-Zählungen sowie die Cache-Erstellungs- und Cache-Lese-Zählungen. Über eine Flotte hinweg aggregiert, werden daraus Ausgabenberichte pro Benutzer, pro Arbeitsbereich und pro Modell, ohne dass je Prompt- oder Antwortinhalte hochgeladen werden. Das lokale Gegenstück — die Token-Abrechnung pro Anfrage, die Sie auf Ihrem eigenen Mac lesen können — steht in Tracing.
Die Flottenansicht
Auf der bromure.io-Seite erscheint jeder registrierte Mac als Zeile auf der Seite /agentic-coding/installs des Arbeitsbereichs, identifiziert durch seine Install-ID und mit Anzeige des von Ihnen gesetzten Gerätenamens, des Benutzers und eines „Zuletzt gesehen"-Zeitstempels, den der 10-minütige Heartbeat aktuell hält. Von dort überprüft ein Administrator die übertragenen Sitzungs-Metadaten, das Lieferketten-Inventar, die Token-Verbrauchs-Rollups und die Prompt-Injection-Erkennungen für die gesamte Flotte.
Dies unterscheidet sich vom „Flotten"-Begriff des Rich Clients — dem gleichzeitigen Spiegeln mehrerer Remote-Hosts über SSH —, der in Fernzugriff behandelt wird. Die beiden teilen nie eine Vertrauenswurzel.
Umgang mit Remote-Zustimmung
Wenn eine Arbeitsbereich-Sitzung interaktiv über CLI oder SSH angehängt wird — ohne ein GUI-Fenster davor —, kann die App keinen Dialog einblenden. Stattdessen stellen die vier Man-in-the-Middle-Zustimmungs-Broker ihre Fragen als nummerierte Menüs auf dem Terminal des angehängten Benutzers dar:
| Prompt | Auswahlmöglichkeiten |
|---|---|
Zugangsdaten-Nutzung — Allow "<workspace>" to use <credential>? | Für 1 Stunde erlauben / Für 5 Minuten erlauben / Für den Rest der Sitzung erlauben / Nicht erlauben |
Lieferketten-Umgehung — Pass through <package> from workspace …? | Für 15 Minuten erlauben / Einmal erlauben / Für den Rest der Sitzung erlauben / Nicht erlauben |
Schutzmechanismus-Schreibvorgang — Allow write on … from workspace …? | (dieselben vier wie oben) |
Prompt-Injection — Possible <detector> in … (zeigt bis zu 1.500 Zeichen des markierten Textes) | Diese Anfrage blockieren / Diese Anfrage erlauben |
Die entscheidende Eigenschaft ist, wo der Prompt dargestellt wird: auf der Host-Seite der Terminal-Pumpe. Die Gast-VM sieht immer nur die andere Seite der Verbindung, sodass ein kompromittierter Gast weder den Prompt lesen noch eine Antwort einschleusen kann. Hängen sich mehrere Clients an denselben Arbeitsbereich an, erhält der neueste interaktive Anhang die Prompts („der jüngste Anhang gewinnt").
Warnung: Diese Prompts scheitern sicher. Kein aktiver Anhang, ein Timeout (Standard 120 Sekunden), ein Verwerfen oder ein Abhängen mitten im Prompt lösen sich alle zu Ablehnen auf — und bei Prompt-Injection zu Blockieren. Eine Registry-Authentifizierungsfehler-Warnung wird für interaktiv angehängte Sitzungen zu einer Protokollzeile unterdrückt, da es keine GUI gibt, um sie anzuzeigen. Die GUI-Pfade für dieselben Entscheidungen werden unter Zugangsdaten, Lieferketten-Schutz und Prompt-Injection-Schutz behandelt.
Widerruf, Off-Boarding und Aufheben der Registrierung
Es gibt zwei Wege, auf denen ein Install die Flotte verlässt, und sie bewirken Unterschiedliches.
Registrierung aufheben (lokal). Klicken Sie im Registrierungs-Statusfenster auf Abmelden oder führen Sie bromure-cli unenroll aus. Die CLI fragt Sign out of <org> (<email>)? [y/N], sofern Sie nicht --force übergeben, und gibt not enrolled — nothing to do (Exit 0) aus, wenn nichts zu entfernen ist. Das Abmelden löscht sämtliches lokales Registrierungsmaterial — install.json, leaf.crt, ca.crt, leaf.serial und die Health-Datei —, entfernt den Bearer-Token und jeden privaten Leaf-Schlüssel aus dem Schlüsselbund, bereinigt die zwischengespeicherte mTLS-Identität, verwirft jede gepufferte Telemetrie und stoppt die Heartbeat- und IP-Registrierungsaufgaben. Die App kehrt in den Zustand Nicht registriert zurück, und das Statusfenster wechselt zurück zum Registrierungsformular, sodass Sie sich sofort mit einem anderen Code neu registrieren können.
Widerrufen (serverseitig). Ein Administrator widerruft das Install auf bromure.io. Auf dem Mac lässt der nächste Heartbeat das Banner Registrierung widerrufen erscheinen, und verwaltete Uploads werden gestoppt.
Warnung: Das Abmelden ist rein lokal — es wird kein Serveraufruf getätigt. Ein Administrator, der ein Gerät außer Betrieb nimmt, sollte das Install serverseitig widerrufen; andernfalls verbleibt die (nun tote) Install-Zeile auf der Flottenseite, bis sie keinen Heartbeat mehr sendet. Um einen Mac vollständig auszugliedern, widerrufen Sie ihn im Arbeitsbereich und melden Sie sich auf dem Gerät ab.
Referenz
Der Registrierungszustand liegt unter ~/Library/Application Support/BromureAC/managed/: install.json (Install-ID, Arbeitsbereich-Slug, Benutzer, Server-URL, Gerätename, Registriert-am), leaf.crt und ca.crt (PEM), leaf.serial (ein Zeiger auf den Schlüsselbund-Eintrag mit dem Schlüssel des aktuellen Leafs) und health (ok / tokenRejected / revoked). Im macOS-Schlüsselbund enthält der Dienst io.bromure.agentic-coding.managed-install den Bearer install-token und einen Eintrag leaf-cert-key-<serialHex> pro ausgestellter Zertifikatsseriennummer (nur dieses Gerät, bei Entsperrung).
Der Client kontaktiert drei Routen des verwalteten Servers und einen Ingest-Endpunkt:
POST {server}/v1/enroll (code redemption)
POST {server}/v1/installs/{installId}/heartbeat (Bearer)
POST {server}/v1/installs/{installId}/cert (Bearer + CSR PEM)
POST {ingest URL} {"events":[…]} (mTLS, no bearer)
| Intervall / Grenze | Wert |
|---|---|
| Heartbeat | alle 10 Minuten |
| Egress-IP-Registrierung | alle 60 Sekunden |
| Leaf-Erneuerungsschwelle | 72 Stunden vor Ablauf |
| Ereignis-Flush | alle 5 Sekunden (oder bei 200 ausstehenden) |
| Max. Ereignisse pro Batch | 500 |
| Sitzungs-Inaktivitätsübergang | 20 Minuten |
| Remote-Zustimmungs-Timeout | 120 Sekunden |
| Prompt-Injection-Snippet-Obergrenze | 20.000 Zeichen |
Server- und Endpunkt-Überschreibungen (keine GUI) sind BROMURE_MANAGED_URL (oder managed.serverURL, Standard https://bromure.io/api), BROMURE_AC_INGEST_URL (oder managed.acIngestURL, Standard https://analytics.bromure.io/ac-ingest) und BROMURE_AC_REGISTER_IP_URL (oder managed.acRegisterIPURL). Die vollständige Befehlsreferenz steht in Automatisierung & die CLI.