Kryard vs Turnkey
TL;DR — Kryard is a Turnkey-wire-compatible signer plus a managed EIP-7702 relay. You migrate the signing side with a single TURNKEY_BASE_URL swap (zero client changes), and you gain gasless, sponsored transactions where users can pay gas in any ERC-20 token — something Turnkey's signer doesn't bundle. Kryard's SDK, signer, and CLI are open source. The trade-off: Kryard is newer (live on testnets), where Turnkey is a mature, production platform with broader auth (passkeys, OAuth, OTP) and sub-organizations.
At a glance
| Kryard | Turnkey | |
|---|---|---|
| EVM secp256k1 signing | ✅ Wire-identical API (paths, activity envelope, X-Stamp auth) | ✅ The original API |
| Migration effort | One env-var swap (TURNKEY_BASE_URL), no client changes | — |
| Key custody | KMS envelope encryption; the API never decrypts; keys never leave an isolated signer | HSM/secure-enclave key management |
| Managed EIP-7702 relay (sponsored, gasless, batched execution) | ✅ Built in — no 4337 bundler | ❌ Not a relay/paymaster |
| Pay gas in any ERC-20 | ✅ On-chain KryardDelegate reimburses an exact, user-signed fee | ❌ |
| Auth methods | API key (X-Stamp) + device/session JWT; passkeys/OAuth/OTP on the roadmap | Passkeys, OAuth, OTP, email — mature |
| Sub-organizations | Organizations + projects | Mature sub-org model |
| SDK / signer / CLI | Open source (@kryard/sdk, MIT X-Stamp signer, kryard CLI) | Proprietary SDK |
| Maturity | Live on testnets (Sepolia + Base/Arbitrum/Optimism/Polygon/BSC testnets) | Production, mainnet, broad adoption |
When Kryard is the better fit
- You want gasless UX, not just signing. Kryard is a signer and a managed relay: a user signs a 7702 authorization + a batch digest, and Kryard signs, fronts gas, and broadcasts the type-4 transaction. Smart-wallet UX with no ERC-4337 bundler to run. See Gasless transactions, explained.
- You want users to pay gas in a token they already hold (USDC, your app token). Kryard settles gas in any ERC-20 via an exact, user-signed fee that can't be inflated. See Pay gas in any token.
- You're already on Turnkey and want the relay without a rewrite. Keep your Turnkey client; swap the base URL for the signing calls and add the relay SDK for sponsorship. See Turnkey compatibility.
- You value open, self-hostable infrastructure. The SDK, the X-Stamp signer, the reference 7702 delegate, and the CLI are open source.
When Turnkey is the better fit today
- You need production/mainnet guarantees and a track record right now. Kryard is proven end-to-end on testnets; mainnet is gated behind a hardening milestone.
- You need rich end-user auth out of the box (passkeys, OAuth, OTP, email) — that is Kryard's roadmap, not its current surface for the public tier.
- You rely on Turnkey's mature sub-organization model at scale.
We keep this page honest: match the wire, don't overclaim status. If a row here is out of date, it's a bug — the source of truth is the docs and the public repos.
Migrate the signing side in one line
- TURNKEY_BASE_URL=https://api.turnkey.com
+ TURNKEY_BASE_URL=https://api.kryard.comNo client code changes: the public API is Turnkey-shaped (same endpoint paths, the nested activity.result.<type>Result envelope, X-Stamp auth). Full details: Turnkey compatibility.
Add gasless transactions
import { KryardRelayClient, createApiKeyStamper } from "@kryard/sdk";
const client = new KryardRelayClient({
baseUrl: "https://api.kryard.com",
organizationId: process.env.KRYARD_ORG!,
stamper: createApiKeyStamper({
apiPublicKey: process.env.KRYARD_API_PUBLIC_KEY!,
apiPrivateKey: process.env.KRYARD_API_PRIVATE_KEY!,
}),
});
// The user signs a 7702 authorization + batch digest; Kryard fronts gas and
// broadcasts the type-4 transaction.Start with the Quickstart, or read 7702 vs 4337 to see why Kryard needs no bundler.