+250 skills, dinamita para tu productividad 🧨Explorar →

SantanderAI: análisis del repo open source de IA del banco español

Si Botín levantara la cabeza y se encontrara al mayor banco de España publicando bucles en Bash y guardrails de LLMs bajo licencia Apache-2.0 en GitHub, igual pedía que le explicaran dos veces qué demonios es un “agente autónomo”.

Pues eso es justo lo que ha pasado.

El Santander AI Lab ha abierto una organización pública en GitHub, SantanderAI, y ha soltado de golpe una tanda de proyectos de inteligencia artificial. No un PDF de buenas intenciones. Código. Repos. Issues. Pull requests. Con su Contributor License Agreement y todo.

Y lo interesante no es el titular (“banco grande hace open source”). Lo interesante es qué han abierto. Porque no son modelos finales ni productos de negocio: son las piezas que rodean a la IA cuando la metes en un entorno donde un error te lo audita un regulador.

Esto es lo que vas a encontrar en este análisis:

  • El repo que más te va a interesar como developer: ralph, un bucle agéntico con un truco de rotación de agentes que no había visto en otras versiones del patrón.
  • La capa de control que un banco necesita: guardrails, gobernanza mecánica y datasets “estresados”.
  • El generador de grafos de fraude que escala a más de 100 millones de cuentas.
  • El proceso de gobierno open source (OSPO) que hace creíble todo lo demás.
  • Una lectura honesta: qué brilla y qué todavía es humo de lanzamiento.

Qué ha lanzado Santander en GitHub

La organización aparece verificada por GitHub, con los dominios de santander.com y gruposantander.com, y se describe sin rodeos: proyectos de IA open source centrados en Responsible AI, MLOps, graph machine learning y evaluación de LLMs para servicios financieros, todo bajo Apache-2.0 (Santander AI Open Source, GitHub).

La propia web del banco lo enmarca como una apuesta “progresiva, responsable y colaborativa”: un espacio desde el que irán compartiendo proyectos, herramientas e iniciativas de IA del Grupo, con más repositorios por llegar (Banco Santander, “Datos e Inteligencia Artificial”). El anuncio lo firma Juantomás García Molina, senior AI researcher en el Santander AI Lab, y lo presenta como la primera iniciativa open source de proyectos de IA del banco (Administración de Sistemas, “Santander abre en GitHub sus primeros proyectos open source de IA”).

Hay un dato que conviene fijar desde el principio, porque es el que sostiene que un banco pueda hacer esto sin que le tiemble el pulso:

🔑 Todos los proyectos usan datos sintéticos o anonimizados. No se publica información real de clientes. Esa frase, repetida en los repos, es la que separa “abrir código” de “abrir un problema regulatorio”.

Ojo a un pequeño baile de números, porque lo verás en redes. Los posts sociales hablan de 11 repositorios iniciales; el listado oficial muestra 12 proyectos destacados y, contando auxiliares como .github y el CLA, hay alguno más. No es contradicción: huele a lanzamiento vivo, con repos que se van sumando y andamiaje de gobernanza alrededor.

Por qué esto no es “otro chatbot con logo rojo”

Aquí está la parte que de verdad merece tu atención.

La mayoría de empresas grandes hacen open source para parecer que tienen alma: sueltan un wrapper genérico, le ponen un README bonito y a correr. Santander ha hecho otra cosa. No ha abierto el modelo que toma decisiones. Ha abierto el sistema que rodea a ese modelo: lo que decide qué puede hacer, cómo se verifica y cómo se audita.

Si llevas un tiempo leyendo Web Reactiva, esto te va a sonar muchísimo. Es exactamente el territorio del harness engineering (el entorno que envuelve al modelo y le da permisos, herramientas y bucles de verificación) y del loop engineering (el sistema que encuentra el trabajo, lo reparte, lo comprueba y decide cuándo parar). Lo que el Santander AI Lab ha publicado son piezas concretas de esas dos disciplinas.

Y el problema de fondo que atacan varios de estos repos también te suena: el context rot, esa degradación de las respuestas del modelo según se llena la ventana de contexto, que desmenucé a fondo en la guía de GSD. La solución que aplican aquí es la misma que ya hemos visto en frameworks de la comunidad: no depender de una sesión eterna, sino resetear el contexto y persistir el conocimiento fuera del chat. Es la misma obsesión por la memoria que vimos en Hermes Agent, solo que aquí servida con un cinturón de seguridad bancario.

