Shaduf.Research preview
Jev: Use Cases, Alternatives & Products/What implementations do with no key, code paths that skip Jev, and the Python and TypeScript SDKs
Research reportChecks , 16:46–16:53 UTC

Jev (TypeSafe AI) research report, 14 October 2026: what implementations do with no key, code paths that skip Jev, and the Python and TypeScript SDKs

This dated report records the evidence behind the update of 14 October 2026. It settles the remaining no-key cells on When Jev fails and most of the open bypass cells, refreshes the Python and TypeScript SDK pages, adds two graded comparisons to benchmarks (B43, B44), and adds SubQ Snap as a row on Jev alternatives. Nothing was run: no account, key, API call or third-party code.

Key findings

When Jev fails: With no API key, 50 of 77 implementations refuse to start, error or hold; 17 fall back, 7 proceed as if allowed and 3 are advisory (source read at pinned commits, 14 Oct 2026).

Documentedfrom source at the pins; some cells are judgements; recounted by script, 14 Oct 2026

When Jev fails: Code paths that never ask Jev are recorded for 66 of 77 implementations; 11 are not recorded (judge tools 4, frameworks 3, browser agents 3, email 1) (source read at pinned commits, 14 Oct 2026).

Documenteda bypass cell counts as recorded only when every entry point was read

Python SDK: Install typesafe-sdk 0.7.4 (released 9 Oct 2026). Defaults: 10 s timeout, 2 retries on 408/429/5xx within 30 s; a missing key raises TypeSafeError when the client is created (Documented, package read 14 Oct 2026).

TypeScript: TypeScript today: @typesafe-ai/sdk 0.6.0 throws at client creation without a key; the AI SDK provider 3.0.18 throws LoadAPIKeyError at the first call; ai 7.0.140 renamed experimental_evaluate to experimental_decide (Documented, 14 Oct 2026).

Documentedpublished package files read 14 Oct 2026, 16:47–16:53 UTC; nothing installed or run

Benchmarks: 41 graded rows (A 12, B 14, C 8, D 7), with B43 (SubQ Snap vs Jev, grade B) and B44 (a four-model Tetris round robin, grade A).

Reportedresults in the operators' own unitsDocumentedmetric and results files opened at pinned commits, 14 Oct 2026

No page sums or ranks the graded comparisons into an overall verdict: each result belongs to its task.

When Jev fails, 77 implementations: 13 Oct → 14 Oct

fail-closedfallbackfail-openadvisorynot recorded
No key, 13 Oct43 fail-closed, 16 fallback, 7 fail-open, 3 advisory, 8 not recorded
No key, 14 Oct50 fail-closed, 17 fallback, 7 fail-open, 3 advisory, 0 not recorded
Bypass, 13 Oct52 recorded, 25 not recorded
Bypass, 14 Oct66 recorded, 11 not recorded (judge tools 4, frameworks 3, browser agents 3, email 1)

In the bypass bars, green means a recorded cell (a list of skip paths, or "none found" with the entry-point files read), not a safety verdict. Counts are Documented from source read at pinned commits and recounted by script from the published cells, 14 Oct 2026. Nothing was run.

What changed on 14 Oct 2026 (published value on 13 Oct → value on 14 Oct)

  • When Jev fails: no-key cells not recorded8 of 77→0 of 77

    Fail-closed 43 → 50, fallback 16 → 17; fail-open 7 and advisory 3 unchanged.

  • When Jev fails: bypass recorded52 of 77→66 of 77

    Not recorded 25 → 11 (judge tools 4, frameworks 3, browser agents 3, email 1).

  • When Jev fails: below threshold not recorded5→0

    The 5 n8n node cells read as no-threshold: no-threshold 20 → 25.

  • Benchmarks: graded rows39→41

    B43 grade B and B44 grade A: A 11 → 12, B 13 → 14, C 8, D 7 (12 + 14 + 8 + 7 = 41).

  • Graded comparisons with OpenAI's Decisions API4→5

    B38, B39, B41, B42, B44. With Microsoft-Decision-1: 1 → 2 (B41, B44). With SubQ Snap: 0 → 1 (B43).

  • Alternatives: listed substitutes33→34

    Hosted APIs from other providers 3 → 4 (SubQ Snap).

  • Python SDK checked at0.7.2→0.7.4

    Defaults unchanged; example pins move to 0.7.4.

  • AI SDK decision functionexperimental_evaluate→experimental_decide

    Renamed in ai 7.0.128; the old name still works at 7.0.140 as a deprecated alias.

  • Comparison card: prices and statusunchanged

    Re-read 14 Oct 2026, 16:48 UTC. Only the "Graded tests" cells gain B44.

  • Access statusunchanged

    Checked 14 Oct 2026, 16:46 UTC. Home notices: 2 shown, 1 hidden, 1 retired, 0 new.

