mrkeyoor.com_
Sat 17 Oct 13:32 UTC
LLM Toolsevaluationupdated 12 Oct 2026

hermes-jev-skills review

Hermes Jev Skills adds model routing and other bounded decisions to an existing AI agent through the Jev cloud service. It helps the agent choose a model, a useful memory passage, or an installed skill while leaving answer writing to the agent's usual model.

+34 / 4dstars / 7d
Verdict

Our Hermes Jev Skills run passed 1,495 tests but ended with 4 failures and 2 collection/setup errors, so installation success is not enough to approve automatic routing. Try it in shadow mode when you already operate a supported agent and can inspect model choices and privacy settings. Hold off on unattended use until the doctor failures and your actual routing behavior are understood.

We ran it

Lab card: what happened when we ran hermes-jev-skillsScreenshot of hermes-jev-skills (github.com/kerpopule/hermes-jev-skills)
Install✓ · 14s35 packages · 38 MB
Build✓ · 5s
Tests✗ · 66s1495 passed · 4 failed · 6 skipped · 2 errors of 1501 (pytest)
Known vulns0(pip-audit)
Repo250 files~44,407 lines of source · 4.5 MB · 2 CI workflows · tests dir

Answers from our run

Does hermes-jev-skills build from source?

Dependencies installed in 14 seconds (35 packages), and the build succeeded in 5 seconds. We cloned commit b22a21f into a clean Debian container with 3 CPUs and no project-specific setup.

Do hermes-jev-skills's tests pass?

No. The project's own test command finished in 66 seconds and reported 1495 passed, 4 failed, 6 skipped, 2 collection errors (pytest).

Does hermes-jev-skills have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use hermes-jev-skills?

Fully offline agents or profiles whose raw task meaning must stay local: default routing sends redacted turn text to the Jev cloud service.

What are the alternatives to hermes-jev-skills?

RouteLLM, LiteLLM. Our Hermes Jev Skills run passed 1,495 tests but ended with 4 failures and 2 collection/setup errors, so installation success is not enough to approve automatic routing.

Setup3/514-second install, then credentials, pools, and installer review
Docs5/5Specific data boundaries, fallbacks, and shadow-mode guidance
Community3/5October release and active issue reports, with 1,092 stars
Maturity2/5Failed fresh-container suite and an open routing-name defect

Who it’s for

Hermes operators willing to inspect shadow-mode decisions before enabling automatic model switching.
Claude Code or Codex users who want reusable decision skills and can review installer changes to their agent folders.
Developers with explicit candidate actions or routing pools who need a confidence-bearing selection instead of more generated prose.

Who it’s NOT for

Fully offline agents or profiles whose raw task meaning must stay local: default routing sends redacted turn text to the Jev cloud service.
Operators expecting the Hermes plugin to switch provider connections: the README says it can swap models within the existing connection only.
Teams relying on web screening as their authorization boundary: the README limits its screening claim to planted attacks, and issue 25 remains open about transfer to other attack sets.
Developers requiring a green fresh-container suite before adoption: our run had 4 doctor-override failures and 2 collection/setup errors.
Hermes users expecting routing to work without checking model identifiers: open issue 45 reports default-model spellings being mistaken for a manually pinned choice.

Setup reality

Our sandbox installed commit b22a21f in 14 seconds: 35 packages and 38 MB on disk. The build passed in 5 seconds. Tests failed after 66 seconds with 1,495 passed, 4 failed, 6 skipped, and 2 collection/setup errors. Pip-audit found 0 known vulnerabilities.

Useful cloud decisions need Jev access through a supported provider, plus access to the models in your routing pools. The installer detects Hermes, Claude Code, and Codex and changes each detected installation. Preview it with install.py --check, then configure credentials and start routing in shadow mode.

The four doctor-override failures raised RuntimeError: Could not determine home directory. The log names router-dashboard/tests/test_server.py but omits the cause of its errors. Headless key entry uses setup-key --tty. Default routing sends redacted turn text to the cloud, and Hermes routing stays within the current provider connection.

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.

Alternatives

ProjectWhat it isPick it when
RouteLLMA framework for serving and evaluating language-model routers.pick this instead when model-routing experiments and an independent serving interface matter more than agent skills.
LiteLLM gh↗A gateway and SDK for access to multiple model providers.pick this instead when centralized provider access, logging, and gateway operations are your main needs.

What people are saying

  1. [velocity-scout] kerpopule/hermes-jev-skills

Sources

  1. Hermes Jev Skills README
  2. Enabling Jev features and checking their execution
  3. Jev credential provider resolution
  4. Default-model identifier mismatch in Hermes routing
  5. Web-screen results across attack sets
  6. v0.23.0 release notes
  7. RouteLLM
  8. LiteLLM

More llm tools reviews

GLM-5.3-Flash-EXL3-2x-DGX-Sparks-TensorFold · livenerf · scion · opencode2api · IQuest-Q1 · iCode · the whole board →