Home

dograh

Title: dograh

Author:

https://github.com/dograh-hq/dograh

↑ Back to Top

Dograh (dograh-hq/dograh)

is an open-source, self-hostable voice AI platform designed as an alternative to proprietary cloud solutions like Vapi and Retell.


Core Features & Highlights

Open Source & Self-Hostable: Licensed under the BSD 2-Clause license with a one-command Docker setup (docker compose), allowing complete data privacy and local ownership.

Visual Workflow Builder: Provides an interface with start/agent nodes, global instructions, custom tools, dynamic transitions, and end-call outcomes.

Bring Your Own Key (BYOK) & Providers: Flexible integrations across speech-to-speech, LLM, text-to-speech (TTS), and speech-to-text (STT) providers. Out-of-the-box support for major telephony providers including Twilio, Vonage, Telnyx, Plivo, and others.

Model Context Protocol (MCP) Native: Integrates with AI assistants (such as Claude Code, Cursor, or Codex) via MCP servers so developers can build, inspect, and update voice workflows using natural language.

Developer Tools: Includes Python and Node SDKs, an interactive testing panel (with audio testing and text-based iteration), and support for building production-grade outbound/inbound phone bots.

↑ Back to Top

Quick Start (Local Setup)

To spin up Dograh locally using Docker:


Bash

curl-o docker-compose.yaml https://raw.githubusercontent.com/dograh-hq/dograh/main/docker-compose.yaml && \ curl -o startdocker.sh https://raw.githubusercontent.com/dograh-hq/dograh/main/scripts/startdocker.sh && \ chmod +x startdocker.sh && \ ./startdocker.sh



Once running, you can access the dashboard at http://localhost:3010.

any youtube video

↑ Back to Top

Appointment scheduling software

Could I build an appointment scheduling software for a customer care shop or doctors appointment scheduling, or a software that a user can use to auto dial a doctor or shop to cancel or change and order via calling the number?


Dograh can handle both of these use cases, as it is an open-source conversational voice engine designed specifically for building AI-driven phone agents.

Here is a look at what Dograh can do and how you would build those applications:

Relevant Walkthroughs & Demos

Below are relevant official video tutorials from Dograh demonstrating its agent-building and CRM integration capabilities:

How to Trigger Voice AI Calls from Your CRM (API Trigger) | Dograh Tutorial

Demonstrates initiating outbound calls programmatically via API, passing initial variables, and handling external webhooks.

Dograh Voice AI Tutorial - Open-Source Alternative to Vapi

Covers platform architecture, node creation, and self-hosting options.

Use Case 1: Appointment Scheduling Agent (Inbound/Outbound)

you can build this.

When an incoming patient or customer calls, Dograh can pick up the phone, ask for their preferred date and time, check availability using dynamic tool calls, and lock in the booking.

How it works with Dograh:

Visual Workflow Canvas: You create an inbound agent workflow with nodes for collecting caller details (name, preferred appointment slot, reason for visit).

Tool Calling / Webhooks: Dograh supports custom tool nodes. You link the agent to your scheduling API or database (e.g., Google Calendar, Cal.com, EHR/EMR platforms, or custom SQL databases).

Dynamic Verification: During the call, the LLM calls your tool in real time, checks if 2:00 PM on Tuesday is open, and speaks back the answer to the caller before executing the booking.

Use Case 2: Auto-Dialer Agent to Change/Cancel Orders or Appointments

Yes, you can build this as well.

You can trigger Dograh programmatically to dial out to a business (or a customer), speak to the recipient, state the intent (e.g., "I'm calling to reschedule order #1234"), collect new details, and end the call.

↑ Back to Top

How it works with Dograh:

API Triggers: Using Dograh’s Python or Node SDKs (or its REST API), your application triggers an outbound call with initial context:

JSON

{

"phonenumber": "+1234567890",

"customername": "Jane Doe",

"appointmentid": "APT-9982",

"action": "RESCHEDULE",

"newtime": "Friday at 10 AM"

}

Telephony Integration: Dograh routes the call out via Twilio, Vonage, Telnyx, or Asterisk ARI.

Interactive Conversation: Once the shop or receptionist answers, the agent states the purpose, handles any back-and-forth prompts or objections, and logs the call outcome via a Webhook Node back to your main application once completed.


Key Dograh Features That Make This Possible

Feature Capability

