Version v0.3.1 | Last updated 2026-06-12
Haudi Crypto,
Inc. President and CEO Kazunori Asada
The Openloop SDK is a multi-language library for communicating with the Openloop hardware wallet.
| Language / format | Main deliverables | Purpose |
|---|---|---|
| TypeScript / npm | @openloop/sdk-core,
@openloop/transport-* |
Web dApps, Node.js / Electron, React Native |
| Swift / SPM (planned) | — | Native iOS apps |
| Kotlin / Maven (planned) | — | Native Android |
| C# / NuGet (planned) | — | Native Windows |
About licensing: Use of the Openloop SDK requires a license agreement with Haudi Crypto, Inc. We can also customize the SDK to suit your requirements — please feel free to contact us at info@crypto.haudi.jp.
The single most important principle: private keys stay inside the device and never leave it. The SDK only sends and receives APDU (Application Protocol Data Unit) commands. All signing is performed inside the device’s secure element.
| Layer | Role |
|---|---|
| dApp | User interface, transaction construction |
| App class | Builds chain-specific APDU commands and parses responses |
| ITransport | Physical communication with the device (USB / BLE / WebSocket, etc.) |
| Device | Private key management, signing, user approval |
0x6985 and no signature is produced| Chain | App class | Elliptic curve | BIP44 coin_type |
|---|---|---|---|
| Ethereum (EVM) | EthereumApp |
secp256k1 | 60' |
| Bitcoin | BitcoinApp |
secp256k1 | 0' (mainnet), 1' (testnet) |
| Solana | SolanaApp |
Ed25519 | 501' |
| TRON | TronApp |
secp256k1 | 195' |
| XRP Ledger | XrpApp |
Ed25519 / secp256k1 | 144' |
EthereumApp works not only with Ethereum but with any
EVM-compatible chain. Specify the chain through the chainId
parameter of signPersonalMessage and
signTypedData.
The SDK offers six connection methods, covering a wide range of platforms.
| Transport | Package | Use case |
|---|---|---|
| WebHID (USB) | @openloop/transport-webhid |
Chrome/Edge on desktop |
| Web Bluetooth | @openloop/transport-webble |
Chrome/Edge + Android |
| LocalWS | @openloop/transport-local |
All browsers (via Connect) |
| Safari Extension | @openloop/transport-safari |
iOS Safari |
| USB HID (native) | @openloop/transport-usb |
Node.js / Electron |
| BLE (native) | @openloop/transport-ble |
Node.js / Electron |
| WalletConnect | Built into @openloop/sdk-core |
All browsers (remote signing) |
See the Transport Guide for details.
| Package | Description | Dependencies |
|---|---|---|
@openloop/sdk-core |
Core library (App, Types, Errors, Constants, WcTransport) | none |
@openloop/transport-webhid |
WebHID (USB) transport | sdk-core |
@openloop/transport-webble |
Web Bluetooth transport | sdk-core |
@openloop/transport-local |
LocalWS transport | sdk-core |
@openloop/transport-safari |
Safari extension transport | sdk-core (peer) |
@openloop/transport-usb |
Native USB HID transport | sdk-core (peer), node-hid |
@openloop/transport-ble |
Native BLE transport (Node.js / Electron) | sdk-core (peer), noble |
sdk-core is a pure TypeScript package with no dependency
on browser APIs or native modules. Each transport package supplies the
platform-specific implementation. Swift / Kotlin / C# libraries for
native apps are planned.
Communication between the SDK and the device uses APDU (Application Protocol Data Unit) commands.
[CLA] [INS] [P1] [P2] [Lc] [Data...]
| Field | Size | Description |
|---|---|---|
| CLA | 1 byte | Class byte (0xE0: Ledger-compatible, 0xF0:
Openloop-specific) |
| INS | 1 byte | Instruction code |
| P1 | 1 byte | Parameter 1 (chunking control, etc.) |
| P2 | 1 byte | Parameter 2 (curve selection, etc.) |
| Lc | 1 byte | Data length |
| Data | Lc bytes | Command data |
[Data...] [SW1] [SW2]
| Field | Size | Description |
|---|---|---|
| Data | variable | Response data |
| SW1-SW2 | 2 bytes | Status word (0x9000 = success) |
| CLA | Purpose |
|---|---|
0xE0 |
Ledger-compatible commands (ETH, BTC getAddress, SOL, TRON, XRP) |
0xF0 |
Openloop-specific commands (chain_id-aware signing, PSBT, BTC xpub) |
See Error Handling for the full list of APDU status words.