Blink WebRTC brings rich, real-time voice, video, and messaging to mobile devices using SIP. Fully open source and built on open standards, it provides end-to-end encryption for voice and video with ZRTP and for messaging with PGP.
Blink WebRTC uses SylkSuite to translate between WebRTC and SIP. SylkServer and SylkPushServer are required if you want to use Blink WebRTC with your own SIP infrastructure.
Blink WebRTC is licensed under GNU General Public License version 3. A copy of the license is available at http://www.fsf.org/licensing/licenses/gpl-3.0.html
Copyright 2019-2026 AG Projects
- 1-to-1 audio and video calls (Opus, H.264, VP8, VP9)
- Receive audio and video calls from web browsers
- Multiparty conferencing for all media
- Rich messaging (remote deletion, editing, replies, reactions)
- File sharing to and from other mobile applications
- End-to-end enryption for all media (zRTP and PGP)
- Location sharing (meet-me, caregiver tracking)
- Screen sharing with remote pointer
- Support for phones and tablets in landscape and portrait modes
- Synchronization between multiple devices (media and contacts)
- History management and data export
- DTLS-SRTP for audio/video by default
- zRTP end-to-end encryption using insertable-streams over WebRTC-SFU
- OpenPGP for messaging and file transfers
- Interoperable with SIP/RTP end points (audio/video)
- Interoperable with SIP/MSRP end points (file transfers)
- Classic teplephony (G.711, G.722, DTMF, auto-answer)
- Addresbook interoperable with XCAP clients
- Multiparty conferencing interoperable with audio SIP/PSTN bridge
- zRTP interoperability with SIP SIMPLE client SDK
- AG Projects customers
- NGI Assure Fund, https://nlnet.nl/assure
- NGI0 PET Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 825310
- NGI eSSIF-Lab program, in collaboration with Bloqzone ADDING SSI TO INTERNET COMMS USING SYLK SUITE
- Adrian Georgescu - Project lead
- Tijmen de Mes - API, Conference, Chat and desktop features
- Alexander Blom - Self Sovereign Identity (SSI)
- Saúl Ibarra Corretgé - Inception architect / original idea
- Dan Jenkins - WebRTC and React Native mechanic
- Michiel Leenaars - Liaison with NLnet Foundation
Generic SIP server infrastructure is required. For a working preconfigured example based on OpenSIPS see:
- Sylk Suite Installer from https://github.com/AGProjects/sylk-suite
Sylk Suite consists of:
- SIP/WebRTC application server
- Mobile push notifications server
- Web page for WebRTC enabled browsers
- Mobile client API development SDK
- Desktop client API development SDK
-
NVM from https://heynode.com/tutorial/install-nodejs-locally-nvm/
-
Using nvm install Node.js version 21
-
Yarn (for package management) curl -o- -L https://yarnpkg.com/install.sh | bash
-
XCode 16
-
Android Studio (or at least the Android SDK) Go to Studio settings and install SDK version 36 and command line tools export ANDROID_SDK_ROOT=/Users/example/Library/Android/sdk
-
Gem (for installing gem files)
-
Fastlane (for deploying to testflight/google play store) brew update brew install ruby brew install ios-deploy gem install bundler gem install fastlane -NV
-
Cocoapods (for handling iOS Pods)
-
Install RVM: curl -L https://get.rvm.io | bash -s stable
-
Add to .bash_profile export LANG=en_US.UTF-8 export LANGUAGE=en_US.UTF-8 export LC_ALL=en_US.UTF-8
-
sudo gem install concurrent-ruby -v 1.3.4
-
sudo gem install cocoapods
-
Follow the Getting Started guide as much as you can but not everything will be explained. No install docs will be listed here for each tool as they'll change, go and check them out yourself.
Yarn can be a bit of a pain, especially when a git dependency changes.
To be sure you're running the lastest code run:
rm -rf node_modules
rm -r android/app/build
yarn cache clean
yarn
rm -rf ios/Pods
rm Podfile.lock
rm -r ~/.cocoapods
cd ios; pod setup; pod install; cd ..You might want to bring the project back to a clean repo if you're hitting any issues.
Try it as a dry-run first
git clean -d -x --dry-rungit clean -d -x -fnpm rebuild node-sass
Use react-native run-ios --help and react-native run-android --help to give you all you need to know. You shouldn't ever have to build from Xcode or Android Studio.
open ios/sylk.xcworkspace/If you don't have any simulators running, and don't have an android device plugged in (or available to adb) React Native will start up a simulator for you. If you have a device available (doesn't matter if its real or a simulator) this command will output to the device.
yarn react-native run-androidTo see the logs of the attached Android device:
adb logcat '*:W'.
Install https://reactnative.dev/docs/debugging#react-developer-tools
Shake the device and touch Debug.
In XCode enable debugger:
Product -> Scheme -> Edit -> Run -> Build Configuration -> Debug
Start Metro:
npx react-native start
Find the list of connected devices:
xcrun xctrace list devicesGet the id of the device and run:
xcodebuild -workspace ios/sylk.xcworkspace -scheme sylk \
-configuration Debug \
-destination 'id=00008120-0018510402A2201E' \
build installOr press Run inside the sylk target in Xcode.
yarn react-native run-android --deviceId "DeviceId"--deviceId [string] builds your app and starts it on a specific device/simulator with the given device id (listed by running "adb devices" on the command line).
To run the app on your device without tethering it to USB:
On Android:
yarn react-native run-android --mode=release
On iOS:
Select menu Product -> Scheme -> Edit scheme andselect for Run Build Configuration = Release
Beware that iOS push tokens are still meant for sandbox unless the app is released through Apple Store.
We use fastlane for building production versions of the app.
Fastlane can handle all the metadata around your entry into the relevant App Stores and much much more too.
Currently we have two commands - you will need to open Xcode and allow it to sync the deployment key as we allow Xcode to control that rather than do it ourselves. We could add it directly into the project with git-crypt and tell fastlane to use it to make this easier.
fastlane ios betafastlane android betaWe utilise the patch-package module in order to patch the react-native-callkeep module instead of maintaining a complete fork. See their README on how to make changes to the patch and how those patches get installed automatically within this project on install of npm modules.
yarn add -D AGProjects/sylkrtc.js