Jev and Bifrost
Bifrost is an open-source LLM gateway by Maxim AI: one OpenAI-compatible API in front of many providers. Jev is a different layer — a typed decision model that picks one option and returns it with calibrated confidence. They compose cleanly: let Jev decide which model a request deserves, then let Bifrost forward the prompt to it.
If you found this asking whether Jev is 'available on Bifrost', the useful answer is that Jev isn't a chat model you proxy through a gateway — it's TypeSafe AI's System One decision model with its own hosted endpoint. It doesn't generate text token by token; it emits a typed answer in a single parallel pass: one of your options, a probability for each, and a confidence value, in roughly 70–500ms. So you don't register Jev as a Bifrost provider — you call it directly and use its answer to drive the Bifrost call.
What Bifrost is
Bifrost is an open-source, self-hosted AI gateway written in Go and released under Apache 2.0 by Maxim AI (it's a community/third-party project, not part of TypeSafe or jevtypesafeai). It exposes one OpenAI-compatible API across many providers — OpenAI, Anthropic, AWS Bedrock, Google Vertex AI and Gemini, Azure OpenAI, Groq, Mistral and more — with automatic failover, load balancing, semantic caching, Prometheus metrics and a plugin system. You run it yourself (via npx or Docker) and point the OpenAI SDK at it.
Jev vs Bifrost
| Bifrost | Jev | |
|---|---|---|
| What it is | Open-source LLM gateway | Typed decision model |
| Output | Whatever the chosen model returns | One typed option + confidence |
| Use it for | Unifying & forwarding prompts to models | Deciding, classifying, judging, routing |
| Interface | OpenAI-compatible /v1/chat/completions | POST /api/v1/decide |
| Latency | The model's latency | ~70–500ms |
| Hallucination | The model's | 0% structured-output error |
Use Jev to route across Bifrost
The two compose. Bifrost already unifies your providers behind one endpoint; Jev decides which of those models a given request should use. Define your candidate models as the options of a choice question, send the incoming request as state, and Jev returns the one to call plus a calibrated confidence you can threshold on — then Bifrost forwards the prompt to exactly that model.
- Define the models Bifrost fronts as the choice options
- Jev returns one model + calibrated confidence in ~70–500ms
- Route cheap traffic to small models, escalate only when it matters
- Pin a Jev model version so your routing thresholds stay stable
Route in code
// 1) Jev picks the model — one cheap, calibrated call
const jev = await fetch("https://jevtypesafeai.com/api/v1/decide", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.JEV_KEY}`, // jv_live_...
},
body: JSON.stringify({
state: { request: userPrompt },
questions: {
model: {
type: "choice",
instructions: "Pick the cheapest model that can handle this request.",
criteria: {
"openai/gpt-5.6-mini": "cheap, simple tasks",
"anthropic/claude-haiku-4.5": "fast, mid-difficulty",
"openai/gpt-5.6": "hard reasoning",
},
},
},
}),
}).then((r) => r.json());
// 2) Bifrost forwards the prompt to whatever Jev chose (OpenAI-compatible)
const answer = await fetch("http://localhost:8080/v1/chat/completions", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
model: jev.answers.model.choice, // ← Jev's typed pick
messages: [{ role: "user", content: userPrompt }],
}),
}).then((r) => r.json());jev.answers.model.choice is locked to the model list you sent, so it's always one of the models Bifrost actually fronts — no parsing, no fallback for a name the model invented. Threshold on jev.answers.model.confidence to default to a safe model when Jev isn't sure. The base URL and model-id format follow your Bifrost config; the Model Router tool shows this routing pattern running live.
- github.com/maximhq/bifrost — Bifrost — open-source AI gateway (Maxim AI, Apache 2.0)
- docs.getbifrost.ai — Bifrost docs — quickstart & OpenAI-compatible transport
FAQ
Is Jev available on Bifrost?
Jev isn't a chat model you proxy through an LLM gateway — it's a typed decision model with its own endpoint (POST /api/v1/decide), so you call it directly. What you can do is use Jev to decide which model Bifrost should forward a given request to.
Should I use Jev or Bifrost?
It's not either/or. Bifrost unifies and forwards prompts to LLM providers; Jev makes typed decisions. Many teams run Jev as the fast, cheap router that chooses which model behind Bifrost to call for each request.
Is Bifrost made by TypeSafe?
No. Bifrost is an independent open-source project by Maxim AI (Go, Apache 2.0, github.com/maximhq/bifrost). Jev is TypeSafe AI's System One decision model. This page is about composing the two, not a vendor relationship.
How does Jev choose a model?
Define the models Bifrost fronts as the options of a choice question, send the incoming request as state, and Jev returns the best-fit model with a calibrated confidence you can threshold on — for a fraction of a cent per decision.
See also: Jev and OpenRouter · Model Router (live) · Jev vs an LLM · Jev for coding agents
Route smarter with Jev
Grab a jv_live_ key and pick the right model behind Bifrost in one typed, calibrated call.