agentrun
★ 423▲ 13Parcha-ai/agentrun
A workflow DSL for agents with a Jev package for the steps that are decisions rather than generation.
TypeSafe provider for RubyLLM 2.
View on GitHub →Hands-on review
A clean provider that registers Jev with RubyLLM and leaves the thresholds to you. Two commits old, and already behind the gem it plugs into.
Good for
Watch out for
Tested Sep 20, 2026 at 33e680115a43 · Ruby 3.4 in Docker, offline; 115 specs including twelve recorded-HTTP replays
How we reviewed this: we ran its specs in Docker on Ruby 3.4 with no network, replaying its recorded HTTP cassettes. We made no Jev calls.
ruby_llm-typesafe, by Kieran Klaassen, registers Jev as a provider for RubyLLM 2, so a Ruby app can ask typed questions the same way it asks for chat:
schema = RubyLLM::Schema.new do |s|
s.noul :is_urgent, instructions: 'Does this convey urgency?'
s.choice :department, instructions: 'Which team should handle this?'
end
All three question types are supported, and a whole schema goes out in one request. The README is explicit that thresholds, escalation and business rules stay in your code — the provider hands back probabilities and stops.
115 specs run offline, twelve of them replaying recorded traffic so no key is needed.
A single spec fails at HEAD: it expects a specific error when server tools are requested, and gets a NoMethodError instead. The cause is timing — RubyLLM 2.0.0 was released two days after this repository’s last commit and renamed the method the spec calls, while the gemspec allows that version and the lock file is gitignored. So a fresh bundle install today gets 2.0.0 and a red suite.
The safety property itself still holds: we checked, and a request that asks for server tools is still refused before anything is sent. It’s the spec and a README line that are stale, not the behaviour.
Exactly {model, state, questions}. The key goes only into the Authorization header; nothing is written to disk and there’s no telemetry.
Two behaviours worth knowing. With debug logging on, the whole state is printed — we saw a test identifier we’d planted appear in the log — with no truncation or redaction. And a user message that begins with { or [ and parses as JSON is silently treated as structured state rather than text, which changes the wire format for, say, a support ticket that happens to be JSON. The README mentions it; there’s no way to switch it off.
Smaller: choice option keys given as both a symbol and a string silently collapse into one option.
A tidy, well-tested provider that does one thing and leaves the judgment calls where they belong. It needs one commit to catch up with RubyLLM 2.0.0.
For other language clients, see the Community SDKs.
See how it compares with other tools in Best Jev tools, tested hands-on.
Review updated Sep 20, 2026. Numbers quoted from the project are its author's own; we don't publish our own measurements of Jev.
Parcha-ai/agentrun
A workflow DSL for agents with a Jev package for the steps that are decisions rather than generation.
osolmaz/switch
TypeScript framework for decision-model harnesses: your program offers a short list of next steps and the model picks one at a time until it can answer, with chess, wikirace and rubric-judge examples run on Jev.
disler/ten-levels-of-jev
Thirty worked uses arranged in ten levels, from one if statement to an agent that reaches for Jev itself, with a video walkthrough.
New Jev releases, pricing changes, and the best new projects, once a week. No spam; unsubscribe anytime.
Powered by Buttondown. See our privacy policy.