Functor Agentic Wallet
Functor Agentic Wallet enables a global registry of permissions on-chain, accessible by any agent.
Traditional agentic wallets store permissions locally or in centralized servers. Functor's Keystore infrastructure makes composable permissions accessible across any chain and any wallet, enabling:
- Agent-to-agent verification. Two AIs acting on the same wallet can verify each other's authority on-chain. No platform in between.
- Cross-app authorization. Any DEX, orderbook, or protocol can read whether an agent is authorized, without integrating with the specific wallet vendor.
- A new class of agent services. Users hire AI agents through on-chain employment contracts. Anyone can verify what an agent is allowed to do, and revoke is one transaction.
Install
npm install @functornetwork/agentic-wallet viemTwo ways to create a wallet
Same smart account underneath, different signer.
For end-user apps (browser): Passkey wallet, secured by Face ID or Touch ID. No seed phrase, no extension.
import { createPasskeyWallet } from "@functornetwork/agentic-wallet";
const wallet = await createPasskeyWallet({
rpId: "myapp.example",
user: { name: "alice@example.com", displayName: "Alice" },
});For agents and scripts: Private-key wallet. Bring your own key from env, OS keychain, or hardware wallet.
import { createWallet, signerFromPrivateKey } from "@functornetwork/agentic-wallet";
const signer = signerFromPrivateKey(process.env.PRIVATE_KEY as `0x${string}`);
const wallet = await createWallet({ signer });Both return the same Wallet handle. Every other SDK function works with either.
Grant a scoped session
import { grantSession, execute } from "@functornetwork/agentic-wallet";
const session = await grantSession(wallet, wallet.signer, {
permissions: {
calls: [{ to: "0xUniswapRouter..." }],
spend: [{ limit: 100_000_000n, period: "day", token: "0xUSDC..." }],
},
expiry: Math.floor(Date.now() / 1000) + 7 * 24 * 60 * 60,
});
// The agent uses the session directly. Admin not involved.
await execute(session, [
{ to: "0xUniswapRouter...", data: "0x...", value: 0n },
]);The session is on-chain in Keystore the moment grantSession confirms. Any tool can verify the authorization without going through Functor.
What's next
- Passkey wallet quickstart
- Private-key wallet quickstart
- How Functor is different
- Keystore, the registry that makes this work
- SDK reference, one page per function