Tool Calling Executes external REST API calls mid-conversation to read or write database records.

MCP Integration Connects directly to AI coding tools like Claude Code or Cursor so you can design workflow nodes using natural language prompts.

API Triggers & Webhooks Launches outbound automated calls programmatically and sends call summaries/transcripts back to your server.

Human Handoff Allows transferring the call to a live human operator if the caller asks for a supervisor or complex handling is required.


You can simulate a live voice call directly in your web browser using your computer's microphone and speakers—without needing a phone number, carrier, or paid Twilio account.

Browser Voice Simulator ("Test Audio")

Dograh includes a built-in web call testing environment inside its workflow dashboard:

  1. Start your local Dograh container (./startdocker.sh).
  2. Open http://localhost:3010 in your web browser.
  3. Open your agent workflow (e.g., Doctor Appointment Scheduler).
  4. Click Test Agent in the upper-right corner of the workflow editor.
  5. Select Test Audio and allow browser access to your microphone.
  6. Start talking to test the full conversational flow.

Verification: You will hear the AI voice respond through your speakers in real time while watching the visual builder highlight which workflow node is currently executing.

I have cloned the repro but I want to run it in a docker container on http://100.122.130.97/ *(tailscale)

1

Locate the Docker Compose configuration

Repository root directory

Open your cloned dograh repository folder and locate the active compose file (docker-compose.yaml or docker-compose-local.yaml).

2

Bind the UI service port to your Tailscale IP

Port mapping modification

Find the frontend or UI service block within the file where port 3010 is exposed. Modify the port mapping string to explicitly bind to your Tailscale IP address (100.122.130.97) instead of binding globally to all interfaces:

YAML

ports:

3

Configure environment variables

.env file check

