Chain agnostic · Passkey native

Passkey wallet & payment infrastructure
for any app, human or agent.

Self-custody wallets in 5 seconds. One identity across every chain. Drop-in USDC checkout that works for users and AI agents.

Why Oviato

Seamless onboarding that feels like magic. Your users deserve it.

Passkey Native

Passkey Native

Wallets created in seconds using hardware-secured keys. No mnemonic phrases, no backups, no user error.

Chain agnostic

Chain Agnostic

Bitcoin, EVM & more. SDK works across Bitcoin, EVM, Solana, and more. Connect any ecosystem without rewriting your stack. No code changes.

Agentic Payments

Agentic Payments

x402 + ERC-3009 baked into every wallet. Drop-in USDC checkout that works for users and AI agents on the same rail.

Secure wallets in just 5 seconds

Every Oviato wallet is tied to a passkey - a cryptographic credential stored safely inside your device. When a user signs in with Face ID, a new deterministic keypair is created instantly. No recovery phrases, no risk of loss.

Try it Live

No passwords, no seed phrases, And yet secure

Oviato replaces outdated seed phrases with passkeys that live inside trusted device-level managers like iCloud Keychain, Google Password Manager, or hardware security modules. Recovery is automatic. Encryption is handled by the operating system itself. You never see the keys, and neither do we - making your wallet setup both simpler and more secure than ever.

Hello World in 100 Seconds

From “npm install” to a working wallet faster than you can open a faucet.

View Docs
ConnectButton
signMessage
1import {
2  ConnectButton,
3  useOviConnect,
4} from "@oviato/connect/client";
5
6export default function App() {
7  const { session } = useOviConnect();
8
9  if (!session) {
10    return <ConnectButton text="Connect Wallet" />;
11  }
12  return <p>Connected: {session.address}</p>;
13}

New · Agentic Payments

x402 · ERC-3009

Pay-per-request, native to HTTP.
For humans and agents.

x402 reactivates the long-reserved HTTP 402 status code. A server returns 402 Payment Required with the price and asset; the client signs an EIP-712 authorization, retries, and gets the resource. No accounts, no API keys, no checkout redirect — just a payment baked into the request itself.

server.ts
Live · Base
One line of middleware
import { paymentMiddleware } from "@oviato/x402-express";

app.use(paymentMiddleware({
  price:    "$0.01",
  asset:    "USDC",
  network:  "base",
  payTo:    "0x742d…f0bEb",
}));

app.get("/api/premium-data", (req, res) => {
  res.json({ report: "…" });
});
agent ~ x402 trace
Streaming
$curl -i https://api.example.com/premium-data \
-H "PAYMENT-SIGNATURE: $(ovi sign --max 0.01)"
→ wallet signed EIP-712 authorization
< HTTP/1.1 200 OK
< PAYMENT-RESPONSE: { success:true, tx:0x9c…ab, settled:1.4s }
< { "report": "…premium data…" }
✓ paid 0.01 USDC · gasless · ~1.4s
$
One line of middleware
Wrap any Express, Next, or Hono route. Unpaid requests get 402; paid requests get the resource. No accounts, no API keys, no checkout flow.
Gasless USDC settlement
ERC-3009 transfer-with-authorization on Base. The user signs once with Face ID; the facilitator pays gas, broadcasts, and confirms in ~1.5 seconds.
Humans + agents, same rail
Users sign spending policies. Agents call paid APIs within them — pay-per-request, no API keys, no subscription glue. The 402 spec was waiting for this.

One ID. Every chain

Your user’s Ovi ID works everywhere. It’s a single, chain-agnostic identity that lets them sign into any app across Bitcoin, EVM, No bridging, no key duplication, no confusion. Users keep control of their identity and assets across every ecosystem - all with one simple passkey.

Learn more

Experience passwordless onboarding now

Try our live demo and experience what passwordless, seed phrase-free onboarding feels like.
Customize it, integrate it, and deploy your own version in minutes.

Backed by

Draper AssociatesBoost VCBitcoin Frontier FundCoinGecko VenturesEtherscan