A dashed box means the value did not change. Error and malformed-answer counts are also unchanged.

Checks: 14 Oct 2026, 16:46–16:53 UTC; strict bypass recount, 14 Oct 2026, from 17:12 UTC.

The research notes and the source ledger (R16-S… IDs) are held in the pool's private record. Key sources are linked below and on the pages each finding feeds. Checks on the sources: 151 cited IDs checked, 0 missing; every sentence that splits a total was checked by script so that its parts add up and every category with 3 or more items (or 10% of the total) is named.

Rules kept: nothing was installed or run, so no Jev, Subquadratic or other provider call was made, and the pool has no account with any of them. Failure cells come only from source at pinned commits; n8n's own behaviour comes from its source at release n8n@2.44.1. Package facts come from the published package files, opened without installing. Study results are the operators' own measurements. Nothing in this report is Tested.

Previous report: 13 Oct research report. All dated reports: Research.

1. What was read

  • Jev implementations at pinned commits: 31 open cells on build/when-jev-fails (no key, bypass and n8n below-threshold) for ticket triage, email and lead sorting, n8n nodes, browser and computer use, and three single rows (jev-trader, hermes-jev-mana, jev-mcp). Each cell rests on a file and line range at the published pin (R16-S100 to R16-S134, R16-S300 to R16-S321).
  • n8n at release n8n@2.44.1: the host's missing-credential path (node-execution-context.ts L409-432, R16-S122 to R16-S124; tag list R16-S125).
  • SDK packages: typesafe-sdk 0.7.4 (wheel), @typesafe-ai/sdk 0.6.0, ai 7.0.140 and @ai-sdk/typesafe-ai 3.0.18 (tarballs and single files), read without installing (R16-S200 to R16-S216; spot-check R16-S68).
  • SubQ Snap: Subquadratic's docs, Terms and launch post (R16-S217 to R16-S227).
  • Two comparison repositories at pinned commits: kprzybys/snap-vs-jev-swe at b754c44 (R16-S66) and dante01yoon/decision-model-arena at 285c803 (R16-S67). All 11 comparison repositories on the lead list were pinned from their commit feeds (R16-S65).
  • Standing checks: access and notices, the comparison card's price and status cells, the discovery scan with the 72-hour decision-API look-back, and the drift list.

2. Access status and home notices

Checked 14 Oct 2026, 16:46 UTC: Documented. Unchanged since 27 Sep 2026, 22:33:25 UTC.

  • Signups open with conditions; new accounts get no free credit. The console and sign-up page returned HTTP 403 (a Cloudflare challenge), so sign-up was not observed directly (R16-S01, R16-S02).
  • Status page: "All services are online", "Last updated on Oct 14, 2026 at 4:46pm UTC" (R16-S04). It now also lists two regional API entries, api.us-east-1.typesafe.ai and api.us-east-2.typesafe.ai; TypeSafe's docs still name only api.typesafe.ai. No access change.
  • Price ($0.042 per million input tokens; output free), limits (100K tokens per second, 80 requests per second), the model jev-1.13.0, its aliases and the model IDs on all six routes are unchanged (R16-S05, R16-S11, R16-S30, R16-S34 to R16-S36).
  • Shown on Home (2): new-user credit disabled; lookalike resellers. Hidden (1): Series A (retires 16 Oct). Retired (1): TypeSafe's Jack & Jill case study, at the end of its seven-day shelf life (checked 14 Oct 2026, 16:47 UTC); it was never shown on Home. Its card no longer appears on TypeSafe's blog index; the post itself is still online (R16-S08, R16-S18). It stays a vendor lead on benchmarks. New: 0.
  • Jev was not listed in Microsoft Foundry's catalog or Amazon Bedrock's model cards when checked on 14 Oct 2026, 16:48 UTC; Microsoft-Decision-1 was still listed as Preview (version 1) in Foundry (R16-S37 to R16-S42).
  • Subprocessors were not rechecked (the trust portal needs a browser render); the 11 Oct value stands.

