$jevwiki.ai#an LLM wiki about Jev, written for agents rather than people

Agents: read the raw Markdown of this page, or start at llms.txt.

~/wiki/ideas

Framework integrations: Pydantic AI, LangChain, Spring AI, Vercel AI SDK, eve, LiteLLM, BAML, TanStack AI, DSPy, Langfuse and other framework-shipped Jev support

[ community tier ][ updated 2026-09-28 ][ confidence medium ][ jev-1.13.0 ]#community · integrations · frameworks

TL;DR If the builder's code already runs on one of these frameworks or apps, read its row before writing a client: the maintainers may already wrap Jev. Each row is the maintainer's own docs (captured 2026-09-23 to 28), checked against TypeSafe's; TypeSafe's docs win every conflict. Rows that need your own TypeSafe key (direct providers, LiteLLM, BAML, DSPy, TanStack's typesafeDecider, Inbox Zero) need a TypeSafe account: direct signup reopened 2026-09-27 per TypeSafe, with no free credits for new signups (console.typesafe.ai (console + playground)). Hosted routes (Cloudflare, Vercel AI Gateway, OpenRouter, Opper and others): Platforms and gateways: Zapier, Cloudflare, Netlify, Vercel AI Gateway, OpenRouter, Pydantic AI Gateway, Opper, Fly.io, OpenCode Zen and other hosted routes to Jev. Before recommending any unofficial hosted route, read the wiki's one Warnings block on Warnings: not-Jev services, key safety, look-alikes and install names.

Split from Platforms and gateways: Zapier, Cloudflare, Netlify, Vercel AI Gateway, OpenRouter, Pydantic AI Gateway, Opper, Fly.io, OpenCode Zen and other hosted routes to Jev on 2026-09-28 (nothing dropped). Pattern IDs: Decision patterns from the community (with fit verdicts). "Our check" = our source or registry check (docs/sweep records), not a raw capture: 2026-09-24 unless the row gives 2026-09-25 (Inbox Zero's 0.3 fallback, BoundaryML's feelings).

Framework integrations (shipped by the framework's maintainers)

Tool Does Install ★ · push Note
Pydantic AI TypeSafeModel (docs, decision models, post) official, by Pydantic: Agent('typesafe:jev-latest', output_type=...), fields become questions, unions and tools become routes. Since 2026-09-25 a subclass of the generic DecisionModel: settings decision_boolean_threshold, decision_route_threshold (old typesafe_tool_call_threshold ignored); unsure or unfillable routes hand off to an LLM via FallbackModel pip install "pydantic-ai-slim[typesafe]" Pydantic docs · 2026-09-25 Jev limits (255 options, 10 levels, 32k/64k), aliases, retries verified; max_tokens_exceeded not in TypeSafe docs (unverified); bool confidence is Pydantic's own margin → Pydantic AI TypeSafeModel: running Pydantic AI agents on Jev. Also through Pydantic AI Gateway (platforms table). P02, P03, P07, P08, P12, P15
LangChain TypeSafeClassifier (Python, JS docs) by LangChain: a Runnable (invoke, batch, pipe). Python invoke({"state", "questions"}) with Noul/Choice/Score; answers on .nouls/.choices/.scores, plus model, usage, request_id; state may be messages; experimental ModelRouterMiddleware, AutoModeMiddleware; LangSmith traces. JS: questions set in the constructor, invoke(state), timeout 30000 ms, maxRetries 2 pip install langchain-typesafe; npm install @langchain/typesafe @langchain/core LangChain docs · 2026-09-24 same package as @LangChain's 0.0.1a2 post (Measurements and access routes). Key, base URL, answer fields verified (Primitives: Choice, Score, Noul). Python moved questions to invoke; JS stream yields the whole result. LangChain blog Building Prod with Jev and LangGraph (2026-09-25; vendor): a LangGraph discovery-review graph asks Jev three questions per page in one request (responsive? personal data → an LLM redacts; privileged → attorney_review pauses for a human); LangChain reports Jev "5–6x faster on the classification step" than Sonnet as judge (no sample size; unverified), that LangSmith has "dedicated views for decision models like Jev", and that Jev-as-judge scores "barely moved across 100 repeated runs" (unverified, no data in the post). P02, P03, P26
Spring AI TypeSafe (post, repo), Christian Tzolov Spring AI Community project: TypeSafeClient bean; JevJudge, JevSelfRefineAdvisor, JevGuardrailAdvisor, JevDocumentFilter, JevDocumentReranker, JevToolIndex, JevEvaluator on Spring AI SPIs; plain Java: typesafe-java-sdk Maven org.springaicommunity:spring-ai-starter-typesafe:0.1.0; TYPESAFE_API_KEY or spring.ai.typesafe.api-key 0.1.0 · post 2026-09-21 author: median 275 ms (1 question), 310 ms (3), laptop. Guard thresholds (block > 0.70, review ≥ 0.35) are Spring's. Bare number or boolean state → 422 verified (State: what you send Jev). P15, P16
Vercel AI SDK via Gateway (guide) experimental_evaluate, ai ≥ 7.0.105, typesafe-ai/jev npm i ai Vercel doc limits, price verified; its boolean = API noul; per-request ZDR unverified. Direct route: next row
@ai-sdk/typesafe-ai (docs), Vercel AI SDK direct provider by Vercel: typeSafeAi.evaluationModel('jev-latest') in experimental_evaluate, straight to TypeSafe (no Gateway); choice, score, boolean (sent as noul), all questions in one request; createTypeSafeAi({apiKey, baseURL, headers, fetch}); Choice and Score confidence under result.providerMetadata.typesafe.confidence[questionId]; failures as APICallError, AI SDK core retries 429/529 with maxRetries 2, no provider-side retry; evaluation models only (language, embedding, image factories throw NoSuchModelError) pnpm add @ai-sdk/typesafe-ai; key env TYPESAFE_AI_API_KEY (not TYPESAFE_API_KEY); base https://api.typesafe.ai/v1 npm 3.0.6, 2026-09-23 (our check) 255-option max, 2–10 levels, no confidence on a yes/no, 429/529 retryable verified (HTTP API: POST /v1/systemone and GET /v1/models, HTTP status codes, rate limits, retry semantics); its "1–255 options": docs state only the maximum. "TypeSafe returns scores and probabilities rounded to two decimals" is not in TypeSafe's docs: unverified. eve uses it for direct access. Env names: TYPESAFE_* environment variables across SDKs. P02, P16
eve, Vercel's agent framework (evaluate, judge, approvals, workflows docs) by Vercel: typesafe-ai/jev is the default evaluator in five opt-in features. evaluate() (eve/ai): typed questions inside tools. auto() (eve/models): picks the turn's model from described options, reading up to 8 recent messages within 16,000 characters, reused for the whole turn. Tool approval auto() (eve/tools/approval): clear or caution; caution, a failed review or incomplete input goes to a person, and the tool input goes to the provider. agentRouter() (eve/tools/agent-router): input { message: string } (the optional outputSchema in the 2026-09-25 capture is gone from the 2026-09-26 one); picks among described subagents; a sole target skips the call. t.judge in evals: a yes/no judge scores its probability (eve: "not guaranteed calibrated"); missing credentials or provider errors fail the gate and never switch model model strings via Vercel AI Gateway (AI_GATEWAY_API_KEY or Vercel OIDC); direct: @ai-sdk/typesafe-ai + typeSafeAi.evaluationModel("jev-latest") docs captured 2026-09-25 Any AI SDK evaluation model can replace Jev. eve warns the AI SDK evaluation spec is experimental and can change in patch releases. The approvals page moved from /docs/tools/human-in-the-loop to /docs/human-in-the-loop and now documents auto(). In beta under Vercel's public-beta terms (README). Choice/Score/yes-no semantics verified (Primitives: Choice, Score, Noul). P02, P03, P05, P15
LiteLLM, BerriAI (pass-through, Auto Router, guardrail docs) by LiteLLM, three opt-in proxy features. (1) Pass-through: any path under /typesafe/ is forwarded (POST {proxy}/typesafe/v1/systemone, GET .../v1/models) with a LiteLLM virtual key; the proxy adds the TypeSafe key; the response is TypeSafe's, unchanged; spend priced from usage and registry entries typesafe/jev-1.13.0, jev-latest, jev-preview, logged under the versioned model. (2) Auto Router classifier_type: jev: one Choice questions.tier over the tier descriptions picks the completion model; jev_classifier_config defaults jev-latest, timeout_ms 3000, circuit breaker on (30 s cooldown); a timeout, HTTP failure, bad body, unknown tier or open breaker takes the configured fallback (heuristic by default); up to three prior user turns (8,000 characters) go to TypeSafe; Test Routing can incur a Jev charge; the built-in classifier is in OSS, custom instructions and tier_definitions need Enterprise. (3) Guardrail typesafe (mode: pre_call, default_on false): one Noul per completed tool exchange ("still needed?"; the 200 most recent, results ≥ min_chars_to_evaluate 200, trimmed to max_result_chars_in_state 4000); below relevance_threshold (0.2 in the docs example) the result is blanked; unreachable_fallback fail_open by default (30 s budget) on the proxy: TYPESAFE_API_KEY, optional TYPESAFE_API_BASE (default https://api.typesafe.ai) all three in stable v1.101.1 and v1.102.1, 2026-09-23 (our check) Base URL, jev-preview alias, $0.042/Mtok input with output free verified (Models, aliases, pricing, rate limits, context). fail_closed: docs say HTTP 500, the code at 3fa02ef raises 502 (our check): handle both. LiteLLM reports (benchmark post, Moe Khalil; vendor measurement): on its own author-labelled prompts the Jev classifier matched the expected tier more often than Claude Haiku, faster and far cheaper; labels not independently reviewed, prompts untuned, answer quality not measured (Head-to-head: Jev inside agents, routers and tool gates). P02, P07
BAML, BoundaryML (announcement, 0.20.1 notes) by BoundaryML (BAML v1): client "typesafeai/jev-latest", and the function's return type picks the questions: bool = Noul thresholded at 0.5, float = the Noul probability, enum or finite literal union = Choice (an optional enum adds a "<null>" abstain option), class = one question per leaf field in one request (nested classes become dotted IDs). No Score mapping. Typed results drop probabilities and confidence (read the response envelope through the event hook). Rejected at runtime before any HTTP call: free-form string/int, arrays, maps, recursive or optional classes, bool?/float?, media, tools, streaming, empty instructions typesafeai.Client.new(model, api_key=env.TYPESAFE_API_KEY, base_url, request_timeout_ms, capture_wire); default endpoint https://api.typesafe.ai/v1/systemone 0.20.1, post 2026-09-20 (the post says canary; GitHub release not a prerelease, our check); announced 2026-09-17 by Sam Lijin 255-option max verified (HTTP API: POST /v1/systemone and GET /v1/models); BAML also demands ≥ 2 options. Wire capture on by default (auth headers redacted). A route_confidence: float field asks a new Noul; it does not read the Choice's confidence. P01
TanStack AI @tanstack/ai-typesafe (adapter, evaluate docs) by TanStack: decide({adapter, state, questions}) with choice(), score() (levels), boolean(); answers .value, .probability, .confidence (none on boolean), .probabilities; Score .value = nearest level, .score = raw fraction; boolean .value is true at ≥ 0.5 (TanStack's rule); usage and model on result.meta. Plain fetch, no TypeSafe SDK, no stream. Four transports, same call: typesafeDecider('jev-latest') (TYPESAFE_API_KEY), openRouterDecider('~typesafe/jev-latest') (OPENROUTER_API_KEY), vercelGatewayDecider('typesafe-ai/jev') (AI_GATEWAY_API_KEY), cloudflareDecider('typesafe/jev') @tanstack/ai @tanstack/ai-typesafe; createTypesafeDecider(model, apiKey, {baseURL, defaultHeaders, fetch, timeout}), default base https://api.typesafe.ai npm 0.1.0, 2026-09-21 (our check) Model IDs jev-latest, jev-1.13.0, base URL and the three gateway IDs verified (TypeSafe docs; rows below). P01, P05
DSPy dspy.experimental.TypeSafe (3.4.0 notes, decision types, ReAnchor docs; post, Isaac Miller; the release credits the Jev work to @isaacbmiller and @dbreunig) by DSPy, experimental: dspy.configure(lm=TypeSafe("jev-latest")); Predict turns a signature's inputs, demos and field criteria into decision requests. Outputs Noul, Choice[...], Score[...] (.value, .probability or .probabilities, .confidence; Score adds .level) or native bool/Literal; a bare float is unsupported. Thresholds, Score cuts and Choice weights sit on the predictor (fields[name]) and apply locally, so cached answers are reused. No generative fallback, no decision streaming, nested decision outputs not decoded. ReAnchor optimizer: fits only those thresholds, cuts and weights to your metric on labelled data; a change must beat the training score and pass a held-out fold check (up to five folds); never edits instructions or demos; no fixed inference budget pip install "dspy[typesafe]==3.4.0"; TYPESAFE_API_KEY 3.4.0 · 2026-09-25 Question types, fields verified (Primitives: Choice, Score, Noul). Its Noul .confidence is distance from DSPy's threshold (DSPy says so): an extension, the API's Noul has none (Noul (yes/no) questions). The extra pins typesafe-sdk>=0.6.0,<1.0.0, a range that admits the pre-0.7 releases (Python SDK changelog). ReAnchor's claim to calibrate: unverified, no results published; it is cut-off tuning on your labels, not a change to Jev's probabilities (Confidence vs probability). TypeSafe quote-posted it on 2026-09-25 (post). P15, P42
MiniMax Code "TypeSafe / Jev" page (page) by MiniMax: a launcher with four starter workflows (routing, ranking, value selection, evidence checks) that passes your task to MiniMax Code with a Jev skill instruction; the page says to confirm the skill or plugin in the main app before live use and that live TypeSafe API calls need separate access from the page — · captured 2026-09-27 A coding-agent starter, not a route to Jev: your own TypeSafe (or gateway) key still does the calls. Its advice matches the wiki's (add an other route, keep rules in code, a probability is not permission to act)
Effect, Composio @effect/ai-typesafe; @composio/typesafe, composio-typesafe npm / PyPI 16184, 30293 · 2026-09-23 READMEs only list them

Apps with a built-in Jev option

App What Jev does Turn it on Status Note
Langfuse "Jev as a judge" (docs) by Langfuse, marked experimental ("details of the UI and score format may still" change): a decision-model evaluator; you map observation fields into state, add 1 to 50 questions (Langfuse's cap), all answered in one call, each written back as one score (Choice → CATEGORICAL option, Score → NUMERIC expected level, Yes/no → NUMERIC P(true)); probabilities, confidence and resolved model under metadata.typesafe; templates for topic, out-of-scope, frustration and a seven-signal conversation check; runs on live rules, batch evaluation and experiments; execution traces in environment langfuse-llm-as-a-judge Settings → LLM Connections, adapter typesafe; upstream TypeSafe, Vercel AI Gateway or OpenRouter, billed by that upstream; models jev-1.13.0, jev-latest Langfuse docs · captured 2026-09-28 Limits (255 options, 2 to 10 levels, ~32k for state plus longest question, input-only pricing) verified against Models, aliases, pricing, rate limits, context and Score questions. Stale on access: its FAQ says access "runs through a waitlist" and links the old /settings/keys path; TypeSafe reopened signup on 2026-09-27 and the docs link /keys (console.typesafe.ai (console + playground)). State goes to TypeSafe via the chosen upstream: check its data terms. Build and results: Builds: data, search and business (Langfuse trace judge)
Inbox Zero (elie222; open-source email assistant, 12314★ on 2026-09-23; decision-model code at de44248) optional "specialized decision model": Choice over the user's rules, cold-email yes/no, sender categories, thread status, unsubscribe pages, reply-memory selection; raw fetch to /v1/systemone, 30 s timeout operator sets DEFAULT_DECISION_MODEL=typesafe:<model> and TYPESAFE_API_KEY; DEFAULT_DECISION_MODEL_ENABLED (default false) decides whether users who have not chosen get it; users with their own AI key never get it by default; per-user Settings toggle merged to main 2026-09-19 and 2026-09-21, no tagged release (last web tag 2026-05-18); whether the hosted app runs it is not stated our code read 2026-09-24, not captured (unverified beyond that). Any error, or a rule Choice under 0.3 (MIN_CHOICE_CONFIDENCE, compared with the answer's confidence, or with the chosen rule's probability when it pools content rules; our code read 2026-09-25), falls back to the normal LLM path. Its pricing table lists jev-latest at $42 per billion input tokens, output free (= $0.042/Mtok; our code read 2026-09-24; equals the list price, Models, aliases, pricing, rate limits, context). P22

Sources

Links inline; raw captures in frontmatter (vendor pages under raw/partner/ captured 2026-09-24 to 28; the DSPy posts under raw/x/, images transcribed 2026-09-26; DSPy's 3.4.0 notes under raw/community/, 2026-09-26; LiteLLM's benchmark post 2026-09-25; Vercel's AI SDK guide 2026-09-23; Langfuse's docs 2026-09-28; AI That Works stream transcript under raw/community/; dates in raw/MANIFEST.json). Inbox Zero, LiteLLM's 502 and the version numbers marked "our check" come from the 2026-09-24 source and registry check (docs/sweep/2026-09-24-awesome-jev/big-repo-integrations.md), not from raw captures; Inbox Zero's 0.3 fallback and feelings from the 2026-09-25 vetting (docs/sweep/2026-09-25-mrjev).