Jev PlaygroundModel Router

JEV MODEL ROUTING

Jev Model Router

Describe a task and let Jev choose a routing lane for your application to review.

This page's live demo returns a routing decision only. It does not call Codex, Claude, or another downstream model.

01 / LIVE ROUTER

See where this task should go

Describe a task and any context, then ask Jev to suggest a lane. This demo does not run another model or tool.

Real Jev decisions · Simulated model router · No execution model is called
Task presetsLoading or switching a preset never calls Jev.
Execution policy · edit lanes and signal mappings locally

Jev signals stay fixed. Policy edits immediately recompute the route and make zero model requests.

AI task and optional context
AI TASK

Describe the AI or coding work that needs an execution path.

Add scope or consequence details. No JSON or repository connection required.

One model request · three typed questions · local application policy

ROUTEApplication-owned policy
Waiting for evaluation.

Waiting for evaluation

Run the selected preset as-is or edit the Task and Context first.

Who does what?

Jev suggests

Jev returns a routing judgment.

Your rules decide

Your policy applies thresholds and fallback rules.

Your system acts

Your application runs the selected model or tool.

Advanced

03 / WHO OWNS WHAT

Separate judgment, policy, and execution

JEV

Typed semantic decision

  • Routing judgment
  • Probability distribution
  • Confidence when returned
  • Typed answer
ROUTER POLICY

Application-owned controls

  • Allowed options and thresholds
  • Safe fallback and override rules
  • Availability and budget checks
  • Permission and review policy
EXECUTION SYSTEM

The system that acts

  • Calls the selected model or tool
  • Supplies credentials and pays cost
  • Enforces authorization
  • Validates the outcome

A routing decision is input to policy. It is never authorization to execute a tool, access data, spend budget, or make a production change.

05 / HOW THIS DEMO ROUTES

Semantic judgment first, software policy second

01Task

Plain-language work and optional context.

02Jev signals

Choice, Score, and Boolean in one request.

03Policy

Thresholds and routing rules owned by the app.

04Route

An abstract lane for another system to consume.

The route is not a fourth model answer. Threshold changes re-run local policy over the same result, without another Jev request.

06 / JEV PLAYGROUND'S FOUR LANES

Provider-independent lanes for this example policy

01

Fast

For mechanical, low-risk tasks.

02

Balanced

For bounded work requiring normal reasoning and verification.

03

Strong Reasoning

For cross-cutting or deep tasks requiring broader reasoning.

04

Human Review

For high-consequence or insufficiently safe automatic routing.

These lanes belong to Jev Playground's demo policy. Real routers may use different candidate sets, tiers, fallback rules, or direct model IDs.

Implementation

00 / CHOOSE YOUR ROUTER

Which Jev model router should I use?

Choose by where the routing decision needs to live. These setups represent different architectures; they are not a ranking.

LEARN THE PATTERN

Try the Jev Playground router

Best for understanding how real Jev signals and deterministic application policy choose an execution lane.

  • Editable task and context
  • Configurable lanes and policy
  • No downstream execution
Run the live router ↓
CUSTOM CANDIDATES

TypeSafeAI/typesafe-router ↗

Best for developers who want Jev Choice over their own bounded list of models or tools.

  • Editable allowed options
  • Confidence threshold and fallback
  • Your application authorizes and executes

Independent community project. It is not an official TypeSafe SDK and not a production authorization system. Run it from source.

SetupBest forRuns real downstream model?Interface
Jev Playground routerLearning and testingNoWeb
jev-routerCodex / Claude CodeHost CLI doesCLI / local proxy
Python jev-model-routerPython app routing decisionCaller doesCLI / Python
TypeSafe RouterCustom model or tool candidatesNoWeb / TypeScript source

02 / RUN A REAL ROUTER

Run Jev in a real model-routing workflow

A / CODEX AND CLAUDE CODE

Start the upstream CLI through jev-router

Requires Node.js 20.12+, Codex CLI and/or Claude Code, an authenticated upstream CLI, and a TypeSafe Jev key. Existing CLI authentication, tools, permissions, sessions, and interface stay with that CLI.

Install
npm install -g jev-router
Project-documented key setup
echo "JEV_API_KEY=..." > ~/.jev-router.env

Protect ~/.jev-router.env, restrict access to it, and do not commit it. Prefer an editor or another method that avoids leaving a real key in shell history.

Launch one host
jev-codex
# or
jev-claude

Jev chooses a route at each fresh-turn boundary. Codex or Claude Code executes the turn. Selecting a concrete model pauses automatic routing; selecting Jev Router resumes it.

B / PYTHON APP

Get a decision, then call your own client

The current project is installed from source; it does not replace the downstream client.

Install from source
git clone https://github.com/its-panzer/jev-model-router
cd jev-model-router
python -m venv .venv
./.venv/bin/pip install -e .
cp .env.example .env
CLI decision
model-router "Describe the task here"
Python shape
from model_router import Router

