omar-nahhas
fe547f4dc0
feat(providers): self-hosted OpenAI-compatible STT, TTS and embedding providers
...
Add Self-hosted STT/TTS/Embedding providers that read baseUrl per connection
instead of a fixed registry endpoint, so 9Router can point at whisper.cpp,
faster-whisper, Kokoro-FastAPI, llama-server, vLLM, Infinity, and similar
OpenAI-compatible local servers.
Self-hosted Embedding refuses to run without a baseUrl rather than falling
back to api.openai.com like openaiCompatNode does, since that fallback would
silently send input text and the API key to OpenAI under a provider named
"Self-hosted". Also fixes embeddingsCore to catch adapter build errors as a
400 instead of letting them escape uncaught, and bounds the upstream fetch
with FETCH_CONNECT_TIMEOUT_MS to avoid hanging forever on a dead endpoint.
Self-hosted TTS treats a bare model value as the model rather than the voice,
since the generic OpenAI TTS convention (bare = voice) is backwards for a
provider where the model is the variable part.
2026-08-05 13:38:13 +07:00
..
2026-07-19 16:29:55 +07:00
2026-06-29 15:29:49 +07:00
2026-07-19 16:29:55 +07:00
2026-07-16 16:15:24 +07:00
2026-07-23 16:34:24 +07:00
2026-07-29 18:10:09 +07:00
2026-06-14 18:49:38 +07:00
2026-06-15 11:38:43 +07:00
2026-06-14 18:49:38 +07:00
2026-07-29 18:10:09 +07:00
2026-07-29 18:10:09 +07:00
2026-06-14 18:49:38 +07:00
2026-06-26 12:03:58 +07:00
2026-07-29 18:10:09 +07:00
2026-06-15 11:38:43 +07:00
2026-06-15 11:38:43 +07:00
2026-06-15 11:38:43 +07:00
2026-06-14 18:49:38 +07:00
2026-06-14 18:49:38 +07:00
2026-08-05 11:32:14 +07:00
2026-06-15 11:38:43 +07:00
2026-07-03 10:53:41 +07:00
2026-08-05 13:13:54 +07:00
2026-06-21 16:12:20 +07:00
2026-08-05 10:52:03 +07:00
2026-07-10 13:08:58 +07:00
2026-06-14 18:49:38 +07:00
2026-06-14 18:49:38 +07:00
2026-06-14 18:49:38 +07:00
2026-06-15 11:38:43 +07:00
2026-07-20 15:39:55 +07:00
2026-06-14 18:49:38 +07:00
2026-07-29 18:09:35 +07:00
2026-07-30 09:43:55 +07:00
2026-06-15 11:38:43 +07:00
2026-06-15 11:38:43 +07:00
2026-06-15 11:38:43 +07:00
2026-06-14 18:49:38 +07:00
2026-07-10 11:29:48 +07:00
2026-06-15 11:38:43 +07:00
2026-06-14 18:49:38 +07:00
2026-06-16 23:32:28 +07:00
2026-07-29 20:21:27 +07:00
2026-07-15 17:34:08 +07:00
2026-06-15 11:38:43 +07:00
2026-06-16 23:32:28 +07:00
2026-06-20 10:09:50 +07:00
2026-06-15 11:38:43 +07:00
2026-06-15 11:38:43 +07:00
2026-07-16 15:33:19 +07:00
2026-06-14 18:49:38 +07:00
2026-06-14 18:49:38 +07:00
2026-06-14 18:49:38 +07:00
2026-06-14 18:49:38 +07:00
2026-06-15 18:18:04 +07:00
2026-08-05 13:38:13 +07:00
2026-06-15 11:38:43 +07:00
2026-06-15 11:38:43 +07:00
2026-06-15 11:38:43 +07:00
2026-07-29 18:10:09 +07:00
2026-06-29 15:12:18 +07:00
2026-07-29 18:10:09 +07:00
2026-07-29 18:09:35 +07:00
2026-07-29 19:34:14 +07:00
2026-06-15 11:38:43 +07:00
2026-07-29 18:10:09 +07:00
2026-06-15 11:38:43 +07:00
2026-07-29 18:10:09 +07:00
2026-06-20 10:09:50 +07:00
2026-06-20 10:09:50 +07:00
2026-06-14 18:49:38 +07:00
2026-06-15 11:38:43 +07:00
2026-07-29 18:10:09 +07:00
2026-06-15 11:38:43 +07:00
2026-06-14 18:49:38 +07:00
2026-07-29 20:21:27 +07:00
2026-06-14 18:49:38 +07:00
2026-08-05 10:34:44 +07:00
2026-06-14 18:49:38 +07:00
2026-06-20 15:09:11 +07:00
2026-06-15 11:38:43 +07:00
2026-07-29 20:21:27 +07:00
2026-07-10 11:57:15 +07:00
2026-06-14 18:49:38 +07:00
2026-06-14 18:49:38 +07:00
2026-06-15 11:38:43 +07:00
2026-07-30 09:43:55 +07:00
2026-08-05 11:16:50 +07:00
2026-06-15 11:38:43 +07:00
2026-06-14 18:49:38 +07:00
2026-06-14 18:49:38 +07:00
2026-07-29 18:10:09 +07:00
2026-06-14 18:49:38 +07:00
2026-06-15 11:38:43 +07:00
2026-07-10 11:29:06 +07:00
2026-08-05 13:38:13 +07:00
2026-08-05 13:38:13 +07:00
2026-08-05 13:38:13 +07:00
2026-06-15 11:38:43 +07:00
2026-06-15 18:18:04 +07:00
2026-06-14 18:49:38 +07:00
2026-06-15 11:38:43 +07:00
2026-07-29 18:10:09 +07:00
2026-06-14 18:49:38 +07:00
2026-08-05 13:32:46 +07:00
2026-06-15 11:38:43 +07:00
2026-06-15 11:38:43 +07:00
2026-07-25 17:25:19 +07:00
2026-06-26 11:37:44 +07:00
2026-06-15 18:18:04 +07:00
2026-06-14 18:49:38 +07:00
2026-06-15 11:38:43 +07:00
2026-06-14 18:49:38 +07:00
2026-06-14 18:49:38 +07:00
2026-07-25 17:25:19 +07:00
2026-07-16 15:29:52 +07:00
2026-08-05 11:46:23 +07:00
2026-07-03 11:03:18 +07:00
2026-06-15 11:38:43 +07:00
2026-07-29 21:05:23 +07:00