Skip to content
MrJev

Spring AI TypeSafe

Java client for the System One API on Spring RestClient, plus Spring AI integrations that use it as a judge, a guardrail, a RAG post-processor and a tool index.

View on GitHub →

Checked, not fully reviewed

A Java SDK, Spring Boot starter and Spring AI advisors for Jev. Checked, not fully reviewed: an offline suite of 286 tests, and how it fails under load.

Good for

  • Spring Boot and Spring AI applications: a judge, guardrails, RAG filtering and tool selection as advisors
  • Plain Java, through the SDK module alone, with typed exceptions

Watch out for

  • No test covers the guardrail when Jev is unreachable; by the code it refuses the turn rather than passing it
  • TYPESAFE_BASE_URL in your environment silently redirects every client built with the defaults

Tested Oct 4, 2026 at 2c30a5804735 · Temurin JDK 21 in Docker; ./mvnw clean verify (offline), and the SDK driven against a stand-in that always answers 529

Checked, not fully reviewed. We ran the default build, which is entirely offline — 286 tests, no failures — and drove the SDK against a stand-in. No Jev calls.

Four modules: a Java SDK with no Spring dependency, typesafe-spring-ai with the advisors, a Boot starter that reads spring.ai.typesafe.*, and a BOM. The advisors are the reason to use it: JevJudge for model-as-a-judge from atomic criteria, a self-refine loop, JevGuardrailAdvisor for input and output screening, a document filter and reranker for RAG, and JevToolIndex for tool selection that can say none apply. Live integration tests are opt-in twice — a Maven profile and an API key — so an exported key never turns a build into a billed one.

TypeSafe’s API docs say to back off and retry on 429 and on 529 Overloaded. We pointed the SDK at a server that answered 529 to everything: it made three attempts over 1.4 s and threw a typed TypeSafeOverloadedException, rather than returning anything. The guardrail advisor has no catch around its screening call, so when Jev is down a guarded turn fails instead of reaching the model — the safe direction for a guardrail, though it is not one of its ten tests. Self-harm signals route to a support message rather than a refusal, which is a considered touch.

One documented sharp edge: TypeSafeClient.builder() falls back to TYPESAFE_BASE_URL and TYPESAFE_DEFAULT_MODEL, so an exported variable redirects every default-built client. The README warns about it in bold. Apache-2.0, 47 stars.

See how it compares with other tools in Best Jev tools, tested hands-on.

Review updated Oct 4, 2026. Numbers quoted from the project are its author's own; we don't publish our own measurements of Jev.

More in Community SDKs

laya-php

★ 110

marcreichel/laya-php

Laravel-ready PHP client for Laya, the open System One model, so a typed decision is a PHP enum rather than a parsed sentence. Self-hosted, no Jev key.

PHPReviewed

obie/ruby_decision_model

Ruby gem with one client for decision models behind several providers: TypeSafe's Jev, OpenRouter (the default), OpenAI, Cloudflare Clef, Perplexity and any /v1/systemone server.

Ruby

go-jev

★ 46

mattn/go-jev

Go SDK with a jev-cli built on it, shaped for UNIX pipelines.

Go

Get new Jev projects every week

New Jev releases, pricing changes, and the best new projects, once a week. No spam; unsubscribe anytime.

Powered by Buttondown. See our privacy policy.