Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.startale.com/llms.txt

Use this file to discover all available pages before exploring further.

The Startale AA SDK does not authenticate users itself. It accepts a signer and turns it into a smart account. Anything that produces a viem WalletClient, an EIP-1193 provider, a viem LocalAccount, or an ethers.Wallet qualifies as a signer, which means you can keep using whichever auth or wallet stack you already trust.
Source: StartaleGroup/scs-aa-sdk. For the full signer matrix, see Installation and setup.

Where the auth provider fits

The auth provider’s only job in this diagram is to produce the signer that goes into toStartaleSmartAccount. Everything downstream (bundler, paymaster, EntryPoint) is identical regardless of how the user logged in.

Why social login + AA is a good combination

Pain pointWhat AA + social login fixes
Users do not have native ETHSponsor gas via the SCS paymaster, or charge a stable token.
Seed phrase frictionThe auth provider derives keys from the social login; the smart account address is counterfactual.
Lost accessUse Social recovery so a guardian set can rotate the signer.
Repeated signature promptsIssue a Smart Session so scoped actions skip the prompt.

First-party integrations

Dynamic

Embedded wallets, social and email login, MPC and WebAuthn key custody. Exposes a viem WalletClient directly.

Privy

Email, OAuth, and external wallet login. Exposes an EIP-1193 provider you can wrap with createWalletClient.

Bring your own provider

Any provider that exposes one of the four signer shapes will work. The integration shape is always:
import { http } from "viem"
import { soneiumMinato } from "viem/chains"
import { toStartaleSmartAccount } from "@startale-scs/aa-sdk"

const account = await toStartaleSmartAccount({
  signer,                     // from your auth provider
  chain: soneiumMinato,
  transport: http(),
  index: 0n,
})
If your auth provider only gives you an EIP-1193 provider, wrap it with viem before passing it in:
import { createWalletClient, custom } from "viem"
import { soneiumMinato } from "viem/chains"

const signer = createWalletClient({
  account: connectedAddress as `0x${string}`,
  chain: soneiumMinato,
  transport: custom(provider), // any EIP-1193 provider
})
SymbolSourceRole
createWalletClient / customviemWrap an EIP-1193 provider as a viem WalletClient.
soneiumMinatoviem/chainsSoneium Minato chain definition.
toStartaleSmartAccount@startale-scs/aa-sdkBuild the modular smart account from the signer.

Next steps

Dynamic integration

End-to-end Dynamic + Startale AA SDK setup.

Privy integration

End-to-end Privy + Startale AA SDK setup.

Installation and setup

The full signer matrix and how to choose between options.

Smart account setup

Wire the signer into a persisted React provider.