> ## 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.

# EOA

> Configure a plain EOA for Rhinestone intents without deploying a smart account.

Use `account.type: 'eoa'` when the signer address should also be the account address. The SDK does not derive or deploy a separate smart account.

This configuration is useful when users already hold assets at an EOA and you need intent execution without smart account features.

## Configure an EOA

Pass the viem account in `eoa`. You do not configure `owners` for a plain EOA.

```ts theme={null}
import { RhinestoneSDK } from '@rhinestone/sdk'
import { privateKeyToAccount } from 'viem/accounts'
import type { Hex } from 'viem'

const eoa = privateKeyToAccount(process.env.PRIVATE_KEY as Hex)

const rhinestone = new RhinestoneSDK({
  auth: {
    mode: 'apiKey',
    apiKey: process.env.RHINESTONE_API_KEY!,
  },
})

const account = await rhinestone.createAccount({
  account: { type: 'eoa' },
  eoa,
})
```

This example runs server-side. Keep both keys in a secret manager. If the EOA signer and SDK run in a browser, use short-lived JWTs as described in [security](/wallets/custom-signer/integration/security) instead of exposing an API key.

## Behavior and limitations

* `account.getAddress()` returns the EOA address.
* There is no account deployment or module setup.
* The EOA cannot use ERC-7579 modules, session keys, multisig ownership, or smart account recovery.
* Transactions still use Rhinestone's normal prepare, sign, and submit flow.

To preserve an EOA address while adding smart account capabilities, use [EIP-7702](/wallets/custom-signer/configuration/account-types/eip-7702). To create a separate modular account, choose a [smart account provider](/wallets/custom-signer/configuration/smart-account-providers).
