SOLAI is a non-custodial Solana browser wallet built as a Chrome Extension. It combines a clean, minimal UI with an AI-powered command interface, privacy-preserving stealth addresses, Ledger hardware wallet support, and programmable agent wallets — making on-chain actions as simple as typing a sentence, and enabling fully automated machine-to-machine payments.
Crypto wallets are built for power users. They expect you to understand gas fees, addresses, slippage, and transaction types. SOLAI removes that friction by wrapping everything in natural language and smart defaults — and goes a step further by letting AI agents pay on your behalf, within strict programmatic guardrails you define.
| Layer | Technology |
|---|---|
| Runtime | Chrome Extension (Manifest V3) |
| Frontend | React 18 + TypeScript |
| Styling | Tailwind CSS + Framer Motion |
| Blockchain | Solana (@solana/web3.js) |
| Key Derivation | BIP39 + BIP44 HD (ed25519-hd-key) |
| Cryptography | TweetNaCl, AES-256-GCM (Web Crypto API) |
| Hardware Wallet | Ledger via WebHID (@ledgerhq/hw-transport-webhid) |
| Swap | Jupiter Aggregator API |
| AI | OpenRouter API (model-agnostic) |
| Price Data | CoinGecko API |
| Storage | chrome.storage.local (encrypted) + chrome.storage.session (keys) |
| Build | Vite |
MV3 Service Worker statelessness — Chrome MV3 service workers can be killed and restarted at any time. All state that needs to survive (wallet sessions, pending sign requests, agent keypairs) lives in chrome.storage.session rather than in-memory, so it survives SW restarts automatically.
Per-install encrypted storage — Every value written to chrome.storage.local is AES-256-GCM encrypted with a random 256-bit key generated on first install. The key is unique per browser installation — the source code no longer contains a hardcoded key. Existing data is migrated transparently on first read.
Session keys — Decrypted keypairs are held only in chrome.storage.session with a 30-minute TTL. When the session expires or the user locks, keys are zeroed in memory and removed from session. The wallet auto-locks.
HD key namespace — One mnemonic, three isolated address spaces:
| Index range | Purpose |
|---|---|
| 0 | Main wallet |
| 1 – 999 | Stealth addresses |
| 1000+ | Agent wallets |
Sign approval popup — All dApp signing requests (signMessage, signTransaction, signAndSendTransaction) open a dedicated confirmation popup. The extension never auto-signs for dApps. Agent wallets are the only exception — they sign automatically within guardrail limits enforced in the service worker.