Zum Inhalt springen

Ökosystem

Wie unsere Plattformen zusammenpassen.
Jede Aufgabeein Tool.

RODMENA baut seine Produkte aus kleinen gehosteten Diensten, die jeweils einem einzigen Zweck dienen, und einer Reihe hauseigener Bibliotheken auf. Jede Zuständigkeit gehört zu genau einem Tool, jede Plattform hat ihr eigenes Team, und ein gemeinsamer Mail-Bus verbindet sie.

Produkte, eines davon im Entwurf
13
gehostete Plattformen
8
Bibliotheken, Engines und CLIs
8
gemeinsamer Mail-Bus
1

Designprinzipien

  • Eine Zuständigkeit, ein Tool

    Authentifizierung ist Identity, Autorisierung ist Auth, Nutzungsmessung ist TokenGate, E-Mail ist Mail API, Freigaben sind Futex, Container sind RunFlow und agentische Workflows sind Highway. Produkte implementieren niemals eine Zuständigkeit neu, die bereits ein hauseigenes Tool verantwortet.

  • Teams koordinieren per E-Mail

    Jede Plattform hat ihren eigenen Agenten, ihren eigenen Kontext und ihr eigenes Repository. Teams koordinieren sich über Plattformen hinweg auf dem Agent-Mail-Bus. Kein Team bearbeitet das Repository eines anderen Teams oder legt Tickets in dessen Tracker an.

  • Über mehrere Länder verteilte Datenbanken

    Jeder Dienst verfügt über eine eigene Datenbank, und die Datenbanken liegen auf unterschiedlichen Hosts in unterschiedlichen Ländern. Anwendungen können neu bereitgestellt werden, Daten nicht, daher werden beide getrennt gehalten. Jede Datenbank wird in eine dritte Region repliziert und extern gesichert.

Where it runs

Hosts und Regionen

Die verwaltete Flotte umfasst 22 Produktionsdatenbanken, die jeweils einem Dienst gehören, auf 4 Datenbank-Hosts in 3 Ländern, und 4 weitere laufen auf einem Anwendungs-Host. Keine zwei Dienste teilen sich ein Schema, und keine einzelne Maschine beherbergt die Plattform.

Produktionsdatenbanken, jeweils einem einzigen Dienst zugeordnet
22
Datenbank-Hosts
4
Länder
3
Minuten RPO (Wiederherstellungspunkt) in der verwalteten Flotte, höchstens
≤5
  • UKVereinigtes Königreich

    Anwendungen und zwei Datenbank-Hosts

    Hostet die Anwendungsebene und die Datenbanken für die Workflow-Engine, den Freigabedienst, den Message-Bus, E-Mail, das Hauptbuch und die Aufgabenplattform.

  • FRFrankreich

    Datenbank-Host

    Enthält die Identitäts- und Zugriffsebene – Autorisierung, Nutzungsmessung und den Identitätsanbieter –, getrennt von den Diensten, die davon abhängen.

  • DEDeutschland

    Replikatsatz

    Enthält eine kontinuierlich aktualisierte Kopie jeder Datenbank, außerhalb der beiden anderen Regionen. Dort läuft keine Primärdatenbank, daher hängt kein Datenverkehr von dieser Region ab, bis sie hochgestuft wird.

  • Kontinuierliche Replikation

    Jede Datenbank streamt Block-Level-Änderungen an einen Standby außerhalb beider Primärregionen. Die Replikation ist asynchron, daher kann ein Replikat den vorgelagerten Dienst nicht verlangsamen oder blockieren.

  • Off-Site-Backups

    Archive werden kontinuierlich in einen Objektspeicher in einer separaten Einrichtung geschrieben, vor dem Verlassen des Hosts verschlüsselt und sind innerhalb der Aufbewahrungsfrist zu jedem beliebigen Zeitpunkt wiederherstellbar. Wiederherstellungen werden Ende-zu-Ende getestet.

  • Drei Faktoren bei jeder Verbindung

    Keine Datenbank akzeptiert eine Netzwerkverbindung allein mit einem Passwort. Jede Verbindung benötigt eine Verschlüsselung während der Übertragung, ein von einer privaten Zertifizierungsstelle ausgestelltes Clientzertifikat und ein Passwort. Jeder Dienst ist auf seine eigene Datenbank beschränkt.

  • Replikate und Backups

    Eine fehlerhafte Anweisung erreicht jedes Replikat innerhalb von Augenblicken. Replikate schützen vor Hardwareverlust, und das Archiv schützt vor Datenverlust.

