Skip to content
MrJev

PHP SDK for Jev

PHP client for the three primitives.

View on GitHub →

Checked, not fully reviewed

A small, tested PHP client for Jev's three answer types. Checked, not fully reviewed: reads the published shape, retries 529, sends objects' private fields.

Good for

  • PHP code that wants Jev answers as typed objects, declared with attributes on a class
  • Pointing the same code at a compatible server: TYPESAFE_BASE_URL overrides the API root

Watch out for

  • An object passed as state is sent with its private and protected properties
  • Its tests read TYPESAFE_BASE_URL too: one fails if you have it set

Tested Oct 6, 2026 at d71bb9e468fd · PHP 8.5 in Docker; its 68 tests, and the client driven against a local stand-in answering in TypeSafe's published response shape

Checked, not fully reviewed. We ran its 68 tests (all pass) and drove the client against a stand-in that answers in the shape of TypeSafe’s published spec. No Jev calls.

You declare a decision as a class whose constructor parameters carry #[Noul], #[Choice] or #[Score] attributes, call $client->evaluate($text, TicketDecision::class), and get an instance back; a fluent SystemOneRequest::build() covers everything else. Against the stand-in, a noul, a choice with its confidence, and a score with its expected value and per-level probabilities all came back as sent, and models() read the { models: [...] } shape.

It retries 408, 429 and every 5xx, including 529, three attempts in all: one 529 was answered 1.5 s later, and four in a row gave up after three tries with a Guzzle ServerException. The optional request log omits headers, so the API key stays out of it; the request body, state included, does not.

One behaviour to know before passing your own objects. The README says objects are sent “with their private properties”, and they are: a User with a private passwordHash and a protected apiToken went out with both. That is the documented behaviour of its serializer, not a bug, but it is not what json_encode would do — convert to an array with only the fields you mean to send.

Apache-2.0, 14 stars, PHP 8.2+. For Laya’s own server, see laya-php.

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

Review updated Oct 6, 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

spring-ai-community/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.

JavaReviewed

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

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.