Ship Authentication & Embedded Wallets in Minutes
Complete authentication and self-custodial wallet infrastructure. Spin up embedded wallets, sign transactions, and authenticate users across every chain—through one powerful SDK.
Production-ready in under 15 minutes
import MoonKeyProvider from '@moon-key/react' <MoonKeyProvider publishableKey="pk_..." />
Wallet Created
Self-custodial Ethereum wallet provisioned
Sign in to continue
Choose your preferred method
Secured by MoonKey
Self-Custodial by Design
Distributed key sharding ensures users maintain full control of their assets. Keys are never stored in a single location.
Developer-First SDK
From React hooks to REST APIs, MoonKey adapts to your stack. Pre-built components or full customization—you choose.
Built for Production
One platform for authentication, wallets, and transactions. Scale from prototype to millions of users on battle-tested infrastructure.
import { useState } from 'react';
import { useLoginWithEmail } from '@moon-key/react-auth';
export default function EmailLogin() {
const [email, setEmail] = useState('');
const [otp, setOtp] = useState('');
const [codeSent, setCodeSent] = useState(false);
const { sendCode, loginWithCode, state } = useLoginWithEmail();
if (!codeSent) {
return (
<div>
<input
type="email"
placeholder="Enter your email"
value={email}
onChange={(e) => setEmail(e.target.value)}
/>
<button
onClick={() => sendCode({ email }).then(() => setCodeSent(true))}
disabled={!email || state === 'sending'}
>
Send Code
</button>
</div>
);
}
return (
<div>
<input
type="text"
placeholder="Enter 6-digit code"
value={otp}
onChange={(e) => setOtp(e.target.value)}
maxLength={6}
/>
<button
onClick={() => loginWithCode({ code: otp })}
disabled={otp.length !== 6}
>
Verify & Login
</button>
</div>
);
}Features
OTP Authentication
Passwordless authentication with one-time passcodes for secure and seamless user experiences.
Learn more →OAuth & Social Logins
Support for Google, Microsoft, Apple, GitHub, Discord, LinkedIn, Twitter, and more.
Learn more →Web3 Login
Native support for Ethereum and Solana wallet connections with Web3 authentication.
Learn more →Wallet as a Service
Embedded wallets for users without managing private keys. Support for both user and platform wallets.
Learn more →Device & Biometrics
WebAuthn and TOTP support for secure, device-based authentication with biometric capabilities.
Learn more →Enterprise Ready
On-premise deployment, fraud detection, device fingerprinting, and session management.
Learn more →Security & Custody
Security & Custody
Built with security as the foundation. Distributed key management ensures users maintain full custody while eliminating single points of failure.
Distributed Key Sharding
Private keys are split into multiple shards distributed across secure locations. The complete key is only reconstituted in a secure environment when needed for signing.
- No single point of failure
- Keys never stored in one place
- Resistant to common attacks
User Control
Users have complete control over their wallets. Self-custodial by design, with the freedom to export keys and move assets at any time.
- Full ownership of assets
- Export keys anytime
- No platform lock-in
Secure Operations
All wallet operations follow security best practices with encrypted storage, secure transaction signing, and clear user confirmation flows.
- Encrypted key storage
- Secure signing environment
- Clear operation approvals
Start building today
Join thousands of developers building secure, self-custodial wallet experiences.