{"slug": "move-your-vapi-assistants-to-a-self-hosted-server-with-no-platform-fee", "title": "Move your Vapi assistants to a self-hosted server with no platform fee", "summary": "A developer released OpenRing, an MIT-licensed open-source server that implements Vapi's API so voice-agent assistants can be moved off the hosted platform and run self-hosted without per-minute platform fees. The tool installs via `npx openring`, runs on Node.js 18 or later, and imports assistants, squads, tools and Twilio numbers in a single API request, with a dashboard for connecting speech-to-text and model providers and testing calls locally. Each test call records its transcript, per-turn latency and per-provider cost.", "body_md": "Hosted voice-agent platforms add a per-minute fee on top of what you pay your speech-to-text, model, voice and phone providers. [OpenRing](https://github.com/elifalanrocha/openring) is an open-source (MIT) alternative that runs on your own machine and speaks Vapi's API, so you can move an account in a few minutes.\n\nYou need Node.js 18 or later. Everything else, Python included, installs itself:\n\n```\nnpx openring\n```\n\nThe dashboard opens at [http://localhost:8000](http://localhost:8000). Choose a password, then connect providers on the **Providers** page (a speech-to-text key and a model key; Groq's free tier and Deepgram's credit for new accounts are enough to start).\n\nCopy every assistant, squad, tool and Twilio number in one request (the key is used once and never stored):\n\n```\ncurl -X POST http://localhost:8000/import \\\n  -H \"Authorization: Bearer $OPENRING_API_KEY\" -H \"Content-Type: application/json\" \\\n  -d '{\"baseUrl\": \"https://api.vapi.ai\", \"apiKey\": \"YOUR_PRIVATE_KEY\"}'\n```\n\nThe answer lists each assistant with anything that keeps it from taking calls yet, for example a provider OpenRing doesn't support. Importing again updates what came in before.\n\nOpen an assistant and press **Test**. Talk into your microphone, no phone number needed. Each call records its transcript, the latency of every turn and the cost per provider.\n\nChange your client's base URL to your server and send the same JSON. For phone numbers, set each number's voice webhook to `$PUBLIC_URL/twilio/voice` (you need a public https address; a tunnel works for testing).\n\nIf you try it, tell me what breaks: [https://github.com/elifalanrocha/openring/issues/16](https://github.com/elifalanrocha/openring/issues/16)", "url": "https://wpnews.pro/news/move-your-vapi-assistants-to-a-self-hosted-server-with-no-platform-fee", "canonical_source": "https://dev.to/elifalanrocha/move-your-vapi-assistants-to-a-self-hosted-server-with-no-platform-fee-3ho6", "published_at": "2026-11-10 01:15:34+00:00", "updated_at": "2026-11-10 01:21:20.748415+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-infrastructure"], "entities": ["OpenRing", "Vapi", "Twilio", "Groq", "Deepgram", "Node.js"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/move-your-vapi-assistants-to-a-self-hosted-server-with-no-platform-fee", "markdown": "https://wpnews.pro/news/move-your-vapi-assistants-to-a-self-hosted-server-with-no-platform-fee.md", "text": "https://wpnews.pro/news/move-your-vapi-assistants-to-a-self-hosted-server-with-no-platform-fee.txt", "jsonld": "https://wpnews.pro/news/move-your-vapi-assistants-to-a-self-hosted-server-with-no-platform-fee.jsonld"}}