Vai al contenuto

Ecosistema

Come si integrano le nostre piattaforme.
Ogni esigenzaun unico strumento.

RODMENA costruisce i propri prodotti a partire da piccoli servizi ospitati, ciascuno con un unico scopo, e da una serie di librerie interne. Ogni funzione appartiene a un solo strumento, ogni piattaforma ha il proprio team e un bus di posta condiviso li collega.

prodotti, uno in progettazione
13
piattaforme ospitate
8
librerie, motori e CLI
8
bus di posta condiviso
1

Principi di progettazione

  • Una funzione, uno strumento

    L'Authenticazione è Identity, l'autorizzazione è Auth, la misurazione è TokenGate, l'email è Mail API, le approvazioni sono Futex, i container sono RunFlow e i flussi di lavoro agentici sono Highway. I prodotti non reimplementano mai una funzione di cui è già titolare uno strumento interno.

  • I team si coordinano via e-mail

    Ogni piattaforma ha il proprio agente, contesto e repository. I team coordinano tra piattaforme sull'agent-mail bus. Nessun team modifica il repository di un altro team né apre ticket nel suo tracker.

  • Database distribuiti tra paesi diversi

    Ogni servizio ha il proprio database e i database risiedono su host diversi in paesi diversi. Le applicazioni possono essere ridistribuite, i dati no, quindi i due aspetti sono tenuti separati. Ogni database viene replicato in una terza regione ed eseguito il backup fuori sede.

Where it runs

Host e regioni

La flotta gestita contiene 22 database di produzione, ciascuno di proprietà di un servizio, su 4 host di database in 3 paesi, e altri 4 vengono eseguiti su un host applicativo. Nessun servizio condivide uno schema con un altro e nessuna singola macchina contiene la piattaforma.

database di produzione, ciascuno di proprietà di un singolo servizio
22
host di database
4
paesi
3
punto di ripristino di minuti sulla flotta gestita, al massimo
≤5
  • UKRegno Unito

    Applicazioni e due host di database

    Ospita il livello applicativo e i database per il motore di workflow, il servizio di approvazioni, il bus di messaggi, l'email, il ledger e la piattaforma di attività.

  • FRFrancia

    Host del database

    Contiene il piano di identità e accesso, l'autorizzazione, la misurazione e il provider di identità, tenuti separati dai servizi che ne dipendono.

  • DEGermania

    Replica set

    Contiene una copia aggiornata continuamente di ogni database, al di fuori delle altre due regioni. Non ha un primario, quindi nessun traffico dipende da essa finché non viene promossa.

  • Replica continua

    Ogni database trasmette in streaming le modifiche a livello di blocco verso uno standby situato al di fuori di entrambe le regioni primarie. La replica è asincrona, quindi una replica non può rallentare o bloccare il servizio che la precede.

  • Backup off-site

    Gli archivi vengono inviati in modo continuo all'object storage in una struttura separata, crittografati prima di lasciare l'host e ripristinabili a qualsiasi punto entro il periodo di conservazione. I ripristini vengono testati end to end.

  • Tre fattori su ogni connessione

    Nessun database accetta una connessione di rete con la sola password. Ogni connessione richiede cifratura in transito, un certificato client emesso da un'autorità privata e una password. Ogni servizio è limitato al proprio database.

  • Repliche e backup

    Un'istruzione errata raggiunge ogni replica in pochi istanti. Le repliche proteggono dalla perdita dell'hardware, mentre l'archivio protegge dalla perdita dei dati.

Verificato 2026-10-05. Legga la topologia completa

Topologia

Mappa della piattaforma

La mappa ha otto livelli e un bus, e ogni esigenza compare una sola volta. I prodotti si trovano in alto e lo stack in basso. Tutto ciò di cui un prodotto ha bisogno è a un solo passaggio di distanza.

23 nodi · 27 relazioni documentate · 1 presunto

