Documentation Index Fetch the complete documentation index at: https://docs.callintel.io/llms.txt
Use this file to discover all available pages before exploring further.
Environment Variables
All configuration is managed through environment variables. Create a .env file in the project root:
# Required: Environment type
Environment=local # or production
Queue_Environment=local
# AI Provider APIs
GEMINI_API_KEY=your_gemini_key
OPENAI_API_KEY=your_openai_key
# Hume AI (Emotional Intelligence)
HUME_CONFIG_ID=your_config_id
HUME_API_KEY=your_hume_key
HUME_SECRET_KEY=your_hume_secret
# Telephony Providers
TWILIO_ACCOUNT_ID=your_twilio_sid
TWILIO_AUTH_TOKEN=your_twilio_token
# Alternative: Plivo
PLIVO_AUTH_ID=your_plivo_id
PLIVO_AUTH_TOKEN=your_plivo_token
# Database
SUPABASE_URL=https://xxx.supabase.co
SUPABASE_KEY=your_supabase_key
# MCP Service URLs (Docker)
WHATSAPP_MCP_SERVER_URL=http://whatsapp_mcp:8102
TELE_MCP_SERVER_URL=http://tele_mcp:8100
GMAIL_MCP_SERVER_URL=http://gmail_mcp:8101
# Server Configuration
PORT=8010
SERVER_DOMAIN=localhost:8010
SECURE_HEADERS=false
CORS_ORIGINS=*
# Logging
LOG_LEVEL=INFO
# Optional: LiveKit (for real-time communication)
LIVEKIT_URL=ws://livekit:7880
LIVEKIT_API_KEY=your_livekit_key
LIVEKIT_API_SECRET=your_livekit_secret
Configuration Files
Local Configuration
File: configure/local_config.py
import os
from dotenv import load_dotenv
load_dotenv()
# Logging
LOG_LEVEL = os.getenv( "LOG_LEVEL" , "INFO" )
# API Configuration
API_HOST = os.getenv( "SERVER_DOMAIN" , "localhost:8010" )
API_PORT = int (os.getenv( "PORT" , 8010 ))
# Database
SUPABASE_URL = os.getenv( "SUPABASE_URL" )
SUPABASE_KEY = os.getenv( "SUPABASE_KEY" )
# AI Providers
GEMINI_API_KEY = os.getenv( "GEMINI_API_KEY" )
OPENAI_API_KEY = os.getenv( "OPENAI_API_KEY" )
# Telephony
TWILIO_ACCOUNT_ID = os.getenv( "TWILIO_ACCOUNT_ID" )
TWILIO_AUTH_TOKEN = os.getenv( "TWILIO_AUTH_TOKEN" )
# MCP Services
MCP_SERVICES = {
"telegram" : os.getenv( "TELE_MCP_SERVER_URL" , "http://localhost:8100" ),
"gmail" : os.getenv( "GMAIL_MCP_SERVER_URL" , "http://localhost:8101" ),
"whatsapp" : os.getenv( "WHATSAPP_MCP_SERVER_URL" , "http://localhost:8102" ),
}
Production Configuration
File: configure/production_config.py
Similar structure but with production-specific settings:
Disabled API documentation (docs_url=None)
Stricter CORS configuration
Enhanced logging for monitoring
Database connection pooling
AI Provider Configuration
Google Gemini
from bridges.gemini_bridge_base import GeminiBridgeBase
agent = GeminiBridgeBase(
api_key = "your_gemini_key" ,
model = "gemini-2.0-flash-exp" , # Latest model
system_prompt = "Your custom system prompt" ,
temperature = 0.7 ,
max_tokens = 1024
)
Required Settings:
GEMINI_API_KEY: From Google Cloud Console
Model selection: gemini-2.0-flash-exp, gemini-pro, etc.
OpenAI
from bridges.open_ai import OpenAIBridge
agent = OpenAIBridge(
api_key = "your_openai_key" ,
model = "gpt-4" ,
system_prompt = "Your custom system prompt" ,
temperature = 0.7
)
Required Settings:
OPENAI_API_KEY: From OpenAI API dashboard
Model: gpt-4, gpt-3.5-turbo, gpt-4-turbo, etc.
Hume AI (Emotional Intelligence)
from bridges.hume_bridge import HumeBridge
agent = HumeBridge(
config_id = "your_config_id" ,
api_key = "your_hume_key" ,
secret_key = "your_hume_secret"
)
Required Settings:
HUME_CONFIG_ID: Configuration ID from Hume AI
HUME_API_KEY: Public API key
HUME_SECRET_KEY: Secret key for authentication
Telephony Configuration
Twilio
from twilio.rest import Client
client = Client(
account_sid = os.getenv( "TWILIO_ACCOUNT_ID" ),
auth_token = os.getenv( "TWILIO_AUTH_TOKEN" )
)
Setup Steps:
Create Twilio account at twilio.com
Get Account SID and Auth Token
Purchase phone number or verify test number
Configure webhook URL for incoming calls
Plivo
from plivo import RestClient
client = RestClient(
auth_id = os.getenv( "PLIVO_AUTH_ID" ),
auth_token = os.getenv( "PLIVO_AUTH_TOKEN" )
)
Setup Steps:
Create Plivo account
Get Auth ID and Token
Purchase DID number
Set up message URL
Database Configuration
Supabase
from Service.Supabase import get_supabase_client
supabase = get_supabase_client()
# Tables are auto-created on first run
# Tables include:
# - organizations
# - agents
# - calls
# - contact_forms
# - scheduled_calls
# - batch_calls
Setup Steps:
Create Supabase project
Copy Project URL and API Key
Set SUPABASE_URL and SUPABASE_KEY
Server Configuration
Port Configuration
PORT=8010
SERVER_DOMAIN=localhost:8010
CORS Configuration
# In app.py
app.add_middleware(
CORSMiddleware,
allow_origins = os.getenv( "CORS_ORIGINS" , "*" ).split( "," ),
allow_credentials = True ,
allow_methods = [ "*" ],
allow_headers = [ "*" ],
)
API Documentation
Local Environment:
Swagger UI: /docs
ReDoc: /redoc
OpenAPI: /openapi.json
Production Environment:
Documentation disabled (docs_url=None)
Use external tools like Postman for API testing
Logging Configuration
Log Levels
LOG_LEVEL=INFO # DEBUG, INFO, WARNING, ERROR, CRITICAL
Log Output
from utils.logger import logger
logger.debug( "Debug message" )
logger.info( "Info message" )
logger.warning( "Warning message" )
logger.error( "Error message" )
logger.critical( "Critical message" )
Logs are written to:
Console (stdout)
File: logs/app.log (if configured)
MCP Service Configuration
MCP (Model Context Protocol) services handle external integrations:
Telegram MCP
TELE_MCP_SERVER_URL=http://tele_mcp:8100
Configuration file: integrations/mcp_tele/config.json
Gmail MCP
GMAIL_MCP_SERVER_URL=http://gmail_mcp:8101
OAuth credentials: integrations/mcp_gmail/credentials.json
WhatsApp MCP
WHATSAPP_MCP_SERVER_URL=http://whatsapp_mcp:8102
Database configuration: integrations/mcp_whatsapp/database.py
Agent Configuration
System Prompts
DEFAULT_PROMPT_TEMPLATE = """
Assistant Design: " {initial_message} "
Core Identity & Purpose:
Primary Mission: To be a helpful, human-like voice assistant
Interaction Style:
- Professional and friendly
- Natural conversation flow
- Problem-solving focused
"""
Voice Configuration
voice_config = {
"provider" : "twilio" , # or "elevenlabs", "google"
"voice_id" : "en-US" ,
"speed" : 1.0 ,
"pitch" : 1.0 ,
}
Security Configuration
API Keys
Best practices:
Use environment variables, never commit keys
Rotate keys regularly
Use different keys for dev/prod
Store in .env file (add to .gitignore)
CORS
CORS_ORIGINS = [
"https://yourdomain.com" ,
"https://app.yourdomain.com" ,
]
Authentication
from utils.auth import verify_supabase_token
@app.get ( "/api/protected" )
async def protected_route ( user : AuthenticatedUser = Depends(verify_supabase_token)):
return { "user" : user.id}
Worker Configuration
# Gunicorn (if using production server)
WORKERS=4
WORKER_CLASS=uvicorn.workers.UvicornWorker
WORKER_CONNECTIONS=1000
Database Connection Pooling
SUPABASE_POOL_SIZE = 10
SUPABASE_MAX_OVERFLOW = 20
Cache Configuration
REDIS_URL = redis: // localhost: 6379
CACHE_TTL = 3600
Integration Configuration
Shopify
SHOPIFY_API_KEY=your_shopify_key
SHOPIFY_API_SECRET=your_shopify_secret
SHOPIFY_STORE_URL=your-store.myshopify.com
Payment Provider
STRIPE_API_KEY=your_stripe_key
STRIPE_WEBHOOK_SECRET=your_webhook_secret
Environment-Specific Configs
Development
Environment=local
LOG_LEVEL=DEBUG
CORS_ORIGINS=*
DEBUG=true
Staging
Environment=production
LOG_LEVEL=INFO
CORS_ORIGINS=https://staging.yourdomain.com
DEBUG=false
Production
Environment=production
LOG_LEVEL=WARNING
CORS_ORIGINS=https://yourdomain.com
DEBUG=false
SECURE_HEADERS=true
Validation
Verify your configuration:
# Check if all required environment variables are set
python -c "from configure.local_config import *; print('Configuration loaded successfully')"
# Test API connectivity
curl http://localhost:8010/health
# Test database connection
python -c "from Service.Supabase import get_supabase_client; print(get_supabase_client())"
Common Issues
Missing API Keys
# Generate .env from example
cp .env.example .env
# Check required variables
grep "TODO\|CHANGE_ME" .env
Connection Failures
# Test Supabase
curl https://your-project.supabase.co/health
# Test Twilio
python -c "from twilio.rest import Client; Client('sid', 'token').api.accounts.list()"
Next Steps
Quick Start Start building with the configured platform.