Skip to content

scala-jev-sdk

Effect-agnostic Scala 3 client for Jev's /v1/systemone on any sttp backend, with answers typed by the question value.

LibrarybetaApache-2.0

Overview

scala-jev-sdk is a Scala 3 client for TypeSafe's Jev. It bundles no effect system: you pass an sttp backend and the client speaks whatever that backend speaks, whether Future, blocking Identity, cats-effect, ZIO, Monix or Pekko. The only dependencies are sttp-client4-core and upickle, and it is published against Scala 3.3 LTS so it stays readable from newer Scala versions. JDK 17 or newer is required.

The core design idea is that you look up an answer with the question value itself and the type follows: answers.get(isUrgent) returns an Option[NoulAnswer]. One request carries one state and any number of named noul, choice and score questions. Probabilities are a dedicated type, isYes uses a 0.5 default threshold, and choiceIfConfident implements confidence-gated routing in one call. State, instructions, options and score levels accept JSON as well as strings. Configuration covers model pinning, base URL and retry policy, from code or the environment.

What the decision model decides

TypeQuestionAnswers
Yes / noDoes this convey urgency?—
ChoiceWhich team should handle this?billing · technical

How it works

  1. Create a JevClient with an sttp backend and config
  2. Define questions as values
  3. client.ask(state, questions...)
  4. Read typed answers by question value; gate with choiceIfConfident

Strengths

  • Works with any Scala effect system
  • Type-safe answer lookup
  • Minimal dependencies

Caveats

  • Requires a TypeSafe key
  • Community library

Getting started

libraryDependencies += "io.github.ticofab" %% "scala-jev-sdk" % "<version>", then JevClient.create(DefaultFutureBackend()).

At a glance

Type
Library
Status
beta
Language
Scala
Runtime
JVM library (Scala 3.3+, JDK 17+)
Has code
yes
Has tests
yes
License
Apache-2.0

Use cases and integrations

How curated lists describe it

  • Effect-agnostic Scala 3 client for the System One API that runs on any sttp backend (Future, cats-effect, ZIO, Monix, or blocking) with answers typed by question value.

    hellogumbo/awesome-jev
  • Scala 3 client for `/v1/systemone` on sttp, with typed requests and answers and no effect system bundled. Apache-2.0.

    MrJev/awesome-jev

Frequently asked questions

Which effect systems are supported?

Any sttp backend: Future, blocking Identity, cats-effect, ZIO, Monix or Pekko.

How are answers typed?

You look them up with the question value, which returns the matching answer type.

Is there confidence gating?

Yes, choiceIfConfident acts only when the choice is confident enough.

Related projects

  • Hack Club's lightweight LLM proxy, listed for adding a Jev forwarding endpoint behind its auth, limits and usage logging.

    MCP serverproductionTypeScript
  • Ax, a DSPy-style multi-language LLM framework, listed with a native TypeSafe provider for Boolean, Choice, Score and raw Jev questions.

    PluginproductionTypeScript
  • Effect TypeScript library whose @effect/ai-typesafe package maps classify, probability and rating operations to Jev questions.

    ProjectproductionTypeScript
  • PHP monorepo whose Polyglot module adds a TypeSafe driver for typed Noul, Choice and Score decisions alongside LLM inference.

    ProjectproductionPHP
  • Go MCP server giving any client typed Jev decisions via OpenRouter or TypeSafe, with validated answers and no paid retries.

    MCP serverproductionGo
  • Simon Willison's LLM plugin that adds Jev as a model for yes/no, choice and score questions from the command line.

    PluginproductionPython