Dial0 is an agentic voice operations platform that researches a request, orchestrates an outbound phone call with cloned voices, and streams transcripts, status, and reports back to founders in real time.
Start a call from the dashboard, watch transcripts and monitor URLs update live, and ship the end-of-call report directly into your workflows.
The app combines a Next.js interface, Convex real-time backend, and Vapi voice automation to take a typed user intent and convert it into a fully managed call. Context is assembled through Inkeep + Firecrawl research, routed through a guardrailed system prompt, and executed via Vapi while founders monitor transcripts, events, and outcomes inside the dashboard.
flowchart TD
USER["User<br>(Initiates call intent)"]
AGENT["Inkeep Main Agent<br>(GPT/OSS-120b)"]
RAG["Firecrawl<br>(Web Crawling, Retrieval)"]
CONTEXT["Dynamic Context Builder<br>(GPT/OSS-120b)"]
VAPIMCP["Dial0 VAPI MCP<br>(Initiates & Controls Call)"]
CALL["Call Target<br>(Person or business user wants to talk to)"]
TRANSCRIPTS["Live Listen + Transcript<br>(Websocket, Streaming)"]
REPORT["End of Call Report"]
CONVEX{{"Convex<br>(Transcripts,<br>Summaries,<br>Call Events)"}}
USER -- Call/Chat Intent --> AGENT
AGENT -- Web Search & Retrieval --> RAG
AGENT -. Decision, hands off context .-> CONTEXT
CONTEXT -- Initiate Call --> VAPIMCP
VAPIMCP -- Connects to --> CALL
VAPIMCP -- Streaming Audio --> TRANSCRIPTS
VAPIMCP -- Call Events --> TRANSCRIPTS
VAPIMCP -- On call end --> REPORT
AGENT <--> CONTEXT
TRANSCRIPTS --> CONVEX
REPORT --> CONVEX
CONVEX --> USER
classDef intake fill:#f5ede2,stroke:#b45309,stroke-width:2px,color:#1f1b16;
classDef intelligence fill:#f1edff,stroke:#5b21b6,stroke-width:2px,color:#1f1b4d;
classDef voice fill:#fff5e5,stroke:#d97706,stroke-width:2px,color:#3f1d0a;
classDef data fill:#e7f7f0,stroke:#047857,stroke-width:2px,color:#0f3f2d;
classDef hub fill:#ece9ff,stroke:#4338ca,stroke-width:3px,color:#1c1633;
class USER intake;
class AGENT,CONTEXT intelligence;
class RAG intelligence;
class VAPIMCP,CALL voice;
class TRANSCRIPTS,REPORT data;
class CONVEX hub;
linkStyle default stroke:#4338ca,stroke-width:2px;
style CONVEX fill:#e6f7ff,stroke:#0077b6,stroke-width:2px;
- Intake & Trust Founders capture intent and preferences that frame the call.
- Intelligence & Planning Inkeep and Firecrawl assemble research and guardrails before dialing.
- Voice Execution Dial0’s Vapi MCP initiates and controls the call with cloned voices.
- Data & Oversight Convex persists transcripts, summaries, and alerts for live oversight.
- Intent-driven calls Conversation context is composed in
app/api/vapi/start-call/route.tsfrom Convex state and delivered as a system prompt. - Live transcripts & status
hooks/use-chat.tsmerges Convex call events, transcripts, and streaming SSE responses into rich chat bubbles. - Voice cloning & overrides
convex/actions/voiceCloning.tsregisters ElevenLabs voices while settings (api.orchestration.getSettings) handle per-user overrides. - Dynamic research loop Firecrawl + Inkeep enrich issues before dialing to improve first-call resolution.
- Founder supervision Components like
components/chat/live-call-transcript.tsxstream monitoring links, recordings, and summaries in real time.
- Next.js 15.5.3 – App Router UX with server actions and streaming UI.
- React 18 – Concurrent rendering, hooks-first components.
- TypeScript 5 – End-to-end typed client and server code.
- Tailwind CSS 4.1.9 – Utility design system for rapid iteration.
- Radix UI – Accessible primitives for dialogs, menus, and overlays.
- Lucide React – Crisp iconography across dashboards and controls.
- Next Themes – Dark/light theme management.
- Sonner – High-signal toast notifications during live calls.
- Convex – Real-time database, queries, and mutations powering the agent loop.
- Convex Actions – Secure server-side bridges into external APIs.
- Better Auth – Session + magic link auth flows (via
@convex-dev/better-auth). - Autumn – Usage metering and billing hooks for minutes and issues.
- Vapi – Voice MCP orchestrating outbound calls and tool execution.
- OpenAI / GPT-OSS-120b – Primary reasoning model served through Groq.
- ElevenLabs – Voice cloning and natural speech synthesis (via Vapi integrations).
- Deepgram – Streaming transcription for live call monitoring.
- Inkeep – Structured knowledge retrieval for call context and answers.
- Firecrawl – Web research enrichment before dialing.
- Resend – Transactional email for auth, alerts, and call summaries.
- Bun – Dev/runtime tooling (install, scripts, server).
- concurrently – Parallel Next.js + Convex dev servers.
- Zod – Input validation for API routes and prompts.
- Mermaid – Diagramming for architecture visualizations.
app/Next.js routes, including/api/chatSSE proxy and/api/vapi/start-calldial orchestration.components/UI primitives and live call visualizations (components/chat/*).convex/Database schema, queries, mutations, and actions powering the agent loop.hooks/Client hooks such asuseChat()for streaming UI state.lib/Auth helpers, geo enrichment, default voice definitions, and AI integrations.
git clone https://github.com/rsvedant/Dial0
cd Dial0
# Bun (recommended)
bun install
# or npm
npm installCopy .env.example and fill in secrets:
cp .env.example .env.local- Convex
CONVEX_DEPLOYMENT,NEXT_PUBLIC_CONVEX_URL,NEXT_PUBLIC_CONVEX_SITE_URL. - Vapi
VAPI_PRIVATE_API_KEY,VAPI_PUBLIC_API_KEY,VAPI_PUBLIC_ASSISTANT_ID,VAPI_PHONE_NUMBER_ID,VAPI_ORG_ID, optionalVAPI_WEBHOOK_URLfor ngrok tunnels. - Resend + auth
RESEND_API_KEY,RESEND_FROM,INTERNAL_EMAIL_PROXY_SECRET. - Agent research
AGENT_BASE_URL,AGENT_API_KEY. - Autumn usage & GitHub OAuth
AUTUMN_SECRET_KEY,GITHUB_CLIENT_ID,GITHUB_CLIENT_SECRET.
# Start Convex locally (reads CONVEX_DEPLOYMENT)
bunx convex dev
# In another terminal
export $(grep -v '^#' .env.local | xargs)
bun run devThis runs next dev --turbopack alongside Convex via the dev script. Visit http://localhost:3000 for the dashboard.
VAPI_WEBHOOK_URLcan point to an ngrok tunnel to receive call events while local.- Outbound requests include
issueIdandauthTokenfor Convex correlation and are persisted viaapi.orchestration.appendCallEvent.
- Frontend Deploy to Vercel or Bun-compatible hosts (
next build+next start). - Convex Promote with
bunx convex deploy. - Secrets Mirror your
.env.localvalues into production platforms (Vercel, Convex dashboard, Vapi console).
Open issues or pull requests are welcome—focus on incremental improvements to the agent loop, observability, and voice quality.
Built with ❤️ by the Dial0 team.