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

# Smart account providers

> Choose which smart account implementation to use with the Rhinestone SDK.

By default, the Rhinestone SDK uses a Safe smart account. You can override this by passing an `account` field to `createAccount` with the `type` set to your preferred implementation.

<CodeGroup>
  ```ts Safe theme={null}
  const rhinestoneAccount = await rhinestone.createAccount({
    account: {
      type: 'safe',
    },
    owners: {
      type: 'ecdsa',
      accounts: [account],
    },
  })
  ```

  ```ts Nexus theme={null}
  const rhinestoneAccount = await rhinestone.createAccount({
    account: {
      type: 'nexus',
    },
    owners: {
      type: 'ecdsa',
      accounts: [account],
    },
  })
  ```

  ```ts Kernel theme={null}
  const rhinestoneAccount = await rhinestone.createAccount({
    account: {
      type: 'kernel',
    },
    owners: {
      type: 'ecdsa',
      accounts: [account],
    },
  })
  ```

  ```ts Startale theme={null}
  const rhinestoneAccount = await rhinestone.createAccount({
    account: {
      type: 'startale',
    },
    owners: {
      type: 'ecdsa',
      accounts: [account],
      module: '0x00000072f286204bb934ed49d8969e86f7dec7b1',
    },
  })
  ```
</CodeGroup>

The account type determines the smart contract implementation deployed for the user. All supported types are fully compatible with Rhinestone's intent infrastructure and ERC-7579 module ecosystem.

<Note>
  Need support for a different account implementation? [Open an issue](https://github.com/rhinestonewtf/sdk/issues) and we'll take a look.
</Note>
