Installation
Prerequisites
- Node.js (LTS) and a package manager (npm or Yarn).
- An NPM token from Silence Laboratories to install the SDK from our private registry. Don't have one? Email [email protected].
- A running iOS Simulator (Xcode) or Android emulator (Android Studio) to launch the app on.
Configure Your Package Manager
Configure your package manager with a private token provided by us to access the private registry.
If you don't have NPM token, please contact us at [email protected].
Use a consistent install workflow throughout (either npm install or yarn add). Note that .npmrc configuration applies to both npm and Yarn v1, while Yarn v2+ uses .yarnrc.yml.
- yarn v2
- yarn v1 / npm
- Create a
.yarnrc.ymlfile in the root of your project and add the following line:
npmScopes:
"silencelaboratories":
npmAlwaysAuth: true
npmRegistryServer: "https://registry.npmjs.org"
npmAuthToken: ${NPM_TOKEN}
- Create a
.npmrcfile in the root of your project and add the following line:
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
- Add the npm token as an environment variable, e.g., in a terminal session run:
export NPM_TOKEN=your-npm-token
Install the core library
- npm
- yarn
npm install @silencelaboratories/silent-shard-sdk
yarn add @silencelaboratories/silent-shard-sdk
Install the native SDK(s) for your wallet types
You only need the native SDKs for the wallet families your app actually supports — installing extras only adds bundle size.
| Wallet family | Algorithm | Native package |
|---|---|---|
| EVM, Bitcoin, etc. | ECDSA | @silencelaboratories/dkls-sdk |
| Solana, etc. | EdDSA | @silencelaboratories/schnorr-sdk |
- ECDSA
- EdDSA
- npm
- yarn
npm install @silencelaboratories/dkls-sdk
yarn add @silencelaboratories/dkls-sdk
- npm
- yarn
npm install @silencelaboratories/schnorr-sdk
yarn add @silencelaboratories/schnorr-sdk
- Android
- iOS
- Expo
No additional steps are required.
To run on the iOS platform, install pods before running the application:
cd ios && pod install
For the current version of libraries, doesn't support Expo Go projects.
However, Expo users can use the Expo prebuild to extract native modules. Then auto-link should handle the linking of the native dependencies.
In the root of your project, run:
npx expo prebuild
After the prebuild is done, you can run the project on your desired platform:
npx expo run:android
or
npx expo run:ios
Prerequisites
- The Flutter SDK with Dart, and a working Flutter toolchain.
- A Dart pub token from Silence Laboratories for the private registry (
dart-pkg.silencelaboratories.com). Don't have one? Email [email protected]. - A running iOS Simulator (Xcode) or Android emulator (Android Studio) to launch the app.
Setup the Mobile SDK
1. Create a new Flutter project
Skip this section if you already have a Flutter project.
flutter create silent_mpc
2. Configure your dart pub client
-
Obtain a Pub token from Silence Laboratories team.
-
Add token to dart pub client using the command:
dart pub token add https://dart-pkg.silencelaboratories.com
Enter secret token: <silence-token>
3. Install the library
- Add
silent_shard_sdkfrom thehttps://dart-pkg.silencelaboratories.comregistry. In terminal from root of the flutter project, run
dart pub add 'silent_shard_sdk:{"version":"1.0.0", "hosted":"https://dart-pkg.silencelaboratories.com"}'
Or add following lines in pubspec.yaml
dependencies:
silent_shard_sdk:
version: 1.0.0
hosted: https://dart-pkg.silencelaboratories.com
- Run
dart pub get
Prerequisites
- Android Studio with a recent Android SDK and JDK.
- Access to the Silence Laboratories Android SDK repository (credentials from our team). Don't have access? Email [email protected].
- A running Android emulator or physical device to launch the app on.
Setup the Mobile SDK
Step 1: Create access token for the repository and package
- Get access to the repository https://github.com/silence-laboratories/silent-shard-artifacts from the Silence Laboratories team.
- Create a personal access token at https://github.com/settings/tokens with the following scopes
checked[✓] to access the repository, and it's
associated GithubPackages
through gradle.
- Under
repo-> [✓]public_repo - Under
write:packages-> [✓]read:packages
We can leavewrite:packagesuntouched/unchecked as we only need read access - It will end up looking like this : Two items checked everything else unchecked. See below.

