A voice-controlled cryptocurrency wallet management platform powered by AI agents. VoiceVault enables users to manage their crypto portfolio, execute transactions, and interact with their wallet using natural language voice commands.
- Voice-Controlled Transactions: Execute crypto transactions using natural language voice commands
- AI Agent System: Multi-agent architecture for intelligent transaction processing
- Circle Wallet Integration: Secure wallet management via Circle's User Controlled Wallets API
- Portfolio Management: Real-time portfolio tracking and asset allocation visualization
- Risk Analysis: Automated risk assessment before transaction execution
- Security Validation: Multi-layer security checks for transaction safety
- Contact Management: Save and manage frequently used wallet addresses
- Transaction History: Complete audit trail of all transactions
- Frontend: Next.js 16, React 19, TypeScript, Tailwind CSS
- Backend: FastAPI (Python), OpenAI Agents Framework
- Blockchain: Circle User Controlled Wallets (ETH-SEPOLIA testnet)
- Database: MongoDB
- Voice: ElevenLabs Speech-to-Text & Text-to-Speech
- AI: OpenAI GPT-4o-mini for agent orchestration
VoiceVault follows a multi-agent architecture where specialized AI agents work together to process voice commands:
User Voice Command
β
ElevenLabs STT (Speech-to-Text)
β
Planner Agent (Intent Extraction)
β
Portfolio Manager Agent (Balance Check)
β
Risk Analyst Agent (Risk Assessment)
β
Security Validator Agent (Security Checks)
β
Executor Agent (Transaction Creation)
β
Circle Wallet API (PIN Confirmation)
β
Auditor Agent (Transaction Verification)
β
ElevenLabs TTS (Text-to-Speech Response)
voice-vault/
βββ app/ # Next.js frontend pages
β βββ page.tsx # Main dashboard
β βββ layout.tsx # App layout
β βββ globals.css # Global styles
βββ components/ # React components
β βββ voice-assistant.tsx
β βββ portfolio-overview.tsx
β βββ transaction-history.tsx
β βββ wallet-setup.tsx
β βββ ...
βββ backend/
β βββ api/
β β βββ main.py # FastAPI application (Vercel deployment)
β βββ main.py # FastAPI application (local)
β βββ Agents/ # AI Agent implementations
β β βββ planner.py
β β βββ executor.py
β β βββ risk_analyst.py
β β βββ security_validator.py
β β βββ portfolio_manager.py
β β βββ auditor.py
β βββ services/ # Core services
β β βββ agents_runner.py
β β βββ circle_wallet_service.py
β β βββ mongodb_service.py
β βββ tools/ # Agent tools
β β βββ agent_tools.py
β βββ utils/ # Utilities
β β βββ ElevenLabsSDK.py
β βββ models/ # Data models
β β βββ portfolio.py
β β βββ transaction.py
β βββ requirements.txt # Python dependencies
β βββ vercel.json # Vercel configuration
βββ README.md
- Node.js 18+ and npm
- Python 3.9+
- MongoDB (local or cloud instance)
- API Keys:
- OpenAI API Key
- ElevenLabs API Key
- Circle API Key
cd voice-vault
npm installcd voice-vault/backend
# Create virtual environment
python -m venv venv
# Activate virtual environment
# On macOS/Linux:
source venv/bin/activate
# On Windows:
venv\Scripts\activate
# Install dependencies
pip install -r requirements.txtCreate a .env file in the backend/ directory:
# Voice (ElevenLabs)
ELEVENLABS_API_KEY=your_elevenlabs_api_key
# AI Agents (OpenAI)
OPENAI_API_KEY=your_openai_api_key
# Blockchain (Circle)
CIRCLE_API_KEY=your_circle_api_key
# Database
MONGODB_URI=mongodb://localhost:27017/voicevault
# Or for MongoDB Atlas:
# MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/voicevault
# Frontend API URL
NEXT_PUBLIC_API_URL=http://localhost:8000
# For production:
# NEXT_PUBLIC_API_URL=https://your-api-domain.comThe application automatically creates the following collections:
transactions- Transaction historyportfolios- User portfolio dataaudio_files- Voice recordingscircle_users- Circle wallet user datacontacts- User contacts (wallet addresses)
cd voice-vault/backend
source venv/bin/activate # Activate virtual environment
uvicorn main:app --reload --port 8000The API will be available at http://localhost:8000
cd voice-vault
npm run devThe frontend will be available at http://localhost:3000
- Create Wallet: On first launch, the app will prompt you to create a Circle wallet
- Set PIN: Complete PIN setup via Circle's WebSDK
- Fund Wallet: Add testnet USDC to your wallet (for ETH-SEPOLIA testnet)
- Add Contacts: Save frequently used wallet addresses
VoiceVault supports natural language commands:
- Transfer: "Send 100 USDC to 0x..."
- Transfer to Contact: "Send 50 USDC to John"
- Portfolio Check: "Show my portfolio"
- Transaction History: "Show my transactions"
- Click the microphone button in the Voice Assistant component
- Speak your command: "Send 10 USDC to 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
- The system processes through agents:
- Planner extracts intent
- Portfolio Manager checks balance
- Risk Analyst evaluates risk
- Security Validator validates address
- Executor creates transaction
- Confirm transaction with PIN via Circle WebSDK
- Receive voice confirmation
- Local:
http://localhost:8000 - Production: Configure via
NEXT_PUBLIC_API_URL
GET /health
POST /api/elevenlabs/stt
Body: { "audio": "base64_encoded_audio" }
Response: { "text": "transcribed_text" }
POST /api/elevenlabs/tts
Body: { "text": "text_to_speak", "voice_id": "optional_voice_id" }
Response: audio/mpeg file
POST /api/agents/execute
Body: { "text": "user_command", "audio": "optional_base64_audio" }
Query: ?user_id=optional_user_id
Response: Transaction result with challenge_id for PIN confirmation
POST /api/wallet/create
Query: ?user_id=optional_user_id
Response: { "user_id", "app_id", "challenge_id", "user_token", "encryption_key" }
GET /api/wallet/status
Query: ?user_id=user_id
Response: { "exists": true, "wallet": {...} }
GET /api/wallet/balance
Query: ?user_id=user_id
Response: { "tokenBalances": [...], "wallet_id": "..." }
GET /api/wallet/transactions
Query: ?user_id=user_id&page_size=50&page_before=cursor&page_after=cursor
Response: { "transactions": [...], "page_before": "...", "page_after": "..." }
POST /api/contacts/add
Body: { "wallet_address": "0x...", "name": "Contact Name" }
Query: ?user_id=user_id
Response: { "success": true, "contact_id": "..." }
GET /api/contacts
Query: ?user_id=user_id&name=optional_search
Response: { "contacts": [...], "count": 10 }
POST /api/query/enhance
Body: { "query": "send 100 rupees to 0x..." }
Response: { "enhanced_query": "send 100 usdc to 0x...", "original_query": "...", "extracted_name": null }
VoiceVault uses a sequential multi-agent workflow:
- Purpose: Extract intent from natural language
- Output: Structured command (action, asset, amount, destination)
- Model: GPT-4o-mini
- Purpose: Check wallet balance and portfolio status
- Output: Current portfolio data (balances, prices, total value)
- Data Source: Circle Wallet API
- Purpose: Assess transaction risk
- Checks:
- Sufficient balance
- Percentage of portfolio
- Transaction size limits
- Output: Risk assessment with approval/rejection
- Purpose: Validate transaction security
- Checks:
- Wallet address format
- Known scam addresses
- Transaction patterns
- Output: Security validation result
- Purpose: Create transaction challenge
- Action: Calls Circle API to create transfer challenge
- Output: Challenge ID for PIN confirmation
- Purpose: Verify transaction completion
- Action: Checks transaction status after confirmation
- Output: Transaction confirmation details
- Connect GitHub repository to Vercel
- Set build command:
npm run build - Set output directory:
.next - Configure environment variables:
NEXT_PUBLIC_API_URL- Your backend API URL
Ensure all environment variables are set in your deployment platform:
ELEVENLABS_API_KEYOPENAI_API_KEYCIRCLE_API_KEYMONGODB_URINEXT_PUBLIC_API_URL
- Agents: Located in
backend/Agents/- Each agent is a separate module - Services: Core business logic in
backend/services/ - Tools: Agent tools in
backend/tools/ - Components: React components in
components/
- New Agent: Create agent file in
backend/Agents/and add toagents_runner.py - New API Endpoint: Add route in
backend/api/main.py - New Component: Create component in
components/and import inapp/page.tsx
- Backend logs: Check console output from uvicorn
- Frontend logs: Check browser console
- MongoDB: Use MongoDB Compass or CLI to inspect collections
- Circle API: Check Circle dashboard for transaction status
- API Keys: Never commit API keys to version control
- PIN Security: PIN confirmation handled by Circle WebSDK (client-side)
- Wallet Security: Private keys managed by Circle (non-custodial)
- CORS: Configured for specific origins
- Input Validation: All user inputs validated before processing
- Circle: User Controlled Wallets API
- ElevenLabs: Speech-to-Text and Text-to-Speech
- OpenAI: Agents Framework
- Next.js & FastAPI: Web frameworks
Note: This project uses ETH-SEPOLIA testnet by default. Ensure you're using testnet tokens for development and testing.