Drishti-AI-Navigator is a production-ready, AI-powered e-commerce order automation platform that autonomously completes online purchases using intelligent agents. Combining AWS Bedrock, Claude AI, voice-based interfaces, and advanced browser automation, it provides a complete solution for automated order fulfillment with real-time monitoring and human-in-the-loop intervention capabilities.
- Strands Agent: Simplified implementation using Playwright MCP + AgentCore browser
- Nova Act Agent: AWS Bedrock agent with advanced vision-based navigation
- Flexible model selection (Claude 3.5 Sonnet, Claude 3 Opus, etc.)
- Model Context Protocol (MCP) integration for tool orchestration
- AWS Nova Sonic bidirectional speech-to-speech conversations
- Natural language order placement
- Real-time audio streaming
- AWS Polly TTS fallback support
- Conversational order detail extraction
- Live Browser Viewing with screenshot streaming
- Manual Control Mode for human takeover during automation
- Session Recording & Replay stored on S3
- Multi-tab management
- Configurable browser resolution
- Priority-based order queue (Low, Normal, High, Urgent)
- Multiple order states (Pending, Processing, Completed, Failed, RequiresHuman)
- CSV batch upload for bulk orders
- Retry failed orders with one click
- Order tracking with confirmation and tracking numbers
- Review queue for orders requiring approval
- Manual browser control during automation
- Resolution interface for failed orders
- Detailed execution logs and audit trails
- Retailer-specific configuration
- Dynamic retailer URL management
- Encrypted credential storage (Secret Vault)
- AWS IAM and S3 integration
- System settings management
- Real-time WebSocket updates
- Queue metrics and performance analytics
- Active agent tracking
- Success rate monitoring
- Processing time analytics
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Frontend (React) β
β ββββββββββββββ ββββββββββββββββ ββββββββββββββββββββ β
β β Dashboard β β Live Browser β β Voice Assistant β β
β β β β Viewer β β β β
β ββββββββββββββ ββββββββββββββββ ββββββββββββββββββββ β
β β β β β
β βββββββββββββββββββ΄βββββββββββββββββββββ β
β β β
βββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ
β
HTTP/WebSocket
β
βββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ
β Backend (FastAPI) β
β ββββββββββββββ ββββββββββββββββ ββββββββββββββββββββ β
β β REST API β β WebSocket β β Order Queue β β
β β Endpoints β β Server β β Manager β β
β ββββββββββββββ ββββββββββββββββ ββββββββββββββββββββ β
β β β β β
β βββββββββββββββββββ΄βββββββββββββββββββββ β
β β β
β ββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββ β
β β Core Services Layer β β
β β βββββββββββββββ ββββββββββββββ βββββββββββββββ β β
β β β Voice β β Browser β β Settings β β β
β β β Service β β Service β β Service β β β
β β βββββββββββββββ ββββββββββββββ βββββββββββββββ β β
β β βββββββββββββββ ββββββββββββββ βββββββββββββββ β β
β β β Secrets β β Database β β Config β β β
β β β Manager β β Manager β β Manager β β β
β β βββββββββββββββ ββββββββββββββ βββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β ββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββ β
β β AI Agent Layer β β
β β βββββββββββββββββββ ββββββββββββββββββββ β β
β β β Strands Agent β β Nova Act Agent β β β
β β β (MCP+Playwright)β β (Vision+Worker) β β β
β β βββββββββββββββββββ ββββββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββΌβββββββββββββββββββββ
β β β
βββββββββΌββββββββββ βββββββββΌβββββββββ βββββββββΌββββββββββ
β AWS Bedrock β β PostgreSQL β β AWS S3 β
β (Claude AI, β β Database β β (Session β
β Nova Sonic) β β β β Recordings) β
βββββββββββββββββββ ββββββββββββββββββ βββββββββββββββββββ
Backend Components:
βββ API Layer (FastAPI)
β βββ REST Endpoints (60+ endpoints)
β βββ WebSocket Server (real-time updates)
β βββ CORS Middleware
β
βββ Service Layer
β βββ VoiceService (Nova Sonic/Polly)
β βββ BrowserService (AgentCore browser)
β βββ SettingsService (configuration)
β βββ SecretsManager (credentials)
β
βββ Agent Layer
β βββ StrandsAgent (Playwright MCP)
β βββ NovaActAgent (Vision-based)
β
βββ Data Layer
β βββ DatabaseManager (SQLAlchemy)
β βββ Models (Order, Session, Settings)
β βββ Alembic Migrations
β
βββ Queue Layer
βββ OrderQueue (priority-based)
βββ Concurrent Processing
βββ Worker Management
Frontend Components:
βββ Pages
β βββ OrderDashboard
β βββ CreateOrder
β βββ OrderDetails
β βββ ReviewQueue
β βββ FailedOrders
β βββ Settings
β βββ SecretVault
β
βββ Components
β βββ CreateOrderWizard
β βββ LiveBrowserViewer
β βββ VoiceOrderAssistant
β βββ SessionReplayViewer
β βββ ModelSelector
β
βββ Services
βββ API Client (Axios)
βββ WebSocket Manager
Order Creation Flow:
User β CreateOrderWizard β API β DatabaseManager β OrderQueue
β
Agent Selection
β
ββββββββββββββββ΄βββββββββββββββ
β β
StrandsAgent NovaActAgent
β β
AgentCore Browser ββββββββββββββββββββ
β
Website Automation
β
Order Completion
β
βββββββββββββββββββ΄ββββββββββββββββββ
β β
Update Database Send WebSocket Update
β β
Store Screenshots/Logs Update Dashboard UI
- Python 3.13+
- Node.js 16+ (LTS recommended)
- PostgreSQL 13+ (SQLite for development)
- AWS Account with Bedrock access
- Git
- AWS Bedrock (for Claude AI models and Nova Sonic)
- AWS S3 (for session recordings)
- AWS IAM (for role and policy management)
- AWS Polly (optional, for TTS fallback)
git clone https://github.com/akashtalole/Drishti-AI-Navigator.git
cd Drishti-AI-Navigatorcd backend
# Install dependencies
uv sync
# Create virtual environment
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Copy environment template
cp .env.example .env
# Edit .env with your configuration
nano .envConfigure .env file:
# AWS Configuration
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
AWS_REGION=us-east-1
# Voice Configuration
VOICE_PROVIDER=nova_sonic # or "polly"
NOVA_SONIC_REGION=us-east-1
VOICE_MODEL=amazon.nova-sonic-v1:0
# Database (use PostgreSQL for production)
DATABASE_URL=postgresql://user:password@localhost:5432/drishti_db
# For development: DATABASE_URL=sqlite:///./order_automation.db
# Frontend URL (for CORS)
FRONTEND_URL=http://localhost:3000
# Application
PORT=8000
ENVIRONMENT=development
# S3 Configuration
SESSION_REPLAY_S3_BUCKET=your-bucket-name
SESSION_REPLAY_S3_PREFIX=session-replays/
# Security
SECRET_KEY=your-secret-key-here
# Performance
MAX_CONCURRENT_ORDERS=5
BROWSER_SESSION_TIMEOUT=3600
PROCESSING_TIMEOUT=1800Initialize Database:
# Run migrations
alembic upgrade head
# Start the backend server
uvicorn app:app --host 0.0.0.0 --port 8000 --reloadcd ../frontend
# Install dependencies
npm install
# Start development server
npm startThe frontend will be available at http://localhost:3000
- Navigate to Create Order page
- Fill in order details:
- Retailer
- Product name and URL
- Size, color, quantity
- Customer information
- Shipping address
- Payment method
- Select automation method (Strands or Nova Act)
- Select AI model (Claude 3.5 Sonnet recommended)
- Click Create Order
- Click on Voice Assistant in the navigation
- Click Start Conversation
- Speak your order details naturally
- Confirm the extracted information
- Submit the order
- Navigate to Batch Upload
- Download the CSV template
- Fill in order details in the CSV
- Upload the CSV file
- Review and confirm batch creation
- View all orders with current status
- Filter by status, retailer, or priority
- See live progress bars for active orders
- Access quick actions (retry, cancel, take control)
- Open an order in Processing state
- Click Live View button
- Watch real-time browser automation
- See current step and progress
- View execution logs as they happen
- Open an order in Processing state
- Click Take Control
- Browser switches to manual mode
- Interact with the browser directly
- Click Release Control to resume automation
Orders requiring human approval appear in the Review Queue:
- Navigate to Review Queue
- Review order details and current state
- Add notes or corrections
- Click Approve or Reject
- Navigate to Failed Orders
- Review error messages and logs
- Update order details if needed
- Click Retry to reprocess
- Or manually resolve and mark complete
Add retailer-specific settings via Settings page:
{
"name": "Amazon",
"base_url": "https://www.amazon.com",
"login_url": "https://www.amazon.com/ap/signin",
"checkout_flow": "standard",
"requires_login": true,
"automation_hints": {
"add_to_cart_selector": "#add-to-cart-button",
"checkout_button_selector": "#sc-buy-box-ptc-button"
}
}Store credentials securely:
- Navigate to Secret Vault
- Click Add Secret
- Enter site name (e.g., "Amazon")
- Enter username and password
- Credentials are encrypted at rest
Configure AWS integration:
- Navigate to Settings β AWS Configuration
- Search and select IAM role
- Search and select S3 bucket
- Or create new role/bucket using the wizard
- Test connection
Choose default automation method:
- Strands Agent: Faster, simpler, uses Playwright MCP
- Nova Act Agent: More robust, vision-based, better error recovery
Override per-order during creation.
| Technology | Version | Purpose |
|---|---|---|
| Python | 3.13+ | Backend language |
| FastAPI | 0.104+ | Web framework |
| Uvicorn | Latest | ASGI server |
| SQLAlchemy | 2.0.23+ | ORM |
| Alembic | 1.13+ | Database migrations |
| PostgreSQL | 13+ | Production database |
| Strands Agents | 1.6.0+ | AI agent framework |
| Nova Act | 0.1.0+ | AWS agent framework |
| Playwright | 1.40+ | Browser automation |
| Boto3 | 1.34+ | AWS SDK |
| Bedrock Runtime | Latest | AWS Bedrock integration |
| WebSockets | 12.0+ | Real-time communication |
| Pydantic | 2.5+ | Data validation |
| Structlog | 23.2+ | Structured logging |
| Technology | Version | Purpose |
|---|---|---|
| React | 18.2.0 | UI framework |
| React Router | 6.x | Routing |
| AWS Cloudscape | 3.0.1082+ | UI component library |
| Axios | 1.11+ | HTTP client |
| TypeScript | 4.9.5 | Type safety |
| Craco | 7.1.0 | Build configuration |
| Lodash | 4.17+ | Utility functions |
| AWS DCV SDK | Latest | Remote desktop protocol |
- Amazon Bedrock (Claude AI models)
- Amazon Nova Sonic (Speech-to-speech)
- Amazon Polly (Text-to-speech)
- Amazon S3 (Object storage)
- AWS IAM (Identity and access management)
- Amazon DCV (Remote desktop streaming)
Drishti-AI-Navigator/
βββ backend/
β βββ app.py # Main FastAPI application
β βββ config.py # Configuration manager
β βββ database.py # Database models and manager
β βββ order_queue.py # Order queue processing
β βββ agents/ # AI agent implementations
β β βββ strands_agent.py
β β βββ nova_act_agent.py
β βββ services/ # Business logic services
β β βββ voice_service.py
β β βββ browser_service.py
β β βββ settings_service.py
β β βββ secrets_manager.py
β βββ tools/ # Browser automation tools
β β βββ browser/
β β βββ browser_tools.py
β β βββ browser_manager.py
β βββ examples/ # Example scripts
β βββ tests/ # Test suite
β βββ requirements.txt # Python dependencies
β βββ .env.example # Environment template
β βββ order_automation.db # SQLite database (dev)
β
βββ frontend/
β βββ src/
β β βββ App.js # Main app component
β β βββ components/ # Reusable components
β β β βββ OrderDashboard.js
β β β βββ CreateOrderWizard.js
β β β βββ LiveBrowserViewer.js
β β β βββ VoiceOrderAssistant.js
β β β βββ ...
β β βββ pages/ # Page components
β β β βββ OrderDetails.js
β β β βββ ReviewQueue.js
β β β βββ Settings.js
β β β βββ ...
β β βββ services/ # Frontend services
β β β βββ api.js
β β β βββ websocket.ts
β β βββ types/ # TypeScript types
β βββ public/
β β βββ dcv-sdk/ # AWS DCV SDK
β βββ package.json
β βββ craco.config.js
β
βββ README.md # This file
βββ LICENSE # Apache 2.0 License
βββ .gitignore
POST /api/orders Create new order
GET /api/orders List all orders
GET /api/orders/{order_id} Get order details
PUT /api/orders/{order_id} Update order
DELETE /api/orders/{order_id} Delete order
POST /api/orders/{order_id}/retry Retry failed order
POST /api/orders/upload-csv Batch upload
GET /api/orders/{order_id}/live-view Get live view URL
POST /api/orders/{order_id}/take-control Enable manual control
POST /api/orders/{order_id}/release-control Disable manual control
POST /api/orders/{order_id}/change-resolution Set browser resolution
GET /api/orders/{order_id}/session-replay Get session replay
POST /api/voice/conversation/start Start conversation
POST /api/voice/conversation/{conversation_id}/process Process audio
GET /api/voice/conversation/{conversation_id}/state Get state
POST /api/voice/conversation/{conversation_id}/submit Submit order
GET /api/queue/status Get queue status
POST /api/queue/pause Pause processing
POST /api/queue/resume Resume processing
GET /api/queue/metrics Get metrics
GET /api/config/retailers Get retailer configs
GET /api/config/retailer-urls Get retailer URLs
GET /api/settings/config Get system config
PUT /api/settings/config Update system config
WS /ws Real-time updates
WebSocket Message Format:
{
"type": "order_update",
"order_id": "uuid",
"status": "processing",
"progress": 45,
"current_step": "Adding item to cart",
"timestamp": "2025-10-21T12:34:56Z"
}cd backend
# Run all tests
pytest
# Run with coverage
pytest --cov=. --cov-report=html
# Run specific test file
pytest tests/test_voice_service.py
# Run with verbose output
pytest -v# Test Nova Sonic voice interaction
python examples/nova_sonic_demo.py
# Test speech-to-speech
python examples/nova_sonic_s2s_demo.py
# Test browser integration
python tools/browser/test_integration.pyError: Unable to locate credentials
Solution:
- Verify
AWS_ACCESS_KEY_IDandAWS_SECRET_ACCESS_KEYin.env - Or configure AWS CLI:
aws configure - Ensure IAM user has Bedrock permissions
Error: AccessDeniedException: You don't have access to the model
Solution:
- Go to AWS Bedrock console
- Navigate to "Model access"
- Request access to Claude models and Nova Sonic
- Wait for approval (usually instant)
Error: could not connect to server
Solution:
- Check PostgreSQL is running:
sudo systemctl status postgresql - Verify
DATABASE_URLin.env - For development, use SQLite:
DATABASE_URL=sqlite:///./order_automation.db
Error: Network Error
Solution:
- Ensure backend is running on port 8000
- Check
FRONTEND_URLin backend.env - Verify CORS configuration in
app.py
Error: Browser session expired
Solution:
- Increase
BROWSER_SESSION_TIMEOUTin.env - Default is 3600 seconds (1 hour)
- Monitor active sessions in dashboard
- All credentials stored in Secret Vault are encrypted
- Use environment variables for sensitive config
- Never commit
.envfiles to version control - Rotate AWS credentials regularly
- Use least-privilege IAM policies
- Create dedicated IAM roles for the application
- Enable MFA on AWS accounts
- Audit IAM permissions regularly
- Use HTTPS in production
- Configure firewall rules
- Restrict WebSocket connections
- Enable CORS only for trusted origins
- Session recordings may contain sensitive data
- Configure S3 bucket encryption
- Set appropriate retention policies
- Implement data deletion procedures
Create Dockerfile for backend:
FROM python:3.13-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]Create docker-compose.yml:
version: '3.8'
services:
backend:
build: ./backend
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgresql://user:password@db:5432/drishti
depends_on:
- db
frontend:
build: ./frontend
ports:
- "80:80"
depends_on:
- backend
db:
image: postgres:15
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
- POSTGRES_DB=drishti
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:Deploy:
docker-compose up -d- Backend: Deploy to AWS ECS or EC2
- Frontend: Deploy to S3 + CloudFront or Amplify
- Database: Use RDS PostgreSQL
- Queue: Consider SQS for order queue
- Secrets: Use AWS Secrets Manager
ENVIRONMENT=production
DATABASE_URL=postgresql://user:password@rds-endpoint:5432/drishti
FRONTEND_URL=https://your-domain.com
SESSION_REPLAY_S3_BUCKET=production-session-replays
MAX_CONCURRENT_ORDERS=10Contributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow PEP 8 for Python code
- Use ESLint for JavaScript/TypeScript
- Write tests for new features
- Update documentation
- Use meaningful commit messages
This project is licensed under the Apache License 2.0. See the LICENSE file for details.
- AWS Bedrock for Claude AI models and Nova Sonic
- Anthropic for Claude AI technology
- Strands AI for agent framework
- AWS Cloudscape for UI components
- FastAPI and React communities
For issues, questions, or contributions:
- GitHub Issues: https://github.com/yourusername/Drishti-AI-Navigator/issues
- Documentation: https://docs.example.com
- Email: support@example.com
- Multi-region AWS deployment
- Advanced retry strategies with exponential backoff
- Payment method tokenization
- Multiple retailer support expansion
- Enhanced error recovery with ML-based predictions
- Mobile app for monitoring
- Slack/Teams integration for notifications
- Advanced analytics dashboard
- A/B testing for agent performance
- Cost optimization recommendations
- Order Processing Time: 2-5 minutes per order
- Success Rate: 85-95% (varies by retailer)
- Concurrent Orders: Up to 10 (configurable)
- API Response Time: <100ms (median)
- WebSocket Latency: <50ms
- Horizontal scaling supported via queue-based architecture
- Database can handle 100K+ orders
- Session recordings stored on S3 (unlimited)
- WebSocket connections: 1000+ concurrent
Built with β€οΈ using AWS Bedrock, AgentCore, Strands Agent, Claude, and Modern Web Technologies