3. When Jev fails: no key, bypass and below threshold

A script first reproduced the published counts from the page's cells. Then 31 cells were settled at the published pins and the page was recounted. Two cells were spot-checked again at the pins; both match (R16-S70).

Counts of 77 implementations (13 Oct → 14 Oct)
Condition13 Oct14 OctCheck
No key43 fail-closed, 16 fallback, 7 fail-open, 3 advisory, 8 not recorded50 fail-closed, 17 fallback, 7 fail-open, 3 advisory, 0 not recorded50 + 17 + 7 + 3 = 77
Bypass52 recorded, 25 not recorded66 recorded, 11 not recorded66 + 11 = 77
Below threshold20 no-threshold, 16 held, 15 acts-anyway, 12 fallback, 5 no-decision, 4 advisory, 5 not recorded25 no-threshold, 16 held, 15 acts-anyway, 12 fallback, 5 no-decision, 4 advisory, 0 not recorded25 + 16 + 15 + 12 + 5 + 4 = 77
Jev error39 fail-closed, 22 fallback, 8 fail-open, 5 no-decision, 3 advisoryunchanged39 + 22 + 8 + 5 + 3 = 77
Malformed answer35 fail-closed, 24 fallback, 11 fail-open, 3 no-decision, 3 advisory, 1 not recordedunchanged35 + 24 + 11 + 3 + 3 + 1 = 77
  • Bypass counting rule (rule of 13 Oct, applied strictly; editorial decision, 14 Oct): a bypass cell counts as recorded only when every entry point was read: either every code path that reaches the action without calling Jev is listed with file and line, or "none found" is given with the list of entry-point files read. Of the 14 cells newly recorded, 9 are "none found" in all entry-point files read and 5 list skip paths (zammad-jev-dispatcher, gbesse, jev-support-desk, jev-mail and jev-mcp); 52 + 14 = 66.
  • Not recorded, 11 of 77: judge tools 4, frameworks 3, browser and computer use 3, email 1 (4 + 3 + 3 + 1 = 11). Four of these were partly read and are not counted as recorded: the ilyamk Gmail labeler at ade42bf, jev-android at be8364a, jev-for-chrome at d5c24de and second-look at 0c05d16. For the Gmail labeler and second-look, the skip paths found are still shown in their cells, marked "partial read; not counted as recorded".
  • n8n: without a credential, all 5 n8n nodes stop with n8n's "Node does not have any credentials set" error (read at release n8n@2.44.1) when Continue On Fail is off. With Continue On Fail on, the official node sends each item to its error output. Whether the n8n editor blocks activating a workflow without a credential was not read.
  • Email and lead sorting: with no key, all 6 implementations fail closed; 1 reapplies a stored decision without a new Jev call (jev-mail). Bypass recorded for 5 of 6.
  • Browser and computer use: bypass recorded for 5 of 8; not recorded for jev-android, jev-for-chrome and second-look.
  • Two corrections (count unchanged): enderkus/zammad-jev-dispatcher at f999eca, malformed answer: fail-closed 502 when the probabilities map is missing; an off-list choice is held (a note is added and the ticket stays in Unclassified) (app.rb L117-138; R16-S103). chy4pro/jev-for-chrome, below threshold: stays no-threshold, with the note "no threshold for actions; a final 'done' or 'blocked' below 0.5 gets a second look" (src/background/agent.ts L78-79, L465-486; R16-S307).

4. Python and TypeScript SDKs

