OpenAI-compatible
The OpenAI /chat/completions format is the industry default — OpenAI, Mistral, OpenRouter, Groq,
Together, Z.ai, LM Studio and Ollama (/v1) all speak it. This one zero-dependency adapter
covers the whole family; vendors differ only by data (base URL, branding), which you pass as config
or pick from presets.
npm install @aparte/provider-openai-compatimport { AparteConfig, DirectTransport } from '@aparte/core';import { createOpenAICompatProvider, presets } from '@aparte/provider-openai-compat';
// A known vendor, via a preset:AparteConfig.registerAIProvider(createOpenAICompatProvider(presets.MISTRAL));
// …or any compat endpoint, no preset needed — just an id + base URL:AparteConfig.registerAIProvider(createOpenAICompatProvider({ id: 'groq', baseURL: 'https://api.groq.com/openai/v1',}));
AparteConfig.setTransport(new DirectTransport({ byok: true }));Built-in presets: OPENAI, MISTRAL, ZAI, OPENROUTER, LMSTUDIO, OLLAMA.
Models are your data
Section titled “Models are your data”Pass a static models list, or rely on the generic GET {baseURL}/models fetcher (part of the
compat standard). Cloud endpoints need a key to list; local servers list keyless.
createOpenAICompatProvider({ id: 'x', baseURL: 'https://x.example/v1', models: [{ id: 'llama-3.3-70b', name: 'Llama 3.3 70B' }],});Local models (LM Studio, Ollama)
Section titled “Local models (LM Studio, Ollama)”Local servers are served through their OpenAI-compat /v1 endpoint. The isLocal presets relax
the key requirement and fetch models keyless:
AparteConfig.registerAIProvider(createOpenAICompatProvider(presets.OLLAMA)); // http://localhost:11434/v1AparteConfig.setTransport(new DirectTransport({ byok: true }));For vendors outside this family (Anthropic, Gemini…), use the AI SDK bridge.