- Under
Step 2: Configure settings.gradle.kts
-
Add the following maven repo under the dependencyResolutionManagement -> repositories :
Under
dependencyResolutionManagement{
//Other stuff
repositories{
//Add here the block shown below
}
//Other stuff
}Add the following
maven {
url =
uri("https://maven.pkg.github.com/silence-laboratories/silent-shard-artifacts")
credentials {
username = "github_username"
password = "token_we_just_created"
}
}- Replace
github_usernamewith your github username(The one we used for creating token). - Replace
token_we_just_createdwith the token we created.
- Replace
-
Your final
dependencyResolutionManagementblock will look like this (along with your own configuration)dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven {
url =
uri("https://maven.pkg.github.com/silence-laboratories/silent-shard-artifacts")
credentials {
username = "github_username"
password = "token_we_just_created"
}
}
//Other private repos or other resolution configuration. Or maybe another maven repo.
}
}
Advanced: Keep credentials out of source control
Instead of hardcoding your username and token, store them in local.properties (gitignored by default):
gpr.user=your_github_username
gpr.token=ghp_your_personal_access_token
Then add a helper in settings.gradle.kts that reads from local.properties, Gradle properties, or environment variables:
val localPropertiesFile = file("local.properties")
val localProperties = java.util.Properties()
if (localPropertiesFile.exists()) {
localPropertiesFile.inputStream().use { localProperties.load(it) }
}
fun getCredential(key: String): String {
return localProperties.getProperty(key)
?: providers.gradleProperty(key).orNull
?: System.getenv("ORG_GRADLE_PROJECT_$key")
?: ""
}
Use it in the maven block:
maven {
url = uri("https://maven.pkg.github.com/silence-laboratories/silent-shard-artifacts")
credentials {
username = getCredential("gpr.user")
password = getCredential("gpr.token")
}
}
This is the pattern used by the reference example apps.
Step 4: Configure app level build.gradle.kts
Add the dependency:
implementation("com.silencelaboratories.silentshard:trio:1.0.0")
Your final dependencies block will look like this:
dependencies {
implementation("com.silencelaboratories.silentshard:trio:1.0.0")
//Your Other dependencies
}
Step 5: Gradle-Sync
- Sync gradle with project files and that's it.
Prerequisites
- Xcode (a recent version) with Swift.
- Access to the Silence Laboratories iOS SDK (Swift package, credentials from our team). Don't have access? Email [email protected].
- A running iOS Simulator or physical device to launch the app on.
Setup the Mobile SDK
Step 1 : Setup XCode Project
- Install XCode (latest stable version recommended)
- Create new xcode project if you haven't.
Step 2: Create Package URL
- Get access to the repository https://github.com/silence-laboratories/silent-shard-artifacts from the Silence Laboratories team.
- Get the package URL
- Add GitHub account : Skip this step if you already have added your GitHub account in Xcode. You can add your GitHub account by following the steps ( only until it adds your GitHub account).
- Final package URL: https://github.com/silence-laboratories/silent-shard-artifacts. There are other ways also to get the package URL. For example, we can create fine-grained personal access token and use it to build the package URL but not including it for keeping package access simple for instructions.
Step 3: Open Package(SPM) Collection Window
- In Xcode, open the Project Navigator.
- Select the project file (the root item in the navigator).
- In the Project Editor, select your project(Your Xcode Project title under
Projectsection). - Navigate to the Package Dependencies tab. See below

- Click the + icon (hint :Add Package Dependency) at the bottom of the Package Dependencies section.
- A dialog box will appear prompting you to enter a package URL.
Step 4: Add Package
- Copy the package URL (We get this from Step 2).
- Paste this URL into the
Search or Enter Package URLbox.
- Select the
silentshard-artifactson the left panel. - Click Add Package to proceed.
Step 5: Confirm and Add Package
- Xcode will fetch the package details.
- Add library
trioto your targets By clicking dropdown from the " Add to Target" items.
- Click Add Package to complete the installation.