2:I[7012,["4765","static/chunks/4765-f5afdf8061f456f3.js","9856","static/chunks/9856-3b185291364d9bef.js","6687","static/chunks/app/docs/%5B...slug%5D/page-e07536548216bee4.js"],"MarkdownRenderer"] 4:I[9856,["4765","static/chunks/4765-f5afdf8061f456f3.js","9856","static/chunks/9856-3b185291364d9bef.js","6687","static/chunks/app/docs/%5B...slug%5D/page-e07536548216bee4.js"],""] 5:I[4126,[],""] 7:I[9630,[],""] 8:I[4278,["9856","static/chunks/9856-3b185291364d9bef.js","8172","static/chunks/8172-b3a2d6fe4ae10d40.js","3185","static/chunks/app/layout-2814fa5d15b84fe4.js"],"HeadingProvider"] 9:I[1476,["9856","static/chunks/9856-3b185291364d9bef.js","8172","static/chunks/8172-b3a2d6fe4ae10d40.js","3185","static/chunks/app/layout-2814fa5d15b84fe4.js"],"Header"] a:I[3167,["9856","static/chunks/9856-3b185291364d9bef.js","8172","static/chunks/8172-b3a2d6fe4ae10d40.js","3185","static/chunks/app/layout-2814fa5d15b84fe4.js"],"Sidebar"] b:I[7409,["9856","static/chunks/9856-3b185291364d9bef.js","8172","static/chunks/8172-b3a2d6fe4ae10d40.js","3185","static/chunks/app/layout-2814fa5d15b84fe4.js"],"PageFrame"] 3:T1a7b, # Administrator Quick Start **Last Updated:** 2025-12-01 This guide covers deployment, configuration, and ongoing administration of VoiceAssist. --- ## Deployment Options ### Quick Start (Docker Compose) ```bash # Clone repository git clone https://github.com/your-org/VoiceAssist.git cd VoiceAssist # Configure environment cp .env.example .env # Edit .env with your settings # Start all services docker-compose up -d # Verify deployment curl http://localhost:8000/health ``` ### Production Deployment For production environments, see: - [Production Deployment Runbook](../PRODUCTION_DEPLOYMENT_RUNBOOK.md) - [Infrastructure Setup](../INFRASTRUCTURE_SETUP.md) - [Terraform Guide](../TERRAFORM_GUIDE.md) --- ## Essential Configuration ### Environment Variables Key variables in `.env`: ```bash # Database DATABASE_URL=postgresql://user:pass@localhost:5432/voiceassist # Redis REDIS_URL=redis://localhost:6379 # AI Services OPENAI_API_KEY=sk-... DEEPGRAM_API_KEY=... ELEVENLABS_API_KEY=... # Security JWT_SECRET= ENCRYPTION_KEY=<32-byte-key> # Feature Flags VOICE_MODE_ENABLED=true THINKER_TALKER_ENABLED=true ``` For complete configuration reference, see [Configuration Reference](../CONFIGURATION_REFERENCE.md). --- ## Admin Panel ### Accessing Admin Panel 1. Navigate to `https://assist.asimo.io/admin` 2. Log in with admin credentials 3. You'll see the admin dashboard ### Key Sections | Section | Purpose | | ------------------ | ---------------------------- | | **Dashboard** | System health and metrics | | **Users** | User management and roles | | **Knowledge Base** | Document upload and indexing | | **Analytics** | Usage statistics and costs | | **Settings** | System configuration | For detailed admin panel documentation, see [Admin Panel Specs](../ADMIN_PANEL_SPECS.md). --- ## Health Monitoring ### Health Endpoints ```bash # Basic health check curl https://assist.asimo.io/health # Readiness check curl https://assist.asimo.io/ready # Detailed metrics curl https://assist.asimo.io/metrics ``` ### Key Metrics to Monitor - **Response latency** - P95 < 500ms target - **Error rate** - Should be < 1% - **Voice pipeline latency** - First audio < 300ms - **Database connections** - Pool utilization - **Cache hit rate** - Redis effectiveness ### Alerting Configure alerts for: - Service downtime - High error rates (> 5%) - Latency spikes (P95 > 2s) - Disk space (< 20% free) - Memory usage (> 80%) --- ## User Management ### Creating Users ```bash # Via API curl -X POST https://assist.asimo.io/api/users \ -H "Authorization: Bearer $ADMIN_TOKEN" \ -H "Content-Type: application/json" \ -d '{"email": "user@example.com", "role": "user"}' ``` ### User Roles | Role | Permissions | | ---------- | --------------------------- | | `user` | Basic chat and voice access | | `admin` | Full system access | | `readonly` | View-only access | ### Session Management - Sessions expire after 24 hours by default - Configure via `SESSION_TIMEOUT` env var - Force logout via admin panel --- ## Knowledge Base Management ### Uploading Documents 1. Go to Admin Panel > Knowledge Base 2. Click "Upload Documents" 3. Select PDF or markdown files 4. Wait for indexing to complete ### Via API ```bash curl -X POST https://assist.asimo.io/api/admin/kb/upload \ -H "Authorization: Bearer $ADMIN_TOKEN" \ -F "file=@document.pdf" ``` ### Re-indexing ```bash # Trigger full re-index curl -X POST https://assist.asimo.io/api/admin/kb/reindex \ -H "Authorization: Bearer $ADMIN_TOKEN" ``` --- ## Backup and Recovery ### Database Backups ```bash # Manual backup pg_dump -h localhost -U postgres voiceassist > backup.sql # Restore psql -h localhost -U postgres voiceassist < backup.sql ``` ### Automated Backups Configure via cron or backup service: ```bash # Daily backup at 2 AM 0 2 * * * /opt/scripts/backup-voiceassist.sh ``` For complete disaster recovery procedures, see [Disaster Recovery Runbook](../DISASTER_RECOVERY_RUNBOOK.md). --- ## Security ### SSL/TLS - All traffic should use HTTPS - Certificates via Let's Encrypt or your CA - Configure in reverse proxy (nginx/Apache) ### API Security - JWT tokens for authentication - Rate limiting enabled by default - CORS configured for allowed origins ### Audit Logging All admin actions are logged: ```bash # View recent admin actions curl https://assist.asimo.io/api/admin/audit \ -H "Authorization: Bearer $ADMIN_TOKEN" ``` For complete security documentation, see [Security Compliance](../SECURITY_COMPLIANCE.md). --- ## Troubleshooting ### Common Issues | Issue | Solution | | ------------------- | --------------------------------------------- | | Service won't start | Check logs: `docker-compose logs api-gateway` | | Database connection | Verify `DATABASE_URL` and PostgreSQL status | | Voice not working | Check Deepgram/ElevenLabs API keys | | Slow responses | Check Redis cache and AI service latency | ### Log Locations ```bash # Docker logs docker-compose logs -f api-gateway # Application logs tail -f /var/log/voiceassist/app.log ``` ### Getting Help - [Debugging Guide](../debugging/DEBUGGING_INDEX.md) - [Troubleshooting Runbook](../operations/runbooks/TROUBLESHOOTING.md) - [Operations Overview](../operations/OPERATIONS_OVERVIEW.md) --- ## Maintenance Tasks ### Regular Maintenance | Task | Frequency | Command | | ---------------- | --------- | ------------------------------- | | Database vacuum | Weekly | `VACUUM ANALYZE;` | | Log rotation | Daily | Automatic via logrotate | | Cache cleanup | Monthly | `redis-cli FLUSHDB` (if needed) | | Security updates | Weekly | `apt update && apt upgrade` | ### Upgrades ```bash # Pull latest changes git pull origin main # Update dependencies pnpm install # Run migrations pnpm db:migrate # Rebuild and restart docker-compose build && docker-compose up -d ``` --- ## Key Documentation - [Admin Panel Specs](../ADMIN_PANEL_SPECS.md) - [Configuration Reference](../CONFIGURATION_REFERENCE.md) - [Production Deployment Runbook](../PRODUCTION_DEPLOYMENT_RUNBOOK.md) - [Disaster Recovery Runbook](../DISASTER_RECOVERY_RUNBOOK.md) - [Security Compliance](../SECURITY_COMPLIANCE.md) - [HIPAA Compliance Matrix](../HIPAA_COMPLIANCE_MATRIX.md) --- ## Next Steps 1. Review [Production Readiness Checklist](../PRODUCTION_READINESS_CHECKLIST.md) 2. Set up [Monitoring & Observability](../OBSERVABILITY.md) 3. Configure [Backup Procedures](../DISASTER_RECOVERY_RUNBOOK.md) 6:["slug","start/admins","c"] 0:["X7oMT3VrOffzp0qvbeOas",[[["",{"children":["docs",{"children":[["slug","start/admins","c"],{"children":["__PAGE__?{\"slug\":[\"start\",\"admins\"]}",{}]}]}]},"$undefined","$undefined",true],["",{"children":["docs",{"children":[["slug","start/admins","c"],{"children":["__PAGE__",{},[["$L1",["$","div",null,{"children":[["$","div",null,{"className":"mb-6 flex items-center justify-between gap-4","children":[["$","div",null,{"children":[["$","p",null,{"className":"text-sm text-gray-500 dark:text-gray-400","children":"Docs / Raw"}],["$","h1",null,{"className":"text-3xl font-bold text-gray-900 dark:text-white","children":"Administrator Quick Start"}],["$","p",null,{"className":"text-sm text-gray-600 dark:text-gray-400","children":["Sourced from"," ",["$","code",null,{"className":"font-mono text-xs","children":["docs/","start/admins.md"]}]]}]]}],["$","a",null,{"href":"https://github.com/mohammednazmy/VoiceAssist/edit/main/docs/start/admins.md","target":"_blank","rel":"noreferrer","className":"inline-flex items-center gap-2 rounded-md border border-gray-200 dark:border-gray-700 px-3 py-1.5 text-sm text-gray-700 dark:text-gray-200 hover:border-primary-500 dark:hover:border-primary-400 hover:text-primary-700 dark:hover:text-primary-300","children":"Edit on GitHub"}]]}],["$","div",null,{"className":"rounded-lg border border-gray-200 dark:border-gray-800 bg-white dark:bg-gray-900 p-6","children":["$","$L2",null,{"content":"$3"}]}],["$","div",null,{"className":"mt-6 flex flex-wrap gap-2 text-sm","children":[["$","$L4",null,{"href":"/reference/all-docs","className":"inline-flex items-center gap-1 rounded-md bg-gray-100 px-3 py-1 text-gray-700 hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700","children":"← All documentation"}],["$","$L4",null,{"href":"/","className":"inline-flex items-center gap-1 rounded-md bg-gray-100 px-3 py-1 text-gray-700 hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700","children":"Home"}]]}]]}],null],null],null]},[null,["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children","docs","children","$6","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children","docs","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/7f586cdbbaa33ff7.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","className":"h-full","children":["$","body",null,{"className":"__className_f367f3 h-full bg-white dark:bg-gray-900","children":[["$","a",null,{"href":"#main-content","className":"skip-to-content","children":"Skip to main content"}],["$","$L8",null,{"children":[["$","$L9",null,{}],["$","$La",null,{}],["$","main",null,{"id":"main-content","className":"lg:pl-64","role":"main","aria-label":"Documentation content","children":["$","$Lb",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]]}]]}]}]],null],null],["$Lc",null]]]] c:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Administrator Quick Start | Docs | VoiceAssist Docs"}],["$","meta","3",{"name":"description","content":"Get started administering VoiceAssist - deployment, configuration, and monitoring."}],["$","meta","4",{"name":"keywords","content":"VoiceAssist,documentation,medical AI,voice assistant,healthcare,HIPAA,API"}],["$","meta","5",{"name":"robots","content":"index, follow"}],["$","meta","6",{"name":"googlebot","content":"index, follow"}],["$","link","7",{"rel":"canonical","href":"https://assistdocs.asimo.io"}],["$","meta","8",{"property":"og:title","content":"VoiceAssist Documentation"}],["$","meta","9",{"property":"og:description","content":"Comprehensive documentation for VoiceAssist - Enterprise Medical AI Assistant"}],["$","meta","10",{"property":"og:url","content":"https://assistdocs.asimo.io"}],["$","meta","11",{"property":"og:site_name","content":"VoiceAssist Docs"}],["$","meta","12",{"property":"og:type","content":"website"}],["$","meta","13",{"name":"twitter:card","content":"summary"}],["$","meta","14",{"name":"twitter:title","content":"VoiceAssist Documentation"}],["$","meta","15",{"name":"twitter:description","content":"Comprehensive documentation for VoiceAssist - Enterprise Medical AI Assistant"}],["$","meta","16",{"name":"next-size-adjust"}]] 1:null