Check your .env configuration file (copy from .env.example if you haven't yet) and update any API URLs or host references to use http://100.122.130.97:3010 so internal frontend-to-backend calls resolve correctly across your Tailscale network.

4

Launch the containers

Execution

Run the startup script from your repository root to spin up the container stack:

Bash

./scripts/startdocker.sh

Verification: Open http://100.122.130.97:3010 in a browser on any machine connected to your Tailscale network to confirm the dashboard loads.

Pipecat is an open-source Python framework built for creating real-time voice, video, and multimodal AI agents. Developed and maintained by Daily and the open-source community, it acts as the underlying engine that orchestrates how different AI services talk to each other.

↑ Back to Top

What Pipecat Does

Instead of developers having to manually stitch together separate WebRTC/telephony connections, audio streaming, speech recognition (STT), large language models (LLMs), and text-to-speech (TTS) services, Pipecat manages everything in a composable pipeline:

  1. Transport: Receives audio streams from a browser, WebRTC connection, or a telephone network (like Twilio, Vonage, or SIP).
  2. Speech Recognition (STT): Instantly converts user audio into text using services like Deepgram, AssemblyAI, or Whisper.
  3. LLM Processing: Feeds the text into an AI model (OpenAI, Anthropic, DeepSeek, local models via Ollama, etc.) to generate a response.
  4. Speech Synthesis (TTS): Converts the text reply back into natural-sounding audio via Cartesia, ElevenLabs, or Kokoro, and streams it back to the user with ultra-low latency (typically 500–800ms round trips).

Key Features

↑ Back to Top

How Dograh Uses Pipecat

Dograh is built on top of Pipecat. While Pipecat provides the low-level Python framework, pipelines, and integrations, Dograh wraps it into a complete, self-hostable platform with a visual workflow builder, database storage, user interface, and MCP integration so you can design voice agents without starting from scratch in Python.

Dograh uses an Open-Core / Commercial Open-Source (COSS) business model. The core platform and visual builder are 100% open-source under the BSD 2-Clause license, while revenue is generated through cloud hosting, enterprise support, and managed infrastructure.

↑ Back to Top

Why Give the Core Code Away Free?

Closed-source competitors like Vapi and Retell charge a 60% to 80% platform markup on top of underlying LLM, Speech-to-Text, and Text-to-Speech costs just for hosting the workflow UI.

Dograh's founders use open source as a strategic distribution lever:

  1. Undercutting "Dashboard Fees": By making the workflow engine free and self-hostable, developers can run voice agents at wholesale API rates without paying per-minute platform rent.
  2. Rapid Developer Adoption: Open source drives fast community adoption, integration testing, and external code contributions (such as telephony provider extensions).
  3. Enterprise Funnel: Companies evaluating local voice agents often realize they need help scaling, securing, or deploying on dedicated cloud instances—converting those users into enterprise cloud customers.

↑ Back to Top

Audio recordings and transcripts

are store at The MinIO console (port 9001) uses the default root credentials set in your docker-compose.yml file, unless they were overridden during your initial setup.

To log in, use these default credentials:

If you changed your root password in your .env file or docker-compose setup, check the MINIOROOTUSER and MINIOROOTPASSWORD (or MINIOACCESSKEY and MINIOSECRETKEY) values defined in your environment configuration.


↑ Back to Top

In Dograh v1.46.0, call session recordings cannot be deleted through the user interface.

Why the UI works this way:

Your options for deleting files:

↑ Back to Top

The best way to administer Dograh

depends on whether you prefer managing settings visually, testing API endpoints directly, or driving the system programmatically.

Interactive API Developer Console

Since Dograh's backend is built on FastAPI, it includes a built-in interactive developer console:

You can use this interface to test API endpoints, inspect request schemas, manage agents, and trigger runs programmatically.

In-App Developer Settings

In the Dograh web UI (http://localhost:3010), navigate to Developers in the sidebar:

Sub-System Admin Consoles

For self-hosted infrastructure administration, access the underlying service dashboards directly:

SDKs & CLI Automation

When a call completes, Dograh sends a JSON payload containing extractedvariables (such as recruitername, companyname, contactemail, and job_opportunity) to your configured webhook endpoint.

Here are the primary ways to automate and utilize this data in your workflow:

↑ Back to Top

Instant Email Notifications

(Resend / SendGrid / Node.js)

You can set up a lightweight API endpoint (Express, Next.js, or AWS Lambda) that receives the webhook payload and emails you immediately when a recruiter calls.


// Example Express Webhook Handler

app.post('/api/dograh-webhook', async (req, res) => {

const { extractedvariables, callstatus } = req.body;

if (callstatus === 'endcall' && extracted_variables) {

const { recruitername, companyname, contactemail, jobopportunity } = extracted_variables;

// Send email using your preferred service (e.g., Resend)

await resend.emails.send({

from: '[email protected]',

to: '[email protected]',

subject: New Recruiter Lead: ${recruitername} from ${companyname},

html: `

<h2>New Candidate Screening Lead</h2>

<p><strong>Recruiter:</strong> ${recruiter_name}</p>

<p><strong>Company:</strong> ${company_name}</p>

<p><strong>Email:</strong> ${contact_email}</p>

<p><strong>Role Offered:</strong> ${job_opportunity}</p>

`

});

}

res.status(200).send({ success: true });

});


↑ Back to Top

No-Code Integration (Make.com or Zapier)

If you prefer not to host a webhook server, route the Dograh webhook directly to Make.com or Zapier:

3. Automated Personalized Email Response

You can trigger an auto-responder back to the recruiter using their contactemail:

↑ Back to Top

To build an appointment scheduler in Dograh with Calendar access.

you can choose from three distinct architecture patterns depending on your preferred level of control, maintenance, and technical complexity.

Strategy 1: n8n Workflow (Recommended for Fast Setup & Reliability)

Using n8n as a webhook orchestration engine is the most stable and production-ready approach. Dograh triggers custom Webhook nodes during or after the call, and n8n handles the OAuth2 handshake with Google Calendar.

How it works:

  1. Dograh Node Execution: In your Dograh workflow node, add an API Request / Webhook step (or transition condition) configured to fire when a booking slot is needed.
  2. n8n Webhook Listener: n8n catches the payload (containing extracted variables like callername, email, requesteddate, timeslot).
  3. Google Calendar Node (Lookup & Create):
  1. Response Back to Dograh: n8n returns a JSON response (e.g., {"status": "confirmed", "eventlink": "..."}) which Dograh uses to formulate the voice response.

If you are using Dograh alongside an LLM runner or agentic setup that supports MCP tools, you can expose Google Calendar functions directly as tools that the agent invokes dynamically during natural conversation.

How it works:

  1. Deploy Google Calendar MCP Server: Run an official or custom MCP server (e.g., @modelcontextprotocol/server-google-calendar or a Python FastMCP equivalent).
  2. Register Tools: The MCP server exposes explicit tools to the agent:
  1. In-Call Execution: When a caller asks "Are you free on Tuesday at 3 PM?", the agent calls the checkavailability MCP tool directly mid-conversation, receives the live payload, and answers in real-time before scheduling the event via createcalendar_event.

↑ Back to Top

If Dograh or your middleware runs locally on macOS, you can invoke direct AppleScript / Swift / Python automation scripts that interact with local calendar stores or execute CLI calendar tools.

How it works:

  1. Middleware HTTP Bridge: Host a local FastAPI or Express.js server on your Mac.
  2. Execute macOS Scripts: When Dograh sends a request to your local bridge, execute a shell script or AppleScript (osascript) to interface with Calendar.app:
-- Example AppleScript snippet invoked by local bridge to add event

tell application "Calendar"

tell calendar "Work"

make new event with properties {summary:"Dograh Interview Follow-up", start date:date "Tuesday, September 15, 2026 15:00:00", end date:date "Tuesday, September 15, 2026 15:30:00"}

end tell

end tell

  1. If Calendar.app is synced with your Google account, macOS handles background synchronization automatically.

Workflow Comparison

Featuren8n WebhooksMCP ServerLocal macOS Script
------------
Setup EffortLow (Drag-and-drop)MediumHigh
------------
AuthenticationBuilt-in OAuth2Requires API Keys / CredentialsLocal macOS Permissions
------------
Execution ContextCloud or Self-hostedModel-driven Tool CallLocal System Bridge
------------
Best ForProduction pipelines & CRMsDirect LLM agent integrationLocal desktop testing

↑ Back to Top


The low-cost strategy pairs Easybell Business 2 with your home-hosted Dograh instance:

Financial Summary

ItemCost (Months 1–6)Cost (Month 7 Onward)
---------
Business 2 SIP Trunk (2 Voice Channels)€0.00 / month€1.95 / month
---------
Cloud Telefonanlage Basic (Up to 5 Seats)€0.00 / month€0.00 / month
---------
1st Local Landline Number€0.00€0.00
---------
Incoming Calls€0.00€0.00
---------
Contract BindingNone (Cancel anytime with 7 days' notice)None (Cancel anytime with 7 days' notice)
---------
Total Base Recurring Cost€0.00 / month€1.95 / month

Pay-as-you-go rates apply only for outgoing calls (0.98¢/min for DE landlines, 9.8¢/min for DE mobile networks).

Key Technical Specs

Yes, but only if you use Tailscale Funnel—and for a public website, Cloudflare Tunnel is still the cleaner choice.

If you use standard Tailscale, your Dograh widget will only work for your own devices logged into your private network. Any visitor accessing your Cloudflare Pages website from the outside world will see a broken chat widget.

To make it public with Tailscale, you must use Tailscale Funnel, which exposes a local machine port to the internet.


Cloudflare Tunnel vs. Tailscale Funnel

FeatureCloudflare Tunnel (cloudflared)Tailscale Funnel
Public Visitor AccessYes (built for public web traffic)Yes (requires turning on Funnel)
Domain SetupNative dograh.yourdomain.comDefault machine-name.tailnet.ts.net
Traffic & ScalingOptimized for high web traffic & WebSocketsIntended for webhooks, testing, & light traffic
EcosystemNative integration with Cloudflare PagesStandalone mesh network service


Why Cloudflare Tunnel is Better for This Setup

  1. Custom Domain Integration: Since your static site is on Cloudflare Pages, Cloudflare Tunnel automatically maps your home PC to your existing domain (e.g., dograh.yourdomain.com). Tailscale Funnel assigns a long *.ts.net domain by default.
  2. WebSocket & Audio Stream Performance: Dograh uses persistent audio/WebSocket connections for voice chat. Cloudflare's global edge network handles long‑lived web connections better than Tailscale Funnel relays.
  3. Fewer Moving Parts: Since you are already managing DNS and Pages inside Cloudflare, adding Cloudflare Tunnel keeps all your web traffic routing under one dashboard.

When Tailscale Would Be Easier

If you just want to test Dograh on your home PC from your phone while away from home (and not embed it on a public website for external users), standard Tailscale is much easier—just install the Tailscale app on your PC and phone.

For a public website widget, stick with Cloudflare Tunnel

Comments & Ratings

Leave a Comment

#

Loading ratings...

Loading comments...