Move your Vapi assistants to a self-hosted server with no platform fee 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. 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. You need Node.js 18 or later. Everything else, Python included, installs itself: npx openring The 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 . Copy every assistant, squad, tool and Twilio number in one request the key is used once and never stored : curl -X POST http://localhost:8000/import \ -H "Authorization: Bearer $OPENRING API KEY" -H "Content-Type: application/json" \ -d '{"baseUrl": "https://api.vapi.ai", "apiKey": "YOUR PRIVATE KEY"}' The 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. Open 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. Change 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 . If you try it, tell me what breaks: https://github.com/elifalanrocha/openring/issues/16 https://github.com/elifalanrocha/openring/issues/16