madewithlaya

Catalog / LLM routing & guardrails

0075GitHub

jevals: agent evals and guardrails as decisions, runnable on every trace

Openlayer's library packs every eval for a trace into one decision request: tool choice, grounding, scope, injection, PHI. Runs on Jev, or on Kev or Laya locally on a Mac.

Open source ↗ github.comcostfractions of a cent (Jev) or free (local Laya)timea few hundred ms per trace
openlayer-ai/jevalsREADME ↗
# jevals

Evals and guardrails for agents, using Jev-style decision models instead of an LLM judge. All the evals for a trace go out as one request that costs a few thousandths of a cent and comes back in a few hundred milliseconds, so you can run them on every trace and inside the agent loop.

Works with Jev through the TypeSafe or Vercel APIs, with Kev or Laya running locally on a Mac, or with a regular chat LLM if that's all you have (slower, costs more).

```bash
pip install jevals
export AI_GATEWAY_API_KEY=...      # Jev through Vercel AI Gateway. TYPESAFE_API_KEY and OPENROUTER_API_KEY also work.
```

```python
from jevals import evaluate
from jevals.agent import ToolChoice, UsedToolResult, Grounded, StayedInScope
from jevals.quality import AnswerRelevancy, Completeness
from jevals.security import IndirectInjection, PHI

r = evaluate(
    {"messages": messages, "tools": tools},   # the list you sent to the model and the tool schemas you gave it
    [ToolChoice(), UsedToolResult(), Grounded(), StayedInScope(),
     AnswerRelevancy(), Completeness(), IndirectInjection(), PHI()],
)

r.tool_choice.answer         # "correct"  (p=0.99)
r.grounded.score             # 0.5, 1 of 2 claims supported by tool results
r.answer_relevancy.score     # 0.84
r.indirect_injection.passed  # True (p=0.03). False when a tool result tells the agent to do something.
r.usage                      # 1 request · 1,388 tokens · $0.00006 · 0.33s
```

That's one HTTP request for all eight, and those are the numbers Jev returned for the trace in `examples/quickstart.py`. `messages` is the OpenAI chat format (user, assistant with `tool_calls`, tool). If you have Anthropic content blocks or LangChain message objects you can pass those directly.

## The problem

Most teams eval a small sample of the

Also filed under LLM routing & guardrails

  1. 0100

    laya-jev-lab: a local-first cascade that matches Jev's accuracy at 1.8x the speed

    Independent Jev vs Laya measurements plus a cascade: Laya decides first, high confidence executes, low confidence escalates to Jev. At a 0.60 threshold it matched Jev's 78%.

    @yibie · LLM routing & guardrails · lower than pure Jev

  2. 0096

    Laya Ultrafast: browser-use's jev-ultrafast agent ported to local Laya on MLX

    A port of the jev-ultrafast browser agent that decides with laya-mlx instead of the hosted Jev API. DOM snapshot, executor, safety checks and inspector are the originals.

    @ipenywis · LLM routing & guardrails · free, local

  3. 0088

    laya_router: a model router with Laya matches GPT-5 nano's accuracy, 35x faster, free

    Two routers behind one endpoint, measured on 180 labelled requests. Laya answers small/medium/powerful routing in one forward pass, against a GPT-5 nano router.

    @glukicov · LLM routing & guardrails · free, local

  4. 0076

    laya-browser-agent: browser decisions on Laya, drop-in for jev-ultrafast tooling

    Local decider for the browser-agent loop: hand it a numbered table of page controls and it picks the operation and element. Playwright/CDP driver, speaks /v1/systemone.

    @ChenneyZhuang · LLM routing & guardrails · free, local, no screenshots