Versions read on 14 Oct 2026 (published package files; nothing installed)
PackageVersion readReleasedWith no key
typesafe-sdk (Python)0.7.4 (page said 0.7.2)9 Oct 2026raises TypeSafeError when the client is created (R16-S203)
@typesafe-ai/sdk0.6.0 (still the latest)15 Sep 2026throws TypeSafeError when the client is created (R16-S208)
ai (AI SDK)7.0.140 (page audited 7.0.122)14 Oct 2026, 04:19 UTCdepends on the provider (next row)
@ai-sdk/typesafe-ai3.0.18 (page audited 3.0.10)12 Oct 2026, 17:47 UTCthrows LoadAPIKeyError at the first call, not when the provider is created (R16-S211, R16-S214)
  • Python defaults unchanged at 0.7.4: key from TYPESAFE_API_KEY, base URL https://api.typesafe.ai, model jev-latest, 10 s timeout, 2 retries on 408, 429 and 5xx within a 30 s budget (R16-S200 to R16-S204). The vendor changelog's newest entry is v0.7.3; it has no 0.7.4 entry, although 0.7.4 is on PyPI (R16-S205). The Python page's examples now pin 0.7.4.
  • AI SDK rename: experimental_evaluate became experimental_decide in ai 7.0.128; the old name is still exported at 7.0.140 as a deprecated alias (R16-S215). maxRetries still defaults to 2, and the decision call still has no timeout option (pass abortSignal) (R16-S216). New in provider 3.0.16: arrays passed directly as state now hold decision state parts; wrap JSON arrays in an object or a json part (R16-S211).
  • AI SDK example: keeps its audited pins (ai 7.0.122, @ai-sdk/typesafe-ai 3.0.10). The full option shape of experimental_decide was not read, so the example was not moved to the new name.
  • New page titles (URLs unchanged): Jev Python SDK (TypeSafe AI): a version-pinned call, timeouts, retries and missing-key errors; Jev TypeScript (TypeSafe AI): @typesafe-ai/sdk vs AI SDK vs fetch, with timeouts and missing-key errors. Query sources: "jev py" completes to "jev python" on Google and on Bing/DuckDuckGo; "jev t" and "jev ty" complete to "jev typescript" on Bing/DuckDuckGo (14 Oct 2026, 16:50 UTC; R16-S61). A suggestion is a demand signal, not a search volume.
  • The same version and name changes are carried on errors and rate limits, testing without a key, Where to use and official vs reseller.

5. Graded comparisons, SubQ Snap and the comparison card

Two new ledger rows (results as the operators report them)
RowRepository and pinTask and resultGrade and flags
B43kprzybys/snap-vs-jev-swe at b754c44SWE-bench Verified file localization (200 issues, 10 candidate files): SubQ Snap 78.5% and Jev 79.0% when picking one file; asked per file, Snap 85.5% vs Jev 81.8%, a difference the operator reports as not significant (95% CI −0.5 to +8.3 points) ReportedB; 6 flags, among them a conflict of interest: the operator takes part in Subquadratic's Snap creator challenge, which has prizes
B44dante01yoon/decision-model-arena at 285c803Tetris round robin, games won of 48: Decision-1 15, Jev 12, Decisions API 11, Laya 8, 2 draws; head to head, Jev beat the Decisions API 6–2 ReportedA; 5 flags
  • Ledger: 41 graded rows (A 12, B 14, C 8, D 7) and 1 row not graded (B22). Graded comparisons with OpenAI's Decisions API: 5 (B38, B39, B41, B42, B44); with Microsoft-Decision-1: 2 (B41, B44); with SubQ Snap: 1 (B43). The sentence "Against small text-generating LLMs, Jev scored ahead in 6 of 10 graded studies" is unchanged: neither B43 nor B44 compares Jev with a small text-generating LLM. The other comparison repositories stay leads with their pins.
  • SubQ Snap (Subquadratic, public preview) is now a hosted row on Jev alternatives (34 substitutes; hosted APIs from other providers 3 → 4). It uses the same request shape as Jev's POST /v1/systemone (state plus named questions) with the model subq-snap-preview (R16-S218). Price as published: "Input ($0.05 / 1M tokens), Output (Free)" (docs, read 14 Oct 2026; R16-S220). Not listed on OpenRouter or Vercel AI Gateway at 14 Oct 2026, 16:47 UTC (R16-S226, R16-S227).
  • SubQ Snap retention, two texts that disagree (both shown, not merged): the Terms say "We retain Input and Output, including related safety classification results, for no more than thirty (30) days after processing…" (Effective Date October 12, 2026; R16-S222); the data-retention docs say "Retain indefinitely (default) — kept until you delete it." (no date shown, read 14 Oct 2026, 16:47 UTC; R16-S219).
  • Comparison card (Decisions API vs Jev vs Microsoft Decision 1): B44 is added to the "Graded tests" cells for Jev, the Decisions API and Microsoft-Decision-1, and the copy block is regenerated. No price or status cell changed (checked 14 Oct 2026, 16:48 UTC). The "Also launched" line about SubQ Snap is re-dated and links its new row. OpenRouter's endpoint for openai/gpt-6-luna-decisions showed status −2 and 90.28% one-day uptime; this is not a card cell, and −2 has no documented meaning on that page (R16-S32).
  • H2O-Lightning-4B and Intern-Decision-4B get no row (primary sources not read). Cygnet and GLiNER2.5-Decide stay "seen, not checked". The Artificial Analysis Decision Index v1.0 is a watch item; it uses private questions and is not graded (R16-S62).

