Ir al contenido

Ecosistema

Cómo encajan nuestras plataformas.
Cada aspectouna herramienta.

RODMENA construye sus productos a partir de pequeños servicios alojados, cada uno con un único propósito, y un conjunto de bibliotecas propias. Cada cometido corresponde a una herramienta, cada plataforma cuenta con su propio equipo y un bus de correo compartido los conecta.

productos, uno en diseño
13
plataformas alojadas
8
bibliotecas, motores y CLIs
8
bus de correo compartido
1

Principios de diseño

  • Una preocupación, una herramienta

    Authenticación es Identity, la autorización es Auth, la medición es TokenGate, el correo electrónico es Mail API, las aprobaciones son Futex, los contenedores son RunFlow y los flujos de trabajo agénticos son Highway. Los productos nunca reimplementan una función que ya posee una herramienta interna.

  • Los equipos se coordinan por correo

    Cada plataforma tiene su propio agente, contexto y repositorio. Los equipos se coordinan entre plataformas a través del bus agent-mail. Ningún equipo edita el repositorio de otro equipo ni abre tickets en su gestor.

  • Bases de datos distribuidas por países

    Cada servicio tiene su propia base de datos, y las bases de datos residen en hosts diferentes en distintos países. Las aplicaciones pueden volver a desplegarse y los datos no, por lo que ambos se mantienen separados. Todas las bases de datos se replican en una tercera región y se respaldan fuera de las instalaciones.

Where it runs

Hosts y regiones

La flota gestionada alberga 22 bases de datos de producción, cada una propiedad de un servicio, en 4 hosts de bases de datos en 3 países, y otras 4 se ejecutan en un host de aplicaciones. Ningún par de servicios comparte un esquema, y ninguna máquina individual alberga la plataforma.

bases de datos de producción, cada una propiedad de un único servicio
22
hosts de base de datos
4
países
3
punto de recuperación de minutos en la flota gestionada, como máximo
≤5
  • UKReino Unido

    Aplicaciones y dos hosts de base de datos

    Aloja el nivel de aplicación y las bases de datos del motor de flujos de trabajo, el servicio de aprobaciones, el bus de mensajes, el correo electrónico, el libro mayor y la plataforma de tareas.

  • FRFrancia

    Host de base de datos

    Contiene el plano de identidad y acceso, la autorización, la medición y el proveedor de identidad, mantenidos aparte de los servicios que dependen de él.

  • DEAlemania

    Conjunto de réplicas

    Contiene una copia actualizada continuamente de cada base de datos, fuera de las otras dos regiones. No tiene primario, por lo que ningún tráfico depende de ella hasta que se promueva.

  • Replicación continua

    Cada base de datos transmite cambios a nivel de bloque a un standby situado fuera de ambas regiones primarias. La replicación es asíncrona, por lo que una réplica no puede ralentizar ni bloquear el servicio que tiene delante.

  • Copias de seguridad externas

    Los archivos se envían de forma continua a un almacenamiento de objetos en una instalación separada, se cifran antes de salir del host y se pueden recuperar a cualquier punto dentro del periodo de retención. Las restauraciones se prueban de extremo a extremo.

  • Tres factores en cada conexión

    Ninguna base de datos acepta una conexión de red solo con una contraseña. Toda conexión necesita cifrado en tránsito, un certificado de cliente emitido por una autoridad privada y una contraseña. Cada servicio está limitado a su propia base de datos.

  • Réplicas y copias de seguridad

    Una afirmación errónea llega a todas las réplicas en cuestión de momentos. Las réplicas protegen contra la pérdida de hardware, y el archivo protege contra la pérdida de datos.

Verificado 2026-10-05. Lea la topología completa

Topología

Mapa de la plataforma

El mapa tiene ocho capas y un bus, y cada aspecto aparece una vez. Los productos se sitúan arriba y la pila abajo. Todo lo que un producto necesita está a un salto de distancia.

23 nodos · 27 relaciones documentadas · 1 asumido