Geprüft am 2026-10-05. Die vollständige Topologie lesen

Topologie

Plattformkarte

Die Karte hat acht Ebenen und einen Bus, und jede Aufgabe erscheint genau einmal. Produkte stehen oben, der Stack unten. Alles, was ein Produkt braucht, ist nur einen Schritt entfernt.

23 Knoten · 27 dokumentierte Beziehungen · 1 angenommen

01/PRODUKTE02/IDENTITÄT & ZUGRIFF03/GOVERNANCE04/ORCHESTRIERUNG & AUSFÜHRUNG05/KOMMUNIKATION06/DATEN & BIBLIOTHEKEN07/ENTWICKLUNGSPROZESS08/STACK-PRÄFERENZENAGENT-MAIL-BUSMeldung · Bestätigung · Korrekturhinweis · Prüfergebnis · AbschlussRED9Produkt · im EntwurfreTunnelProdukt · BetaLedgerProdukt · derzeit kostenlosIdentityGehosteter DienstExternal IdPsGoogle · GitHub · AppleAuthGehosteter DienstTokenGateGehosteter DienstFutexGehosteter DienstHighwayGehosteter DienstRunFlowGehosteter DienststabilizeWorkflow-Engine · teilweiseRODMENA Mail APIGehosteter DienstdatashardPython-BibliothekmigrettiCLIsupervicePython-BibliothekbulkmanPython-Bibliothekresilient-circuitPython-BibliothekscriptplanEngine + CLIissuedb-cli + EARSCLIPostgreSQLExternRedisExternPrismGehosteter Dienst

Scrollen Sie die Karte seitwärts. Zu jedem Knoten gibt es unten außerdem eine Kachel.

Entdecken

So verwenden Sie die Karte

Wählen Sie einen Knoten oder den Bus aus, um seine Beziehungen hervorzuheben und zu sehen, wofür er zuständig ist, womit er verbunden ist und wodurch er niemals ersetzt werden darf. Die Kacheln unten enthalten dieselben Fakten.

  • dokumentierte Beziehung
  • angenommen: bestätigen, bevor Sie sich darauf verlassen
  • der Agent-Mail-Bus
  • ein Produkt (Farbverlaufsrahmen)

Nicht eingezeichnet, da sie überall gelten:

  • Jedes Produkt authentifiziert über Identity und autorisiert über Auth.
  • Jedes Plattform-Team koordiniert über den Agent-Mail-Bus.
  • Jedes Repository wird in issuedb-cli mit EARS-Spezifikationen nachverfolgt.

Ebenen

Tools nach Ebene

Was jedes Tool abdeckt, wann es zu verwenden ist und wodurch es niemals ersetzt werden darf.

