@inaya-network/custody-sdk is a client-side cryptographic sovereignty SDK — encrypt, shard, anchor, and reconstruct files against a live chain, from your own app. TypeScript-first, live on the public npm registry, and used to build Inaya's own products.
Encryption and sharding happen entirely client-side — in the browser or in Node — before anything leaves the device. Your app never holds a plaintext file, and neither does Inaya.
Crypto, on-chain anchoring, payments, metadata, analytics, and backup are each independently usable. Pull in the whole kernel or just the one client your app actually needs.
TypeScript-first with full .d.ts coverage, drop-in React components, a CLI for deploys, and create-inaya-dapp for a zero-to-running scaffold. The 30-second example below is real, copy-pasteable code.
Ship a static site and inaya-cli's deploy command pins it to IPFS and submits it to the Web3 App Store for review in one call — no separate hosting, no separate submission flow.
A full wallet-connected upload, start to finish.
import { InayaKernel } from "@inaya-network/custody-sdk";
const connection = await InayaKernel.connectWallet();
const salt = InayaKernel.generateSecureSalt(16);
const vaultKey = await InayaKernel.deriveVaultKey({ passkey: "user-supplied-passkey", salt });
const sharded = await InayaKernel.disperseAndSlice({ file, encryptionKey: vaultKey });
// Pin sharded.shardAlpha / sharded.shardBeta to IPFS yourself, then:
await InayaKernel.approveFeeTokens({ connection, fileSizeBytes: file.size });
const receipt = await InayaKernel.anchorToLedger({
connection,
fileName: sharded.filename,
fileSizeBytes: file.size,
dataShardAlpha: cidAlpha,
dataShardBeta: cidBeta,
});Each is independently usable — pull in the whole kernel, or just what your app needs.
crypto.jsClient-side AES-GCM-256 encryption and binary sharding. Pure JS (@noble/hashes + @noble/ciphers) — works in browsers, Node.js, and React Native alike.
index.jsWraps the deployed InayaCustody and InayaStaking contracts. Dual-mode: a connected browser wallet, or a server-held ethers.Wallet for signing on a user's behalf.
payments.jsA typed client for the card-payment, no-wallet backend routes (Corporate Reserve, PAYG, egress checkouts). Carries zero secrets of its own.
metadata.jsRename, move, delete, virtual folders, and sharing — an off-chain layer authenticated by wallet signatures, since the on-chain contract itself is write-once.
analytics.jsPer-wallet storage statistics, built entirely from data the SDK can already read — no new on-chain calls, no new backend surface.
backup.jsReplica redundancy status, health, and recovery for your uploaded shards across independent pinning providers.
Four packages, all published and installable today.
ethers v6 is a peer dependency, install it alongside.
npm install @inaya-network/custody-sdk ethersUpload, staking, and file-management widgets, documented in a live Storybook.
npm install @inaya-network/reactinaya deploy <path> pins a static site to IPFS and submits it to the App Store in one command.
npm install -g inaya-cliA working app wired to the SDK, ready to run.
npx create-inaya-dapp my-appConsumer or prosumer tools where users own their encryption keys outright — nothing to trust Inaya, or you, with.
The Metadata and Payments clients are the same primitives Inaya's own Business Workspace is built on — rename/move/share, invoicing, corporate reserve billing.
Anchor large media to a real chain without paying full on-chain storage cost — the sharding + IPFS pinning layer is designed for exactly this.
Ship a static site, deploy it with inaya-cli, and it's reviewed and listed in Inaya's Web3 App Store — a distribution channel that ships with the SDK.
This page (and every page on this site) is identified by a build ID tied to the exact git commit and custody-sdk version it was built from — not a random ID that tells you nothing. Same encryption code path as mobile, since the client-side crypto consolidation described below.
What this does and doesn't guarantee, how to reproduce a release yourself, and what content-addressed delivery means here — see docs/reproducible-builds-and-verification.md in this app's repository, and custody-sdk's own release-verification guide for the SDK package specifically.
Install the SDK, scaffold a project, or browse the source — everything above is live and public today.