Sobre el proyecto

# Iris Iris es un sistema de mensajería centrado en LLM y agnóstico de fuente, diseñado para unificar mensajes de múltiples plataformas—Telegram, SMS, Email, WhatsApp, Instagram y otras—en una única API consultable. Es autoalojable, con licencia MIT y construido en Rust. ## Características clave - **Modelo unificado**: Normaliza todos los mensajes en estructuras consistentes de `Message`, `Thread` y `Contact`. - **Consultas agnósticas de fuente**: Consulta a través de todas las fuentes sin conocer su origen (por ejemplo, "todos los hilos no leídos"). - **Diseño centrado en LLM**: Optimizado para el consumo de agentes con soporte MCP, JSON estructurado y anuncio de capacidades. - **Generación de código**: Las superficies CLI, HTTP y MCP se generan a partir de una única definición de API, garantizando consistencia. - **Autoalojable**: Sin dependencias en la nube; se ejecuta en cualquier lugar donde Rust se ejecute. - **Extensible**: Agregar un nuevo proveedor requiere implementar un único trait. ## Inicio rápido ```bash cargo build cargo run -- threads cargo run -- messages <thread-id> cargo run -- contacts cargo run -- serve ``` ## Autoalojamiento con Docker Las imágenes publicadas están disponibles en `ghcr.io/techgodhq/iris:<version>` (o `:latest`). Establece `IRIS_API_TOKEN` a un secreto de alta entropía para implementaciones accesibles por internet; todos los endpoints HTTP excepto `GET /health` requieren autenticación con token Bearer. Sin token, el servidor rechaza direcciones de enlace públicas o comodín. Ejemplo: ```bash docker run --rm \ --name iris \ --publish 127.0.0.1:9876:9876 \ --volume iris-data:/data \ --env IRIS_ENABLED_PROVIDERS=telegram \ --env IRIS_TELEGRAM_BOT_TOKEN="${IRIS_TELEGRAM_BOT_TOKEN}" \ ghcr.io/techgodhq/iris:latest ``` ## Configuración Iris admite archivos TOML, variables de entorno nativas o ambos. Los valores de entorno anulan TOML, que anula los valores predeterminados. Las variables clave incluyen `IRIS_ENABLED_PROVIDERS`, `IRIS_TELEGRAM_BOT_TOKEN` y varias configuraciones `IRIS_EMAIL_*`. Se admiten múltiples instancias de un tipo de proveedor (por ejemplo, `email.ops-codefold`), con convenciones de nomenclatura de variables de entorno y configuración independientes. ## Arquitectura Iris está estructurado como un workspace con crates: - `iris-core`: Modelo de dominio y trait `MessageProvider` (sin dependencias de E/S) - `iris-providers`: Implementaciones de proveedores (Telegram, SMS, Email, etc.) - `iris-server`: Servidor HTTP Axum (API REST) - `iris-cli`: Interfaz de línea de comandos (clap) - `iris-mcp`: Superficie del servidor MCP - `iris-codegen`: Generación de código para mantener CLI/HTTP/MCP sincronizados ## Agregar un proveedor 1. Crea un módulo en `iris-providers/src/`. 2. Implementa el trait `MessageProvider`. 3. Regístralo en el inicio del servidor/CLI. ## Desarrollo ```bash cargo build --all-targets cargo test --all-targets cargo clippy --all-targets -- -D warnings cargo fmt --all -- --check ``` Los hooks de pre-commit están configurados mediante lefthook. ## Licencia MIT