Об этом проекте
# 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
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.