diff --git a/README.md b/README.md index e44e0ae..dae73ae 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,11 @@ - - - # Dograh AI -

If you find value in this project, PLEASE STAR IT to help others discover our FOSS platform!

- +

If you find value in this project, PLEASE STAR the Github repository to help others discover our FOSS platform!

+ + Docs: https://docs.dograh.com + License: BSD 2-Clause @@ -26,8 +25,8 @@ Dograh helps you build your own voice agents with an easy drag-and-drop workflow ## 🎥 Demo Video

- - Watch Dograh AI Demo Video + + Watch Dograh AI Demo Video
Click to watch a 2-minute demo of Dograh AI in action @@ -35,82 +34,88 @@ Dograh helps you build your own voice agents with an easy drag-and-drop workflow ## 🚀 Get Started -### Prerequisites -Before you begin, make sure you have the requirements installed. See 📋 **[Prerequisites](docs/prerequisites.md)** for system requirements and port availability. - The only command you need to run: ##### Download and setup Dograh on your local machine + +> **Note** +> We collect anonymous usage data to improve the product. You can opt out by setting the `ENABLE_TELEMETRY` to `false` in the below command. + ```bash -curl -o docker-compose.yaml https://raw.githubusercontent.com/dograh-hq/dograh/main/docker-compose.yaml && REGISTRY=ghcr.io/dograh-hq docker compose up +curl -o docker-compose.yaml https://raw.githubusercontent.com/dograh-hq/dograh/main/docker-compose.yaml && REGISTRY=ghcr.io/dograh-hq ENABLE_TELEMETRY=true docker compose up ``` -> **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! +> **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](docs/troubleshooting.md)**. - + ### 🎙️ Your First Voice Bot 1. **Open Dashboard**: Launch [http://localhost:3010](http://localhost:3010) on your browser 2. **Choose Call Type**: Select **Inbound** or **Outbound** calling. -3. **Name Your Bot**: Use a short two-word name (e.g., *Lead Qualification*). -4. **Describe Use Case**: In 5–10 words (e.g., *Screen insurance form submissions for purchase intent*). +3. **Name Your Bot**: Use a short two-word name (e.g., _Lead Qualification_). +4. **Describe Use Case**: In 5–10 words (e.g., _Screen insurance form submissions for purchase intent_). 5. **Launch**: Your bot is ready! Open the bot and click **Web Call** to talk to it. 6. **No API Keys Needed**: We auto-generate Dograh API keys so you can start immediately. You can switch to your own keys anytime. 7. **Default Access**: Includes Dograh’s own LLMs, STT, and TTS stack by default. 8. **Bring Your Own Keys**: Optionally connect your own API keys for LLMs, STT, TTS, or telephony providers like Twilio. ## Quick Summary + ⚡ 2-Minute Setup: Hard SLA standards - from zero to working voice bot in under 2 minutes -- 🔧 Minimal setup: Just [run docker command](#get-started) and you're live + +- 🔧 Minimal setup: Just [run docker command](#get-started) and you're live - 🤖 AI Testing Personas: Test your bots with LoopTalk AI that mimics real customer interactions - 🔓 100% Open Source: Every line of code is open - no hidden logic, no black boxes - 🔄 Flexible Integration: Bring your own LLM, TTS, or STT - or use Dograh’s API’s - ☁️ Self-Host or Cloud: Run locally or use our hosted version at app.dograh.com +## Features -## Features ### Voice Capabilities + - Telephony: Built-in Twilio integration (easily add others) - Languages: English support (expandable to other languages) - Custom Models: Bring your own TTS/STT models - Real-time Processing: Low-latency voice interactions ### Developer Experience + - Zero Config Start: Auto-generated API keys for instant testing - Python-Based: Built on Python for easy customization - Docker-First: Containerized for consistent deployments - Modular Architecture: Swap components as needed ### Testing & Quality + - LoopTalk (Beta): Create AI personas to test your voice agents - Workflow Testing: Test specific workflow IDs with automated calls - Real-world Simulation: AI personas that mimic actual customer behavior - -## Configuration -Dograh automatically generates API keys on first run, but you can use your own keys. - - OPENAI_API_KEY=your_key_here - - TWILIO_ACCOUNT_SID=your_sid_here - - TWILIO_AUTH_TOKEN=your_token_here - ## Architecture -Architecture diagram *(coming soon)* + +Architecture diagram _(coming soon)_ ## Deployment Options + ### Local Development -Refer [prerequisites](#prerequisites) and [first steps](#-get-started) + +Refer [prerequisites](https://docs.dograh.com/getting-started/prerequisites) and [first steps](#-get-started) ### Production (Self-Hosted) + Production guide coming soon. [Drop in a message](https://join.slack.com/t/dograh-community/shared_invite/zt-3czr47sw5-MSg1J0kJ7IMPOCHF~03auQ) for assistance. ### Cloud Version + Visit [https://www.dograh.com](https://www.dograh.com/) for our managed cloud offering. ## 📚Documentation -Full documentation is in progress. For now, this README will get you started. + +You can go to [https://docs.dograh.com](https://docs.dograh.com/) for our documentation. ## 🤝Community & Support + - GitHub Issues: Report bugs or request features - Slack: Our Slack community is not just for support — it’s the cornerstone of Dograh AI contributions. Here, you can: - Connect with maintainers and other contributors @@ -118,22 +123,14 @@ Full documentation is in progress. For now, this README will get you started. - Get help with setup and debugging - Stay up to date with contribution sprints - 👉 Join us → Dograh Community Slack -## Tech Stack -- FastAPI -- Pipecat -- LiveKit -- PostgreSQL -- Next.js -- XYFlow React -- Inbuilt Twilio integration -- Flexible back-end: switch to any LLM, TTS, or STT ## 🙌 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') @@ -141,9 +138,11 @@ We love contributions! Dograh AI is 100% open source and we intend to keep it th - Open a Pull Request ## 📄 License + Dograh AI is licensed under the [BSD 2-Clause License](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. @@ -154,4 +153,3 @@ Founded by YC alumni and exit founders committed to keeping voice AI open and ac ☁️ Try Cloud Version | 💬 Join Slack

