jev-drone: Putting a Decision Model in the Flight Loop
A MuJoCo quadrotor simulation splits flight into three frequencies: 500Hz control, 50Hz safety, and ~2.5Hz tactical calls from Jev. It's sim-only, and the author says so plainly.
Most of the Jev ecosystem is about text and browsers. jev-drone (145 stars as of September 2026, MIT license) is different: it puts a typed decision model in the control loop of a simulated quadrotor, flying a five-station obstacle course in MuJoCo using the Skydio X2 airframe model, camera input only, no ground truth handed to the model.
What makes it worth a closer look isn't a headline number — the author doesn't offer one worth repeating uncritically. It's the architecture: a clean three-way split between fast reflexes, a safety layer, and a slow tactical model, which is close to how you'd actually want to deploy a language model anywhere near physical control. This article covers how the split works, what the one published run shows, and where the project's own caveats land.
Key Takeaways
- Three control frequencies, not one. A 500Hz geometric flight controller handles attitude and thrust; a 50Hz guidance and safety layer holds veto power; Jev answers tactical questions at roughly 2.5Hz.
- Jev never sees raw pixels. Classical computer vision converts depth and segmentation buffers into a small JSON summary — five forward range sectors, obstacle edge height and visibility, target location — before Jev sees anything.
- Simulation only, and the author is explicit about it: this is a research demo of model integration in a control loop, not a flight-safety system, and it has not flown on real hardware.
- The one published result is a single 65-second run, not a seed-matched average across multiple trials.
- The claim is narrow by design: the baseline controller can't express certain maneuvers, like climbing over an obstacle, and Jev supplies that capability — not a general performance improvement.
Why three frequencies instead of one model
The core design problem jev-drone is exploring: you don't want a language model anywhere near a 500Hz control loop, and you don't want hand-coded logic making every tactical call either. The project's answer is a clean layering. At the bottom, a geometric flight controller runs at 500Hz, converting commanded attitude and thrust into motor outputs — pure control theory, no model involved. Above that, a 50Hz guidance and safety reflex layer watches for anything urgent and retains veto authority over whatever the tactical layer decides; this is the layer that keeps a bad decision from becoming a crash. At the top, Jev runs at roughly 2.5Hz, answering tactical questions about the situation — what maneuver to attempt, whether the target is still visible, how risky the current approach is.
That's a sound way to fit a slow, occasionally-wrong model into a fast, safety-critical system: keep it out of the loop that has to be right every cycle, and give faster layers the authority to override it. It's the same pattern this series has flagged before for Jev guardrails and safer routing — a model makes the judgment call, code enforces the boundary.
What Jev actually sees
Jev doesn't get camera frames. Classical computer vision does that work first, converting depth and segmentation buffers into a compact symbolic state: five forward range sectors describing what's ahead, the height and visibility of the nearest obstacle's top edge, and where the target currently is. That JSON summary is what reaches the model — a deliberate choice that keeps the decision-making step fast and keeps the vision pipeline auditable independently of the model's behavior. It also means any failure in the vision pipeline (a misread sector, a missed edge) propagates straight into Jev's decision without the model having any way to catch it — worth remembering if you're evaluating whether this pattern generalizes to less controlled environments than a MuJoCo sim.
What the one result actually shows
The published demonstration is a single 65-second flight through the five-station course — not an averaged result across multiple seeds, and the author is upfront about that limitation rather than dressing it up. The claim attached to it is deliberately narrow: the baseline flight controller, without Jev, cannot express certain maneuvers — climbing over an obstacle is the example given — and adding Jev's tactical layer supplies that capability. That is a capability claim, not a performance claim. It says the drone can now attempt something it structurally couldn't before, not that it flies faster or safer on average. A separate tunnel experiment referenced in the project is stated as incomplete.
None of this has been independently run or benchmarked outside the author's own repository, and there's no claim here — implicit or explicit — that this flies on a real aircraft. Treat the 2.5/50/500 Hz figures as a description of the simulation architecture, not a validated flight-safety guarantee.
What to do next
- Read the project's README directly for the scene-feature extraction details before adapting the pattern.
- If you're interested in the "fast layer with veto power over a slow model" pattern outside robotics, see Jev guardrails and safer routing.
- jev-drone sits alongside RoboJEV and jev-libero as the current robotics/sim wave — see how the wider Jev game-demo cluster stacks up.
- It's also listed on aiskill.market as jev-drone; track newer robotics entries on the awesome-jev-projects radar.