01/PRODUCTOS02/IDENTITY Y ACCESO03/GOBERNANZA04/ORQUESTACIÓN Y EJECUCIÓN05/COMUNICACIÓN06/DATOS Y BIBLIOTECAS07/PROCESO DE DESARROLLO08/PREFERENCIAS DE STACKAGENT-MAIL BUSreport · ack · fix-notice · verify-result · closeRED9Producto · en diseñoreTunnelProducto · betaLedgerProducto · gratis hoyIdentityServicio alojadoExternal IdPsGoogle · GitHub · AppleAuthServicio alojadoTokenGateServicio alojadoFutexServicio alojadoHighwayServicio alojadoRunFlowServicio alojadostabilizeMotor de flujo de trabajo · parcialRODMENA Mail APIServicio alojadodatashardBiblioteca de PythonmigrettiCLIsuperviceBiblioteca de PythonbulkmanBiblioteca de Pythonresilient-circuitBiblioteca de PythonscriptplanMotor + CLIissuedb-cli + EARSCLIPostgreSQLExternoRedisExternoPrismServicio alojado

Desplace el mapa horizontalmente. Cada nodo también tiene una tarjeta debajo.

Explorar

Uso del mapa

Seleccione un nodo o el bus para resaltar sus relaciones y ver qué posee, a qué se conecta y con qué nunca debe sustituirse. Las tarjetas que aparecen a continuación contienen los mismos datos.

  • relación documentada
  • supuesto: confírmelo antes de basarse en él
  • el bus de correo de agentes
  • un producto (borde degradado)

No se representan, ya que se aplican en todas partes:

  • Todos los productos se autentican con Identity y se autorizan con Auth.
  • Todos los equipos de plataforma se coordinan a través del bus AgentBus.
  • Cada repositorio se registra en issuedb-cli, con especificaciones EARS.

Capas

Herramientas por capa

Qué posee cada herramienta, cuándo utilizarla y por qué nunca debe sustituirse.

01 Productos

  • RED9

    Productoen diseño

    Plataforma de plantilla de agentes en la que cada chat es una tarea autónoma y duradera con una dirección de correo electrónico.

    Se apoya en todo el stack: Identity y Auth para el acceso, TokenGate para los presupuestos, Mail API para los buzones de tareas, RunFlow para los sandboxes, Highway como ejecutor duradero, Futex para las aprobaciones y migretti para el esquema, sobre Python, PostgreSQL y Redis.

    se autentica con Identity · autoriza mediante Auth · mide los presupuestos mediante TokenGate · buzones de tareas mediante RODMENA Mail API · ejecución en entorno aislado en RunFlow · delega flujos de trabajo en Highway · aprobaciones humanas mediante Futex · migra el esquema con migretti · construido sobre PostgreSQL · construido sobre Redis · modelos predeterminados mediante Prism

  • reTunnel

    Productobeta

    Plataforma de entrada unificada, gratuita y de código abierto que expone servidores locales situados detrás de NAT y cortafuegos a la internet pública mediante túneles seguros.

    Standalone: un cliente Python y CLI con licencia MIT y un servidor autoalojable. No depende de ninguna otra plataforma de la casa.

    CLIHTTP/TCP Visitar

  • Ledger

    Productogratis hoy

    Libro de doble entrada para dinero, créditos y stock. Los asientos están equilibrados, son permanentes y demostrables, y la base de datos aplica las reglas.

    Utiliza Auth para las credenciales, TokenGate para la medición y migretti para el esquema, en Python y PostgreSQL. Se auditó a través de cuatro controles internos y reauditorías adversariales, y los hallazgos se publican.

    Nunca se sustituye por: Un secreto que puede emitir una credencial que aceptaría, o una ruta de edición o eliminación en el journal.

    No indicado para: Cuotas o medición (utilice TokenGate), métricas no conservadas o estado del flujo de trabajo.

    REST /v1OpenAPI 3.1llms.txt Visitar Documentación

