Sobre o projeto

# Iris Iris é um sistema de mensagens focado em LLM e agnóstico de fonte, projetado para unificar mensagens de múltiplas plataformas—Telegram, SMS, Email, WhatsApp, Instagram e outras—em uma única API consultável. É auto-hospedável, licenciado sob MIT e construído em Rust. ## Principais Recursos - **Modelo Unificado**: Normaliza todas as mensagens em estruturas consistentes de `Message`, `Thread` e `Contact`. - **Consultas Agnósticas de Fonte**: Consulte todas as fontes sem saber sua origem (por exemplo, "todas as conversas não lidas"). - **Design Focado em LLM**: Otimizado para consumo por agentes com suporte a MCP, JSON estruturado e anúncio de capacidades. - **Geração de Código**: As superfícies CLI, HTTP e MCP são geradas a partir de uma única definição de API, garantindo consistência. - **Auto-Hospedável**: Sem dependências de nuvem; roda em qualquer lugar onde Rust roda. - **Extensível**: Adicionar um novo provedor requer implementar um único trait. ## Início Rápido ```bash cargo build cargo run -- threads cargo run -- messages <thread-id> cargo run -- contacts cargo run -- serve ``` ## Auto-Hospedagem com Docker Imagens publicadas estão disponíveis em `ghcr.io/techgodhq/iris:<versão>` (ou `:latest`). Defina `IRIS_API_TOKEN` como um segredo de alta entropia para implantações acessíveis pela internet; todos os endpoints HTTP, exceto `GET /health`, exigem autenticação por token Bearer. Sem um token, o servidor recusa endereços de bind públicos ou curinga. Exemplo: ```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 ``` ## Configuração O Iris suporta arquivos TOML, variáveis de ambiente nativas ou ambos. Os valores de ambiente substituem o TOML, que substitui os padrões. As variáveis-chave incluem `IRIS_ENABLED_PROVIDERS`, `IRIS_TELEGRAM_BOT_TOKEN` e várias configurações `IRIS_EMAIL_*`. Múltiplas instâncias de um tipo de provedor são suportadas (por exemplo, `email.ops-codefold`), com convenções de nomenclatura de configuração e variáveis de ambiente independentes. ## Arquitetura O Iris é estruturado como um workspace com crates: - `iris-core`: Modelo de domínio e trait `MessageProvider` (zero dependências de I/O) - `iris-providers`: Implementações de provedores (Telegram, SMS, Email, etc.) - `iris-server`: Servidor HTTP Axum (API REST) - `iris-cli`: Interface de linha de comando (clap) - `iris-mcp`: Superfície do servidor MCP - `iris-codegen`: Geração de código para manter CLI/HTTP/MCP sincronizados ## Adicionando um Provedor 1. Crie um módulo em `iris-providers/src/`. 2. Implemente o trait `MessageProvider`. 3. Registre-o na inicialização do servidor/CLI. ## Desenvolvimento ```bash cargo build --all-targets cargo test --all-targets cargo clippy --all-targets -- -D warnings cargo fmt --all -- --check ``` Os hooks de pré-commit são configurados via lefthook. ## Licença MIT