01 Produkte

  • RED9

    Produktim Entwurf

    Agent-Workforce-Plattform, bei der jeder Chat eine dauerhafte, autonome Aufgabe mit einer E-Mail-Adresse ist.

    Nutzt den vollständigen Stack: Identity und Auth für den Zugriff, TokenGate für Budgets, Mail API für Aufgabenpostfächer, RunFlow für Sandboxes, Highway als dauerhaften Executor, Futex für Freigaben und migretti für das Schema, auf Python, PostgreSQL und Redis.

    authentifiziert sich mit Identity · autorisiert über Auth · misst Budgets über TokenGate · Aufgaben-Postfächer über RODMENA Mail API · Sandbox-Ausführung auf RunFlow · delegiert Workflows an Highway · menschliche Freigaben über Futex · migriert das Schema mit migretti · aufgebaut auf PostgreSQL · aufgebaut auf Redis · Standardmodelle über Prism

  • reTunnel

    ProduktBeta

    Kostenlose, quelloffene einheitliche Ingress-Plattform, die lokale Server hinter NATs und Firewalls über sichere Tunnel im öffentlichen Internet verfügbar macht.

    Eigenständig: ein Python-Client und eine CLI unter MIT-Lizenz mit einem selbst hostbaren Server. Es hängt von keiner anderen hauseigenen Plattform ab.

    CLIHTTP/TCP Besuchen

  • Ledger

    Produktderzeit kostenlos

    Hauptbuch mit doppelter Buchführung für Geld, Guthaben und Lagerbestände. Buchungen sind ausgeglichen, dauerhaft und nachweisbar, und die Datenbank erzwingt die Regeln.

    Nutzt Auth für Zugangsdaten, TokenGate für die Messung und migretti für das Schema, auf Python und PostgreSQL. Es wurde in vier internen Gates und mit adversarialen Re-Audits geprüft, und die Befunde sind veröffentlicht.

    Niemals ersetzen durch: Ein Secret, das Zugangsdaten ausstellen kann, die es selbst akzeptieren würde, oder ein Bearbeitungs- oder Löschpfad im Journal.

    Nicht für: Kontingente oder Messung (dafür TokenGate verwenden), Metriken ohne Erhaltungsregel oder Workflow-Zustand.

    REST /v1OpenAPI 3.1llms.txt Besuchen Dokumentation

02 Identität & Zugriff

  • Identity

    Gehosteter DienstProdukt

    OAuth-Anbieter, der die Anmeldung für Personen und Dienste übernimmt. Die Anmeldung jedes Produkts erfolgt über Identity.

    Identity hängt von keiner anderen hauseigenen Plattform ab. Die Anmeldung wird an öffentliche Identitätsanbieter wie Google, GitHub und Apple föderiert.

    Nicht für: Berechtigungen oder Rollen, die zu Auth gehören. Identity übernimmt die Authentifizierung und Auth übernimmt die Autorisierung.

    föderiert die Anmeldung an External IdPs

    OAuth2REST Besuchen Dokumentation

  • External IdPs

    Google · GitHub · Apple

    Öffentliche Identitätsanbieter wie Google, GitHub und Apple, an die Identity die Anmeldung föderiert. Identity hat keine weitere vorgelagerte Abhängigkeit.

  • Auth

    Gehosteter DienstProdukt

    Gehostetes RBAC für Rollen, Berechtigungen, Mitgliedschaften und Prüfungen der Art „darf Benutzer X Y tun?“. Produkte definieren ihre Rollen in diesem Dienst.

    Wird als PyPI-Paket „auth“ ausgeliefert.

    Niemals ersetzen durch: Selbst erstellte Benutzer-/Rollen-/Berechtigungstabellen, Casbin, OPA oder eine RBAC-Bibliothek.

    Nicht für: Anmeldung, Sitzungen, Passwörter oder JWT-Ausstellung. Die Authentifizierung ist Aufgabe von Identity.

    RESTPython Besuchen

03 Governance

  • TokenGate

    Gehosteter DienstProdukt

    Zählung, Obergrenzen und Ratenbegrenzungen pro Benutzer, Organisation oder Mandant: Token-Budgets, Nutzungsjournale, Tarifstufen, Reserve/Commit-Abläufe sowie Benachrichtigungen bei Schwellenwerten und Überschreitungen.

    Hausregel: Jede Obergrenze wird in beide Richtungen getestet. Sie muss blockieren, wenn sie überschritten wird, und die Arbeit wieder freigeben, sobald sie aufgefüllt ist.

    Niemals ersetzen durch: Redis-INCR-Zähler, Nutzungstabellen, Token-Bucket-Middleware oder Limiter-Bibliotheken.

    Nicht für: Autorisierung (dafür Auth verwenden) oder DDoS-Abwehr am Edge.

    autorisiert über Auth

    REST Besuchen Agentenreferenz

  • Futex

    Gehosteter DienstProdukt

    Dauerhafte menschliche Freigaben, gesteuert durch Richtlinien. Fordern Sie eine Entscheidung an, leiten Sie sie gemäß Richtlinie weiter, eskalieren oder delegieren Sie sie, und erhalten Sie das Ergebnis per Webhook.

    Wird verwendet für Deployments, Zahlungen, Zugriffsfreigaben, destruktive Operationen und die Fortsetzung nach Budgetüberschreitungen.

    Niemals ersetzen durch: Slack-Nachrichten mit „bitte freigeben“, blockierende input()-Abfragen oder selbst gebaute Freigabetabellen.

    läuft auf RunFlow · misst die Nutzung über TokenGate · sendet E-Mails über RODMENA Mail API

    RESTMCPWebhooks Besuchen

