Quick Start
Install the SDK
npm install @rhinestone/1authGet a JWT signing key
Every user intent is authenticated with your app's JWT — there is no anonymous fallback. Create an app in the Rhinestone dashboard to generate a signing key, then expose two same-origin endpoints that mint the JWTs the SDK attaches to each intent. See Fee Sponsorship for the full server setup.
Initialize Client
import { OneAuthClient } from "@rhinestone/1auth";
const client = new OneAuthClient({
providerUrl: "https://passkey.1auth.app",
clientId: "my-app",
// Required for intents — points at the endpoints you created above.
sponsorship: {
accessTokenUrl: "/api/sponsorship/access-token",
extensionTokenUrl: "/api/sponsorship/extension-token",
},
});App-origin is the SDK default: the WebAuthn ceremony runs in your own page, and every distinct hostname gets its own passkey and smart account. See Choose your WebAuthn mode for what that selects and when to opt into the experimental cross-origin surface instead.
Send your first transaction
A sponsored intent needs nothing sourced from the user, so this runs on a brand-new account with a zero balance. Mint yourself 1 mUSD — a faucet token on Base Sepolia that anyone can mint — and the whole chain proves out at once: credentials, origin, passkey, orchestrator, sponsorship.
import { encodeFunctionData, parseAbi, parseUnits } from "viem";
const MUSD_BASE_SEPOLIA = "0x2f6fdE5E2AeAB6335d8f978B4d8B2a9c1129AcFb";
const auth = await client.authenticate();
if (!auth.success) throw new Error(auth.error.message);
const result = await client.sendIntent({
accountAddress: auth.session.accountAddress,
targetChain: 84532, // Base Sepolia
calls: [
{
to: MUSD_BASE_SEPOLIA,
data: encodeFunctionData({
abi: parseAbi(["function mint(address to, uint256 amount)"]),
functionName: "mint",
args: [auth.session.accountAddress, parseUnits("1", 6)],
}),
label: "Mint",
sublabel: "1 mUSD",
},
],
});
console.log(result.success ? result.intentId : result.error?.code);There is no tokenRequests here, which is why an empty account works — nothing
has to be sourced or bridged. Add tokenRequests once a target-chain call needs
tokens delivered to it first; see Crosschain, which starts
from the mUSD you just minted.
Next Steps
Drop-in components like PayButton and BatchQueue. No viem or wagmi required.
Viem / WagmiUse createPasskeyWalletClient for viem-compatible signing in existing web3 apps.
References
- API Reference - Full SDK documentation
- RPC Reference - EIP-1193 provider methods
- npm - Install the SDK package
- Example App - Reference integration