Skip to content

jev (Elixir)

Elixir/OTP library treating Jev as a peer process whose answers arrive as messages you pattern match in GenServer clauses.

LibrarybetaMIT

Overview

The jev Hex package brings TypeSafe Jev and compatible decision models to OTP. Jev acts as a peer process: a GenServer replies with questions, and Jev's answer arrives as a message handled in handle_answer/3. Clause order is the routing and thresholds are guards, so the README's triage example labels an issue as security when that probability exceeds 0.5, or as a high-priority bug when the kind confidence is above 0.85 and severity is high.

The server never blocks on Jev, so many calls can be in flight and each answer finds its clause when it arrives. Because nothing below handle_answer touches the network, tests call it with literal maps. It can also point at self-hosted models using the same wire format. It requires Elixir 1.18+ and OTP 27+, with guides on questions, servers, recursive workflows, telemetry and testing.

What the decision model decides

TypeQuestionAnswers
ChoiceWhat kind of issue is this?bug · feature · other
ScoreHow severe is it for users?Cosmetic · Workaround · Blocks · Data loss
Yes / noDoes this describe a vulnerability?—

How it works

  1. GenServer handle_call replies with questions for Jev
  2. Jev processes asynchronously
  3. handle_answer clauses match on answers and confidence guards
  4. Reply to the original caller with the result

Strengths

  • Idiomatic OTP design with non-blocking calls
  • Network-free tests on literal maps
  • Works with self-hosted compatible endpoints

Caveats

  • Early version (0.1)
  • Requires recent Elixir and OTP

Getting started

Add `{:jev, "~> 0.1"}` to deps and set TYPESAFE_API_KEY (or configure a compatible endpoint).

At a glance

Type
Library
Status
beta
Language
Elixir
Runtime
OTP library
Has code
yes
Has tests
yes
License
MIT

Use cases and integrations

How curated lists describe it

  • Elixir ecosystem: GenServer client that replies with Jev's answer so callers can pattern match on it directly.

    yibie/awesome-jev
  • Hex package [`jev`](https://hex.pm/packages/jev): Jev as a peer GenServer; answers arrive as messages you pattern-match, with network-free tests

    AnotiaWang/awesome-decision-models
  • Integrates Jev as an asynchronous Elixir/OTP process whose replies are handled with GenServer pattern matching.

    logicrw/awesome-jev-projects
  • TypeSafe Jev for OTP: reply to Jev from a GenServer and pattern match on its…

    wh000wh000/awesome-jev-live
  • Elixir/OTP client designed around GenServer replies and pattern matching.

    cobanov/awesome-jev
  • TypeSafe Jev for OTP: reply to Jev from a GenServer and pattern match on its answer.

    hellogumbo/awesome-jev

Frequently asked questions

How do I route on answers?

Write handle_answer clauses; clause order is the routing and guards hold thresholds.

Does a call block my server?

No, many calls can be in flight and answers arrive as messages.

Can I use a local model?

Yes, any self-hosted model that speaks the same wire format.

Related projects

  • Local service to define, test and publish versioned Jev judgment functions, callable over HTTP by backends and over MCP by agents.

    MCP serverbetaTypeScript
  • Ruby gem that stores Jev Noul, Choice and Score answers about a record's text as ordinary ActiveRecord columns you can query.

    LibrarybetaRuby
  • Unofficial Go client for TypeSafe System One with generics that bind each choice, score and noul answer to a declared Go type.

    ProjectbetaGo
  • Python dialect that adds a '~' operator and jev/case blocks so a branch can ask Jev a yes/no, scale or choice question.

    ProjectprototypePython
  • Provider-independent .NET decision engine with a separate TypeSafe Jev provider package mapping Choice, Score and Noul to /v1/systemone.

    LibrarybetaC#
  • Ruby gem for the Jev API with ask (Noul), choose (Choice) and score (Score) builders and a uniform result accessor.

    LibrarybetaRuby