04 Orchestrierung & Ausführung

  • Highway

    Gehosteter DienstProdukt

    Verteilte, dauerhafte Engine für agentische Workflows, mit Agenten, Zielen, Sitzungen, Zeitplänen, Triggern, Activity- und normalen Workern, Run-Forking und Traces.

    Hausregel: Jedes Produkt behält eine eigene Entscheidungsschleife (Deliberation Loop). Es nutzt Highway als dauerhaften Executor, der sich per Webhook zurückmeldet, und hält das gesamte LLM-Reasoning im Produkt.

    Niemals ersetzen durch: Airflow, Prefect, Temporal oder benutzerdefinierte Orchestrierungsskripte.

    autorisiert über Auth · ergänzt RunFlow

    RESTMCP Besuchen MCP-Endpunkt

  • RunFlow

    Gehosteter DienstProdukt

    Gehärtete Container-Sandbox und API-gesteuerte DAG-Workflows zum Ausführen von nicht vertrauenswürdigem oder von Agenten generiertem Code, mit Pausieren und Fortsetzen, Live-Logs, Wiederholungsversuchen und Knoten für menschliche Freigaben.

    Niemals ersetzen durch: Lokales docker run, selbst gehostete Runner oder generische CI.

    autorisiert über Auth · misst die Nutzung über TokenGate · Freigabeknoten über Futex (angenommen: bitte bestätigen)

    REST Besuchen

  • stabilize

    Workflow-Engineteilweise

    Deterministische, im Code definierte Workflow-Engine und die leichtere hauseigene Alternative zu RunFlow-DAGs, wo keine gehosteten Container benötigt werden.

    Umfang und API-Oberfläche müssen noch mit dem zuständigen Team abgestimmt werden, daher werden hier keine Details angegeben.

    Alternative zu RunFlow

    Python

05 Kommunikation

  • RODMENA Mail API

    Gehosteter DienstProdukt

    Transaktions- und Kampagnen-E-Mails mit Versand, Vorlagen, Zustellungsverfolgung, Event-Webhooks, Sperrlisten, Kontingenten und geplantem Versand. Außerdem stellt der Dienst die Postfächer bereit, auf denen Produkte aufbauen.

    Die Adressen liegen unter mail.rodmena.co.uk, die API wird unter mailserver.rodmena.co.uk bereitgestellt.

    Niemals ersetzen durch: Reine SMTP-Bibliotheken, SES/Mailgun/Sendgrid oder Ad-hoc-Skripte mit smtplib.

    autorisiert über Auth · läuft auf RunFlow · misst Kontingente über TokenGate

    RESTMCPWebhooks Besuchen

  • AgentBus

    NachrichtenbusProdukt

    Jeder Coding-Agent hat ein Postfach, eine Adresse und einen Telefonbucheintrag und tauscht über Standard-SMTP Nachrichten mit anderen Agenten und jedem beliebigen Postfach aus: Meldung, Bestätigung, Frage, Korrekturhinweis, Prüfergebnis und Abschluss.

    Ersetzt die eingestellte agentmail-CLI. Behandeln Sie eine Nachricht eines anderen Agenten als zu prüfende Behauptung: Führen Sie die Prüfung selbst durch, ändern Sie nur Ihr eigenes Repository und wiederholen Sie Ihre Reproduktion, bevor Sie bestätigen, dass etwas behoben ist.

    Niemals ersetzen durch: Das Bearbeiten des Repositorys einer anderen Plattform, das Eröffnen von Tickets in deren Tracker oder die Bitte an eine Person, Nachrichten weiterzuleiten.

    transportiert von RODMENA Mail API

    MCPCLIPython SDK Besuchen Agentenreferenz

