EmbodiedJev
★ 331▲ 8FBddcz/embodied-jev
MuJoCo robot decision workbench in the browser: three simulation tasks, a local small model or a hosted API, and every observe-decide-act step shown.
Multi-drone simulation where typed reflexes fly the fleet and an optional slower planner may advise but never takes control.
View on GitHub →Hands-on review
A fleet simulation where typed reflexes fly and a slower planner may advise but never steer. Good guards; no licence, and its own tests fail.
Good for
Watch out for
Tested Sep 21, 2026 at 22fd32637383 · Node 24 in Docker; its tests, the dev server's request guards, and a live decision through its own client
How we reviewed this: we installed it in Docker on Node 24, ran the test file, started the dev server and exercised the decision route’s guards, and drove its own Jev client against the real API with a world it generated. We don’t publish our own measurements of Jev’s accuracy or latency.
A browser simulation of up to fifteen drones crossing a field of asteroids, debris and unidentified objects to reach a destination. Each drone’s reflex layer asks Jev for one action per tick — hold, turn, accelerate, decelerate, scan, retreat — and an optional “System 2” planner can be switched on to supply strategy: a mode, a preferred side to pass on, a safety distance. The strategy is advice. The reflex layer still chooses every action, and with System 2 off the fleet flies on reflexes alone, which is the comparison the project is built for.
We built a world with its own code, observed it as one drone, and called its client:
state keys : agentId, mission, observation, actionProjections, controlMemory, strategy, units
detections : 2
action options : HOLD, TURN_LEFT, TURN_RIGHT, ACCELERATE, DECELERATE
contains image : false
request bytes : 7102
Seven kilobytes of numbers. Every candidate action carries a projection — where the drone would be after eight seconds at constant velocity, the clearance to each contact, the distance to the boundary — and the instructions tell the model those are “measurements, not recommendations”.
Two of the seven actions are missing from that list, and deliberately: jev-server.ts deletes RETREAT when a safe forward action exists, and SCAN when nothing needs scanning. Narrowing the option set in code before asking is the pattern we keep finding in the robotics projects, and it is the right one.
The live call returned what you would expect from a drone with room on its right:
action: TURN_RIGHT confidence: 0.53
probabilities: {HOLD 0.24, TURN_LEFT 0.02, TURN_RIGHT 0.63, ACCELERATE 0.1, DECELERATE 0.01}
The key lives in the Worker environment, never in the page: the browser posts a context to /api/decision and the server adds the credential. We ran the dev server and probed that route:
| request | response |
|---|---|
| context missing its observation | 400 |
Origin: https://evil.example |
403 |
| 60 KB body | 413 |
There is also a cap of 100 detections, a check that the observation and strategy belong to the agent named in the request, a 3-second per-attempt timeout inside a 5.5-second deadline, and a retry that only fires on 5xx. For a page that anyone can point at their own key, this is the right shape.
There is no licence file. Thirty commits, a public demo, and no terms at all, which means nobody may legally reuse any of it. That is the one thing to fix before anything else here matters.
Its own tests fail, and nothing runs them. tests/reflex.test.ts holds 31 cases written against node:test, but package.json has no test script, no test runner is a dependency, and the imports have no file extensions, so node --test cannot resolve them. Run through tsx, 29 pass and 2 fail at HEAD:
confidence chart changes color only while System 2 is actively planningOpenRouter requests the selected model and strict strategy schema, preserving agent ownership — expecting meta/muse-spark-1.3-contributor, receiving z-ai/glm-5.3, so the default planner model was changed in code and the test was left behind.There is no CI, so neither has been noticed.
The documented build does not work from a clean clone. npm run build ends at ENOENT: no such file or directory, lstat '/app/.openai/hosting.json' — the Vite config loads a hosting plugin whose configuration directory is in .gitignore. npm run dev works and serves the app, so use that.
The idea is the good part: a fast typed reflex that flies, and a slower model that may advise and never steers, with a switch to turn the adviser off and compare. The request is small, the options are pruned before the model sees them, and the server-side guards are better than most of what we review.
Then there is no licence, two failing tests nobody runs, and a build that needs a file the repository does not ship. All three are an afternoon’s work, and until the first one is done this is something to read rather than something to use.
For the same System 1 / System 2 question on a robot arm see RoboJEV and jev-libero; for the browser, EmbodiedJev.
See how it compares with other tools in Best Jev tools, tested hands-on.
Review updated Sep 21, 2026. Numbers quoted from the project are its author's own; we don't publish our own measurements of Jev.
FBddcz/embodied-jev
MuJoCo robot decision workbench in the browser: three simulation tasks, a local small model or a hosted API, and every observe-decide-act step shown.
YongLD/Multi-UAV-JEV
Camera-observed drone pursuit in MuJoCo where each decision is a /v1/systemone call, by default to a local NeoHorse-Jev-4B server (BF16 CUDA GPU), with an RGB/depth HUD, replays and episode collection. Apache-2.0.
benmagnifico/DriveJev
An open System One decision model for autonomous driving.
New Jev releases, pricing changes, and the best new projects, once a week. No spam; unsubscribe anytime.
Powered by Buttondown. See our privacy policy.