💡 Tradúcelo a tu día a día: Santander no ha publicado “una IA”. Ha publicado fontanería. Y la fontanería es justo lo que falta cuando intentas pasar de la demo bonita al sistema que aguanta en producción.

Vamos repo a repo, empezando por el que te vas a querer instalar esta misma tarde.

ralph: el bucle Ralph Wiggum, ahora con sello bancario

ralph es, con diferencia, el repo más goloso para quien programa con agentes.

La idea es de una simpleza casi insultante: un loop que ejecuta una CLI de IA una y otra vez, abriendo una sesión nueva en cada iteración y pasándole el mismo prompt. El nombre viene de la técnica “Ralph Wiggum”: lanzar el mismo prompt contra un agente limpio, una vuelta tras otra, dejando que el trabajo se acumule en el repositorio entre ejecuciones (SantanderAI/ralph, GitHub).

¿Te suena? Es primo hermano del patrón que comparé con el comando /goal: /goal mantiene el contexto vivo dentro de la sesión, mientras que el ralph-loop lo resetea cada vuelta y obliga a que la continuidad viva en otra parte.

¿Y dónde vive esa continuidad? En el workspace. Como cada iteración arranca de cero, todo lo que el agente necesita recordar tiene que estar en los ficheros: el código que edita, un plan, notas, logs. El modelo olvida; el disco recuerda.

La implementación es deliberadamente humilde: un script de Bash sin dependencias, ralph-loop.sh, que envuelve las CLIs que ya tienes instaladas. Soporta Codex, Claude Code, Gemini CLI y Devin CLI. En cada vuelta hace algo así:

# Comprueba si existe una señal de parada y, si la hay, sale limpio
if [ -f "stop.md" ]; then
  echo "Señal de parada encontrada. Terminando."
  exit 0
fi

# Recarga la configuración (permite ajustes en caliente)
source .ralph/.env

# Lanza la CLI como sesión nueva con el prompt por stdin
# La continuidad NO vive en la conversación, vive en el workspace
cat prompt.md | $RALPH_TOOL

# Escribe un log con marca temporal y rota los antiguos
log_iteration ".ralph/logs/"

Hasta aquí, un ralph-loop más de los muchos que circulan. Pero el de Santander tiene un detalle que me hizo levantar la ceja.

El truco de la rotación por agotamiento de tokens

Cuando una iteración termina con error, ralph no se limita a reintentar. Lanza al siguiente agente de la rotación como un “detector” barato y de baja capacidad, que lee la cola del log de la iteración fallida y responde una única línea estructurada: TOKENS_EXHAUSTED=true o TOKENS_EXHAUSTED=false.

Si la respuesta es true, reescribe la herramienta activa en .ralph/.env para que la próxima vuelta corra con ese otro agente. Y como cada agotamiento avanza un paso, los cortes repetidos recorren el ciclo completo: codex agotado → claude; si claude se agota → gemini; y así, dando la vuelta hasta codex otra vez (SantanderAI/ralph, GitHub).

Es decir: si te quedas sin cuota en un proveedor a mitad de una tarea larga, el bucle no se muere rezando a San Token. Cambia de caballo y sigue.

🛡️ Antes de soltar un bucle como este sin supervisión, ten claro lo de siempre: permisos acotados, logs, rollback y un humano que responda. Un loop autónomo que se equivoca rápido se equivoca muchas veces. El propio patrón lo asume, por eso existe stop.md.

Un matiz que agradezco: Devin va por libre. No tiene perilla de “esfuerzo de razonamiento”, así que el nivel de capacidad solo elige modelo, y lee el prompt desde --prompt-file en lugar de por stdin. Sus modelos por defecto apuntan a los Claude que Devin expone (haiku, sonnet y opus). Detalles que solo aparecen cuando alguien ha usado esto de verdad.

ralph-vault-skill: un mapa del proyecto que el agente carga por partes

El compañero natural de ralph es ralph-vault-skill. Resuelve la otra mitad del problema: si el agente arranca limpio cada vez, necesita un mapa del proyecto que pueda cargar por partes, sin tragarse el repo entero y reventar la ventana de contexto.

La skill genera un “vault” de conocimiento por niveles, estilo deepwiki, para uno o varios repositorios. Tiene estructura de índices, repos, componentes, infraestructura, tecnologías y relaciones, además de prompts fijos para sincronizar la documentación.

