Skip to main content

Overview

Turnkey provides secure key management infrastructure that enables you to create and manage signing keys for your users. This guide shows you how to integrate Turnkey signers with Rhinestone smart accounts for secure, non-custodial wallet experiences. How it works: Unlike Privy and Dynamic, Turnkey operates at a lower level. You create a viem-compatible account using @turnkey/viem, then pass that account to Rhinestone. Turnkey handles the secure key management while Rhinestone adds cross-chain capabilities.

Prerequisites

  • A Turnkey account and organization
  • Turnkey API credentials (API public/private key pair)
  • Your organization ID from Turnkey
1

Install Dependencies

Install the required dependencies:
2

Create a Signer Wallet

Using the Turnkey dashboard or API, create a new Ethereum (EVM) wallet. This wallet will be the owner of the Rhinestone smart account.
  1. Log into your Turnkey dashboard
  2. Navigate to the Wallets section
  3. Create a new Ethereum wallet
  4. Note the wallet address for the next step
3

Create a Turnkey Signer

Use @turnkey/viem to create a viem-compatible account backed by Turnkey’s signing infrastructure:
The createAccount function from @turnkey/viem returns a full viem LocalAccount with signMessage, signTransaction, and signTypedData already implemented.
4

Initialize Rhinestone Account

Create a new Rhinestone account using the Turnkey signer. This is the same pattern as with other providers - pass the signer to Rhinestone, and it wraps it with cross-chain functionality:

Usage

Send a Cross-chain Transaction

The Rhinestone account will automatically use the Turnkey signer for all transactions:
Don’t forget to fund the account before making any transactions.

Environment Variables

Make sure to set the following environment variables:

Next Steps