Skip to content

Kojev

Unofficial Kotlin Multiplatform client for Jev across JVM, Android and iOS. You declare the decision as an enum implementing Criterion and read back typed answers, distributions and confidence.

Stars
9
Language
Kotlin
License
MIT
Published by
Community
Author
ItisNoMatter
Last verified
Oct 2026

About this project

A Kotlin Multiplatform client for Jev, TypeSafe AI's System One model. You describe the decision in your own enums; kojev asks Jev and hands the answers back in those enums. kojev is unofficial and not affiliated with, endorsed by, or supported by TypeSafe AI, Inc. "TypeSafe" and "Jev" are trademarks of TypeSafe AI, Inc. Targets: jvm, Android, iosArm64, iosSimulatorArm64, iosX64. kojev is on 0.x: it follows Semantic Versioning, and breaking changes should be expected between any two 0.x releases (see CHANGELOG.md).

Quoted from the project's README. Read the full README.

Highlights

  • Choice and Score answers come back as your own enum with a full probability map, and a Score has no value because its mean can fall between levels.
  • Enum constants must carry their descriptions by implementing Criterion, so a missing description is a compile error rather than a quietly weaker prompt.
  • Retries run before anything reaches you, covering 408, 429, 5xx, connection errors and timeouts with jittered backoff honouring Retry-After.
  • No default thresholds anywhere: a Noul is a bare probability and the number you compare it against is written where the decision is made.

Watch out

It is 0.x and says so: breaking changes should be expected between any two 0.x releases, with a changelog to track them. jev-latest is an alias that moves with releases, the examples pin a versioned model id, and result.model reports the versioned model that actually answered alongside token usage and a request id for support. You bring your own Ktor engine, for example ktor-client-cio, because kojev pins none. Everything a decision throws is a JevException, and a 2xx that does not match what you asked, such as a missing answer, an unknown label or a value out of range, throws JevResponseException rather than becoming a default, which is deliberate but means an upstream shape change surfaces as an exception rather than a fallback. Retries default to the official SDKs' values, and a wait the total budget cannot afford is not taken: the failure is thrown immediately carrying the server's retryAfter, so the decision to wait longer is left to you. On where the key belongs, the Android and iOS targets exist so domain types and questions can be shared with app code while your backend holds the key and calls Jev; only a bring-your-own-key app should have a device call the API directly. Send a structure built for the decision rather than your whole domain object, because accuracy falls as the state grows with content unrelated to the questions. The comparison table notes that on the JVM jev4k is the more convenient client with optional enum descriptions and threshold helpers, and that typesafe-sdk-kotlin is a faithful port of the official JavaScript SDK, so kojev's narrowness is a deliberate trade rather than a gap. Our README copy is truncated mid-sentence in its development-history link, so the docs index, licensing and contribution details are not documented here. Copy reviewed against the repository README on 2026-10-04, not from running it.

Questions about this entry

Short answers drawn from the linked project or page.

More Jev resources like this

45GitHub stars
Go SDK plus a pipeline-friendly CLI for typed decisions, covering single questions, batched question maps, retries, and line-oriented filtering over stdin.
Jev Repos & SDKs#community#jevbest#catalog-import
12GitHub stars
Kotlin Multiplatform DSL and client for Jev covering JVM, Apple platforms, Linux, Windows, and Node.js, declaring noul, choice, and score questions in one request.
Jev Repos & SDKs#community#awesomejev#catalog-import
8GitHub stars
Kotlin UI-agent SDK for Android where Jev or DeepSeek picks actions from live on-screen controls and an accessibility service executes them under host policy.
Jev Repos & SDKs#community#awesomejev#catalog-import
5GitHub stars
Zero-dependency Node bridge that exposes Jev through OpenAI-style chat and responses endpoints with streaming, plus a CLI, a code-audit tool, and an auto-fix loop.
Jev Repos & SDKs#community#awesomejev#catalog-import
1GitHub stars
Community Go client for the TypeSafe API: context-aware SystemOne calls, Choice, Noul and Score constructors, scoped functional options, typed errors carrying RFC 6901 field paths, and standard-library-only runtime code. Requires Go 1.24.
Jev Repos & SDKs#community#awesomejev#catalog-import
1GitHub stars
C# client for Jev, TypeSafe AI's System One model. Typed Noul, Choice and Score questions go out with one state in a single round trip and come back with a value, a probability distribution and a confidence number. Choice questions can be built from an enum, so the compiler finds the switch branch you forgot.
Jev Repos & SDKs#community#awesomejev#catalog-import

From the Jev guides

Original write-ups on what this entry is for.

Closed weights have not stopped the ecosystem from rebuilding the shape in the open. API-compatible servers, retrained heads on small models, and inference-time tricks that skip generation entirely.
Jev Repos & SDKs#open-models#research#local
Read article
Back to all resources

From the Jev community

Posts from builders shipping with Jev right now.

Follow @typesafeai