01/PRODOTTI02/IDENTITY E ACCESSO03/GOVERNANCE04/ORCHESTRAZIONE ED ESECUZIONE05/COMUNICAZIONE06/DATI E LIBRERIE07/PROCESSO DI SVILUPPO08/PREFERENZE SULLO STACKAGENT-MAIL BUSreport · ack · fix-notice · verify-result · closeRED9Prodotto · in progettazionereTunnelProdotto · betaLedgerProdotto · gratuito oggiIdentityServizio ospitatoExternal IdPsGoogle · GitHub · AppleAuthServizio ospitatoTokenGateServizio ospitatoFutexServizio ospitatoHighwayServizio ospitatoRunFlowServizio ospitatostabilizeMotore di flusso di lavoro · parzialeRODMENA Mail APIServizio ospitatodatashardLibreria PythonmigrettiCLIsuperviceLibreria PythonbulkmanLibreria Pythonresilient-circuitLibreria PythonscriptplanMotore + CLIissuedb-cli + EARSCLIPostgreSQLEsternoRedisEsternoPrismServizio ospitato

Scorra la mappa lateralmente. Ogni nodo ha anche una scheda di seguito.

Esplora

Utilizzo della mappa

Selezioni un nodo o il bus per evidenziarne le relazioni e vedere ciò che possiede, a cosa si connette e con cosa non deve mai essere sostituito. Le schede sottostanti riportano gli stessi fatti.

  • relazione documentata
  • presunto: da confermare prima di farvi affidamento
  • il bus di posta degli agenti
  • un prodotto (bordo sfumato)

Non rappresentati, in quanto si applicano ovunque:

  • Ogni prodotto si autentica con Identity e autorizza con Auth.
  • Ogni team di piattaforma si coordina tramite l'agent-mail bus.
  • Ogni repository è tracciato in issuedb-cli, con specifiche EARS.

Livelli

Strumenti per livello

Ciò che ogni strumento possiede, quando utilizzarlo e con cosa non deve mai essere sostituito.

01 Prodotti

  • RED9

    Prodottoin progettazione

    Piattaforma di forza lavoro di agenti in cui ogni chat è un'attività durevole e autonoma con un indirizzo e-mail.

    Si basa sull'intero stack: Identity e Auth per l'accesso, TokenGate per i budget, Mail API per le caselle di posta delle attività, RunFlow per le sandbox, Highway come esecutore durevole, Futex per le approvazioni e migretti per lo schema, su Python, PostgreSQL e Redis.

    si autentica con Identity · autorizza tramite Auth · misura i budget tramite TokenGate · caselle di posta delle attività tramite RODMENA Mail API · esecuzione in sandbox su RunFlow · delega i flussi di lavoro a Highway · approvazioni umane tramite Futex · migra lo schema con migretti · basato su PostgreSQL · basato su Redis · modelli predefiniti tramite Prism

  • reTunnel

    Prodottobeta

    Piattaforma di ingresso unificata gratuita e open source che espone server locali dietro NAT e firewall a Internet pubblico tramite tunnel sicuri.

    Standalone: un client Python e una CLI con licenza MIT, con un server self-hostable. Non dipende da nessun'altra piattaforma interna.

    CLIHTTP/TCP Visita

  • Ledger

    Prodottogratuito oggi

    Libro mastro a partita doppia per denaro, crediti e scorte. Le scritture sono bilanciate, permanenti e dimostrabili, e il database applica le regole.

    Utilizza Auth per le credenziali, TokenGate per la misurazione e migretti per lo schema, su Python e PostgreSQL. È stato sottoposto a verifica attraverso quattro gate interni e ri-verifiche adversarial, e i risultati sono pubblicati.

    Mai sostituito con: Un segreto in grado di generare una credenziale che accetterebbe, oppure un percorso di modifica o cancellazione sul journal.

    Non per: Quote o misurazione (utilizzare TokenGate), metriche non conservate o stato del flusso di lavoro.

    REST /v1OpenAPI 3.1llms.txt Visita Documentazione

