pi-jev-thinking-router
Pi/omp extension that keeps the model fixed and has Jev choose only the thinking effort each turn via a local SPI daemon.
Overview
pi-jev-thinking-router provides adaptive thinking-effort routing for the Pi coding agent and omp. Unlike model routers that switch models and discard the prompt cache, it keeps the model stable and only adjusts reasoning effort from minimal to high or max; turning thinking off is excluded to preserve cache continuity.
Before each turn the extension queries a local core daemon (POST /decide on 127.0.0.1:8790) that speaks an SPI v1 decision protocol powered by Jev. The stdlib-only Python daemon is spawned and managed automatically, like a language server. Any network, daemon or timeout failure keeps the current thinking level. A status bar shows the chosen level and latency, and slash commands toggle routing, show daemon health and break down the last decision. The repository also includes a Hermes plugin adapter and an SPI specification. It has 34 offline tests and is Apache-2.0 licensed.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which thinking effort fits this turn?(inferred) | minimal · low · medium · high · max |
How it works
- Before a turn, query the local daemon.
- Daemon asks Jev for the right effort.
- Set the thinking level; keep the model fixed.
- Fail open to the current level on errors.
Strengths
- Preserves prompt cache by not switching models.
- Self-managed daemon with no extra services.
- Hermes adapter included.
Caveats
- Only adjusts effort, not model.
- Requires Python for the daemon.
Getting started
pi install npm:pi-jev-thinking-router, then /route on.At a glance
- Type
- Library
- Status
- beta
- Language
- TypeScript
- Runtime
- Pi/omp extension, Python daemon
- Has code
- yes
- Has tests
- yes
- License
- Apache-2.0
Use cases and integrations
How curated lists describe it
Self-contained Pi/omp package: SPI v1 adaptive thinking-effort routing.
wh000wh000/awesome-jev-live
Frequently asked questions
Does it switch models?
No, it only adjusts thinking effort to keep the prompt cache.
Why not turn thinking off?
Disabling it is excluded to avoid cache misses on reasoning models.
What runs locally?
A stdlib-only Python daemon on 127.0.0.1:8790, started automatically.
Related projects
TypeScript/Bun launcher that asks Jev which model and reasoning effort each Codex, Claude Code or Pi turn should use.
ProjectbetaTypeScriptCLI, Claude Code plugin and Pi virtual model that pick the right model per prompt from one Jev call with a complexity floor.
PluginbetaTypeScriptHermes Agent plugin that picks the model each turn with a direct TypeSafe Jev Choice and enforces trim-then-compress context handling.
PluginbetaPythonHermes Agent plugin where Jev picks both the model and reasoning effort for every turn on Ollama:Cloud.
ProjectbetaPythonOh My Pi extension where Jev classifies each prompt as simple or advanced and switches the model role, defaulting to advanced on doubt.
PluginbetaTypeScriptPi extension routing plan and implementation phases to light, standard or heavy model tiers based on a Jev capability score.
ProjectbetaTypeScript