Jev chooses among options your agent already has
Hermes Jev Skills asks a separate decision model which model should handle a turn, which retrieved passage is useful, or which installed skill fits a request. Jev returns choices and confidence rather than writing the answer. That separation makes sense when your agent keeps spending an expensive model call on a bounded selection. You still need to define the choices and decide what counts as an acceptable answer. Installing the skill doesn't establish that cheaper routing will preserve your agent's work.
Our checkout contained 250 files, roughly 44,407 lines of source, and occupied 4.5 MB. The README describes integrations for Hermes, Claude Code, and Codex, alongside plain skill files other hosts can read. Routing is only part of the package: memory filtering, mailbox classification, and choosing among permitted actions use the same decision contract. I'd begin with routing alone. It's easier to judge a logged model choice than to audit several new decision points across a working assistant at once.
What happened when we ran it
Our sandbox installed commit b22a21f in 14 seconds, adding 35 packages and using 38 MB on disk. The build succeeded in 5 seconds. We ran it on October 12, 2026, in an unprivileged Debian container with 3 CPUs, 8 GB of RAM, Python 3.12, and no secrets. Pip-audit reported 0 known vulnerabilities. The repository scan found 2 CI workflow files, a tests directory, and no Dockerfile. Those are useful signs of a checkable development project, with no live service result implied.
The test step failed with exit code 1 after 66 seconds. Pytest reported 1,495 passed, 4 failed, 6 skipped, and 2 collection/setup errors. All four named failures were DoctorOverrideTests cases in tests/test_custom_endpoint.py, and all raised RuntimeError: Could not determine home directory. The cases cover a refusing gateway, a reachable gateway without a stored key, an invalid override, and leaving doctor unchanged when no override exists. That shared exception is the finding. The excerpt doesn't establish which environment setting or code path caused it.
The log also names router-dashboard/tests/test_server.py as an error location, without showing the underlying exception for the 2 errors. Its pytest summary reports 60.11 seconds, while the lab's full test step took 66 seconds. These describe different timing scopes, so neither should replace the other. The README documents offline checks with simulated Jev replies. Our 1,495 passing cases offer evidence about local behavior, but this failed run cannot validate a live provider, a real routing policy, or deployment readiness.
The installer changes each detected agent's configuration
The 14-second package installation is only the lab's setup result. The documented user installer detects supported agents and installs into each one it finds. python3 install.py --check previews those changes, and --uninstall reverses them. For Claude Code, installation also adds lane subagents and a delimited instructions block, backing up the file first. Use --no-claude-md if that instructions file should stay under your own control. This deserves a preview on a workstation where several agents share a home directory.
Credentials need a separate decision. The README's usual route is jev setup-key, which opens a local one-use page, or --tty on a headless machine. The credential resolver also supports Jev through OpenRouter, Venice, and OpenCode Zen. You still need access to the writing models you put in routing pools. The Hermes hook changes the model within the existing provider connection, so this package won't automatically replace that connection with another vendor's endpoint.
Redaction still sends selected text to a cloud service
A 38 MB local environment doesn't make Jev an offline classifier. The README says default routing sends a redacted slice of the user's turn to the cloud. Memory selection sends the query and passage excerpts, and skill selection sends the turn plus skill descriptions. Profiles listed in private_profiles use coarse routing features instead of turn text. Read those per-feature boundaries before enabling anything on confidential traffic. Redacting an email address doesn't necessarily remove the sensitive subject of the message around it.
Fail-open routing requires you to inspect the reason
Missing credentials, low confidence, or a service failure leave the current model in place under the documented fallback behavior. Shadow mode records a choice without switching models. That's a useful trial path, although the decision requests still incur their own latency and provider charges. Look at why the router declined a turn, whether the available pool matched the job, and whether hard requests would have moved to a model you trust. A quiet assistant can be quietly bypassing the feature.
Pip-audit found 0 known vulnerabilities in our run, but that's separate from whether web screening catches malicious instructions. Open issue 25 concerns this package's webscreen behavior across attack collections, and the README explicitly limits its favorable screening result to its own planted examples. Treat the screen as an advisory layer. Its documented fail-open behavior cannot substitute for deciding which tools an agent may call or which actions require human authorization.
October fixes coexist with an open routing defect
The last push was October 9, 2026, the day v0.23.0 shipped. GitHub showed 1,092 stars and 3 open issues and PRs. The release includes provider-neutral installation work, while issue 45, updated October 11, reports model-name spellings incorrectly being treated as a user's pinned choice. That report concerns the Hermes routing hook in this package. It gives you a specific shadow-log check: a default model reached through another endpoint should not be mistaken for an explicit manual override.
Use Hermes Jev Skills when you can review decisions before allowing them to affect an existing agent. Our 5-second build makes trying the code reasonable, while the failed suite argues against unattended adoption. RouteLLM is the alternative for serving and evaluating model routers independently of these agent integrations. LiteLLM fits centralized provider access and gateway operations. Before enabling Jev routing, find a representative hard turn in your shadow log and explain why its proposed model is acceptable.

