opencode-jev-orchestrator
OpenCode orchestrator that keeps a cheap sticky parent model and escalates to strong child subagents only when Jev flags a hard turn.
Overview
opencode-jev-orchestrator keeps an OpenCode session on a cheap sticky parent model so the prompt cache stays warm, and spends scarce strong models only in temporary child subagents when Jev flags a hard turn. Built for OpenCode Go, its defaults use Muse Spark as the parent and Luna as the strong child, with Kimi and Qwen as fallbacks.
Jev labels turns hard, easy or unsure but never silently swaps the parent model. On a hard turn the parent calls jev_escalate, giving a strong child near-full context and merging the result through the tool return; resumes send only deltas. The same child continues while Jev says hard and is released when Jev confidently says easy or is down or unsure. jev_parallel spawns up to three cheap children for mechanical subtasks. Slash commands show status, explain the last action, toggle orchestration and track exhausted model quotas. Users can always pin a model manually.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Is this turn hard, easy or unsure? | hard · easy · unsure |
| Choice | Action for this turn | stay · escalate · parallel · release |
How it works
- Parent model handles turns by default.
- Jev rates each turn's difficulty.
- On hard, the parent escalates to a strong child via jev_escalate.
- Release the child when Jev says easy; use jev_parallel for mechanical subtasks.
Strengths
- Warm cache on the cheap parent model.
- Scarce models used only for hard work.
- Transparent commands like /jev-explain.
Caveats
- Designed around OpenCode Go model names.
- Escalation relies on the parent calling the tool.
Getting started
opencode plugin opencode-jev-orchestrator -g, save your Jev key to ~/.config/opencode/opencode-jev-orchestrator.key, then restart OpenCode and run /jev-status.At a glance
- Type
- Project
- Status
- beta
- Language
- TypeScript
- Runtime
- OpenCode plugin
- Has code
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
An OpenCode orchestrator that keeps a cheap sticky parent model and, when Jev flags a hard turn, escalates through a child subagent.
logicrw/awesome-jev-projectsKeeps an OpenCode parent model fixed and uses Jev difficulty judgments to delegate harder turns to temporary subagents.
cobanov/awesome-jev
Frequently asked questions
Does Jev switch my main model?
No, the parent stays fixed; hard turns go to a child subagent.
What happens if Jev is unsure or down?
The strong child is released and work returns to the parent.
Can I force a strong model?
Yes, say use luna or pin a model in the picker.
Related projects
Adaptive thinking-level router for Pi: Jev or local rules pick low/medium/high/xhigh at task start, on reasoning failures and when stable.
ProjectbetaTypeScriptGateway that batches agent control questions through Jev and calls a generative LLM only when policy says generation is needed.
ServiceprototypeTypeScriptOpenCode V2 server plugin that uses Jev to route requests between Plan, Build and custom agents and hand off unfinished work.
ProjectbetaTypeScriptOpenCode plugin where Jev picks the best free Zen or Go model for each new message from the live catalogue.
ProjectbetaJavaScriptRuns Claude Code on Opus 5.5 with Jev re-picking reasoning effort after every tool batch, via per-message effort so the cache survives.
ProxybetaTypeScriptOpenCode plugin adding an Auto (Jev) virtual model that routes each turn to one of your configured real models.
PluginbetaTypeScript