02 Identity e Accesso

  • Identity

    Servizio ospitatoprodotto

    Provider OAuth che gestisce l'accesso per persone e servizi. L'accesso di ogni prodotto passa attraverso Identity.

    Identity non dipende da nessun'altra piattaforma house. L'accesso si federa con provider di identità pubblici come Google, GitHub e Apple.

    Non per: Permessi o ruoli, che appartengono a Auth. Identity gestisce l'autenticazione e Auth gestisce l'autorizzazione.

    federà l'accesso a External IdPs

    OAuth2REST Visita Documentazione

  • External IdPs

    Google · GitHub · Apple

    Provider di identità pubblici, come Google, GitHub e Apple, ai quali Identity federà l'accesso. Identity non ha altri upstream.

  • Auth

    Servizio ospitatoprodotto

    RBAC ospitato per ruoli, permessi, appartenenze e controlli “l'utente X può fare Y”. I prodotti definiscono i propri ruoli in questo servizio.

    Distribuito come pacchetto PyPI "auth".

    Mai sostituito con: Tabelle utenti/ruoli/permessi sviluppate a mano, Casbin, OPA o una libreria RBAC.

    Non per: Login, sessioni, password o emissione di JWT. L'autenticazione appartiene a Identity.

    RESTPython Visita

03 Governance

  • TokenGate

    Servizio ospitatoprodotto

    Conteggio, limiti massimi e limiti di frequenza per utente, organizzazione o tenant: budget di token, registri di utilizzo, livelli di piano, flussi di riserva/impegno e avvisi di soglia e superamento.

    Regola interna: ogni limite viene testato in entrambe le direzioni. Deve bloccare quando viene superato e riprendere quando viene ripristinato.

    Mai sostituito con: Contatori INCR di Redis, tabelle di utilizzo, middleware token-bucket o librerie di limitazione.

    Non per: Authorizzazione (utilizzare Auth) o protezione DDoS all'edge.

    autorizza tramite Auth

    REST Visita Riferimento agente

  • Futex

    Servizio ospitatoprodotto

    Approvazioni umane durevoli guidate da policy. Richiedere una decisione, instradarla secondo la policy, escalarla o delegarla e ricevere il verdetto tramite webhook.

    Utilizzato per distribuzioni, pagamenti, concessioni di accesso, operazioni distruttive e continuazioni per superamento del budget.

    Mai sostituito con: Messaggi Slack “please approve”, prompt input() bloccanti o tabelle di approvazione personalizzate.

    esegue su RunFlow · misura l'utilizzo tramite TokenGate · invia posta tramite RODMENA Mail API

    RESTMCPWebhooks Visita

04 Orchestrazione ed esecuzione

  • Highway

    Servizio ospitatoprodotto

    Motore distribuito e durevole per flussi di lavoro agentici, con agenti, obiettivi, sessioni, pianificazioni, trigger, attività e worker normali, fork delle esecuzioni e trace.

    Regola house: ogni prodotto mantiene un proprio ciclo di deliberazione. Usa Highway come executor durevole che risponde tramite webhook, e mantiene tutto il ragionamento LLM all'interno del prodotto.

    Mai sostituito con: Airflow, Prefect, Temporal o script di orchestrazione personalizzati.

    autorizza tramite Auth · integra RunFlow

    RESTMCP Visita Endpoint MCP

  • RunFlow

    Servizio ospitatoprodotto

    Sandbox containerizzata e workflow DAG guidati da API per eseguire codice non attendibile o generato da agenti, con pausa e ripresa, log in tempo reale, retry e nodi di approvazione umana.

    Mai sostituito con: Esecuzione Docker locale, runner self-hosted o CI generica.

    autorizza tramite Auth · misura l'utilizzo tramite TokenGate · nodi di approvazione tramite Futex (assumed: confirm)

    REST Visita

  • stabilize

    Motore di flusso di lavoroparziale

    Motore di workflow deterministico definito nel codice, e l'alternativa interna più leggera ai DAG di RunFlow dove i container ospitati non sono necessari.

    Ambito e superficie API devono ancora essere confermati con il team proprietario, pertanto qui non vengono forniti dettagli.

    alternativa a RunFlow

    Python