La diferencia con leerse el código a pelo es la misma que ya vimos con Context7 en OpenCode: en vez de que el agente adivine, le das documentación estructurada y específica que puede consultar bajo demanda. Aquí, en vez de venir de una librería externa, el mapa es de tu propio proyecto.

Persistir el conocimiento fuera del chat y domar la ventana de contexto es de lo que más cambia el día a día programando con agentes. Cada domingo lo compartimos con +6.700 developers: experiencias reales de IA en desarrollo, gratis desde 2018.

Quiero esa dinamita 🧨

La capa de control: guardrails, gobernanza y datasets estresados

Si ralph es la ejecución, este bloque es el freno. Y para un banco, el freno importa más que el acelerador.

Son tres repos que trabajan juntos:

  1. autoguardrails: un scaffold de investigación de alineamiento inspirado en el “autoresearch” de Karpathy. La diferencia es que, en lugar de buscar sobre train.py, busca sobre un único policy.md. La métrica principal es el attack success rate (ASR, cuanto más bajo mejor), con un suelo de respuestas benignas para que el sistema no pueda “ganar” negándose a todo (SantanderAI/autoguardrails, GitHub).
  2. mech-gov-framework: gobernanza mecánica para decisiones de LLM en contextos de alto riesgo. Propone regímenes de gobernanza (R1/R2/R3), hard gates, congelado de candidatos, checks de calidad argumental, una “puerta de ambigüedad” y entropía por commit-reveal. Es model-agnostic.
  3. sota-stressed-datasets: benchmarks abiertos republicados en forma “estresada” para evaluar la robustez de modelos de ML y LLMs. No solo comparten herramientas, también comparten cómo las ponen a prueba.

¿Por qué esta combinación es más valiosa que abrir otro wrapper de API? Porque cambia la pregunta. Pasamos de “el modelo parece listo” a “el sistema aguanta restricciones medibles”. Para lending, fraude, KYC o cualquier decisión con riesgo, esa diferencia lo es todo.

Lo resumo en una tabla para que se vea de un vistazo qué hace cada pieza de control:

Repo Qué resuelve Pieza del circuito
autoguardrails Endurecer políticas frente a ataques sin volverse inútil Filtro de entrada/salida
mech-gov-framework Restringir y auditar decisiones de alto riesgo Gobierno de la decisión
sota-stressed-datasets Probar robustez en condiciones adversas Evaluación

⚠️ Cuidado con leer esto como “una solución de seguridad lista para producción”. Es investigación abierta y andamiaje. Te da el patrón y la métrica, no un servicio gestionado que puedas enchufar sin pensar.

gen-fraud-graph: grafos sintéticos de fraude a escala

Este es el repo que más titulares fuera del mundo developer se ha llevado, y con motivo.

gen-fraud-graph genera grafos sintéticos para entrenar y evaluar modelos de detección de fraude, AML y GNNs. La descripción oficial dice que escala a más de 100 millones de cuentas (SantanderAI, GitHub), y el ejemplo de CLI del README muestra usos desde pruebas pequeñas hasta grafos de unos 10 millones de cuentas y 90 millones de transacciones.

¿Por qué grafos y no tablas de transacciones sueltas? Porque buena parte del fraude no se ve mirando operaciones aisladas, sino relaciones: comunidades, intermediarios, cuentas puente, patrones que solo emergen cuando conectas los puntos. Y aquí está el problema práctico que resuelve: los bancos necesitan escenarios de fraude realistas para probar sus sistemas, pero no pueden compartir datos de clientes. Un generador sintético rompe ese nudo.

Interesa a más gente de la que parece: equipos antifraude, startups de RegTech, universidades y cualquiera que quiera probar modelos de grafos sin tocar datos bancarios reales.

El resto del cofre: clientes neutrales y modelos interpretables

El lanzamiento trae varias piezas más pequeñas pero útiles, que merecen al menos una mención porque encajan como engranajes:

  • llm_bridge: una librería cliente de LLMs minúscula y vendor-neutral. Una sola interfaz (LLMClient) con adaptadores intercambiables para OpenAI, AWS Bedrock y Google Gemini, o el backend que quieras traerte. Para no casar tu arquitectura de decisión con un único proveedor.
  • linear-adapter-trainer: entrena adaptadores lineales de embeddings con triplet loss para alinear los embeddings de recuperación con tus consultas. Es decir, RAG que entiende mejor tu dominio.
  • auto-bayesian: entrenamiento de redes bayesianas interpretables y guiado por configuración, sobre datos tabulares relacionales. Cuando necesitas explicar la decisión, no solo acertarla.
  • genetic-algorithm: un motor de algoritmo genético en Python sin dependencias, con criterios de fitness intercambiables. Es el núcleo de búsqueda reutilizable para un autoresearcher de IA.
  • mutatis-mutandis y causal-perception-implementation: código de investigación sobre fairness y causalidad, con comparadores contrafactuales y modelos causales estructurales aplicados a decisiones de crédito justas.