with Router(...) as router:
    decision = router.route(prompt)

# Your application now calls its own downstream client
# using the selected model or tier in decision.model_id.
C / YOUR OWN CATALOGUE

Route over bounded model or tool IDs

Use TypeSafe Router as a source-level reference for a vendor-independent Choice router.

Request + allowed options↓Jev Choice↓Validate selected ID↓Confidence / fallback policy↓Your executor
Run the community project from source
git clone https://github.com/BunsDev/typesafe-router.git
cd typesafe-router
npm ci
npm run dev

The repository currently lives at TypeSafeAI/typesafe-router while its README documents the BunsDev source clone. Its root package is private and is not a published npm install.

04 / ROUTER ARCHITECTURES

Not every Jev router works the same way

PER-TURN CODING CLI

Route before a fresh turn

gargpratyush/jev-router asks Jev before a new Codex or Claude Code turn, then the real upstream CLI continues.

APP-LEVEL MODEL ROUTER

Return a model-tier decision

its-panzer/jev-model-router returns a decision to Python or its CLI; the application makes the downstream call.

GENERIC CANDIDATE ROUTER

Choose from supplied IDs

TypeSafeAI/typesafe-router supplies candidate IDs and descriptions to Jev Choice, then validates and applies fallback policy.

07 / POLICY AFTER JEV

Jev characterizes the work; your application owns the route

MODEL OUTPUT

Typed semantic signals

Jev classifies the task, scores reasoning depth, and estimates high-consequence probability.

DETERMINISTIC CODE

Routing and fallback policy

Your code applies thresholds, handles missing distributions, checks availability, selects a lane, or stops for review.

Policy remains inspectable, testable, and adjustable without spending another model request. It should define explicit behavior for low confidence, unavailable candidates, and router failure.

08 / BUILD IT YOURSELF

Build the decision layer around your own constraints

Our implementation asks for task kind, reasoning depth, and consequence, then runs local policy. A direct router can instead ask Jev Choice over actual candidate IDs. Both patterns keep execution outside Jev.

OUR DEMOtask → semantic signals → deterministic policy → abstract lane
DIRECT CHOICE ROUTERtask + candidate catalogue → Jev Choice → validate → fallback → candidate

Use stable allowed IDs, validate the returned ID, and keep provider credentials server-side. The Jev API guide covers the typed request contract and error handling.

Task routerTypeScript
import type { Answer } from "./types";

const response = await fetch("/api/evaluate", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    state: ["AI TASK", task, "", "CONTEXT", context].join("\n"),
    questions: {
      task_kind: {
        type: "choice",
        instructions: "Which task category best describes this work?",
        criteria: {
          mechanical: "A tiny deterministic correction.",
          bounded: "Localized work with clear boundaries.",
          cross_cutting: "Work spanning dependent modules or interfaces.",
          security_or_data: "Security, privacy, migration, payment, or production-data work.",
          unclear: "Insufficiently scoped or none of the other categories.",
        },
      },
      reasoning_depth: {
        type: "score",
        instructions: "How much architectural reasoning and verification is needed?",
        criteria: ["Shallow", "Moderate", "Deep"],
      },
      high_consequence: {
        type: "boolean",
        instructions: "Could a materially wrong result create significant or difficult-to-reverse harm?",
      },
    },
  }),
});

const { result } = await response.json();
const route = chooseRoute(result.answers as Record<string, Answer>, 75);

// chooseRoute is deterministic application code.
// It can pause for review; it never asks Jev to execute the task.
return route;

A route is a decision for application policy, not permission to run a model or tool.

Limits & privacy

09 / LIMITATIONS & SECURITY

Before putting a router in front of every turn

PROMPT EXPOSURE

Know what crosses the boundary

A per-turn router may send each fresh task or prompt to TypeSafe for routing. Define what data is allowed before enabling it broadly.

API KEY

Keep credentials out of clients

Keep the Jev key server-side or process-side. Do not expose it in a browser bundle, logs, source control, or shared shell history.

LOCAL PROXY

Trust and update the host CLI

A local proxy or wrapper still depends on the real upstream CLI, its authentication, and evolving request formats. Keep both components reviewed and current.

MODEL SWITCHING

Expect downstream differences

Switching models can affect cache behavior, available context, feature support, cost, and output quality. A route is not authorization.

FAILURE

Make fallback explicit

A timeout, outage, or unrecognized answer must follow a declared policy. It must not silently select an unsafe or weaker model.

RESULT QUALITY

Validate what execution produces

Jev can make an incorrect routing judgment. The downstream system remains responsible for validation, permissions, and review.

Some projects publish their own evaluations; inspect their source for the latest methodology and results. This page does not reproduce benchmark, latency, or savings claims.

Sources

10 / SOURCES

Primary references for each routing pattern