05 Comunicazione

  • RODMENA Mail API

    Servizio ospitatoprodotto

    Email transazionale e per campagne con invio, modelli, monitoraggio della consegna, webhook degli eventi, liste di soppressione, quote e invii programmati. Fornisce inoltre le caselle di posta su cui si basano i prodotti.

    Gli indirizzi sono su mail.rodmena.co.uk e l'API è servita su mailserver.rodmena.co.uk.

    Mai sostituito con: Librerie SMTP grezze, SES/Mailgun/Sendgrid o script smtplib ad hoc.

    autorizza tramite Auth · esegue su RunFlow · misura le quote tramite TokenGate

    RESTMCPWebhooks Visita

  • AgentBus

    Message busprodotto

    Ogni agente di codifica dispone di una casella di posta, un indirizzo e una voce in rubrica, e scambia messaggi con altri agenti e con qualsiasi casella di posta tramite SMTP standard: report, ack, question, fix-notice, verify-result e close.

    Sostituisce la CLI agentmail ritirata. Tratti un messaggio proveniente da un altro agente come un'asserzione da verificare: esegua la verifica personalmente, modifichi solo il proprio repository e riesegua la propria riproduzione prima di concordare che qualcosa sia stato risolto.

    Mai sostituito con: Modificare il repository di un'altra piattaforma, aprire ticket nel suo tracker o chiedere a una persona di fare da tramite.

    trasportato da RODMENA Mail API

    MCPCLIPython SDK Visita Riferimento agente

06 Dati e librerie

  • datashard

    Libreria Python

    Archiviazione di dataset e blob simile a Iceberg su disco o S3, con record append-only, snapshot, time travel e Parquet.

    Mai sostituito con: Dump grezzi in pickle, CSV o JSON, cartelle Parquet gestite manualmente o un database creato solo per contenere blob.

    Python Documentazione

  • migretti

    CLI

    CLI di migrazione PostgreSQL SQL-first: crea, applica, esegue il rollback, compatta e inizializza. È l'unico strumento di migrazione PostgreSQL autorizzato.

    Mai sostituito con: alembic, flyway, yoyo o auto-migrazioni ORM. Questa regola house si applica a ogni schema PostgreSQL.

    destinazioni PostgreSQL

    CLI GitHub

  • supervice

    Libreria Python

    Supervisore di processi asincrono a dipendenze zero per worker, daemon e consumatori di code: controlli di integrità, gruppi e riavvio in caso di crash.

    systemd o Kubernetes semplici sono accettabili dove si adattano meglio.

    Python

  • bulkman

    Libreria Python

    Bulkhead e isolamento della concorrenza che limitano il raggio d'azione di una dipendenza in errore.

    Regola house: impostare sempre circuit_breaker_enabled=False. bulkman gestisce l'isolamento, e il circuit breaking appartiene a resilient-circuit.

    integra resilient-circuit

    Python

  • resilient-circuit

    Libreria Python

    Circuit breaking, retry con backoff e gestione failsafe o di fallback attorno alle chiamate inaffidabili. Si abbina a bulkman, che gestisce l'isolamento.

    Mai sostituito con: tenacity, pybreaker o cicli di retry scritti a mano.

    Python

  • scriptplan

    Motore + CLIprodotto

    Motore compatibile con TaskJuggler (.tjp) per la pianificazione delle risorse e la schedulazione: persone e macchine nel tempo, dipendenze, calendari e output Gantt.

    Mai sostituito con: Fogli di calcolo o calcoli di date ad hoc.

    CLI GitHub

07 Processo di sviluppo

  • issuedb-cli + EARS

    CLI

    Ticket tracker per repository con specifiche EARS, memoria durevole e lezioni apprese. Ogni richiesta di engineering segue il ciclo di vita obbligatorio open → in-progress → closed.

    Ogni richiesta diventa una specifica EARS in un ticket, con una copia nella directory SPECS/ del repository.

    Mai sostituito con: TODO non tracciati.

    CLI

