Об этом проекте

# Iris Iris — это ориентированная на LLM, независимая от источника система обмена сообщениями, предназначенная для объединения сообщений с нескольких платформ — Telegram, SMS, Email, WhatsApp, Instagram и других — в единый API с возможностью запросов. Она допускает самостоятельное размещение, лицензирована по MIT и написана на Rust. ## Ключевые возможности - **Унифицированная модель**: нормализует все сообщения в согласованные структуры `Message`, `Thread` и `Contact`. - **Запросы, независимые от источника**: позволяют выполнять запросы по всем источникам без знания их происхождения (например, «все непрочитанные цепочки»). - **Дизайн, ориентированный на LLM**: оптимизирован для использования агентами с поддержкой MCP, структурированным JSON и объявлением возможностей. - **Генерация кода**: поверхности CLI, HTTP и MCP генерируются из единого определения API, что обеспечивает согласованность. - **Самостоятельное размещение**: без облачных зависимостей; работает везде, где работает Rust. - **Расширяемость**: добавление нового провайдера требует реализации одного трейта. ## Быстрый старт ```bash cargo build cargo run -- threads cargo run -- messages <thread-id> cargo run -- contacts cargo run -- serve ``` ## Самостоятельное размещение с Docker Опубликованные образы доступны по адресу `ghcr.io/techgodhq/iris:<version>` (или `:latest`). Задайте `IRIS_API_TOKEN` в виде секрета с высокой энтропией для развертываний, доступных из интернета; все HTTP-эндпоинты, кроме `GET /health`, требуют аутентификации с помощью Bearer-токена. Без токена сервер отказывается от публичных или wildcard-адресов привязки. Пример: ```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 ``` ## Конфигурация Iris поддерживает файлы TOML, нативные переменные окружения или и то, и другое. Значения из окружения переопределяют TOML, который переопределяет значения по умолчанию. Ключевые переменные включают `IRIS_ENABLED_PROVIDERS`, `IRIS_TELEGRAM_BOT_TOKEN` и различные настройки `IRIS_EMAIL_*`. Поддерживается несколько экземпляров одного типа провайдера (например, `email.ops-codefold`) с независимой конфигурацией и соглашениями об именовании переменных окружения. ## Архитектура Iris структурирована как рабочее пространство с крейтами: - `iris-core`: доменная модель и трейт `MessageProvider` (без зависимостей ввода-вывода) - `iris-providers`: реализации провайдеров (Telegram, SMS, Email и т. д.) - `iris-server`: HTTP-сервер Axum (REST API) - `iris-cli`: интерфейс командной строки (clap) - `iris-mcp`: поверхность сервера MCP - `iris-codegen`: генерация кода для синхронизации CLI/HTTP/MCP ## Добавление провайдера 1. Создайте модуль в `iris-providers/src/`. 2. Реализуйте трейт `MessageProvider`. 3. Зарегистрируйте его при запуске сервера/CLI. ## Разработка ```bash cargo build --all-targets cargo test --all-targets cargo clippy --all-targets -- -D warnings cargo fmt --all -- --check ``` Хуки pre-commit настраиваются через lefthook. ## Лицензия MIT