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

# Sei Wallet Providers Guide

> Comprehensive guide to Sei Wallet Providers Guide on Sei. Learn key concepts, commands, and best practices.

export const EcosystemAppGrid = props => {
  const category = props.category;
  const ECOSYSTEM_API_URL = 'https://app-api.seinetwork.io/sanity/ecosystem';
  const integrationGuideOverrides = {
    'The Graph': '/evm/indexer-providers/the-graph',
    Covalent: '/evm/indexer-providers/goldrush',
    Goldsky: '/evm/indexer-providers/goldsky',
    Alchemy: '/evm/indexer-providers/alchemy'
  };
  const [isDark, setIsDark] = useState(false);
  useEffect(() => {
    const el = document.documentElement;
    const update = () => setIsDark(el.classList.contains('dark'));
    update();
    const obs = new MutationObserver(update);
    obs.observe(el, {
      attributes: true,
      attributeFilter: ['class']
    });
    return () => obs.disconnect();
  }, []);
  const [data, setData] = useState([]);
  const [isLoading, setIsLoading] = useState(true);
  const [hasError, setHasError] = useState(false);
  useEffect(() => {
    let cancelled = false;
    fetch(ECOSYSTEM_API_URL, {
      headers: {
        Accept: 'application/json'
      }
    }).then(res => {
      if (!res.ok) throw new Error(`HTTP ${res.status}`);
      return res.json();
    }).then(json => {
      if (cancelled) return;
      setData(Array.isArray(json && json.data) ? json.data : []);
      setIsLoading(false);
    }).catch(() => {
      if (cancelled) return;
      setHasError(true);
      setIsLoading(false);
    });
    return () => {
      cancelled = true;
    };
  }, []);
  const WorldIcon = ({size = 24, style}) => <svg xmlns="http://www.w3.org/2000/svg" width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" style={style} aria-hidden="true">
			<circle cx="12" cy="12" r="9" />
			<path d="M3 12h18" />
			<path d="M12 3a14 14 0 0 1 0 18a14 14 0 0 1 0-18" />
		</svg>;
  const ExternalLinkIcon = ({size = 14, style}) => <svg xmlns="http://www.w3.org/2000/svg" width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" style={style} aria-hidden="true">
			<path d="M15 3h6v6" />
			<path d="M10 14L21 3" />
			<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
		</svg>;
  const ArrowRightIcon = ({size = 14, style}) => <svg xmlns="http://www.w3.org/2000/svg" width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" style={style} aria-hidden="true">
			<path d="M5 12h14" />
			<path d="M12 5l7 7-7 7" />
		</svg>;
  const AppCardSkeleton = () => <div className="animate-pulse border backdrop-blur-sm bg-neutral-50/80 dark:bg-neutral-900/80 border-neutral-200/50 dark:border-neutral-800/50 p-5 h-full flex flex-col">
			<div className="flex flex-col gap-4">
				<div className="w-12 h-12 bg-neutral-200 dark:bg-neutral-800 rounded" />
				<div className="flex flex-col gap-2">
					<div className="h-5 w-32 bg-neutral-200 dark:bg-neutral-800 rounded" />
					<div className="h-4 w-full bg-neutral-200/70 dark:bg-neutral-800/70 rounded" />
					<div className="h-4 w-2/3 bg-neutral-200/70 dark:bg-neutral-800/70 rounded" />
				</div>
				<div className="h-4 w-28 bg-neutral-200/50 dark:bg-neutral-800/50 rounded mt-auto pt-2" />
			</div>
		</div>;
  const [AppCard] = useState(() => ({app, isDark}) => {
    const [hover, setHover] = useState(false);
    const [linkHover, setLinkHover] = useState(false);
    const fieldData = app.fieldData;
    const appName = fieldData.name;
    const logo = fieldData.logo;
    const desc = fieldData['short-description'];
    const integration = fieldData['integration-guide-link'];
    const logoUrl = logo && logo.url;
    if (!logoUrl) return null;
    const finalIntegrationLink = integrationGuideOverrides[appName] || integration;
    const isExternalLink = finalIntegrationLink && !finalIntegrationLink.startsWith('/');
    const linkText = isExternalLink ? 'Documentation' : 'Integration Guide';
    const resolvedLink = finalIntegrationLink ? finalIntegrationLink : undefined;
    const titleColor = hover ? isDark ? 'var(--sei-maroon-25)' : 'var(--sei-maroon-200)' : undefined;
    const linkColor = isDark ? linkHover ? 'var(--sei-cream)' : 'var(--sei-maroon-25)' : 'var(--sei-maroon-200)';
    const maroonRgb = isDark ? '96, 0, 20' : '52, 5, 13';
    const decorativeGradient = `linear-gradient(to right, rgba(${maroonRgb}, 0.15), rgba(${maroonRgb}, 0.1), rgba(${maroonRgb}, 0.15))`;
    const logoTileBg = hover ? `rgba(${maroonRgb}, ${isDark ? 0.2 : 0.1})` : undefined;
    return <div onMouseEnter={() => setHover(true)} onMouseLeave={() => setHover(false)} className="group relative overflow-hidden transition-all duration-300 ease-out transform-gpu will-change-transform hover:scale-[1.02] hover:shadow-xl hover:shadow-black/10 dark:hover:shadow-black/30 border backdrop-blur-sm bg-neutral-50/80 dark:bg-neutral-900/80 border-neutral-200/50 dark:border-neutral-800/50 hover:bg-white dark:hover:bg-neutral-900 hover:border-neutral-300 dark:hover:border-neutral-700 p-5 h-full flex flex-col">
				{}
				<div className="absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity duration-500 bg-gradient-to-br from-white/10 via-transparent to-transparent dark:from-white/5 dark:via-transparent dark:to-transparent pointer-events-none" />

				{}
				<div className="absolute inset-0 transition-all duration-700 blur-sm -z-10 transform scale-105 pointer-events-none" style={{
      background: decorativeGradient,
      opacity: hover ? 1 : 0
    }} />

				<div className="flex flex-col gap-4 relative z-10">
					<div className="flex items-start justify-between">
						<figure className="w-12 h-12 overflow-hidden flex-shrink-0 bg-neutral-200/50 dark:bg-neutral-800/50 transition-all duration-300 group-hover:scale-110 group-hover:rotate-3 flex items-center justify-center" style={{
      backgroundColor: logoTileBg
    }}>
							{logoUrl ? <img src={logoUrl} alt={appName || ''} width={48} height={48} className="object-cover w-full h-full transform transition-all duration-300 group-hover:scale-110" /> : <WorldIcon size={24} style={{
      color: hover ? 'var(--sei-maroon-100)' : '#737373',
      transition: 'color 0.3s'
    }} />}
						</figure>
					</div>

					<div className="flex flex-col gap-2 flex-grow">
						<h3 className="text-base font-bold text-neutral-800 dark:text-neutral-200 transition-colors duration-300 leading-tight" style={{
      color: titleColor
    }}>
							{appName}
						</h3>
						{desc && <p className="text-sm text-neutral-600 dark:text-neutral-400 leading-relaxed line-clamp-2 flex-grow">{desc}</p>}
					</div>

					{resolvedLink && <div className="flex items-center mt-auto pt-2">
							<a href={resolvedLink} target={isExternalLink ? '_blank' : undefined} rel={isExternalLink ? 'noopener noreferrer' : undefined} onMouseEnter={() => setLinkHover(true)} onMouseLeave={() => setLinkHover(false)} style={{
      color: linkColor,
      transition: 'color 0.2s'
    }} className="inline-flex items-center gap-1.5 text-sm font-medium no-underline">
								<span>{linkText}</span>
								{isExternalLink ? <ExternalLinkIcon size={14} style={{
      marginLeft: linkHover ? '0.25rem' : 0,
      transform: linkHover ? 'scale(1.1)' : 'none',
      transition: 'all 0.3s'
    }} /> : <ArrowRightIcon size={14} style={{
      transform: linkHover ? 'translateX(0.25rem)' : 'none',
      transition: 'transform 0.3s'
    }} />}
							</a>
						</div>}

					{}
					<div className="w-full h-0.5 transition-opacity duration-300" style={{
      background: `linear-gradient(to right, transparent, rgba(${maroonRgb}, 0.2), transparent)`,
      opacity: hover ? 1 : 0
    }} />
				</div>
			</div>;
  });
  if (isLoading) {
    return <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6 py-2">
				{Array.from({
      length: 4
    }).map((_, i) => <AppCardSkeleton key={`skeleton-${i}`} />)}
			</div>;
  }
  if (hasError) {
    return <div className="py-10 text-sm text-neutral-500 dark:text-neutral-400 italic">
				Couldn’t load {category} integrations right now. Please refresh to try again.
			</div>;
  }
  const apps = data.filter(app => app && app.fieldData && app.fieldData['docs-category'] === category);
  if (!apps || apps.length === 0) {
    return <div className="py-10 text-sm text-neutral-500 dark:text-neutral-400 italic">No {category} integrations published yet.</div>;
  }
  return <div className="sei-eco-grid grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6 py-2">
			{apps.map(app => <AppCard key={app.id} app={app} isDark={isDark} />)}
		</div>;
};

