Your keychain for the Pubky ecosystem. Manage your pubkys, authorize services, and stay in control—no accounts, no passwords.
Pubky Ring is the key manager for your identity in the Pubky ecosystem. It lets you securely manage your pubkys—the public keys that power your presence across decentralized apps.
- Authorize or revoke access to services
- Organize and sync your pubkys across devices
- View and control active sessions
- Stay fully self-custodial, with no accounts or tracking
- Node.js >= 20
- Yarn 1.x
git clone https://github.com/pubky/pubky-ring && cd pubky-ringyarn install
# For iOS you may also need the following:
cd ios && pod install && cd ..For iOS:
yarn iosFor Android:
yarn androidIf everything is set up correctly, you should see your new app running in your Android Emulator or iOS Simulator shortly provided you have set up your emulator/simulator correctly.
This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively.
If you can't get this to work, see the Troubleshooting page.
Ensure your app-release.apk is authentic and untampered by verifying its GPG signature and SHA256 checksum.
gpg --import public-key.ascgpg --verify app-release.apk.asc app-release.apkgpg --verify SHA256SUMS.asc
sha256sum -c SHA256SUMSThis project includes Appium/WebdriverIO E2E tests for Android emulators and iOS simulators.
- Xcode with an iOS Simulator (e.g., "iPhone 15").
- Android SDK with an AVD (e.g., "Pixel_7_Pro_API_35").
- Java JDK 17+ and Node.js 18+.
- App under test has been built or is installed in test environment (iOS simulator or AVD)
yarn e2e:drivers- Android:
yarn e2e:android- iOS:
yarn e2e:ios- ANDROID_APP: absolute path to the .apk
- AVD: Android Virtual Device name (e.g. Pixel_6_API_34)
- ANDROID_DEVICE_NAME / ANDROID_PLATFORM_VERSION
- APP_PACKAGE / APP_ACTIVITY (defaults: to.pubky.ring / to.pubkyring.MainActivity)
- IOS_APP: absolute path to the .app
- IOS_SIM / IOS_PLATFORM_VERSION
- IOS_BUNDLE_ID (default: app.pubkyring)
# Android (provide APK)
ANDROID_APP=/absolute/path/app-debug.apk yarn e2e:android
# Android (attach to installed app on an emulator)
AVD=Pixel_6_API_34 yarn e2e:android
# iOS (provide .app)
IOS_APP=/absolute/path/pubkyring.app yarn e2e:ios
# iOS (attach to installed app on a simulator)
IOS_SIM="iPhone 15" yarn e2e:ios