@aparte/provider-openai-compat
v0.17.0
Published
One OpenAI-compatible chat-completions adapter for any /v1 endpoint — OpenAI, Mistral, OpenRouter, Z.ai, Groq, LM Studio, Ollama and friends, via presets or plain config.
Maintainers
Readme
@aparte/provider-openai-compat
One adapter for every OpenAI-compatible /chat/completions endpoint — OpenAI, Mistral,
OpenRouter, Z.ai, Groq, Together, LM Studio, Ollama (/v1) and friends all speak the same
wire format, so they share a single, zero-dependency format adapter. Vendors differ only
by data (base URL, auth header, branding), passed as config or picked from presets.
npm install @aparte/provider-openai-compat @aparte/core@aparte/core is the only peer dependency; this adapter itself has none.
import { createOpenAICompatProvider, presets } from '@aparte/provider-openai-compat';
import { aparteGlobalConfig } from '@aparte/core';
aparteGlobalConfig.registerAIProvider(createOpenAICompatProvider(presets.OPENROUTER));
// …or any compat endpoint, no preset needed:
aparteGlobalConfig.registerAIProvider(createOpenAICompatProvider({ id: 'groq', baseURL: 'https://api.groq.com/openai/v1' }));@aparte/core is a peer dependency. For vendors outside the OpenAI-compat family
(Anthropic, Gemini, …) use @aparte/provider-ai-sdk instead.
Works on the server too. Nothing here touches the DOM, and core resolves its DOM-free
entry under Node's export condition — so you can reuse this adapter from a backend, an
Electron main process or an SSR pass instead of re-writing one. Pair buildRequest /
parseStream with your own fetch when you already own the request (your AbortSignal,
your headers), or hand it to createAparteChatHandler from core.
Part of the aparté monorepo. ESM-only. See the Providers guide in the docs for the full usage.