08 Preferenze dello stack

  • Prism

    Servizio ospitatoprodotto

    Gateway LLM compatibile con OpenAI e Anthropic che può porre più fornitori dietro un unico nome di modello. La nostra distribuzione instrada verso un singolo provider upstream senza failover ed è il provider LLM di riferimento per le chiamate ai modelli negli strumenti.

    REST Riferimento API

  • PostgreSQL Archivio relazionale preferito.
  • Redis Preferito per caching, code e fan-out.

Scegliere uno strumento

Individui il bisogno, utilizzi lo strumento che lo possiede e non reimplementi una funzione già coperta da uno strumento interno.

Quale strumento utilizzare per ogni esigenza di ingegneria e cosa non usare mai al suo posto
EsigenzaUtilizziNon utilizzare mai
Login / OAuth / “chi è?”IdentityScrivere la propria autenticazione
Ruoli, autorizzazioni, “X può fare Y?”AuthTabelle RBAC, Casbin, OPA
Quote, limiti di frequenza, budget, livelli, misurazioneTokenGateContatori Redis, librerie di limitazione
Invio di email, template, campagneMail APIsmtplib, SES/Mailgun
Comunicare con il team di un'altra piattaformaagent-mailModifica del proprio repository o tracker
Esecuzione di codice non attendibile o generatoRunFlowDocker locale, runner CI
Pipeline deterministica / DAG / ETLRunFlow o stabilizeAirflow, Prefect
Flusso di lavoro agentico (guidato da LLM)HighwayTemporal, cicli personalizzati
Approvazione umana / sign-offFutexRichieste su Slack, tabelle di approvazione
Migrazioni dello schema PostgreSQLmigrettialembic, flyway, yoyo
Dataset, blob, registrazioni, Parquetdatasharddump pickle/CSV, un DB come blob store
Supervisione dei processi workersupervicenohup, respawn scritto a mano
Bulkhead / isolamento della concorrenzabulkman (breaker OFF)Semafori ad hoc
Circuit breaking / retry / fallbackresilient-circuittenacity, pybreaker
Pianificazione di risorse / progettiscriptplanFogli di calcolo
Ticket, specifiche, requisitiissuedb-cli + EARSTODO non tracciati
chiamate LLM all'interno degli strumentiPrismSDK e chiavi specifici per fornitore distribuiti tra gli strumenti

Metodo di ingegneria

Tre metodologie si applicano a ogni repository, qualunque cosa costruisca.

  • Flusso di lavoro EARS + issuedb

    Ogni richiesta di engineering diventa una specifica EARS e un ticket issuedb, con una copia nella directory SPECS/ del repository. Ogni ticket passa da aperto a in corso a chiuso.

  • TRUST5

    Generazione di codice LLM guidata da specifiche e con controllo di qualità, con auto-riparazione, cicli di validazione/riparazione limitati, gate ponderati e mitigazione del problema dell'Oracolo.

  • Audit mission-critical

    Audit per falsificazione: i controlli vengono eseguiti tramite l'interfaccia del prodotto stesso, i risultati sono riprodotti dal vivo e ogni prova è conservata come baseline eseguibile per il ciclo successivo.

Regole che si applicano a ogni strumento.
  • Verifichi tramite l'interfaccia del prodotto stesso. Legga lo stato tramite la sua API o CLI e non interroghi o scriva nel database per verificarlo o correggerlo.
  • Prima di fidarsi di un risultato negativo di una prova, verifichi che ogni prova punti a un caso positivo noto.
  • Dichiarare la readiness solo per ciò che è stato esercitato e indicare i percorsi non testati.
  • Verifichi ogni limite in entrambe le direzioni: deve bloccare quando viene superato e riprendere quando deve.

Prodotti basati su queste piattaforme

Queste piattaforme sono alla base di tutto ciò che forniamo: 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 e Knowledge base. Gestiscono anche l'azienda.