Wallets are essential for managing assets and interacting with the Sei
blockchain. There are various types of wallets available, each offering
different features and levels of security.

<Warning>Manually importing your wallet using a mnemonic from an EVM-only wallet app to a Cosmos-based wallet app, or vice versa, is not recommended. This may generate unexpected wallet addresses due to differing [Coin Types](https://en.bitcoin.it/wiki/BIP_0044#Coin_type).</Warning>

## Types of Wallets

1. **Software Wallets**: These are applications or browser extensions that
   manage private keys and interact with the blockchain. They are easy to use
   and accessible on both desktop and mobile devices.
2. **Hardware Wallets**: These are physical devices that securely store private
   keys offline. They provide enhanced security but are less convenient for
   frequent transactions.
3. **Passkey-based Wallets**: These wallets use passkeys for authentication
   instead of traditional seed phrases, offering an additional layer of
   security.

## Recommended Wallets

| Wallet         | EVM | Auth Method                       | Coin Type | Type     | Mobile | Link                                                                                                   |
| -------------- | --- | --------------------------------- | --------- | -------- | ------ | ------------------------------------------------------------------------------------------------------ |
| MetaMask 🦊    | ✅   | Mnemonic / Privkey                | 60        | Software | ✅      | [MetaMask](https://metamask.io/)                                                                       |
| Backpack 🎒    | ✅   | Mnemonic / Privkey                | 60        | Software | ✅      | [Backpack](https://backpack.app/)                                                                      |
| Binance Wallet | ✅   | MPC / Keyless                     | 60        | Software | ✅      | [Binance Wallet](https://www.binance.com/en/web3wallet)                                                |
| Dynamic        | ✅   | Any                               | All       | Embedded | ✅      | [Dynamic Wallet](https://dynamic.xyz)                                                                  |
| Privy          | ✅   | Email / Social / Passkey / Wallet | 60        | Embedded | ✅      | [Privy](https://privy.io)                                                                              |
| Rabby          | ✅   | Mnemonic / Priv/Passkey           | 60        | Software | ✅      | [Rabby Wallet](https://chromewebstore.google.com/detail/rabby-wallet/acmacodkjbdgmoleebolmdjonilkdbch) |
| OKX            | ✅   | Mnemonic / Privkey                | 118 / 60  | Software | ✅      | [OKX Wallet](https://web3.okx.com/wallet/sei-evm)                                                      |
| Gem Wallet     | ✅   | Mnemonic / Privkey                | 118 / 60  | Software | ✅      | [Gem Wallet](https://gemwallet.com/sei-wallet/)                                                        |

Wallets with coin type 118 use the Cosmos HD derivation path; the same key still maps to a unique EVM `0x...` address via Sei's address-association system.

For more information on coin types and hierarchical deterministic (HD) paths as
well as deriving wallet addresses properly, please refer to the
[Advanced Concepts on HD Path Coin Types](/learn/accounts#hd-paths-and-coin-types).

## Hardware Wallets

| Wallet  | EVM | Cosmos | Coin Type | Type     | Mobile | Link                                   |
| ------- | --- | ------ | --------- | -------- | ------ | -------------------------------------- |
| Ledger  | ✅   | ✅      | 118 / 60  | Hardware | ❌      | [Ledger](https://www.ledger.com/)      |
| Arculus | ✅   | ✅      | 118 / 60  | Hardware | ✅      | [Arculus](https://www.getarculus.com/) |

## Integration Guides

* [Pimlico Wallet](/evm/wallet-integrations/pimlico)
* [Particle Wallet](/evm/wallet-integrations/particle)

## All Wallets

<EcosystemAppGrid category="wallet" />