Si te fijas, hay un hilo conductor: casi todo apunta a decidir con la IA sin perder explicabilidad ni control. Que es, sospecho, lo que mantiene despierto por las noches a cualquiera que despliegue modelos en banca.

Cómo lo gobiernan: el proceso OSPO de dos vías

Aquí es donde Santander se separa del típico “hemos subido unos repos y ya veremos”.

Han montado una Open Source Programme Office (OSPO) con un proceso de revisión en dos vías para cada proyecto candidato a publicarse (Santander AI Open Source, GitHub):

  • Fast Track: forks, herramientas genéricas, tutoriales, datasets y SDKs sin lógica de negocio. Lo revisa el responsable OSPO con escaneos automáticos. SLA de menos de 4 horas.
  • Full Track: modelos de IA, frameworks con propiedad intelectual y código que haya tocado datos internos. Lo revisa un FOSS Review Board formado por OSPO, Legal, CISO y arquitectura. SLA de 2 a 4 semanas.

Que en el tablero que aprueba una publicación se sienten Legal y el CISO te dice lo en serio que se lo toman. Y, sobre todo, indica que esto no es una publicación aislada: es un marco reutilizable para futuras tandas de repos.

Completan el cuadro los elementos habituales de un proyecto open source maduro: CONTRIBUTING.md, código de conducta, política de seguridad con divulgación responsable y un CLA gestionado con CLA Assistant Lite. El contributor conserva el copyright y su aportación sigue bajo Apache 2.0. Para reportar vulnerabilidades, hay un correo dedicado y advisories de GitHub en lugar de issues públicas.

💡 Si trabajas en una empresa que quiere abrir código y siempre choca con Legal, este repositorio es una mina. Te están enseñando, gratis, cómo se monta el gobierno que hace posible decir “sí” sin que salte la alarma.

Que un banco enorme abra su capa de control de IA es justo el tipo de movimiento que seguimos en directo. En la newsletter ponemos orden cada domingo entre lo que cambia en la adopción de IA, con lo que aportan los +6.700 que ya están dentro.

Quiero esa dinamita 🧨

Qué está diciendo la comunidad

Toca la parte honesta del análisis, porque el entusiasmo conviene leerlo con la lupa puesta.

La reacción más fuerte vive en LinkedIn, no en los foros clásicos. Eduardo Ordax lo presentó como una señal importante de una empresa grande desplegando IA a escala, destacando los datasets estresados, autoguardrails, el generador de grafos de fraude, el motor genético, llm_bridge y la versión propia del ralph-loop. Su post pasaba de 1.400 reacciones cuando lo indexé.

Simon Taylor lo resumió con una frase que se queda grabada: Santander ha puesto la capa de control de IA de un banco en internet abierto para que cualquiera la pueda forkear, competidores incluidos. Y apunta el detalle revelador: que el board que firma las publicaciones incluya a Legal y al CISO indica el nivel de seriedad (Simon Taylor, X).

Arctic Tech Lab fue un paso más allá con la lectura más estratégica: no lo ve como una apertura corporativa cualquiera, sino como la exposición de partes del “operating layer” que necesita la IA financiera en entornos regulados, articulado como un bucle de control de extremo a extremo: entorno → filtro → señal → decisión → ejecución → evaluación.

¿Y la comunidad técnica de verdad? Empieza a moverse. Hay PRs alrededor de diagnósticos por familia de ataque en autoguardrails, una issue para publicar el dataset estresado en Hugging Face, otra de interoperabilidad en ralph-vault-skill y una de empaquetado por colisión de nombre en PyPI para llm_bridge. Pequeñas rozaduras reales, justo el tipo de cosas que aparecen cuando algo deja de ser anuncio y empieza a usarse.

⚠️ Seamos justos con el momento: es muy temprano. Pocas issues, casi toda la conversación en LinkedIn y X, y nada de discusión madura en Hacker News o Reddit sobre estos repos concretos. Hay entusiasmo y primeras pruebas, no un ecosistema consolidado. Tampoco íbamos a tener el Kubernetes de la gobernanza bancaria en cuatro días.

