Skip to content
MrJev

Jev Codex Router

Picks the model, reasoning depth, and speed mode for every Codex turn based on how hard Jev judges it to be. The author reports about 60% lower cost when replaying 237 real turns.

This repository has been archived by its owner and is no longer maintained.

View on GitHub →

Hands-on review

A local proxy that lets Jev pick the model, reasoning depth, and speed for every Codex call. It works as documented, but can send work to DeepSeek and GLM.

Good for

  • Heavy Codex users on the Codex Router setup who want cheaper models on routine steps
  • Studying a routing policy that stays in code, with a confidence gate and logged decisions
  • Seeing how to route individual tool steps, not just user prompts

Watch out for

  • The repository has been archived by its author, so no fixes are coming
  • When ChatGPT usage runs out, calls go to DeepSeek and GLM through opencode-go
  • Needs macOS, Codex desktop, and a separate Codex Router install with a shared ChatGPT session
  • If Jev fails, every call silently falls back to the most expensive model

Tested Sep 19, 2026 at 8292b5196592 · server/jev_server.py on Python 3.12 in Docker with real Jev calls, behind a mock of the Codex Router's local caller edge; no Codex or macOS

Update: the author has archived this repository. It is read-only on GitHub now, so nothing below will be fixed and no releases will follow. The review stands as a record of what it did at the commit we tested; treat it as a design to learn from rather than something to install.

How we reviewed this: Jev Codex Router plugs into a Codex desktop setup on macOS through a separate local router called Codex Router, which we don’t run. Its core is one Python server, so we ran that in Docker with a real Jev key, put a small mock of Codex Router’s local endpoint behind it, and sent it Codex-style Responses API calls. We tested commit 8292b51.

What it does

Every call Codex makes, whether a new prompt or the next step after a tool runs, passes through a local server that asks Jev two questions: how hard the step is, and how much thinking it needs. A policy in code then picks one of three tiers (gpt-5.6-luna, gpt-5.6-sol, or gpt-6-astra), a reasoning effort, and a speed mode, and relays the call to Codex Router, which serves it with your ChatGPT plan. Responses stream back unchanged, so tool calls and compaction behave normally.

The policy is conservative. Below a confidence gate of 0.5, it never downgrades and uses the middle tier instead. Compaction calls are pinned to a fixed tier, and a kill-switch file routes everything to the top tier without Jev. The author’s backtest and savings figures are in BACKTEST.md, and are the author’s own.

Setup

It needs macOS, Codex desktop wired to a Codex Router checkout, Python 3.11+, and a TypeSafe key. You start server/jev_server.py, run codex-router chatgpt-session enable so local clients can use your ChatGPT session, register the server as a generic provider, and add a jev/auto model to Codex Router’s user models. AGENTS.md is a step-by-step playbook for having a coding agent do the install, including a launch service and watchdog.

It reads the key from ~/.hermes/.env or ~/.jev.env first, then from the environment. The README says JEV_ENV_FILE can override the file path, but the code doesn’t read that variable.

Using it

  • Routing works. With a real key, each call was forwarded with a model, reasoning effort, and speed setting chosen for that call. As with all our reviews, we don’t report which tier Jev picked for which prompt.
  • The switches do what they say. With the kill-switch file present, calls went to the top tier without asking Jev. With an invalid key, the call still completed, on the top tier, and the log recorded the Jev error.
  • The “Codex-dry” fallback is real. With the manual flag set, calls went to opencode-go/deepseek-v4.1-flash. When our mock returned a usage-limit 429, the failed call was retried on DeepSeek, the client got a normal response, and later calls stayed on DeepSeek. The README documents this; it switches back after 30 minutes or the first successful native call.
  • There are no tests. CI only checks that the Python compiles. The poc/ folder has the backtest and replay tools.

Permissions and data

  • Jev sees a small digest. Each request sends the first 500 characters of the task, the last 240 characters of the previous assistant reply, and, for tool steps, the last 520 characters of the tool output plus an error flag.
  • Your work can leave OpenAI. In “Codex-dry” mode, your full Codex requests (code, files in context, and tool output) go to DeepSeek or GLM through opencode-go. That can switch on automatically when a usage limit is hit. If that’s not acceptable, remove the tandem models from the code before using it.
  • Your ChatGPT session is shared locally. Enabling Codex Router’s shared session lets local clients use your plan. The Jev server listens on 127.0.0.1 without its own authentication, so any local process can send calls through it.
  • Decisions are logged locally. Each call is appended to ~/.codex/codex-router/jev-router-live.jsonl, including the first 110 characters of the task. In our run the file was readable by other users on the machine.

Maintenance

Fifteen commits on September 17 by one author, MIT licensed, and no issues yet. The model names are hard-coded, so expect updates when Codex’s lineup changes.

Verdict

Jev Codex Router is a thoughtful, well-documented routing policy, and routing each tool step rather than only each prompt is a genuinely useful idea. It fits a narrow audience: macOS Codex users already running Codex Router. Before installing, decide whether automatic fallback to DeepSeek and GLM is acceptable for your code, and watch the logs in case a broken key quietly sends everything to the top tier. For a simpler router that works with both Claude Code and Codex, see jev-router.

See how it compares with other tools in Best Jev tools, tested hands-on.

Review updated Sep 20, 2026. Numbers quoted from the project are its author's own; we don't publish our own measurements of Jev.

More in Coding Agents & Developer Tools

fast-jev-compaction

★ 7.8k▲ 59

tamaratran/fast-jev-compaction

Claude Code plugin that replaces the compaction summary with Jev decisions. Every tool call and result is scored; stale ones are dropped or truncated, and everything kept stays verbatim.

TypeScriptReviewed

Foreman

★ 804▲ 17

thruwire/foreman

Puts Jev as a fast supervisor above slower coding agents such as Codex, starting from a ticket, spec, or bug report.

PythonReviewed

Jev Review

★ 695▲ 4

devagrawal09/jev-review

Staged code-review workflow for JavaScript and TypeScript with a local dashboard. Jev screens correctness, security, reliability, compatibility, and test risk, then scores severity and suggests a reviewer, with no generative model involved.

TypeScriptReviewed

Get new Jev projects every week

New Jev releases, pricing changes, and the best new projects, once a week. No spam; unsubscribe anytime.

Powered by Buttondown. See our privacy policy.