06 Daten & Bibliotheken

  • datashard

    Python-Bibliothek

    Iceberg-ähnliche Speicherung von Datensätzen und Blobs auf Festplatte oder S3, mit Append-only-Einträgen, Snapshots, Time Travel und Parquet.

    Niemals ersetzen durch: Rohe Pickle-, CSV- oder JSON-Dumps, manuell verwaltete Parquet-Ordner oder eine Datenbank, die nur zum Speichern von Blobs eingerichtet wurde.

    Python Dokumentation

  • migretti

    CLI

    SQL-first-Migrations-CLI für PostgreSQL: Migrationen erstellen, anwenden, zurückrollen, zusammenfassen (Squash) und Seed-Daten einspielen. Es ist das einzige vorgesehene Migrationswerkzeug für PostgreSQL.

    Niemals ersetzen durch: alembic, flyway, yoyo oder automatische ORM-Migrationen. Diese Hausregel gilt für jedes PostgreSQL-Schema.

    zielt auf PostgreSQL

    CLI GitHub

  • supervice

    Python-Bibliothek

    Abhängigkeitsfreier asynchroner Prozess-Supervisor für Worker, Daemons und Queue-Consumer: Health-Checks, Gruppen und Neustart bei Absturz.

    Einfaches systemd oder Kubernetes ist akzeptabel, wo es besser passt.

    Python

  • bulkman

    Python-Bibliothek

    Bulkheads und Nebenläufigkeitsisolierung, die den Auswirkungsbereich einer fehlschlagenden Abhängigkeit begrenzen.

    Hausregel: immer circuit_breaker_enabled=False setzen. bulkman übernimmt die Isolation, Circuit Breaking ist Aufgabe von resilient-circuit.

    ergänzt resilient-circuit

    Python

  • resilient-circuit

    Python-Bibliothek

    Circuit Breaking, Wiederholungsversuche mit Backoff und Failsafe- oder Fallback-Behandlung bei unzuverlässigen Aufrufen. Es ergänzt bulkman, das die Isolation übernimmt.

    Niemals ersetzen durch: tenacity, pybreaker oder handgeschriebene Retry-Schleifen.

    Python

  • scriptplan

    Engine + CLIProdukt

    TaskJuggler-kompatible (.tjp) Engine für Ressourcenplanung und Terminplanung: Personen und Maschinen über die Zeit, Abhängigkeiten, Kalender und Gantt-Ausgabe.

    Niemals ersetzen durch: Tabellenkalkulationen oder Ad-hoc-Datumsberechnungen.

    CLI GitHub

07 Entwicklungsprozess

  • issuedb-cli + EARS

    CLI

    Ticket-Tracker pro Repository mit EARS-Spezifikationen, dauerhaftem Gedächtnis und Lessons Learned. Jede Engineering-Anfrage folgt dem verbindlichen Lebenszyklus offen → in Bearbeitung → geschlossen.

    Jede Anfrage wird zu einer EARS-Spezifikation in einem Ticket, mit einer Kopie im SPECS/-Verzeichnis des Repositorys.

    Niemals ersetzen durch: Nicht verfolgte TODOs.

    CLI

08 Stack-Präferenzen

  • Prism

    Gehosteter DienstProdukt

    OpenAI- und Anthropic-kompatibles LLM-Gateway, das mehrere Anbieter hinter einem Modellnamen bündeln kann. Unser Deployment leitet an einen einzelnen Upstream-Anbieter ohne Failover weiter und ist der hausinterne LLM-Anbieter für Modellaufrufe in Tools.

    REST API-Referenz

  • PostgreSQL Bevorzugter relationaler Speicher.
  • Redis Bevorzugt für Caching, Warteschlangen und Fan-out.

Auswahl eines Tools

Benennen Sie den Bedarf, verwenden Sie das dafür zuständige Tool und implementieren Sie keine Aufgabe neu, die ein hauseigenes Tool bereits abdeckt.