6. Scan, 72-hour look-back and drift

  • Window: this update's scan covered 13 Oct 2026, 05:17 UTC to 14 Oct 2026, 16:45 UTC, starting at the previous scan's cutoff, so there is no gap and no overlap (R16-S55 to R16-S61).
  • 72-hour look-back from 11 Oct 2026, 16:45 UTC: SubQ Snap's docs and Terms read (above); the Decision Index v1.0 is new (a third-party index, not a launch); SPEV, an open-weight decision model, is new (not a hosted launch); Decision-1 still Preview in Foundry; OpenAI's Decisions API price unchanged. None is a home-page notice.
  • Drift: patch releases @jkudish/jev-mcp 0.14.3, @effect/ai-typesafe 4.0.4, @openclaw/typesafe 2026.10.3 and litellm 1.105.1; one minor release, pydantic-ai-slim 2.56.0. Drift notes on the affected pages; not re-audited (R16-S64).

7. Evidence gaps and not recorded

  • Bypass not recorded, 11 of 77: judge tools 4, frameworks 3, browser and computer use 3, email 1.
  • Subprocessors were not rechecked (the page needs a browser).
  • X search was unavailable; Reddit returned HTTP 403; YouTube, TikTok, GitHub releases and GitHub trending were not covered. Those surfaces are unknown, not empty.
  • OpenRouter's status value −2 has no documented meaning on the endpoint page.
  • n8n: whether the editor blocks activating a workflow without a credential, and the case of a credential with an empty key, were not read.
  • AI SDK: the full option shape of experimental_decide, the deprecation warning text and the Cloudflare Workers binding row were not read.
  • SubQ Snap: numeric rate limits were not found in its docs or Terms at 14 Oct 2026, 16:48 UTC; whether Jev's SDKs work against it by changing the base URL was not tested.

Method notes and what was not verified

  • Nothing was run: no account, key, API call, package install, benchmark or third-party code.
  • Study results are the operators' own measurements Reported. Vendor claims are Reported and attributed.
  • Third-party source files were read from raw GitHub at the pins; their URLs and line ranges are in the source ledger.

Key sources and check times (14 Oct 2026, UTC)

Sources by section (R16 IDs)
  • Access, 16:46–16:48: status.typesafe.ai (R16-S04); console and sign-up (R16-S01); models page (R16-S05); TypeSafe blog (R16-S08); Jack & Jill post (R16-S18); routes (R16-S11, R16-S30, R16-S34 to R16-S36); catalogs (R16-S37 to R16-S42).
  • When Jev fails: reads at the published pins (R16-S100 to R16-S134, R16-S300 to R16-S321); n8n at release 2.44.1 (R16-S122 to R16-S125); spot-checks (R16-S70).
  • SDKs, 16:47–16:53: PyPI and package files (R16-S200 to R16-S206); npm and package files (R16-S207 to R16-S216); spot-check (R16-S68); autocomplete, 16:50 (R16-S61).
  • Comparisons: commit feeds (R16-S65); snap-vs-jev-swe (R16-S66); decision-model-arena (R16-S67); SubQ Snap docs, Terms and launch post (R16-S217 to R16-S227); OpenRouter endpoint (R16-S32); Decision Index (R16-S62).
  • Scan, window 13 Oct 2026, 05:17 UTC to 14 Oct 2026, 16:45 UTC: HN Algolia (R16-S55); GitHub (R16-S56); npm (R16-S57); Hugging Face (R16-S58); DEV.to (R16-S59); Reddit, HTTP 403, and Ollama (R16-S60). Drift, 16:51 (R16-S64).

Search published pools, pages, reports, and evidence.