Overview
Bolna is an open-source voice AI framework and cloud platform designed for Indian linguistic environments, code-switching (Hinglish), and regional real estate terminology (Crores, Lakhs, Vastu, BDA Katha, Possession). In BrokerOS, the Bolna integration is implemented inintegrations/voice/agents/bolna/src/index.ts under the Turborepo workspace package @brokeros/int-agent-bolna.
BrokerOS administrators configure Bolna directly within the Web UI at Dashboard -> Marketing -> Voice -> Settings. All credentials are encrypted with AES-256-GCM and stored in PostgreSQL (VoiceAgentIntegration). Bolna functions both as an API-managed service and as a self-hosted private container within your own cloud infrastructure (AWS VPC or GCP) for strict data sovereignty.
Architecture and Dispatch Sequence
The Bolna integration implements theIVoiceAgentProvider contract from @brokeros/types.
Step 1: Obtain Credentials from Bolna
- Log into your account at bolna.dev.
- Navigate to Settings -> API Tokens.
- Create a new token with read/write access and copy the generated key.
- In the Agents tab, create or inspect your target agent.
Step 2: Connect in the BrokerOS Web Dashboard
In your BrokerOS dashboard:- Navigate to Dashboard -> Marketing -> Voice -> Settings.
- Select the Gateways & Voice Platforms tab (
/dashboard/marketing/voice/settings?tab=providers). - Click the AI Voice Platforms sub-tab.
- Click Add Platform and select Bolna AI.
- Fill in the modal connection fields:
- Click Save & Verify Engine. BrokerOS verifies the key with
GET https://api.bolna.ai/user/me, encrypts the credentials via AES-256-GCM, and saves them inVoiceAgentIntegration.
Integration Implementation Details
The Bolna client and dispatcher are located inintegrations/voice/agents/bolna/src/index.ts and integrations/voice/agents/bolna/src/bolna-dispatcher.ts.
Live Verification Engine
When tested in the UI,BolnaAgentClient.validateCredentials() executes an authenticated health check:
Outbound Call Dispatch and Overrides
The dispatcher resolves configured agents dynamically and injects lead attributes and campaign scripts intouser_data: