Signing & Transactions

One signer for
every wallet action.

EVM messages, typed data, transactions, userOps and Solana payloads route through the same authenticated, policy-checked path.

sign.ts
import { useSignTypedData }
  from '@kevo-ws/sdk/react'

const { signTypedData, isLoading }
  = useSignTypedData()

const sig = await signTypedData(
  JSON.parse(typedDataJson),
)
Kevo eip712Image card

Typed data, made first-class.

Pass EIP-712 domains and messages directly. Kevo applies auth and policy checks, then returns a standard signature for your app or contracts.

  • EIP-712 typed data
  • Policy-checked before signing
  • Works with viem, ethers, wagmi
Read signing docs
sign.ts
import { sendTransaction }
  from '@kevo-ws/sdk'

const txHash = await sendTransaction({
  to: '0xRecipient...',
  value: '0x2386f26fc10000',
  chainId: 8453,
})

Send transactions without the popup.

Sign and broadcast in one call, or split signing from submission for relayed flows. Smart-account aware, with optional gas sponsorship.

  • EOA and userOp transactions
  • Sponsored gas, when configured
  • Signed transactions and userOps
See examples
sign.ts
import { useSignTypedData }
  from '@kevo-ws/sdk/react'

const { signTypedData, isLoading }
  = useSignTypedData()

const sig = await signTypedData(
  JSON.parse(typedDataJson),
)

A single SDK across stacks.

Use the React hooks for client flows, or call the admin API from your backend. Same user, same wallets, same policies — both sides of the wire.

  • React hooks and vanilla JS client
  • Server SDK with admin signing
  • Identical policy enforcement
Browse the API

One signer

Less wallet UX. More product.

Stop juggling popups, gas dialogs and chain switches. Kevo gives you signing primitives that just work.