Sobre el proyecto
Iris es un servidor MCP (Protocolo de Contexto de Modelo) de código abierto diseñado para evaluar las salidas de agentes de IA en cuanto a calidad, seguridad y costo. Se ejecuta íntegramente en tu máquina, almacena trazas en una base de datos SQLite local y no requiere cuenta, SDK ni telemetría. El proyecto tiene licencia MIT y requiere Node.js 20 o superior.
Las capacidades principales incluyen registro de trazas con árboles de tramos jerárquicos, latencia por llamada a herramienta, uso de tokens y seguimiento de costos en USD. La evaluación de salidas utiliza 20 reglas deterministas integradas en cuatro categorías: completitud, relevancia, seguridad y costo. Las reglas de seguridad detectan PII (19 patrones que incluyen SSN, tarjeta de crédito, teléfono, correo electrónico, IBAN, fecha de nacimiento, MRN, IP, claves API, pasaporte y tokens de proveedores de nube), inyección de prompts (37 patrones), marcadores de alucinación (25 señales de fabricación basadas en contexto) y violaciones de trayectoria, como llamadas a herramientas fallidas no reconocidas, llamadas repetidas, argumentos rechazados por esquema y fuentes citadas que el agente nunca leyó. Una función opcional de LLM-como-juez proporciona puntuación semántica a través de Anthropic u OpenAI con un límite de costo máximo por evaluación (por defecto $0.25).
Iris registra doce herramientas MCP que cualquier agente compatible con MCP puede invocar: log_trace, evaluate_output, get_traces, list_rules, deploy_rule, delete_rule, delete_trace, evaluate_with_llm_judge, verify_citations, compare_runs, compare_traces y evaluate_runs. La herramienta verify_citations extrae citas de la salida, obtiene fuentes a través de un resolvedor protegido contra SSRF y utiliza un juez LLM para comprobar si cada fuente respalda la afirmación citada.
Un panel web está disponible en http://localhost:6920, mostrando primero los fallos ordenados por gravedad y más recientes. Proporciona visualización de trazas, resultados de evaluación, desgloses de costos y una paleta de comandos (Cmd+K) para buscar reglas, trazas y evaluaciones. El panel también expone un endpoint de ingesta HTTP (POST /api/v1/traces) para capturar trazas sin un modelo en el circuito, y un endpoint de capacidades (GET /api/v1/capabilities) que describe lo que el servidor puede evaluar.
Para la integración en CI/CD, el comando CLI de ingesta lee trazas JSON o NDJSON desde stdin o un archivo, las evalúa, imprime una línea JSON por traza con el veredicto y sale con código 1 cuando un veredicto coincide con un filtro --fail-on. Esto permite condicionar los despliegues de agentes a los resultados de evaluación.
Las reglas personalizadas pueden crearse en línea (hasta 10 por llamada evaluate_output) o desplegarse de forma persistente mediante deploy_rule. Los tipos de regla incluyen regex_match, regex_no_match, min_length, max_length, contains_keywords, excludes_keywords, json_schema y cost_threshold. Las reglas desplegadas se guardan en custom-rules.json dentro del directorio de inicio de Iris y se activan en cada evaluate_output futuro de su categoría. Los niveles de gravedad (low, medium, high, critical) determinan si un fallo de regla produce un fallo duro de la evaluación o solo afecta la puntuación.
El veredicto aprobado lo decide un compositor que interpreta cada regla según el tipo de afirmación que hace: las políticas configuradas actúan como compuerta, los detectores críticos tienen poder de veto, las comprobaciones críticas que no pudieron responder producen un veredicto desconocido, y los detectores restantes se combinan en una probabilidad ponderada frente a una tasa de pérdida configurable. Las violaciones de seguridad genuinas (no_pii, no_injection_patterns, no_blocklist_words) fallan de forma dura por defecto.
Cada regla integrada tiene puntuaciones publicadas de precisión, exhaustividad (recall) y F1 con intervalos de confianza del 95%, medidas sobre un corpus etiquetado en el repositorio. La CI vuelve a ejecutar la medición en cada pull request y falla si los números incorporados difieren de lo que produce el código.
Iris es local-first: todo se almacena en SQLite en el disco. El HTTP saliente ocurre solo donde decides participar: tu propia clave de juez LLM, la obtención de citas o un exportador de OpenTelemetry que configures. El proyecto admite despliegue con Docker con dos puertos (3000 para el transporte HTTP de MCP, 6920 para el panel y la ingesta), y se integra con Claude Desktop, Claude Code, Cursor, Windsurf, Continue, VS Code, Cline, Zed, Codex CLI, Gemini CLI y cualquier otro agente compatible con MCP.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.