# Move your Vapi assistants to a self-hosted server with no platform fee

> Source: <https://dev.to/elifalanrocha/move-your-vapi-assistants-to-a-self-hosted-server-with-no-platform-fee-3ho6>
> Published: 2026-11-10 01:15:34+00:00

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)
