Skip to content

Repository files navigation

Voice AI CRM — the open-source CRM for AI voice agents

License: AGPL-3.0 Self-hosted Stack Voice providers

Voice AI CRM

A free, open-source, self-hosted CRM for AI voice agents.

Give your AI voice agents a CRM. Import leads, let an AI agent call them, and every call comes back as structured CRM data — a summary, the detected outcome, and extracted fields — so your pipeline updates itself. Human agents work the same leads alongside the AI: assign, transfer, bulk-edit, and log manual calls, HubSpot-style.

Self-host it for free in a few commands. Bring your own voice provider (Bolcho or Vapi, or add your own) and your own OpenAI key — no vendor lock-in, no per-seat fees, no paid tier.

Free Voice AI CRM · open-source CRM · self-hosted CRM · AI voice agent · AI calling software · voice agent lead management · Vapi CRM · Next.js + Node.js + MongoDB

Licensed under AGPL-3.0 — free to self-host, modify, and use commercially in your own business. See License.


Features

  • AI voice calling — an outbound scheduler dials queued leads through a pluggable voice provider and records the result.
  • Automatic post-call analysis — after each call, OpenAI writes a summary, classifies the outcome, and extracts structured data against a schema you define.
  • Leads workspace — filters, bulk operations (including arithmetic on numeric fields), assignment and transfer between agents, and a performance overview.
  • Human + AI agents together — assign leads to teammates, transfer between them, and log manual calls that land in the same timeline without consuming AI analysis.
  • Lead sources — import from HubSpot, Zoho, and Facebook Lead Ads, or push leads in via a per-workspace webhook.
  • Bookings & workflows — meeting scheduling and automated follow-up sequences.
  • Multi-workspace with role-based access and optional white-label branding.

Voice providers — Bolcho, Vapi, or your own

The voice layer is pluggable. Two providers ship built in:

Provider How to enable
Bolcho (default) CALL_PROVIDER=bolcho — each workspace pastes its own Bolcho key in the CRM
Vapi CALL_PROVIDER=vapi — set VOLA_TOKEN to your Vapi API key

Adding another provider (Retell, Twilio, ElevenLabs, …) is one file. Create src/services/callingProviders/<name>Provider.js exporting two functions:

async function initiateCall({ formattedPhoneNumber, assistantId, phoneNumberId, agency }) { /* place call → { id, status, ... } */ }
async function getCallStatus(callId, agency) { /* fetch call → normalized stats */ }
module.exports = { initiateCall, getCallStatus };

Register it in src/services/callingProviders/index.js and select it with CALL_PROVIDER. In every case, you bring your own voice account — no calling credits are bundled with this project.


Integrations — bring your own app

Because this is self-hosted, each deployment connects integrations using its own developer apps — there is no shared cloud app, and there can't be (the OAuth secrets would have to be public). This is normal and the code is built for it: if you don't configure an integration, it simply doesn't appear in the UI.

Integration What you create Notes
HubSpot A HubSpot app (OAuth) or just a Private App token Token path needs no app at all
Zoho A Zoho Self Client or OAuth app Per-workspace Self Client works with no server config
Facebook Lead Ads A Meta app (Facebook Login for Business) Requires a public HTTPS URL for OAuth + webhooks
Google (sign-in, calendar) A Google Cloud OAuth client Optional

Step-by-step setup for each lives in docs/integrations/.


Tech stack

  • Frontend — Next.js 15 (App Router), React Query, Tailwind + shadcn/ui
  • Backend — Node.js + Express, Mongoose (MongoDB), Agenda for scheduling
  • AI — OpenAI for post-call analysis (bring your own key)

Quickstart

Prerequisites

  • Node.js 20+ and MongoDB (local or hosted), or just Docker.

Option A — Docker (everything in one command)

git clone <your-repo-url> bolchocrm && cd bolchocrm
cp NbProdBackend/.env.example NbProdBackend/.env   # then edit the REQUIRED values
docker compose up

This starts MongoDB, the backend (:3500), and the frontend (:3000). Open http://localhost:3000.

Option B — Run locally without Docker

# 1. Backend
cd NbProdBackend
cp .env.example .env            # fill in MONGODB_URI, ACCESS_TOKEN, REFRESH_TOKEN, ENCRYPTION_KEY
npm install
npm run dev                     # http://localhost:3500

# 2. Frontend (new terminal)
cd NbProdFrontend
cp .env.example .env.local
npm install
npm run dev                     # http://localhost:3000

Then sign up at http://localhost:3000 — the first account creates your workspace.

Minimum configuration to boot

Only four backend variables are truly required: MONGODB_URI, ACCESS_TOKEN, REFRESH_TOKEN, and ENCRYPTION_KEY. Generate the secrets with:

openssl rand -hex 32   # ACCESS_TOKEN, REFRESH_TOKEN (use two different ones)
openssl rand -hex 16   # ENCRYPTION_KEY (must be 32 characters)

Everything else — voice provider, OpenAI key, integrations — can be added later, much of it directly in the CRM UI (Settings) rather than in .env.


Configuration

All backend settings are documented inline in NbProdBackend/.env.example; the frontend's are in NbProdFrontend/.env.example. Two things are worth knowing:

  • Per-workspace keys live in the UI, not .env. A workspace owner sets their Bolcho calling key and their OpenAI analysis key under Settings — stored encrypted at rest. The .env values (OPENAI_API_KEY, etc.) are only a deployment-wide fallback for single-tenant setups.
  • ENCRYPTION_KEY must stay stable. It encrypts those stored keys; changing it makes previously-saved keys unreadable (they can just be re-entered).

Repository layout

NbProdBackend/     Express + Mongoose API, scheduler, call handling, integrations
NbProdFrontend/    Next.js app (dashboard, leads, settings)
docs/              Setup & integration guides
docker-compose.yml One-command local stack

Documentation


Contributing

Issues and pull requests are welcome. For substantial changes, open an issue first to discuss the approach. Please don't commit real credentials — .env is gitignored and .env.example is the template.

License

Voice AI CRM is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). You may use, modify, and self-host it freely, including for internal business use. If you run a modified version as a network service, the AGPL requires you to make your source available to its users. See LICENSE for the full text.

About

Free, open-source, self-hosted CRM for AI voice agents. Your AI agents call the leads; summaries, outcomes and follow-ups come back automatically. Bring your own voice provider (Vapi/Bolcho) and OpenAI key.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages