
Offline Protocol SDK는 BLE, Wi-Fi Direct, 인터넷, Reticulum, Nostr 릴레이를 오가며 기기 간 메시지를 전달하는 오픈소스 SDK다. 메시 암호화와 중계 기능을 제공하며 React Native와 Python 바인딩은 플랫폼별 전송 브리지를 포함한다. Rust 크레이트를 직접 쓰는 경우에는 앱에서 브리지를 구현해야 한다.
SDK는 전송 수단을 자동으로 선택하고, 기기끼리 피어를 찾아 메시지를 중계하도록 설계됐다. 메시지는 기본적으로 MLS(RFC 9420)로 종단 간 암호화되며, 암호화할 수 없을 때 평문으로 보내지 않고 오류를 반환한다. 보안 세션이 준비되지 않은 상대에게 보낸 메시지는 세션이 준비될 때까지 대기한다. requireEncryption: false를 명시하면 평문 전송이 가능하지만, 상대별로 PLAINTEXT_SEND 사유의 보안 경고가 발생한다.
사용자는 npm의 @offline-protocol/mesh-sdk, PyPI의 offline-protocol-sdk, crates.io의 offline-protocol을 이용할 수 있다. Swift 패키지와 Android 라이브러리, Flutter 플러그인은 미리보기 단계다. Swift 패키지는 iOS 13 이상만 지원하고 macOS와 Mac Catalyst용 빌드는 없다. Python 휠은 Python 3.10 이상에서 macOS arm64, Linux x86_64·aarch64, Windows x86_64용으로 제공된다. Intel Mac, Alpine 같은 musl Linux, glibc 2.34 미만 환경에는 휠이 없고 소스 배포도 없어 직접 빌드해야 한다.
Rust 크레이트는 메시지를 큐에 넣고 경로를 정하고 암호화하지만, 프로토콜 전송을 위해 소켓을 열거나 무선 장치에 직접 접근하지 않는다. 플랫폼 브리지는 전송 대기열을 비우고 실제 송신을 수행한 뒤 결과를 전달하며, 수신한 바이트를 SDK에 넣어야 한다. React Native 바인딩은 iOS와 Android용 BLE, Wi-Fi Direct, 인터넷, Nostr, Reticulum 브리지를 제공한다. Python 바인딩은 BLE, 인터넷, LAN 피어 스트림, 게이트웨이 클라이언트 브리지를 제공한다. Rust 크레이트를 직접 사용하는 개발자는 브리지를 구현해야 하며, 계약은 offline-protocol-transport 문서에 설명돼 있다.
SDK는 AGPL-3.0-only 또는 상용 라이선스로 제공된다. AGPL을 적용하면 네트워크를 통한 사용에도 소스 공개 의무가 따를 수 있으므로, 배포 방식에 맞춰 조건을 확인해야 한다. 자세한 내용은 라이선스, 상용 라이선스, 라이선스 FAQ를 참고하면 된다. 전체 설치 안내와 제약은 저장소에서 확인할 수 있다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요