Approve one bounded session — not every transaction.
The agent operates within scope, limits, and expiry.
// status
// how it works
Passkey-secured smart wallet. No seed phrases, no extensions. Just your fingerprint or Face ID.
Your agent determines what it needs — duration, scope, amount — and requests a session. It tells you, not the other way around.
Get a notification. Review the scope. Approve with your passkey. Takes 3 seconds.
Agent spends within the Session — swap, transfer, interact. No further approvals until the session expires.
// why session
Every single transaction requires your signature. Your agent can't act autonomously — it's just a UI wrapper around you.
You specify what the agent can do before it knows what it needs. Rigid, hard to configure, breaks on edge cases.
The agent understands its own task. It tells you exactly what it needs. You approve or deny. Then it acts freely within scope.
Every Session expires. Amount capped. Token scoped. Time-bounded. The session IS the security model.
// for developers
Pair your agent once. The session keypair stays server-side — your agent never handles keys.
// 1. Agent asks for a spending session via MCP
const { requestId } = await mcp.call("request_spending_session", {
durationSeconds: 3600, // 1 hour
limits: [
{ mint: "native", amount: 0.5, decimals: 9, symbol: "SOL" }
],
});
// 2. Human gets a push, approves with passkey on their phone.
// Poll until status === "approved".
await mcp.call("get_session_status", { requestId });
// 3. Agent spends within scope. Session key never leaves the server.
await mcp.call("submit_transfer", {
destination: "A1iceBobC4r0lD4ve…",
amountSol: 0.05,
});
Be the first to give your agent a Session.