* docs: flesh out stub node pages for Global, Start Call, Agent, End Call, QA Each page was previously a stub (1 sentence or a single <Note>). Now contains: - Plain-English explanation of what the node does and when it runs - Fields/configuration reference - Common mistakes section - Next Steps with CardGroup links Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: fix heading structure, Warning placement, variable formatting in node pages - qa.mdx: promote Viewing QA Results from h3 to h2 (was incorrectly nested under Where it sits on the canvas) - end-call.mdx: move Warning inside Common Mistakes, directly after the bullet it relates to - start-call/agent/end-call/qa.mdx: wrap bare gathered_context and initial_context in backticks in Card descriptions Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: correct node page errors found by cross-checking against live API + DTO start-call: - Fix Node Name description (canvas label, not agent spoken name) - Split Greeting Text and Prompt into separate documented fields (were conflated) - Add Delayed Start field (real config option, was missing entirely) - Fix Common Mistakes (remove wrong Agent Name claim) - Add Pre-recorded Audio note with link end-call: - Remove incorrect <Note> claiming one End Call per workflow - DTO has no max_instances constraint; llm_hint explicitly says multiple are supported - Fix Common Mistakes to reflect correct guidance (multiple allowed) agent: - Add Extracting variables section documenting extraction_enabled, extraction_prompt, extraction_variables fields with a concrete example Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: fix field names and QA model against live platform schemas - qa.mdx: replace fictional criteria-list concept with accurate qa_system_prompt field; document default output format (tags, score, sentiment, summary); add sampling/duration/voicemail filter settings - global.mdx: correct prompt-merge order (global prepended, not appended) - start-call.mdx: update stale "Greeting Prompt" reference in common mistakes to match renamed field "Greeting Text" Verified against live node schemas via Dograh MCP get_node_type. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: fix em dash violations and appended/prepended contradiction - global.mdx: "silently appended" contradicted "global content first"; changed to "prepended" for internal consistency and schema accuracy - qa.mdx: remove two em dashes (hard no per style rules) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: correct node docs against live workflow SDK evidence - start-call: replace invented fixed edge labels with accurate explanation that edge labels and conditions are user-defined; add real examples - end-call: rename "Final Message" to "Prompt" to match SDK field name used in all real workflows; update all references - global: add Start Call to Add Global Prompt toggle coverage (startCall has add_global_prompt: true by default per schema) - qa: replace informal tag descriptions with actual default tag names from the qa_system_prompt schema All changes verified against live Dograh MCP node schemas and real workflow SDK code (workflow IDs 7764, 8291). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: flesh out all 5 voice agent node pages with accurate UI fields Complete rewrite of stub docs for global, start-call, agent, end-call, and qa nodes. Field names, toggle labels, and section headings now match the actual Dograh UI exactly. Covers all fields visible in each node edit panel including Allow Interruption, Add Global Prompt, Delayed Start, Enable Variable Extraction, Pre-Call Data Fetch, and QA settings table. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: remove Allow Interruption from End Call node End Call does not expose an Allow Interruption toggle in the UI. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: address cubic and greptile review comments on node pages - agent.mdx, end-call.mdx: remove/correct gathered_context claims - it is not available in any node's Prompt, only in Webhook payloads and the run record (confirmed against context-and-variables.mdx) - global.mdx: fix appended -> prepended in frontmatter description and Common Mistakes (contradicted How It Works section) - introduction.mdx: update End Call node-type table - multiple End Call nodes are supported, not just one - agent.mdx, end-call.mdx, qa.mdx, start-call.mdx: tag bare code fences as text for Mintlify syntax highlighting - global.mdx, start-call.mdx, agent.mdx, end-call.mdx, qa.mdx: convert absolute internal links to relative paths per style guide * docs: embed video tutorials on all 5 node pages, fix cubic grammar comment - Add Video Tutorial section (iframe embed) to global, start-call, agent, end-call, and qa node pages, matching the pattern already used in webhook.mdx - global.mdx: fix "Global Node contain" -> "Global Node contains" in frontmatter description, per cubic review on |
||
|---|---|---|
| .agents/skills | ||
| .devcontainer | ||
| .github | ||
| .vscode | ||
| api | ||
| config/coturn | ||
| deploy | ||
| docs | ||
| evals | ||
| examples | ||
| nginx | ||
| pipecat@aadd1d5dd6 | ||
| scripts | ||
| sdk | ||
| ui | ||
| .dockerignore | ||
| .gitignore | ||
| .gitmodules | ||
| .nvmrc | ||
| .python-version | ||
| .release-please-manifest.json | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| CONTRIBUTING.md | ||
| docker-compose-local.yaml | ||
| docker-compose.yaml | ||
| LICENSE | ||
| README.ja-JP.md | ||
| README.md | ||
| README.zh-CN.md | ||
| release-please-config.json | ||
| remote_up.sh | ||
| SECURITY.md | ||
Dograh AI
The open-source, self-hostable alternative to Vapi & Retell — build production voice agents with a visual workflow builder, test them in minutes, and let AI coding assistants help design and edit them through MCP.
📖 Docs · 📜 BSD 2-Clause · 🌐 中文 · 🌐 日本語
- 100% open source, self-hostable — no vendor lock-in, unlike Vapi or Retell
- Full control & transparency — every line of code is open, with flexible LLM / TTS / STT integration
- Maintained by YC alumni and exit founders, committed to keeping voice AI open
🎥 Featured
⚖️ Dograh vs Vapi vs Retell
An honest comparison on the axes that matter most to teams evaluating voice AI platforms.
| Dograh | Vapi | Retell | |
|---|---|---|---|
| License | BSD 2-Clause (open source) | Proprietary | Proprietary |
| Self-hostable | ✅ Yes — one Docker command | ❌ SaaS only | ❌ SaaS only |
| Pricing | Free (self-host) · usage-based (cloud) | Per-minute SaaS | Per-minute SaaS |
| Bring your own LLM / STT / TTS | ✅ Any provider, or use Dograh's stack | Configurable within their integrations | Configurable within their integrations |
| Source-level customization | ✅ Every line is yours to modify | ❌ Closed source | ❌ Closed source |
| Data residency | Your infra, your rules | Their cloud | Their cloud |
| Vendor lock-in | None | Full | Full |
🚀 Get Started
Download and setup Dograh on your Local Machine
Note
We collect anonymous usage data to improve the product. You can opt out by setting
ENABLE_TELEMETRY=falsebefore running the startup script.
Note
If you wish to run the platform on a remote server instead, checkout our Documentation
curl -o docker-compose.yaml https://raw.githubusercontent.com/dograh-hq/dograh/main/docker-compose.yaml && curl -o start_docker.sh https://raw.githubusercontent.com/dograh-hq/dograh/main/scripts/start_docker.sh && chmod +x start_docker.sh && ./start_docker.sh
⚡ Prefer an AI agent to set it up for you? If you use Claude Code or Codex, install the official Dograh setup skill and let your agent handle installation, configuration, and troubleshooting — it detects your OS, picks the right deploy path, runs Dograh's own setup scripts, and verifies the result.
# In Claude Code /plugin marketplace add dograh-hq/dograh-plugins /plugin install dograh@dograhThen start a new session and ask it to "set up Dograh" (or run
/dograh-setup). Codex is supported too — see the plugin repo.
Note
First startup may take 2-3 minutes to download all images. Once running, open http://localhost:3010 to create your first AI voice assistant! For common issues and solutions, see 🔧 Troubleshooting.
🎙️ Your First Voice Bot
- Open http://localhost:3010 in your browser.
- Pick Inbound or Outbound, name your bot (e.g. Lead Qualification), and describe the use case in 5–10 words (e.g. Screen insurance form submissions for purchase intent).
- Click Test Agent.
- Use Test Audio to talk to your agent in the browser, or Test Chat to iterate faster in text. In Test Chat, you can edit or replay user turns and Dograh will regenerate the agent's replies and node transitions from that point.
🔑 No API keys needed. Dograh ships with auto-generated keys and its own LLM / TTS / STT stack. Connect your own keys for LLM, TTS, STT, or Telephony (e.g. Twilio, Vonage, Telnyx) anytime.
Build Agents with MCP
Dograh ships with an MCP server, so coding agents can work directly inside your Dograh workspace.
Connect Codex, Claude Code, Cursor, or any MCP client to inspect existing agents, search Dograh docs, fetch node schemas, create new workflows, and save draft edits from natural language.
When asking your coding agent to build a voice agent, share a short script for the use case instead of only a one-line prompt. Include the agent persona, call flow, rules, objection handling, success criteria, and a sample conversation if you have one.
See the MCP guide to connect your assistant.
Features
Voice Agent Builder
- Visual workflow builder with start nodes, agent nodes, global instructions, tools, transitions, and end-call outcomes
- Test Agent panel with Test Audio for browser voice testing and Test Chat for fast prompt iteration
- QA node, knowledge bases, webhooks, embeds, and tool calling for production workflows
Voice & Telephony
- Built-in telephony integrations including Twilio, Vonage, Telnyx, Plivo, Vobiz, Cloudonix, and Asterisk ARI
- Human handoff with call transfer on supported telephony providers
- Bring your own LLM, TTS, STT, and telephony providers; store artifacts in bundled MinIO or AWS/S3-compatible storage
Developer Experience
- One-command Docker setup for self-hosting
- Python backend and modular provider architecture for customization
- Python and Node SDKs for programmatic agent creation and outbound calls
Deployment Options
Local Development
Refer Local Setup
Self-Hosted Deployment
For detailed deployment instructions including remote server setup with HTTPS, see our Docker Deployment Guide.
Cloud Version
Visit https://www.dograh.com for our managed cloud offering.
📚Documentation
You can go to https://docs.dograh.com for our documentation.
📦 SDKs
- Python SDK — pypi.org/project/dograh-sdk
- Node SDK — npmjs.com/package/@dograh/sdk
🤝Community & Support
👋 Coming from the Better Stack video? Drop your use case in our pinned GitHub Discussion — we read every reply and the founders personally onboard early adopters.
- Slack — the cornerstone of Dograh AI contributions. Connect with maintainers, discuss features before coding, get help with setup, and stay current on contribution sprints.
- GitHub Discussions — share use cases, ask questions, swap workflow recipes.
- GitHub Issues — report bugs or request features.
👉 Join us → Dograh Community Slack
🙌 Contributing
We love contributions! Dograh AI is 100% open source and we intend to keep it that way.
Getting Started
- Fork the repository
- Create your feature branch (git checkout -b feature/AmazingFeature)
- Commit your changes (git commit -m 'Add some AmazingFeature')
- Push to the branch (git push origin feature/AmazingFeature)
- Open a Pull Request
⭐ Star History
📄 License
Dograh AI is licensed under the BSD 2-Clause License- the same license as projects that were used in building Dograh AI, ensuring compatibility and freedom to use, modify, and distribute.
🏢 About
Built with ❤️ by Dograh (Zansat Technologies Private Limited) Founded by YC alumni and exit founders committed to keeping voice AI open and accessible to everyone.