- diff --git a/docker-compose.yaml b/docker-compose.yaml index 230de82..05c0b36 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -173,16 +173,17 @@ services: BACKEND_URL: "http://api:8000" NODE_ENV: "oss" + # Flag to enable/ disable posthog and sentry + ENABLE_TELEMETRY: "${ENABLE_TELEMETRY:-true}" + # Posthog - ENABLE_POSTHOG: "${ENABLE_POSTHOG:-true}" POSTHOG_KEY: "phc_ItizB1dP6yv7ZYobbcqrpxTdbomDA8hJFSEmAMdYvIr" POSTHOG_HOST: "https://us.posthog.com" # Sentry - ENABLE_SENTRY: "${ENABLE_SENTRY:-true}" SENTRY_DSN: "https://d9387fed5f80e90781f1dbd9b2c0994c@o4509486225096704.ingest.us.sentry.io/4510124708200448" ports: - - "3010:3000" + - "3010:3010" depends_on: api: condition: service_healthy @@ -190,7 +191,7 @@ services: test: [ "CMD-SHELL", - "wget --no-verbose --tries=1 --spider http://localhost:3000 || exit 1", + "wget --no-verbose --tries=1 --spider http://localhost:3010 || exit 1", ] interval: 30s timeout: 10s diff --git a/docs/CLAUDE.md b/docs/CLAUDE.md new file mode 100644 index 0000000..2daec40 --- /dev/null +++ b/docs/CLAUDE.md @@ -0,0 +1,53 @@ +# Mintlify documentation + +## Working relationship + +- You can push back on ideas-this can lead to better documentation. Cite sources and explain your reasoning when you do so +- ALWAYS ask for clarification rather than making assumptions +- NEVER lie, guess, or make up information + +## Project context + +- Format: MDX files with YAML frontmatter +- Config: docs.json for navigation, theme, settings +- Components: Mintlify components + +## Content strategy + +- Document just enough for user success - not too much, not too little +- Prioritize accuracy and usability of information +- Make content evergreen when possible +- Search for existing information before adding new content. Avoid duplication unless it is done for a strategic reason +- Check existing patterns for consistency +- Start by making the smallest reasonable changes + +## Frontmatter requirements for pages + +- title: Clear, descriptive page title +- description: Concise summary for SEO/navigation + +## Writing standards + +- Second-person voice ("you") +- Prerequisites at start of procedural content +- Test all code examples before publishing +- Match style and formatting of existing pages +- Include both basic and advanced use cases +- Language tags on all code blocks +- Alt text on all images +- Relative paths for internal links + +## Git workflow + +- NEVER use --no-verify when committing +- Ask how to handle uncommitted changes before starting +- Create a new branch when no clear branch exists for changes +- Commit frequently throughout development +- NEVER skip or disable pre-commit hooks + +## Do not + +- Skip frontmatter on any MDX file +- Use absolute URLs for internal links +- Include untested code examples +- Make assumptions - always ask for clarification diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..654d3a2 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,7 @@ +# Dograh AI Documentation + +### Local Setup + +1. Install mintlify `npm i -g mint` +1. Clone the repository +1. `cd dograh/docs` and run `mint dev` diff --git a/docs/docs.json b/docs/docs.json new file mode 100644 index 0000000..9cdc867 --- /dev/null +++ b/docs/docs.json @@ -0,0 +1,75 @@ +{ + "$schema": "https://mintlify.com/docs.json", + "theme": "mint", + "name": "Dograh AI", + "colors": { + "primary": "#16A34A", + "light": "#07C983", + "dark": "#15803D" + }, + "favicon": "/favicon.ico", + "navigation": { + "tabs": [ + { + "tab": "Guides", + "groups": [ + { + "group": "Getting started", + "pages": [ + { + "group": "Introduction", + "pages": [ + "getting-started/index", + "getting-started/prerequisites", + "getting-started/troubleshooting" + ] + } + ] + }, + { + "group": "Telephony Integrations", + "pages": [ + "telephony/twilio" + ] + } + ] + } + ] + }, + "logo": { + "light": "/logo/light.svg", + "dark": "/logo/dark.svg", + "href": "https://docs.dograh.com" + }, + "navbar": { + "links": [ + { + "label": "Support", + "href": "https://github.com/dograh-hq/dograh/issues/new/choose" + } + ], + "primary": { + "type": "button", + "label": "Dashboard", + "href": "https://app.dograh.com" + } + }, + "contextual": { + "options": [ + "copy", + "view", + "chatgpt", + "claude", + "perplexity", + "mcp", + "cursor", + "vscode" + ] + }, + "footer": { + "socials": { + "github": "https://github.com/dograh-hq", + "linkedin": "https://linkedin.com/company/dograh" + } + } +} diff --git a/docs/favicon.ico b/docs/favicon.ico new file mode 100644 index 0000000..0679bb7 Binary files /dev/null and b/docs/favicon.ico differ diff --git a/docs/getting-started/index.mdx b/docs/getting-started/index.mdx new file mode 100644 index 0000000..1f0fe94 --- /dev/null +++ b/docs/getting-started/index.mdx @@ -0,0 +1,26 @@ +--- +title: "Introduction" +description: "Welcome to Dograh AI documentation" +--- + +## Setting up + +Get the stack up and running using Docker with a single command. + +We collect anonymous usage data to improve the product. You can opt out by setting the `ENABLE_TELEMETRY` to `false` in the below command. + +```bash +curl -o docker-compose.yaml https://raw.githubusercontent.com/dograh-hq/dograh/main/docker-compose.yaml && REGISTRY=ghcr.io/dograh-hq ENABLE_TELEMETRY=true docker compose up +``` + +Please check [Prerequisites](getting-started/prerequisites) for the system requirements and [Troubleshooting](getting-started/troubleshooting) for common issues. + +You can also watch below video to see the setup in action. + + \ No newline at end of file diff --git a/docs/prerequisites.md b/docs/getting-started/prerequisites.mdx similarity index 64% rename from docs/prerequisites.md rename to docs/getting-started/prerequisites.mdx index b26beb1..89c6330 100644 --- a/docs/prerequisites.md +++ b/docs/getting-started/prerequisites.mdx @@ -1,4 +1,7 @@ -# Prerequisites +--- +title: "Prerequisites" +description: "System requirements and setup needed to run Dograh AI" +--- ## System Requirements @@ -6,8 +9,8 @@ - **RAM**: 8 GB (4 GB available for Docker) - **Storage**: 10 GB free disk space - **CPU**: 2 cores (x86_64 or ARM64) -- **OS**: - - macOS 10.15+ (Catalina or newer)\ +- **OS**: + - macOS 10.15+ (Catalina or newer) - Windows 10/11 with WSL2 - Linux with kernel 3.10+ @@ -16,13 +19,16 @@ To run Dograh AI locally, make sure you have the following installed: - [Docker](https://docs.docker.com/get-docker/) (version 20.10 or later) -- [curl](https://curl.se/download.html)  usually preinstalled on macOS/Linux +- [curl](https://curl.se/download.html) - usually preinstalled on macOS/Linux -> **Note** -> Docker Compose is included with Docker Desktop. Make sure Docker is running before you begin. + +Docker Compose is included with Docker Desktop. Make sure Docker is running before you begin. + ### Docker Resource Allocation + For Docker Desktop users, ensure Docker has adequate resources: + 1. Open Docker Desktop settings 2. Navigate to Resources 3. Allocate at least: @@ -33,6 +39,7 @@ For Docker Desktop users, ensure Docker has adequate resources: ## Required Ports Ensure these ports are available: + - `3010` - Web UI - `8000` - API Server - `5432` - PostgreSQL @@ -42,23 +49,37 @@ Ensure these ports are available: ## Checking Port Availability -##### Check if a port is in use (replace 3010 with the port number) -```bash +Check if a port is in use (replace 3010 with the port number): + + + +```bash macOS/Linux lsof -i :3010 ``` +```bash Linux (alternative) +netstat -tulpn | grep 3010 +``` + +```bash Windows (PowerShell) +netstat -ano | findstr :3010 +``` + + + ## Docker Registry Options -Dograh images are available from two registries that you can choose from: +Dograh images are available from two registries: - **GitHub Container Registry (Default)**: `ghcr.io/dograh-hq` - Recommended for most users - **Docker Hub**: `dograhai` - Alternative registry -To use a specific registry, set the `REGISTRY` environment variable using either of the following: +To use a specific registry, set the `REGISTRY` environment variable: -##### Using GitHub Container Registry (recommended) or Docker Hub ```bash +# Using GitHub Container Registry (recommended) REGISTRY=ghcr.io/dograh-hq docker compose up +# Using Docker Hub REGISTRY=dograhai docker compose up -``` \ No newline at end of file +``` diff --git a/docs/troubleshooting.md b/docs/getting-started/troubleshooting.mdx similarity index 90% rename from docs/troubleshooting.md rename to docs/getting-started/troubleshooting.mdx index 8c19cb6..7c0fcf1 100644 --- a/docs/troubleshooting.md +++ b/docs/getting-started/troubleshooting.mdx @@ -1,3 +1,8 @@ +--- +title: "Troubleshooting" +description: "Common issues and solutions for running Dograh AI" +--- + # Troubleshooting ## Freeing Up Ports @@ -42,4 +47,4 @@ docker inspect -f '{{.Name}} - {{.HostConfig.RestartPolicy.Name}}' $(docker ps - docker compose down docker compose down -v -``` \ No newline at end of file +``` diff --git a/docs/images/checks-passed.png b/docs/images/checks-passed.png new file mode 100644 index 0000000..3303c77 Binary files /dev/null and b/docs/images/checks-passed.png differ diff --git a/docs/images/hero-dark.png b/docs/images/hero-dark.png new file mode 100644 index 0000000..a61cbb1 Binary files /dev/null and b/docs/images/hero-dark.png differ diff --git a/docs/images/hero-light.png b/docs/images/hero-light.png new file mode 100644 index 0000000..68c712d Binary files /dev/null and b/docs/images/hero-light.png differ diff --git a/docs/images/video_thumbnail.png b/docs/images/video_thumbnail.png new file mode 100644 index 0000000..ab08d13 Binary files /dev/null and b/docs/images/video_thumbnail.png differ diff --git a/docs/logo/dark.svg b/docs/logo/dark.svg new file mode 100644 index 0000000..763cf5d --- /dev/null +++ b/docs/logo/dark.svg @@ -0,0 +1,3 @@ + + Dograh AI + diff --git a/docs/logo/light.svg b/docs/logo/light.svg new file mode 100644 index 0000000..6a3e57f --- /dev/null +++ b/docs/logo/light.svg @@ -0,0 +1,3 @@ + + Dograh AI + diff --git a/docs/telephony/twilio.mdx b/docs/telephony/twilio.mdx new file mode 100644 index 0000000..c967f7a --- /dev/null +++ b/docs/telephony/twilio.mdx @@ -0,0 +1,15 @@ +--- +title: "Twilio" +description: "Setting up Twilio on Dograh AI" +--- + +### Introduction +You can setup Twilio on Dograh AI to make and receive calls when executing your Voice Agent Workflow. You can watch below video to get started with the setup once you have your Dograh AI stack running. + + \ No newline at end of file diff --git a/ui/Dockerfile b/ui/Dockerfile index 9a6b16b..efa3c3c 100644 --- a/ui/Dockerfile +++ b/ui/Dockerfile @@ -59,7 +59,7 @@ COPY --from=builder --chown=nextjs:nodejs /app/public ./public USER nextjs # Expose the port Next.js runs on -EXPOSE 3000 +EXPOSE 3010 # Start the production server using the standalone Node.js server -CMD ["node", "server.js"] \ No newline at end of file +CMD sh -c "echo '🚀 Application ready at http://localhost:3010' && PORT=3010 node server.js" \ No newline at end of file diff --git a/ui/src/app/api/config/posthog/route.ts b/ui/src/app/api/config/posthog/route.ts index 620b493..482c940 100644 --- a/ui/src/app/api/config/posthog/route.ts +++ b/ui/src/app/api/config/posthog/route.ts @@ -8,7 +8,7 @@ import { NextResponse } from 'next/server'; export async function GET() { return NextResponse.json({ - enabled: process.env.ENABLE_POSTHOG === 'true', + enabled: process.env.ENABLE_TELEMETRY === 'true', key: process.env.POSTHOG_KEY || '', host: process.env.POSTHOG_HOST || '/ingest', uiHost: process.env.POSTHOG_UI_HOST || 'https://us.posthog.com', diff --git a/ui/src/app/api/config/sentry/route.ts b/ui/src/app/api/config/sentry/route.ts index 820432a..17dcea8 100644 --- a/ui/src/app/api/config/sentry/route.ts +++ b/ui/src/app/api/config/sentry/route.ts @@ -2,7 +2,7 @@ import { NextResponse } from 'next/server'; export async function GET() { return NextResponse.json({ - enabled: process.env.ENABLE_SENTRY === 'true', + enabled: process.env.ENABLE_TELEMETRY === 'true', dsn: process.env.SENTRY_DSN || '', environment: process.env.NODE_ENV || 'development', });