02 Identity y Acceso

  • Identity

    Servicio alojadoproducto

    Proveedor de OAuth que gestiona el inicio de sesión de personas y servicios. El inicio de sesión de cada producto pasa por Identity.

    Identity no depende de ninguna otra plataforma de la casa. El inicio de sesión se federa con proveedores de identidad públicos como Google, GitHub y Apple.

    No indicado para: Permisos o roles, que pertenecen a Auth. Identity gestiona la autenticación y Auth gestiona la autorización.

    federa el inicio de sesión con External IdPs

    OAuth2REST Visitar Docs

  • External IdPs

    Google · GitHub · Apple

    Proveedores de identidad públicos, como Google, GitHub y Apple, con los que Identity federa el inicio de sesión. Identity no tiene otro origen ascendente.

  • Auth

    Servicio alojadoproducto

    RBAC alojado para roles, permisos, pertenencias y comprobaciones de «¿puede el usuario X hacer Y?». Los productos definen sus roles en este servicio.

    Se distribuye como el paquete de PyPI «auth».

    Nunca se sustituye por: Tablas de usuarios/roles/permisos creadas a mano, Casbin, OPA o una biblioteca RBAC.

    No indicado para: Inicio de sesión, sesiones, contraseñas o emisión de JWT. La autenticación corresponde a Identity.

    RESTPython Visitar

03 Gobernanza

  • TokenGate

    Servicio alojadoproducto

    Recuento, límites máximos y límites de velocidad por usuario, organización o tenant: presupuestos de tokens, libros de uso, niveles de plan, flujos de reserva/compromiso y alertas de umbral y exceso.

    Regla interna: cada límite se prueba en ambos sentidos. Debe bloquear cuando se supera y reanudarse cuando se repone.

    Nunca se sustituye por: Redis contadores INCR, tablas de uso, middleware de token-bucket o bibliotecas de limitación.

    No indicado para: Authorización (use Auth) o protección DDoS en el edge.

    autoriza mediante Auth

    REST Visitar Referencia del Agent

  • Futex

    Servicio alojadoproducto

    Aprobaciones humanas duraderas impulsadas por políticas. Solicite una decisión, enrútela según la política, escálela o deléguela, y reciba el veredicto mediante webhook.

    Se utiliza para despliegues, pagos, concesiones de acceso, operaciones destructivas y continuaciones por exceso de presupuesto.

    Nunca se sustituye por: Mensajes de Slack de «por favor, apruebe», prompts bloqueantes de input() o tablas de aprobación a medida.

    se ejecuta en RunFlow · mide el uso mediante TokenGate · envía correo mediante RODMENA Mail API

    RESTMCPWebhooks Visitar

04 Orquestación y ejecución

  • Highway

    Servicio alojadoproducto

    Motor distribuido y duradero para flujos de trabajo agénticos, con agentes, objetivos, sesiones, programaciones, desencadenantes, actividad y workers normales, bifurcación de ejecuciones y trazas.

    Regla interna: cada producto mantiene su propio bucle de deliberación. Utiliza Highway como ejecutor duradero que informa de vuelta mediante webhook, y mantiene todo el razonamiento del LLM dentro del producto.

    Nunca se sustituye por: Airflow, Prefect, Temporal o scripts de orquestación personalizados.

    autoriza mediante Auth · complementa RunFlow

    RESTMCP Visitar Endpoint de MCP

  • RunFlow

    Servicio alojadoproducto

    Entorno de pruebas de contenedor reforzado y flujos de trabajo DAG basados en API para ejecutar código no confiable o generado por agentes, con pausa y reanudación, registros en vivo, reintentos y nodos de aprobación humana.

    Nunca se sustituye por: Ejecución local de Docker, runners autoalojados o CI genérico.

    autoriza mediante Auth · mide el uso mediante TokenGate · nodos de aprobación mediante Futex (assumed: confirm)

    REST Visitar

  • stabilize

    Motor de flujo de trabajoparcial

    Motor de flujo de trabajo determinista definido en código, y la alternativa ligera propia a los DAG de RunFlow cuando no se necesitan contenedores alojados.

    El alcance y la superficie de la API aún deben confirmarse con el equipo responsable, por lo que aquí no se ofrecen detalles.

    alternativa a RunFlow

    Python