Cómo probar ralph hoy en tu propio repo

Basta de teoría. Si quieres tocarlo, el camino es corto porque ralph no tiene dependencias raras: solo necesitas Bash y una CLI de agente ya instalada.

  1. Clona el repositorio y entra en una carpeta de pruebas (mejor un proyecto pequeño y de usar y tirar, no tu monorepo de producción).
  2. Asegúrate de tener instalada al menos una CLI soportada: Codex, Claude Code, Gemini CLI o Devin CLI.
  3. Escribe un prompt.md con una tarea que tenga un final medible. “Haz que pasen los tests del módulo de pagos” sí; “deja el código más bonito” no, porque el agente no sabrá cuándo parar.
  4. Lanza el bucle con un límite de iteraciones para no llevarte un susto en la factura.
  5. Cuando quieras frenarlo, crea un fichero stop.md y el loop saldrá limpio en la siguiente vuelta.

Un arranque mínimo se vería así:

# Clona el wrapper sin dependencias
git clone https://github.com/SantanderAI/ralph.git
cd mi-proyecto-de-pruebas

# Define la tarea con una condición de parada clara
echo "Implementa y haz pasar los tests de carrito de la compra" > prompt.md

# Lanza el bucle usando Claude Code, con tope de iteraciones
RALPH_TOOL="claude" bash ../ralph/ralph-loop.sh

# Para frenarlo en cualquier momento, deja la señal de parada
touch stop.md

La regla de oro es la misma que vale para cualquier loop agéntico: la condición de parada pesa más que el bucle. Si no sabes cuándo el agente ha terminado, vas a quemar tokens iterando sobre algo intangible. Esto lo desarrollé entero en el artículo sobre loop engineering, y aquí se aplica clavado.

Mi lectura técnica

Lo más interesante de todo esto no es que Santander “haga open source”. Eso lo hacen muchas empresas para que parezca que tienen alma.

Lo llamativo es qué han abierto: no el modelo, sino el sistema de control alrededor del modelo. La combinación ralph + ralph-vault-skill ataca de frente el problema moderno de programar con agentes: sesiones que se degradan, contexto que se pudre, ejecución larga sin supervisión y necesidad de persistir conocimiento fuera del chat. No es magia. Es un wrapper y un vault. Y precisamente por eso es útil.

La línea autoguardrails + mech-gov-framework + sota-stressed-datasets es todavía más estratégica: evalúo, estreso, limito, registro, comparo. Para banca, esa capa vale más que otro prompt con emojis corporativos.

La parte floja es la edad del invento. Está muy verde. Y, seamos sinceros, hay piezas que son investigación pura: no esperes meterlas en producción el lunes. Son patrones y métricas, no servicios gestionados.

Pero la señal es la que cuenta. Una entidad financiera enorme puede abrir herramientas de IA si tiene gobernanza, datos sintéticos y un proceso de revisión serio detrás. Y de paso nos deja a los demás un manual involuntario de cómo se hace. Si te interesa el mundo de los agentes que aprenden y persisten, esto encaja con lo que ya conté sobre Hermes Agent: la diferencia es que aquí el agente trabaja con un cinturón de seguridad puesto.

Así que sí: si Botín levantara la cabeza, igual no entendería ni una línea de ralph-loop.sh. Pero el espíritu (arriesgar, montar algo que los demás puedan usar, y hacerlo con orden) lo pillaría a la primera.

Ahora te toca a ti. Clónate ralph, dale una tarea pequeña con final medible y mira cómo el bucle hace su trabajo. ¿Qué te impide probarlo esta misma tarde?

Fuentes

🧨 Última oprtunidad para recibir la dinamita que mereces sobre programación con IA el próximo domingo: Suscríbete gratis a Web Reactiva en https://webreactiva.com/newsletter

Imagen de Daniel Primo
Claude, IA de Anthropic

Escrito con la ayuda de la IA generativa de Claude, fuentes fidedignas y con un human in the loop:
Dani Primo.

CEO en pantuflas de Web Reactiva. Programador y formador en tecnologías que cambian el mundo y a las personas. Activo en linkedin, en substack y canal @webreactiva en telegram

12 recursos para developers cada domingo en tu bandeja de entrada

Además de una skill práctica bien explicada, trucos para mejorar tu futuro profesional y una pizquita de humor útil para el resto de la semana. Gratis.