프로젝트 소개

Offline Protocol SDK는 오프라인 우선 애플리케이션, 에이전트, 기기를 구축하기 위한 Rust 기반 전송 및 조정 계층입니다. BLE, Wi-Fi Direct, 인터넷, Reticulum, Nostr 릴레이를 포함한 여러 전송 방식을 통해 피어 발견, 안전한 통신, 조정을 가능하게 합니다. 주요 기능은 다음과 같습니다: - **다중 전송**: 실시간 조건에 따라 BLE, WiFi Direct, 인터넷, Reticulum, Nostr 릴레이 간 자동 전환. - **메시 네트워킹**: 클러스터 기반 자가 조직화 메시를 통한 자동 피어 발견 및 메시지 중계. - **종단간 암호화**: 전방 비밀성(Forward Secrecy)을 갖춘 자동 MLS 암호화(RFC 9420), 기본적으로 실패 시 폐쇄(Fail-closed). - **그룹 역할**: 관리자/멤버 역할 관리 및 마지막 관리자 안전 불변식(Last-admin safety invariants) 지원. - **DORS**: 최적 전송 선택을 위한 동적 오프라인 릴레이 스위치. - **신뢰성**: ACK, 재시도, 중복 제거 기능 내장. - **크로스 플랫폼 바인딩**: iOS/Android용 React Native 및 macOS/Linux/Windows용 Python. SDK는 여러 Rust 크레이트로 구성된 모듈식 구조입니다: 코어 타입, 밀봉 봉투 코덱(Sealed-envelope codec), 전송 추상화, DORS 라우팅, 신뢰성, MLS 암호화, 서비스 발견, CRDT 데이터 복제, 제한된 디바이스 리프 지원, 메인 프로토콜 엔진, UniFFI 바인딩. 중요한 아키텍처 참고 사항: Rust 크레이트는 I/O가 없는 프로토콜 엔진입니다. 큐잉, 라우팅, 암호화, 전송 선택을 수행하지만 소켓을 열거나 라디오에 직접 접근하지 않습니다. 실제 I/O는 플랫폼 브리지가 수행합니다. React Native 바인딩은 iOS 및 Android용 브리지(BLE, WiFi Direct, 인터넷, Nostr, Reticulum)를 제공하며, Python 바인딩은 BLE 및 인터넷 브리지를 제공합니다. 직접 Rust 소비자는 자체 브리지를 작성해야 합니다. React Native(npm install @offline-protocol/mesh-sdk) 및 Python 데스크톱 앱(bindings/python에서 빌드)에 대한 빠른 시작 예제가 제공됩니다. 암호화는 기본적으로 활성화되어 있으며 실패 시 폐쇄됩니다. 평문(Plaintext) 작동은 명시적 옵트아웃이 필요하며 보안 경고를 출력합니다. 문서에는 아키텍처 심층 분석, API 참조, 구성 가이드, 메시지 전달 세부 사항, DORS 심층 분석, 메시 네트워킹 가이드, MLS 통합, 전송 아키텍처, 서비스 발견, React Native 및 Python 통합, Reticulum 및 Nostr 전송, 텔레메트리, iOS/Android 통합, 프로토콜 사양, 위협 모델, 상태 머신, ADR, 브리지 계약이 포함됩니다. SDK는 AGPL-3.0-only 또는 상업용 라이선스의 이중 라이선스로 제공됩니다. 암호화를 포함하므로 수출 통제 고려 사항이 문서화되어 있습니다. 이름과 로고는 상표입니다.