> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rhinestone.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Choose a signer

> Choose how users authenticate and control their smart accounts.

Choose a signer based on where keys live, how users authenticate, and how many approvals a transaction requires.

## Native signers

Use native signers when you want direct control without an embedded wallet provider.

<CardGroup cols={2}>
  <Card title="ECDSA" icon="key" href="/wallets/custom-signer/account-setup/native-signers/ecdsa">
    Use standard Ethereum keys for server wallets, agents, existing wallet clients, and straightforward integrations.
  </Card>

  <Card title="Passkeys" icon="fingerprint" href="/wallets/custom-signer/account-setup/native-signers/passkeys">
    Use WebAuthn and device biometrics for consumer onboarding without seed phrases.
  </Card>

  <Card title="Multisig" icon="users" href="/wallets/custom-signer/account-setup/native-signers/multisig">
    Require a threshold of ECDSA signatures or passkey signatures for shared control.
  </Card>

  <Card title="Multi-factor authentication" icon="shield-check" href="/wallets/custom-signer/account-setup/native-signers/multi-factor-authentication">
    Combine different validator types, such as an ECDSA key and a passkey.
  </Card>
</CardGroup>

## Managed and external signers

* Choose an [embedded wallet signer](/wallets/custom-signer/account-setup/embedded-wallet-signers/privy) when users should sign in with email or social login and manage keys inside your app.
* Choose an [external wallet signer](/wallets/custom-signer/account-setup/external-wallet-signers) when users already have a browser or mobile wallet and expect to approve requests there.

<Note>
  A signer controls the account but is not the account itself. The signer address and smart account address are different unless you use an EOA or EIP-7702 account type.
</Note>
