Use this as your OpenAI api_key; it authenticates requests to this proxy.
{baseUrl.replace('/v1', '')}. Make sure the
backend is running. npm run dev starts both, and the server logs print
under the server prefix.
{showKey ? apiKey : masked}
{baseUrl}
Chat
/v1/chat/completions
Responses
/v1/responses
Embeddings
/v1/embeddings (model: "auto" or a family from the Embeddings tab)
Point at any OpenAI-compatible endpoint: llama.cpp, LM Studio, vLLM, a local Ollama, or a remote gateway. Add each model you want routed; they all share the one endpoint. The API key is optional (most local servers don't need one).
{addCustom.isError && ({(addCustom.error as Error).message}
)}{(addKey.error as Error).message}
)}Loading…
) : keys.length === 0 ? (No provider keys yet. Add one above to start routing.
{k.maskedKey}
{isEditing ? (
setEditingLabel(e.target.value)}
onKeyDown={e => {
if (e.key === 'Enter') saveEditing(k.id)
if (e.key === 'Escape') cancelEditing()
}}
onBlur={() => saveEditing(k.id)}
className="h-6 w-[160px] text-xs"
disabled={updateKey.isPending}
/>
) : (
<>
{k.label && {k.label}}
>
)}
{statusLabel[status] ?? status}
{lastChecked && (
{formatSqliteUtcToLocalTime(lastChecked, { hour: '2-digit', minute: '2-digit' })}
)}
{!isEditing && (
)}