Models, providers and routing

One OpenAI-compatible API

Any OpenAI SDK or tool works with Janus by changing the base URL and the key.

What it is

Janus speaks the OpenAI API at /v1, so any OpenAI SDK or tool works by changing the base URL and key. It covers chat, completions, embeddings, images, speech in both directions, video, Responses, Assistants, threads, files, moderation and fine-tuning paths.

Why you want it

Teams keep their existing tools and code. Switching providers or adding governance does not mean rewriting clients.

One OpenAI client with one Janus key calls claude-sonnet, which goes to a cloud provider, and llama-local and bge, which run on your own GPUs. client = OpenAI( base_url= "https://ai.corp/v1", api_key="je_7f3c…") client.chat( model="claude-sonnet") client.chat( model="llama-local") client.embed(model="bge") Janus CloudOpenAIAnthropicBedrock Your GPUsOllamavLLMTEI One key, one endpoint, every model. The model name decides where each request goes.

How it works

  • Streams relayed without buffering; multipart uploads passed byte for byte
  • Bodies up to 32 MB inspected for routing; larger ones relayed as-is
  • An adapter that must rewrite an oversized body refuses with a clear 413 instead of truncating
  • Generative calls are never retried, so a retry never becomes a second charge
  • OpenAPI 3.1 description of all API surfaces at /openapi.json
Point any OpenAI client at Janus
from openai import OpenAI

client = OpenAI(
    base_url="https://ai.example.com/v1",   # your Janus gateway
    api_key="je_…",                          # a Janus token, not a provider key
)

reply = client.chat.completions.create(
    model="chat-default",
    messages=[{"role": "user", "content": "Summarize this incident report."}],
)

See it on your own network.

The Community edition is free for up to 25 people. The 30-day Business trial unlocks every Business feature.