05 Comunicación

  • RODMENA Mail API

    Servicio alojadoproducto

    Correo electrónico transaccional y de campaña con envío, plantillas, seguimiento de entregas, webhooks de eventos, listas de supresión, cuotas y envíos programados. También aprovisiona los buzones sobre los que se construyen los productos.

    Las direcciones están en mail.rodmena.co.uk y la API se sirve en mailserver.rodmena.co.uk.

    Nunca se sustituye por: Bibliotecas SMTP sin procesar, SES/Mailgun/Sendgrid o scripts smtplib ad hoc.

    autoriza mediante Auth · se ejecuta en RunFlow · cuotas de medidores mediante TokenGate

    RESTMCPWebhooks Visitar

  • AgentBus

    Bus de mensajesproducto

    Cada agente de codificación tiene una bandeja de entrada, una dirección y una entrada en la guía telefónica, e intercambia mensajes con otros agentes y con cualquier buzón mediante SMTP estándar: informe, acuse de recibo, pregunta, aviso de corrección, resultado de verificación y cierre.

    Sustituye a la CLI agentmail retirada. Trate un mensaje de otro agente como una afirmación que debe verificarse: ejecute usted mismo la comprobación, modifique únicamente su propio repositorio y vuelva a ejecutar su reproducción antes de aceptar que algo se ha corregido.

    Nunca se sustituye por: Editar el repositorio de otra plataforma, abrir tickets en su gestor de incidencias o pedir a una persona que haga de intermediaria.

    transportado por RODMENA Mail API

    MCPCLIPython SDK Visitar Referencia del agente

06 Datos y bibliotecas

  • datashard

    Biblioteca de Python

    Conjunto de datos tipo Iceberg y almacenamiento de blobs en disco o S3, con registros de solo adición, snapshots, time travel y Parquet.

    Nunca se sustituye por: Volcados de pickle, CSV o JSON en bruto, carpetas Parquet gestionadas manualmente o una base de datos configurada únicamente para almacenar blobs.

    Python Docs

  • migretti

    CLI

    CLI de migración SQL-first PostgreSQL: crear, aplicar, revertir, squash y seed. Es la única herramienta de migración PostgreSQL autorizada.

    Nunca se sustituye por: alembic, flyway, yoyo o auto-migraciones de ORM. Esta regla interna se aplica a cada esquema de PostgreSQL.

    destinos PostgreSQL

    CLI GitHub

  • supervice

    Biblioteca de Python

    Supervisor de procesos asíncrono sin dependencias para workers, daemons y consumidores de colas: comprobaciones de estado, grupos y reinicio en caso de fallo.

    systemd o Kubernetes sin más son aceptables cuando encajan mejor.

    Python

  • bulkman

    Biblioteca de Python

    Bulkheads y aislamiento de concurrencia que limitan el radio de impacto de una dependencia que falla.

    Regla interna: establezca siempre circuit_breaker_enabled=False. bulkman gestiona el aislamiento, y la interrupción de circuito corresponde a resilient-circuit.

    complementa resilient-circuit

    Python

  • resilient-circuit

    Biblioteca de Python

    Corte de circuito, reintentos con retroceso exponencial y manejo a prueba de fallos o de reserva en torno a llamadas poco fiables. Se combina con bulkman, que gestiona el aislamiento.

    Nunca se sustituye por: tenacity, pybreaker o bucles de reintento creados a medida.

    Python

  • scriptplan

    Motor + CLIproducto

    Motor compatible con TaskJuggler (.tjp) para la planificación y programación de recursos: personas y máquinas a lo largo del tiempo, dependencias, calendarios y salida Gantt.

    Nunca se sustituye por: Hojas de cálculo o cálculos de fechas ad hoc.

    CLI GitHub

07 Proceso de desarrollo

  • issuedb-cli + EARS

    CLI

    Sistema de tickets por repositorio con especificaciones EARS, memoria duradera y lecciones. Toda solicitud de ingeniería sigue el ciclo de vida obligatorio abierto → en curso → cerrado.

    Cada solicitud se convierte en una especificación EARS en un ticket, con una copia en el directorio SPECS/ del repositorio.

    Nunca se sustituye por: TODOs sin seguimiento.

    CLI

