CallMineAI Docs
Home
  • Introduction
  • Architecture
  • Installation
  • Web installer
  • Configuration
  • Deployment
  • Customer panel
  • Admin panel
  • Agents & Voices
  • Campaigns & Calls
  • Billing & Credits
  • Telephony (Twilio)
  • Voice & AI
  • SIP trunks
  • Messaging
  • REST API
Home
  • Introduction
  • Architecture
  • Installation
  • Web installer
  • Configuration
  • Deployment
  • Customer panel
  • Admin panel
  • Agents & Voices
  • Campaigns & Calls
  • Billing & Credits
  • Telephony (Twilio)
  • Voice & AI
  • SIP trunks
  • Messaging
  • REST API
  • Getting started

    • Introduction
    • Architecture
    • Installation
    • Web installer
    • Configuration
    • Deployment
  • Using CallMineAI

    • Customer Guide
    • Agents & Voices
    • Campaigns & Calls
    • Billing & Credits
  • Administration

    • Admin Guide
    • Roles & permissions
    • Localization
  • Integrations

    • Telephony (Twilio)
    • Voice & AI
    • SIP trunks
    • Messaging
    • REST API
  • Help

    • FAQ & troubleshooting

Deployment

Production hosting for CallMineAI. Assumes you've completed Installation and Configuration.

Build for production

composer install --no-dev --optimize-autoloader
npm install && npm run build

php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:cache

Recommended production .env:

APP_ENV=production
APP_DEBUG=false
APP_URL=https://your-domain.com
QUEUE_CONNECTION=redis
CACHE_STORE=redis
SESSION_DRIVER=redis

HTTPS is mandatory

Twilio (and SIP/WhatsApp) webhooks require a publicly reachable HTTPS URL. Set APP_URL to your HTTPS domain so the callback URLs resolve correctly.

Queue worker (Supervisor)

The dialer and background jobs run on the queue. Keep at least one worker alive with Supervisor:

[program:callmineai-worker]
command=php /path/to/callmineai/artisan queue:work --tries=1 --timeout=120
directory=/path/to/callmineai
numprocs=2
autostart=true
autorestart=true
stopwaitsecs=3600
user=www-data
redirect_stderr=true
stdout_logfile=/path/to/callmineai/storage/logs/worker.log
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start callmineai-worker:*

Scheduler (cron)

One cron entry runs the Laravel scheduler, which triggers calling:dispatch every minute:

* * * * * cd /path/to/callmineai && php artisan schedule:run >> /dev/null 2>&1

Why both are required

calling:dispatch (scheduler) claims due calls and dispatches jobs; the queue worker executes those jobs (placing calls, processing results, analysis). Without either, campaigns queue calls but nothing dials. See Campaigns & Calls.

Web server

Point your web root at public/. Nginx example:

server {
    listen 443 ssl;
    server_name your-domain.com;
    root /path/to/callmineai/public;

    index index.php;
    location / { try_files $uri $uri/ /index.php?$query_string; }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Go-live checklist

  • [ ] APP_ENV=production, APP_DEBUG=false
  • [ ] php artisan config:cache route:cache view:cache
  • [ ] HTTPS enabled; APP_URL set to the HTTPS domain
  • [ ] Queue worker running (Supervisor) and scheduler cron active
  • [ ] Twilio status/recording callback URLs publicly reachable
  • [ ] Changed the default seed passwords
  • [ ] QUEUE_CONNECTION=redis and CACHE_STORE=redis (recommended)
  • [ ] ElevenLabs key added + voices synced; OpenAI key set
  • [ ] Payment gateways configured (if selling subscriptions)
  • [ ] A backup strategy for the database and storage/

After deploying updates

php artisan migrate --force
npm run build
php artisan config:cache route:cache view:cache
sudo supervisorctl restart callmineai-worker:*   # reload the workers
Last Updated: 7/9/26, 7:12 AM
Prev
Configuration