프로젝트 소개

# 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`을 높은 엔트로피 비밀로 설정하세요. `GET /health`를 제외한 모든 HTTP 엔드포인트는 Bearer 토큰 인증이 필요합니다. 토큰이 없으면 서버는 공개 또는 와일드카드 바인드 주소를 거부합니다. 예시: ```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을 재정의하고, TOML은 기본값을 재정의합니다. 주요 변수로는 `IRIS_ENABLED_PROVIDERS`, `IRIS_TELEGRAM_BOT_TOKEN`, 다양한 `IRIS_EMAIL_*` 설정이 있습니다. 공급자 유형의 여러 인스턴스가 지원됩니다 (예: `email.ops-codefold`). 각 인스턴스는 독립적인 구성과 환경 변수 명명 규칙을 갖습니다. ## 아키텍처 Iris는 크레이트로 구성된 워크스페이스로 구성됩니다: - `iris-core`: 도메인 모델 및 `MessageProvider` 트레이트 (I/O 의존성 없음) - `iris-providers`: 공급자 구현 (Telegram, SMS, Email 등) - `iris-server`: Axum HTTP 서버 (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 ``` 사전 커밋 훅은 lefthook을 통해 구성됩니다. ## 라이선스 MIT