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
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.