Skip to content

Command line

jevtest has one command.

jevtest run PATH... --lock MODE --out DIR [--test NAME]... [--prune-lock] [-v]
Argument Required Meaning
PATH... yes Test files and/or folders. A folder runs every test file in it and its subfolders (rules).
--lock MODE yes How the lockfile is used.
--out DIR yes Where results go. Each run adds a timestamped folder inside it.
--test NAME no Only run this test. Repeatable; names can come from any of the files.
--prune-lock no After a run where every test passed, remove recorded decisions the run didn't use.
-v, --verbose no Also print every Jev question with its top answers and probabilities.
--version no Print the version.

Lock modes

--lock Recorded decision Unrecorded decision Writes the lockfile
record used Jev is asked; the answer is recorded yes
frozen used the step fails no
refresh ignored: Jev is asked again Jev is asked yes, overwriting
off ignored Jev is asked no

--prune-lock

The lockfile only grows: a screen that no longer exists keeps its recorded answers. --prune-lock removes them. It only acts after a run of every test in which every test passed, because a failing test stops early and skips screens that are still real. So it refuses to combine with --test or --lock off, and after a failure it says not pruned, because a test failed.

Prune with the same devices you record on: decisions recorded on one device's screens are unused on another's.

Exit codes

Code Meaning
0 every test passed
1 a test failed
2 setup error: bad test file, missing value, no such device, bad arguments
130 interrupted (Ctrl-C)

Environment

Variable Meaning
OPENROUTER_API_KEY Your OpenRouter key, for Jev. From the environment or the .env next to the test file. Not needed when every decision comes from the lockfile.
JEVTEST_CACHE Where the built on-device agents are cached (default ~/.cache/jevtest).