skills/openfort-cli/SKILL.md
Openfort CLI skill — use for all openfort command-line operations including login, wallet management, transactions, policies, and configuration. This skill provides CLI command help and executes openfort commands directly. For embedded wallets (client-side), use the openfort-embedded-wallet skill. For backend wallet server operations, use the openfort-backend-wallet skill. Trigger on: "openfort CLI", "openfort login", "openfort accounts", "openfort transactions", or any openfort command-line operation.
npx skillsauth add openfort-xyz/agent-skills openfortInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are helping a user work with Openfort — a blockchain wallet infrastructure platform that supports embedded wallets, global wallets, backend wallets, and on-chain infrastructure (bundler + paymaster) for both EVM and Solana chains.
This guide gives you the conceptual model and workflow knowledge. For executing specific CLI commands, delegate to the individual openfort-* skills (e.g., /openfort-accounts-evm, /openfort-policies-create).
Openfort offers three wallet products:
| Wallet Type | Who Controls It | Use Case | |-------------|----------------|----------| | Embedded Wallet | End user (self-custodial) | Consumer apps, games — users own their keys with social login, passkeys, or passwords for recovery | | Global Wallet | End user (cross-app) | Ecosystem wallets shared across multiple apps via the Ecosystem SDK | | Backend Wallet | Developer (server-side) | Automation, AI agents, payroll, trading bots — developer signs with API keys |
The CLI primarily manages backend wallets. Embedded and global wallets are managed through the SDKs (React, React Native, Swift, Unity, JavaScript).
The account model has three levels, and understanding this hierarchy is critical:
EOA (Externally Owned Account)
└── created with: openfort accounts evm create
└── ID format: acc_...
└── A standard Ethereum key pair
Delegated Account (Smart Account via EIP-7702)
└── created with: openfort accounts evm update <eoa-id> --chainId <chain> --implementationType CaliburV9
└── Gets its own acc_... ID (different from the EOA)
└── Chain-specific — one delegation per chain
└── Enables account abstraction (gasless transactions)
└── On-chain delegation happens automatically on first transaction
Solana Account
└── created with: openfort accounts solana create
└── Separate key management from EVM
└── Supports SOL, USDC, and SPL token transfers
To enable gasless transactions, three resources must be configured:
Policy (ply_...)
└── Defines WHAT is allowed (e.g., "sponsor EVM transactions on chain 84532")
└── Has rules with criteria (chain IDs, contract addresses, operation types)
Sponsorship (pol_...)
└── Links a Policy to a payment strategy
└── Strategies: pay_for_user, charge_custom_tokens, fixed_rate
└── Chain-specific
Transaction
└── References the Sponsorship ID via --policy pol_...
└── Gas fees are covered according to the sponsorship strategy
There are two ways to send transactions:
Recommended: accounts evm send-transaction (one command does everything)
Advanced: Manual flow (when you need fine-grained control)
accounts evm updatetransactions create (returns a signableHash)accounts evm signtransactions signopenfort login — authenticate via browseropenfort backend-wallet setup — generate ECDSA P-256 signing keysopenfort accounts evm create — create your first walletopenfort accounts evm createopenfort contracts create --name "..." --address 0x... --chainId <chain>openfort policies create --scope project --rules '[{"action":"accept","operation":"sponsorEvmTransaction","criteria":[{"type":"evmNetwork","operator":"in","chainIds":[<chain>]}]}]'openfort sponsorship create --policyId ply_... --strategy pay_for_user --name "..." --chainId <chain>openfort accounts evm send-transaction acc_... --chainId <chain> --interactions '[{"to":"0x...","data":"0x...","value":"0"}]' --policy pol_...openfort transactions get <tin_id>openfort accounts solana createopenfort accounts solana transfer <id> --to <address> --amount <lamports> --cluster devnetopenfort accounts solana transfer <id> --to <address> --amount <amount> --token usdc --cluster mainnet-betaopenfort accounts solana transfer <id> --to <address> --amount <amount> --token <mint-address>openfort subscriptions create --topic transaction_intent.successful --triggers '[{"type":"webhook","target":"https://..."}]'transaction_intent.broadcast, transaction_intent.successful, transaction_intent.cancelled, transaction_intent.failed, balance.project, balance.contract, balance.dev_account, user.created, user.updated, user.deleted, account.created, testSession keys let users approve transactions for a limited time without repeated confirmations:
openfort sessions create --address 0x... --chainId <chain> --validAfter <unix> --validUntil <unix> --player pla_... --account acc_...openfort sessions sign <id> --signature 0x...openfort sessions revoke --address 0x... --chainId <chain> --player pla_...For embedded and global wallets, the user works with SDKs rather than the CLI:
| Platform | SDK | Key Features |
|----------|-----|--------------|
| React | @openfort/openfort-react | Hooks: useEmailAuth, useOAuth, useEthereumEmbeddedWallet, useSolanaEmbeddedWallet |
| React Native | @openfort/openfort-react-native | Mobile hooks with passkey/password recovery |
| JavaScript | @openfort/openfort-js | Vanilla JS, works with Wagmi/Viem/Ethers |
| Swift | OpenfortSDK | Native iOS with Apple Sign-In, passkeys |
| Unity | OpenfortSDK | Cross-platform game integration |
| Global Wallet | @openfort/ecosystem-js | Ecosystem SDK for cross-app wallets |
Openfort supports multiple EVM chains and Solana. Common chain IDs:
--cluster mainnet-beta or --cluster devnetUnderstanding ID prefixes helps navigate the system:
acc_ — Account (wallet)ply_ — Policypol_ — Sponsorship (fee policy)con_ — Contracttin_ — Transaction intentpla_ — Player (user)pro_ — Projectses_ — Sessionsub_ — SubscriptionStored at ~/.config/openfort/credentials (or $XDG_CONFIG_HOME/openfort/credentials).
| Variable | Description |
|----------|-------------|
| OPENFORT_API_KEY | Secret API key |
| OPENFORT_WALLET_SECRET | Wallet encryption secret |
| OPENFORT_PUBLISHABLE_KEY | Publishable key for client-side |
| OPENFORT_BASE_URL | Custom API base URL |
--format <toon|json|yaml|md|jsonl>, --filter-output <keys>, --verbose, --schema
For detailed documentation on specific topics, refer users to:
Point users to these when they're building specific integrations:
tools
Always use this skill when the user wants to explore Openfort documentation, browse SDK source code, or use Openfort MCP tools. This is the general-purpose Openfort platform skill — use it for documentation lookup, source code navigation, and CLI operations. For building with embedded wallets, use the openfort-embedded-wallet skill. For backend wallets, use the openfort-backend-wallets skill. Trigger on: "Openfort docs", "search Openfort", "Openfort source code", "openfort CLI", "MCP tools", "Openfort SDK source", or general Openfort platform questions.
tools
Always use this skill when the user asks about embedded wallets, client-side wallets, user-facing wallets, wallet integration in React/React Native/Swift/Unity/JS apps, or non-custodial wallets with Openfort. Covers all client SDKs. Trigger on: "embedded wallet", "client wallet", "user wallet", "@openfort/react", "@openfort/react-native", "OpenfortSwift", "openfort-csharp-unity", "@openfort/openfort-js", "OpenfortProvider", "OpenfortButton", "wallet setup", "wallet integration", "passkey recovery", "gasless transaction client", "auth modal", or any client-side wallet operation with Openfort.
development
Create and operate Openfort backend wallets (developer custody) for EVM and Solana from server-side code. Use this skill whenever: creating backend wallets, sending transactions from server, importing/exporting private keys with RSA encryption, signing data/messages/typed-data server-side, EIP-7702 delegation, Solana transfers (SOL/SPL/USDC), gasless transactions, fee sponsorship, policy engine rules, wallet secret auth, webhooks, or operating wallets programmatically without user interaction. Trigger on: "backend wallet", "developer custody", "server-side wallet", "walletSecret", "sendTransaction from backend", "import private key", "export private key", "EIP-7702", "Solana transfer server", "gasless", "fee sponsorship", "policy rules", "batch transactions", "sponsor gas", "webhook", or any server-side wallet operation with Openfort.
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.