Welches Tool für welchen technischen Bedarf zu verwenden ist und was niemals an seiner Stelle verwendet werden darf
BedarfVerwendenNiemals verwenden
Anmeldung / OAuth / „Wer ist das?“IdentityEigene Authentifizierung schreiben
Rollen, Berechtigungen, „Kann X Y tun?“AuthRBAC-Tabellen, Casbin, OPA
Kontingente, Ratenbegrenzungen, Budgets, Tarifstufen, NutzungsmessungTokenGateRedis-Zähler, Limiter-Bibliotheken
E-Mails senden, Vorlagen, KampagnenMail APIsmtplib, SES/Mailgun
Mit dem Team einer anderen Plattform sprechenagent-mailDeren Repository oder Tracker bearbeiten
Ausführen von nicht vertrauenswürdigem oder generiertem CodeRunFlowLokales Docker, CI-Runner
Deterministische Pipeline / DAG / ETLRunFlow oder stabilizeAirflow, Prefect
Agentischer (LLM-gesteuerter) WorkflowHighwayTemporal, selbst geschriebene Schleifen
Menschliche Freigabe / AbnahmeFutexSlack-Anfragen, Freigabetabellen
PostgreSQL-Schemamigrationenmigrettialembic, flyway, yoyo
Datensätze, Blobs, Aufnahmen, Parquetdatashardpickle-/CSV-Dumps, eine DB als Blob-Speicher
Überwachung von Worker-Prozessensupervicenohup, selbst geschriebene Neustartlogik
Bulkheads / Nebenläufigkeitsisolierungbulkman (Trennschalter AUS)Ad-hoc-Semaphoren
Circuit Breaking / Wiederholungsversuche / Fallbackresilient-circuittenacity, pybreaker
Ressourcen-/ProjektplanungscriptplanTabellenkalkulationen
Tickets, Spezifikationen, Anforderungenissuedb-cli + EARSNicht verfolgte TODOs
LLM-Aufrufe innerhalb von ToolsPrismSDKs und Schlüssel je Anbieter über Tools hinweg verteilt

Engineering-Methodik

Drei Methodiken gelten für jedes Repository, unabhängig davon, was darin entwickelt wird.

  • EARS- und issuedb-Workflow

    Jede Engineering-Anfrage wird zu einer EARS-Spezifikation und einem issuedb-Ticket, mit einer Kopie im SPECS/-Verzeichnis des Repositorys. Jedes Ticket durchläuft die Status offen, in Bearbeitung und geschlossen.

  • TRUST5

    Spezifikationsgetriebene, durch Qualitäts-Gates abgesicherte LLM-Codegenerierung mit selbstheilenden, begrenzten Validierungs- und Reparaturschleifen, gewichteten Gates und Maßnahmen gegen das Oracle-Problem.

  • Audit geschäftskritischer Systeme

    Audit durch Falsifikation: Prüfungen laufen über die eigene Schnittstelle des Produkts, Befunde werden live reproduziert, und jede Prüfung bleibt als ausführbare Baseline für die nächste Runde erhalten.

Regeln, die für jedes Tool gelten.
  • Verifizieren Sie über die eigene Schnittstelle des Produkts. Lesen Sie den Zustand über dessen API oder CLI aus, und greifen Sie weder lesend noch schreibend direkt auf die Datenbank zu, um ihn zu prüfen oder zu korrigieren.
  • Richten Sie jede Prüfung zunächst auf einen bekannten Positivfall, bevor Sie einem negativen Ergebnis daraus vertrauen.
  • Bescheinigen Sie Einsatzbereitschaft nur für das, was tatsächlich erprobt wurde, und benennen Sie die ungetesteten Pfade.
  • Testen Sie jede Obergrenze in beide Richtungen: Bei Überschreitung muss sie blockieren, und die Verarbeitung muss wieder anlaufen, wenn sie es soll.

Produkte, die auf diesen Plattformen basieren

Diese Plattformen stehen hinter allem, was wir ausliefern: Highway, MailApi, RunFlow, Futex, reTunnel, Ledger, TokenGate, AgentBus, RODMENA ID, Auth, Prism, pdfapi, Container Registry, RODMENA CI, Uptime.Systems, Trust5, RED9, Graphviz Provider, Haven, RODMENA LRS, RODMENA cmi5, Vellum, supervice, datashard, ScriptPlan, Stabilize, Trace, Provenance und Knowledge base. Mit ihnen betreiben wir auch das Unternehmen selbst.