Getting started — integrate secure hardware signing
Welcome to the VaultOS Suite Developer Portal. This guide helps developers integrate secure hardware wallet support — including WebUSB, WebHID, and companion app flows — into web and native applications. Use our SDKs and sample code to implement secure transaction signing, key management, and on-device confirmations. Clear integration guides, reliable SDKs, and best practices here help your product offer secure, non-custodial experiences to users while improving developer time to market.
Install SDKs & tools
Choose from our JavaScript SDK, TypeScript bindings, or native Rust/Go libraries. The SDK abstracts WebUSB/WebHID and companion protocols so you can sign transactions with minimal code.
Connect & enumerate devices
Detect wallets with WebUSB or WebHID, request permission, and present the user with an on-device pairing UI. Always show clear prompts and explain why device permissions are needed.
Sign & verify transactions
Send the transaction payload to the device for deterministic signing. Verify signed payloads server-side and show the user the on-device approval details for human verification.
Secure signing
Protect private keys inside the hardware device — signing happens offline and only signatures are returned to your app.
Cross-chain support
Support Bitcoin, Ethereum, EVM chains, Solana, and custom blockchains with multiple derivation paths.
Replay protection
Implement nonces and chain-aware signing for robust transaction replay protection.
Companion app
Offer mobile companion flows using deep links or QR pairing for users who prefer Bluetooth or mobile-only experiences.
Auditable SDK
Open-source SDKs with clear contracts and audits make integration transparent and trustworthy.
Developer tooling
CLI tools, simulators, and testnets to validate flows before shipping to production.
Sample JavaScript code
// enumerate devices and request permission (simplified)
import { VaultOS } from 'vaultos-sdk';
async function connectWallet(){
const wallet = await VaultOS.requestDevice();
await wallet.open();
const pubkey = await wallet.getPublicKey("m/44'/60'/0'/0/0");
console.log('pubkey', pubkey);
}
// create a transaction and ask the device to sign
async function signTx(wallet, txPayload){
const sig = await wallet.signTransaction(txPayload);
// verify & broadcast with your backend
return sig;
}