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