dograh
Title: dograh
Author:
- Dograh (dograh-hq/dograh)
- Quick Start (Local Setup)
- Appointment scheduling software
- How it works with Dograh:
- How to Run a Live Speech Test
- What Pipecat Does
- How Dograh Uses Pipecat
- How Dograh Makes Money
- Why Give the Core Code Away Free?
- Audio recordings and transcripts
- In Dograh v1.46.0, call session recordings cannot be deleted through the user interface.
- The best way to administer Dograh
- Instant Email Notifications
- No-Code Integration (Make.com or Zapier)
- To build an appointment scheduler in Dograh with Calendar access.
- 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.
- The low-cost strategy pairs Easybell Business 2 with your home-hosted Dograh instance:
- Routing traffic from your static Cloudflare Pages site to your local Dograh instance
- could I use tailscale ? would that be easier?
https://github.com/dograh-hq/dograh
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.
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
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.
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:
- Live Speech Input & Output: When you launch Test Audio in the Dograh dashboard (
http://localhost:3010), the system captures your microphone audio, streams it through Speech-to-Text (STT), processes your prompt logic and API tool calls, and responds out loud via Text-to-Speech (TTS). - Real-Time Call Experience: You can converse naturally as if you just picked up the phone. This allows you to test interruption handling, natural pauses, accent handling, and multi-turn conversations live.
- Test Chat Iteration: In addition to voice, Dograh offers a Test Chat panel. This lets you quickly edit prompt turns, replay previous user statements, and inspect workflow node transitions in text before testing them out loud.
How to Run a Live Speech Test
- Start your local Dograh container (
./startdocker.sh). - Open
http://localhost:3010in your web browser. - Open your agent workflow (e.g., Doctor Appointment Scheduler).
- Click Test Agent in the upper-right corner of the workflow editor.
- Select Test Audio and allow browser access to your microphone.
- 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:
- "100.122.130.97:3010:3010"
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.
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:
- Transport: Receives audio streams from a browser, WebRTC connection, or a telephone network (like Twilio, Vonage, or SIP).
- Speech Recognition (STT): Instantly converts user audio into text using services like Deepgram, AssemblyAI, or Whisper.
- LLM Processing: Feeds the text into an AI model (OpenAI, Anthropic, DeepSeek, local models via Ollama, etc.) to generate a response.
- 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
- Pluggable & Vendor-Neutral: Supports over 150+ AI services and transport layers, allowing you to swap out any LLM, STT, or TTS provider with minimal code changes.
- Real-Time Interruption Handling: Handles natural conversation patterns like interruptions, back-channeling ("uh-huh"), and silence detection.
- Multi-Agent Capabilities: Supports routing conversations across specialized sub-agents via a shared message bus or running parallel processing pipelines.
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.
-
How Dograh Makes Money
Dograh Cloud (SaaS / Pay-as-You-Go): For teams that don't want to manage Docker, WebRTC servers, or server maintenance, Dograh offers a hosted cloud version. Users pay
a small per-minute platform fee (around 1¢/min) or a monthly subscription for
convenience, scalability, and built-in models. - Enterprise & On-Premise Support: Large companies (in healthcare, finance, or telephony) often require custom security compliance, SOC2, HIPAA compliance, SAML/SSO, custom SLAs, and dedicated engineering assistance. Dograh charges enterprise clients for on-premise VPC deployments and managed support contracts.
- Bundled Model & Telephony Usage: While developers can bring their own API keys (BYOK) for LLMs, STT, and TTS when self-hosting, Dograh also offers bundled AI and phone number infrastructure, taking a small margin on compute and telephony minutes.
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:
- 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.
- Rapid Developer Adoption: Open source drives fast community adoption, integration testing, and external code contributions (such as telephony provider extensions).
- 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.
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:
- Username / Access Key:
minioadmin - Password / Secret Key:
minioadmin
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.
In Dograh v1.46.0, call session recordings cannot be deleted through the user interface. #
Why the UI works this way:
Recordings(under BUILD): Used exclusively for managing pre-recorded audio snippets (like custom greetings or hold music) that agents inject into calls.Agent Runs(under MANAGE): Designed as an immutable audit log. You can view transcripts, inspect latency/tool calls, and listen to.wavfiles, but the UI deliberately omits a "Delete" button for call records to preserve telemetry and usage metrics.
Your options for deleting files:
- Manual Deletion (MinIO Console): Log in at
http://localhost:9001(User:minioadmin/ Pass:minioadmin), open thevoice-audiobucket, go torecordings/, and delete the.wavfiles directly. - Automated Cleanup (MinIO ILM): Set a Lifecycle Management rule inside the MinIO console on the
voice-audiobucket to automatically delete files older than a set number of days (e.g., 7 or 30 days).
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:
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
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:
- API Keys: Generate keys to trigger agent workflows from external services (e.g., n8n, webhooks, or custom backends).
- Service Keys: Manage credentials for external LLM, STT, and TTS inference providers.
Sub-System Admin Consoles
For self-hosted infrastructure administration, access the underlying service dashboards directly:
- Storage Console (MinIO):
http://localhost:9001(Default:minioadmin/minioadmin) to managevoice-audiofiles, set retention lifecycle rules, or grant bucket access. - Database (PostgreSQL): Connect to
localhost:5432(User/DB:postgres) usingpsqlor GUI tools like DBeaver to inspect run records and schemas directly. - State & Queues (Redis): Access via
redis-cli -p 6379 -a redissecretto check active session keys or cache states.
SDKs & CLI Automation
- Python & TypeScript SDKs: Dograh provides SDKs to configure agents and initiate runs directly from code.
- AI Coding Plugins: If using tools like Claude Code or Codex, you can install the official plugin (
dograh-hq/dograh-plugins) to let an AI assistant automate environment setup, health checks, and service configurations.
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:
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 Handlerapp.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 });
});
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:
- Trigger: Catch Webhook (Paste the generated webhook URL into your Dograh Assistant Settings).
- Action 1 (Slack/Teams): Send a real-time channel alert:
🚀 New Lead: Bingo from Bingo Incorporated interested in hiring for "The boss of QA". - Action 2 (Notion/Airtable): Add a row to a Recruiter Leads database table to track outreach status.
- Action 3 (CRM): Automatically create a new Contact and Deal in HubSpot, Pipedrive, or Salesforce.
3. Automated Personalized Email Response
You can trigger an auto-responder back to the recruiter using their contactemail:
- Subject:
Re: Senior QA Engineer Position at ${companyname} - Body: Automatically attach your full PDF resume and a scheduling link (e.g., Calendly) tailored to the
jobopportunitymentioned during the call.
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:
- 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.
- n8n Webhook Listener: n8n catches the payload (containing extracted variables like
callername,email,requesteddate,timeslot). - Google Calendar Node (Lookup & Create):
- Lookup: n8n uses the Google Calendar -> Get Free/Busy node to check if the requested time slot is available.
- Scheduling: If free, n8n invokes Google Calendar -> Create Event.
- 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:
- Deploy Google Calendar MCP Server: Run an official or custom MCP server (e.g.,
@modelcontextprotocol/server-google-calendaror a Python FastMCP equivalent). - Register Tools: The MCP server exposes explicit tools to the agent:
listcalendarevents(starttime, endtime)checkavailability(timeslot)createcalendarevent(summary, start, end, attendeeemail)
- In-Call Execution: When a caller asks "Are you free on Tuesday at 3 PM?", the agent calls the
checkavailabilityMCP tool directly mid-conversation, receives the live payload, and answers in real-time before scheduling the event viacreatecalendar_event.
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:
- Middleware HTTP Bridge: Host a local FastAPI or Express.js server on your Mac.
- 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 eventtell 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
- If Calendar.app is synced with your Google account, macOS handles background synchronization automatically.
Workflow Comparison
| Feature | n8n Webhooks | MCP Server | Local macOS Script |
|---|---|---|---|
| --- | --- | --- | --- |
| Setup Effort | Low (Drag-and-drop) | Medium | High |
| --- | --- | --- | --- |
| Authentication | Built-in OAuth2 | Requires API Keys / Credentials | Local macOS Permissions |
| --- | --- | --- | --- |
| Execution Context | Cloud or Self-hosted | Model-driven Tool Call | Local System Bridge |
| --- | --- | --- | --- |
| Best For | Production pipelines & CRMs | Direct LLM agent integration | Local desktop testing |
Financial Summary
| Item | Cost (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 Binding | None (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
- SIP Registration Method: Direct client registration via SIP credentials (
sip.easybell.de), avoiding the €9.95/mo FQDN add-on fee. - Concurrent Calls: Supports up to 2 simultaneous voice channels.
- Local Area Code (Vorwahl): Free selection matching your registered home address (e.g., 030 Berlin, 040 Hamburg, 0511 Hanover).
- Softphone Compatibility: Registers up to 5 SIP endpoints/softphones simultaneously alongside Dograh.
- Self-Hosted AI Stack: Runs locally on Docker via Dograh, linked to your custom
mlx_whisperFastAPI server for local speech recognition.Routing traffic from your static Cloudflare Pages site to your local Dograh instance
using Cloudflare Tunnel (cloudflared).
1.Install cloudflared on your home PC:Requires terminal access on the host PC running Dograh.Download and install the Cloudflare Tunnel daemon on the home computer running your Dograh containers:Windows (PowerShell):PowerShellwinget install --id Cloudflare.cloudflared - Linux (Ubuntu/Debian):Bashcurl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
- sudo dpkg -i cloudflared.deb
- macOS:Bashbrew install cloudflared
- 2.Create and connect a Cloudflare Tunnel:Prerequisite: A custom domain pointed to Cloudflare DNS.Log in to your Cloudflare Dashboard and navigate to Zero Trust $\rightarrow$ Networks $\rightarrow$ Tunnels.Click Create a Tunnel, select Cloudflared, and name it (e.g., home-dograh-server).Copy the OS-specific terminal command shown on the screen and run it on your home PC. This installs cloudflared as a background system service and establishes the tunnel connection.3.Route a public domain to your local Dograh port:In the Tunnel configuration panel under Public Hostnames:Set Subdomain to dograh (or your preferred prefix).Select your Domain from the dropdown menu (e.g., yourdomain.com).Set Type to HTTP.Set URL to localhost:3010 (or localhost:8000 depending on whether you are routing traffic through the Web UI/proxy or directly to the API server).Save the rule.Note: Cloudflare automatically provisions a free SSL certificate for https://dograh.yourdomain.com. Browsers require HTTPS to enable microphone audio streams for voice widgets.4.Configure CORS origins in Dograh:Ensure your Dograh instance permits Cross-Origin requests originating from your static site domain:Open the .env file inside your local dograh project directory.Update or add the domain settings:envPUBLICURL=https://dograh.yourdomain.com
- CORSALLOWEDORIGINS=https://your-static-site.pages.dev,https://yourdomain.com
- Restart your Dograh Docker stack:Bashdocker compose restart
- 5.Embed the widget into your static Cloudflare Pages site:In your static site's repository, add the Dograh widget script tag to index.html right before the closing </body> tag:HTML<!-- Dograh Chat & Voice Widget -->
- <script>
- window.DograhConfig = {
- agentId: "YOURDOGRAHAGENTID",
- apiHost: "https://dograh.yourdomain.com"
- };
- </script>
- <script src="https://dograh.yourdomain.com/widget.js" async></script>
- Commit your changes and push to GitHub or deploy via Cloudflare Pages.
could I use tailscale ? would that be easier?
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
| Feature | Cloudflare Tunnel (cloudflared) | Tailscale Funnel |
|---|---|---|
| Public Visitor Access | Yes (built for public web traffic) | Yes (requires turning on Funnel) |
| Domain Setup | Native dograh.yourdomain.com | Default machine-name.tailnet.ts.net |
| Traffic & Scaling | Optimized for high web traffic & WebSockets | Intended for webhooks, testing, & light traffic |
| Ecosystem | Native integration with Cloudflare Pages | Standalone mesh network service |
Why Cloudflare Tunnel is Better for This Setup
- 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.netdomain by default. - 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.
- 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
#
Loading comments...