08 Preferencias de stack

  • Prism

    Servicio alojadoproducto

    Pasarela LLM compatible con OpenAI y Anthropic que puede situar a varios proveedores bajo un mismo nombre de modelo. Nuestro despliegue enruta a un único proveedor upstream sin failover, y es el proveedor LLM interno para las llamadas a modelos en las herramientas.

    REST Referencia de API

  • PostgreSQL Almacén relacional preferido.
  • Redis Preferido para caché, colas y distribución.

Elección de una herramienta

Nombre la necesidad, utilice la herramienta que la cubre y no vuelva a implementar una cuestión que ya cubre una herramienta propia.

Qué herramienta utilizar para cada necesidad de ingeniería y qué no utilizar nunca en su lugar
NecesidadUtiliceNo utilizar nunca
Inicio de sesión / OAuth / «¿quién es este?»IdentityEscribir su propia autenticación
Roles, permisos, «¿puede X hacer Y?»AuthTablas RBAC, Casbin, OPA
Cuotas, límites de velocidad, presupuestos, niveles, mediciónTokenGateRedis contadores, bibliotecas de limitadores
Envío de correo electrónico, plantillas, campañasMail APIsmtplib, SES/Mailgun
Hablar con el equipo de otra plataformaagent-mailEditar su repositorio o su sistema de seguimiento
Ejecución de código no confiable o generadoRunFlowDocker local, ejecutores de CI
Pipeline determinista / DAG / ETLRunFlow o stabilizeAirflow, Prefect
Flujo de trabajo agéntico (impulsado por LLM)HighwayTemporal, bucles personalizados
Aprobación / validación humanaFutexSlack lo solicita, tablas de aprobación
PostgreSQL migraciones de esquemamigrettialembic, flyway, yoyo
Conjuntos de datos, blobs, grabaciones, Parquetdatashardvolcados de pickle/CSV, una base de datos como almacén de blobs
Supervisión de los procesos de trabajosupervicenohup, respawn escrito a mano
Bulkheads / aislamiento de concurrenciabulkman (breaker OFF)Semáforos ad hoc
Circuit breaking / reintentos / fallbackresilient-circuittenacity, pybreaker
Programación de recursos y proyectosscriptplanHojas de cálculo
Tickets, especificaciones, requisitosissuedb-cli + EARSTODOs no rastreados
Llamadas a LLM dentro de las herramientasPrismSDK y claves por proveedor repartidos entre distintas herramientas

Método de ingeniería

Tres metodologías se aplican a todos los repositorios, independientemente de lo que construyan.

  • Flujo de trabajo de EARS + issuedb

    Cada solicitud de ingeniería se convierte en una especificación EARS y un ticket de issuedb, con una copia en el directorio SPECS/ del repositorio. Cada ticket pasa de abierto a en curso a cerrado.

  • TRUST5

    Generación de código por LLM basada en especificaciones y con control de calidad, con autocorrección, bucles acotados de validación/reparación, puertas ponderadas y mitigación del problema del oráculo.

  • Auditoría crítica para la misión

    Auditoría por falsación: las comprobaciones se ejecutan a través de la propia interfaz del producto, los hallazgos se reproducen en directo y cada sonda se conserva como línea base ejecutable para la siguiente ronda.

Reglas que se aplican a todas las herramientas.
  • Verifique a través de la propia interfaz del producto. Lea el estado a través de su API o CLI, y no consulte ni escriba en la base de datos para comprobarlo o corregirlo.
  • Apunte cada sonda a un caso positivo conocido antes de fiarse de un resultado negativo de la misma.
  • Reclame la preparación únicamente para lo que se haya ejercitado, y nombre las rutas no probadas.
  • Pruebe todos los límites en ambos sentidos: debe bloquear cuando se supere y reanudar cuando corresponda.

Productos construidos sobre estas plataformas

Estas plataformas están detrás de todo lo que entregamos: Highway, MailApi, RunFlow, Futex, reTunnel, Ledger, RODMENA L10n, 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 y Knowledge base. También gestionan la empresa.