Doce agentes. Una red. Un sistema que nunca duerme.
De una interfaz Next.js a un orquestador FastAPI, hasta una constelación de agentes especializados que se ejecutan en local — y, por encima de todo, MediLog: la historia clínica electrónica a un clic de distancia.
Junio de 2026Versión 1.0
En breve
solveiAgents es una plataforma multiagente de IA que funciona íntegramente en hardware privado, sin enviar datos sensibles a servicios cloud de terceros: un orquestador FastAPI coordina doce agentes especializados, cada uno impulsado por modelos open-weight ejecutados en local mediante Ollama. MediLog, el módulo principal, es la historia clínica electrónica completa — diagnóstico por imagen DICOM con visor OHIF, chat de paciente multimodal y telemedicina mediante mediasoup.
La visión
Una infraestructura de IA que vive en tu casa
solveiAgents es una plataforma multiagente de IA diseñada para funcionar íntegramente en hardware privado o VPS — sin enviar datos sensibles a servicios cloud de terceros. Una interfaz web moderna conversa con un orquestador central, que a su vez coordina un equipo de agentes especializados: cada uno con un dominio preciso, cada uno impulsado por modelos de lenguaje open-weight ejecutados en local mediante Ollama.
La arquitectura sigue un principio sencillo: un agente especializado siempre supera a un generalista. Un modelo entrenado para razonar sobre informes médicos no es el mismo que analiza mercados financieros. Un agente que conoce tu wiki personal produce resultados distintos de uno que navega por Wikipedia al azar. La especialización no es un límite — es una decisión de calidad.
El principio fundacional
Imagina un hospital universitario. No hay un solo médico que lo sepa todo: está el cardiólogo, el radiólogo, el neurocirujano, el médico de familia. Y está el jefe de servicio que coordina. solveiAgents es exactamente así — pero para tu flujo de trabajo digital. Cada agente sobresale en su dominio y el orquestador sabe siempre a quién preguntar.
Arquitectura de la plataforma
Next.js
Interfaz de usuario
→
Orchestratore FastAPI
LLM coordinador · Clerk Auth
→
Financiero
Wiki
Médico
Imágenes
Video
Noticias
Blog
Docling
El equipo especializado
Doce mentes, un solo objetivo
La plataforma incluye hoy doce agentes operativos, cada uno expuesto en un puerto dedicado y activado bajo demanda por el orquestador. El principio bajo demanda evita el desperdicio de recursos: los agentes duermen hasta que hacen falta, despiertan en pocos segundos y vuelven a dormirse tras un periodo de inactividad. Cada agente y cada servicio de infraestructura común vive en su propio "contenedor docker".
:8001 Financiero — análisis de cartera, mercados, noticias económicas
:8002 Wiki — base de conocimiento corporativa con OCR y grafo conceptual
:8003 Médico — literatura científica, análisis clínico, FHIR
:8005 Vídeo — transcripción, análisis, resumen de vídeos
:8010 Noticias — agregación, síntesis, sentimiento a partir de fuentes múltiples
:8012 Blog — generación de artículos SEO con Hugo CMS integrado
:8014 Docling — conversión de PDF/DOCX/XLSX/PPTX/HTML → Markdown
:8015 PHR — historia clínica, DICOM, FHIR, chat de paciente
:8016 Whisper — transcripción de audio con faster-whisper large-v3-turbo
🏠 Privacidad desde el diseño
Todos los modelos LLM funcionan en local mediante Ollama. Los datos, especialmente los sanitarios, no salen nunca del servidor. No se envía ningún dato a OpenAI, Anthropic, Google ni otros proveedores cloud. Para las funciones que requieren conexión (literatura científica, noticias financieras), los datos transmitidos son exclusivamente consultas de texto anonimizadas.
"La verdadera inteligencia distribuida no consiste en tener un modelo más grande, sino en tener el modelo adecuado para cada tarea."
Cimientos sólidos
El stack que lo sostiene todo
Cada componente de la plataforma se elige por razones precisas: fiabilidad, interoperabilidad con los estándares abiertos y capacidad de funcionar sin dependencias cloud obligatorias.
Frontend
Interfaz y acceso
Next.js 14 con App Router y React Server Components
Clerk para la autenticación multiaplicación (agents + medilog)
Tailwind CSS con shadcn/ui y design tokens
WebSocket para el streaming de respuestas en tiempo real
nginx con terminación SSL/TLS y enrutamiento por vhost
Backend
Orquestación y agentes
FastAPI + SQLAlchemy async para todos los servicios
PostgreSQL con esquemas separados (phr, ref, fhir)
Alembic para la migración controlada de la base de datos
MinIO para el almacenamiento de objetos (documentos, imágenes)
Grafana + Prometheus + Loki para una observabilidad completa
✦
Módulo principal · Historia clínica electrónica
MediLog: el PHR que piensa contigo
No un simple registro de pacientes. Una plataforma clínica completa con IA integrada: desde la recogida de datos hasta la videoconsulta, desde el análisis de los informes hasta el archivo DICOM, todo en un único sistema de código abierto que funciona en local y respeta la privacidad de los datos sanitarios.
29+Migraciones de BD
160kFármacos AIFA
16kCódigos ICD-9-CM
140+Tests automáticos
Núcleo clínico
Historia clínica completa
El corazón de MediLog es el esquema phr de PostgreSQL: pacientes, alergias, eventos clínicos con código ICD-9-CM italiano, terapias farmacológicas con fármacos AIFA, observaciones diarias, documentos adjuntos y estudios DICOM, todo enlazado y consultable.
👤
Pacientes y anamnesis
Gestión del paciente con datos demográficos, antecedentes familiares, alergias (fármacos/alimentos/ambiente), terapias con dosis, frecuencia y fármaco AIFA.
📅
Línea de tiempo clínica
Línea de tiempo cronológica de los eventos con código ICD-9-CM, descripción, fechas y pins de documentos/DICOM asociados. Visualización de calendario interactiva.
📄
Archivo de documentos
Carga de documentos (PDF, imágenes, audio, Markdown) con almacenamiento en MinIO. OCR automático mediante Docling, resumen con IA, búsqueda de texto completo en todas las entidades.
🔍
Búsqueda global
GET /search?q= unificada sobre pacientes, eventos, documentos, fármacos, centros, ICD-9-CM. Navegación desde la barra superior con Enter.
📋 Bases de datos integradas
MediLog incluye cargadores listos para: fármacos AIFA (~160k entradas, clase A/C/SOP/H/OTC), centros sanitarios AIFA (~3,3k, cp1252), ICD-9-CM del Ministerio de Sanidad (~16,2k códigos, parser de formato no estándar), LOINC para análisis de laboratorio. Todos actualizables mediante el endpoint administrativo POST /phr/admin/ref/update.
Diagnóstico por imagen
DICOM nativo con visor OHIF
Los estudios de diagnóstico por imagen (RX, TC, RM, ecografías) se cargan directamente en el sistema mediante subida de carpeta, incluso con archivos sin extensión. Orthanc gestiona el almacenamiento DICOM con deduplicación por StudyInstanceUID: volver a cargar un estudio ya presente actualiza el recuento de series sin crear duplicados.
El visor OHIF lo sirve directamente nginx, accesible tanto desde agents.solvei.it como desde medilog.solvei.it, con autenticación Clerk mediante el auth-validator interno. La URL de visualización se construye en el frontend a partir de window.origin + StudyInstanceUID, usando rutas dicom-web relativas.
Integración clínica
Cada estudio DICOM puede fijarse (pin) en la línea de tiempo clínica: un icono CalendarPlus en cada fila de los estudios abre un diálogo que permite vincular el estudio a un evento existente o crear uno nuevo. En la línea de tiempo, la insignia DICOM es pulsable y abre directamente el visor OHIF.
Asistencia clínica con IA
Chat de paciente con análisis multimodal
El chat clínico integrado no es un chatbot genérico: accede a la historia del paciente, lee los documentos adjuntos, analiza las imágenes DICOM mediante modelos de visión (qwen3-vl) y consulta la literatura científica internacional (PubMed, Europe PMC, Semantic Scholar), adjuntando las fuentes citadas con enlaces directos al texto completo en acceso abierto.
El flujo técnico: agent-phr prepara los adjuntos de MinIO/Orthanc en una carpeta compartida /data/uploads y hace de proxy hacia agent-medical mediante SSE streaming. El token de Clerk se renueva en cada petición mediante registerTokenGetter, evitando el problema del token en caché a 60 s que causaba 401 silenciosos.
🧠
Análisis visual de DICOM
El médico puede pedir "dime qué ves en esta ecografía": el chat analiza las imágenes DICOM con qwen3-vl mediante Ollama. Se admiten secuencias multi-frame.
📚
Literatura científica
Flag cite_sources: cada respuesta sobre diagnósticos o terapias se enriquece con enlaces a publicaciones pertinentes de PubMed/PMC en acceso abierto.
🔬
Consultas de laboratorio en NLP
"Muéstrame las últimas 5 glucemias": /labs/parse-query interpreta la petición en lenguaje natural y recupera los valores LOINC correspondientes.
📎
Adjuntos contextuales
Los documentos de MinIO y los estudios de Orthanc se preparan y se dejan listos (staging) automáticamente antes de cada llamada al modelo de visión.
Análisis de laboratorio
Extracción estructurada de los informes
Carga un informe de sangre en PDF o imagen: MediLog lo procesa con el OCR de Docling y luego lo envía a agent-medical para la extracción estructurada de los valores: nombre del analito, valor numérico, unidad de medida, intervalo de referencia, código LOINC. El resultado se presenta en una revisión interactiva antes de guardarlo: el clínico puede corregir valores erróneos o añadir notas.
Los valores guardados alimentan la vista Exámenes con gráficos recharts de cada analito a lo largo del tiempo. Más de 60 analitos admitidos en el mapeo LOINC: glucemia, hemograma completo, función renal y hepática, lípidos, hormonas tiroideas, marcadores cardíacos, coagulación, vitamina D, HbA1c, dímero D.
🏷️ Estándares LOINC y UCUM
Cada observación se codifica según LOINC (Logical Observation Identifiers Names and Codes) y UCUM (Unified Code for Units of Measure). Los valores también se pueden exportar como recursos FHIR R4 Observation hacia HAPI FHIR. El intervalo de referencia se deriva automáticamente de formatos italianos ("da X a Y", "< 200", "superiore a 60").
Telemedicina
Videovisita con mediasoup SFU
MediLog incluye un sistema completo de videollamada SFU (Selective Forwarding Unit) basado en mediasoup 3.20, la misma tecnología que usan Zoom y Teams, pero ejecutada en local sin dependencias cloud.
Sala de espera
El paciente crea una sala (phr.call_rooms) y comparte el enlace. El médico accede con un token guest UNIQUE, sin necesidad de cuenta de Clerk.
En la llamada
Vídeo + audio bidireccional, compartición de pantalla (replaceTrack sobre un único producer de vídeo, compatible con todos los navegadores), late-join con producers existentes, expulsión automática de peers obsoletos (stale-peer eviction).
Grabación
Grabación en el servidor mediante PlainTransport + ffmpeg. Se puede elegir solo audio o audio+vídeo. Al terminar, agent-whisper (faster-whisper large-v3-turbo) transcribe automáticamente el archivo y se guarda como documento con transcripción editable.
Infraestructura
agent-call Node.js 22 (:2000) + servidor TURN coturn (:3478, network_mode:host). MEDIASOUP_ANNOUNCED_IP = IP LAN (crítico: no 127.0.0.1, Docker Desktop no reenvía UDP al loopback).
Interoperabilidad clínica
FHIR R4 y Patient Summary IPS
Todos los datos clínicos de MediLog están disponibles en formato FHIR R4 mediante HAPI FHIR (:8080). El Patient Summary conforme al estándar IPS (International Patient Summary) se genera como Bundle FHIR e incluye: Patient, AllergyIntolerance, MedicationStatement, Condition (ICD-9-CM → codificación ICD-10 para FHIR), Observation (valores de laboratorio LOINC), DocumentReference para los documentos adjuntos.
El endpoint GET /phr/fhir/bundle genera el bundle bajo demanda. Los datos FHIR también están cubiertos por la copia de seguridad diaria pg_dump, ya que HAPI usa el mismo PostgreSQL (currentSchema=fhir).
Fiabilidad en producción
Siempre activo, a prueba de reinicios, con copias de seguridad
La copia de seguridad diaria (3:00 UTC) lo cubre todo: la base de datos relacional PostgreSQL mediante pg_dump (esquemas phr/ref/fhir), los blobs de MinIO (documentos e imágenes) y los estudios de Orthanc, todos montados en solo lectura en el contenedor del orquestador y archivados en la carpeta del host ./data/backups.
En desarrollo: VM GPU OCI A10.1 Frankfurt para inferencia de visión acelerada (qwen3-vl:4b ahora parcialmente en CPU → ~5 min/estudio; objetivo <30 s en A10). Arquitectura decidida: CPU siempre activa (Ollama con modelos pequeños) + GPU bajo demanda con facturación en pausa al detenerla, en una VCN privada de OCI sin que los datos PHI salgan de la región.
▶ Demo
solveiAgents en acción — vídeo de demostración
La plataforma solveiAgents en funcionamiento: orquestador, agentes especializados y MediLog PHR en una demo completa.