scala-jev-sdk
Effect-agnostic Scala 3 client for Jev's /v1/systemone on any sttp backend, with answers typed by the question value.
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
| Type | Question | Answers |
|---|---|---|
| Yes / no | Does this convey urgency? | — |
| Choice | Which team should handle this? | billing · technical |
How it works
- Create a JevClient with an sttp backend and config
- Define questions as values
- client.ask(state, questions...)
- 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-jevScala 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 serverproductionTypeScriptAx, a DSPy-style multi-language LLM framework, listed with a native TypeSafe provider for Boolean, Choice, Score and raw Jev questions.
PluginproductionTypeScriptEffect TypeScript library whose @effect/ai-typesafe package maps classify, probability and rating operations to Jev questions.
ProjectproductionTypeScriptPHP monorepo whose Polyglot module adds a TypeSafe driver for typed Noul, Choice and Score decisions alongside LLM inference.
ProjectproductionPHPGo MCP server giving any client typed Jev decisions via OpenRouter or TypeSafe, with validated answers and no paid retries.
MCP serverproductionGoSimon Willison's LLM plugin that adds Jev as a model for yes/no, choice and score questions from the command line.
PluginproductionPython