Skip to content

Releases: Algorythm-Canada/OpenJevSwift

OpenJevSwift 0.1.0

Choose a tag to compare

@alaineid alaineid released this 06 Oct 21:36
e5787ea

OpenJevSwift 0.1.0 is the first release of a native Swift implementation of OpenJev, the open, Jev-compatible "System One" decision server. A client sends a state and typed questions (noul, choice, score), and the server reads every answer from a model's probabilities, so an answer cannot go off-schema. One openjev binary serves DiffusionGemma or JevK5 on MLX, or Verdict or Laya on Core ML, on a Mac, with upstream's wire API, so TypeSafe's SDKs work against it unchanged; the same libraries answer requests inside an iPhone or Mac app. It is compatible with upstream OpenJev 0.5.0 (dcd2094).

CHANGELOG.md lists what ships, grouped by backends, endpoints, request options and platforms, and the known gaps: the CLM model (#59) and DiffusionGemma's read performance (#100, #101, #102).

Compatibility

docs/compatibility.md says what is identical to upstream, byte for byte, what agrees within a measured tolerance (the models' probabilities), and what differs and why, each difference with its decision record. Its matrix shows which backend and option runs on macOS, iOS and Linux.

Models

OpenJevSwift serves other people's models. No weights are in the repository or in this release: each model downloads on first use from where its authors or this project publish it, and keeps its own license.

Model Served as Backend Authors License Weights
DiffusionGemma 26B-A4B openjev-0.1 mlx Google DeepMind; the MLX conversion by mlx-community Apache-2.0 plus the Gemma Terms of Use mlx-community/diffusiongemma-26B-A4B-it-4bit at a7a81407
Verdict 1.4 verdict-1.4 verdict Heman10x (Verdict-open-jev) Apache-2.0 A Core ML conversion of heman10x/rlcd-modernbert-151m at 8af2496, from Algorythm-Canada/openjev-models
Laya 1.0 laya-1.0 laya Nandakishor M / Convai Innovations (laya) Apache-2.0 Core ML conversions of convaiinnovations/laya-typed-decisions at 1a793eb, from openjev-models
JevK5 0.2 jevk5-0.2 jevk5 Alibi Serikbay (jevk5); base model Qwen3.5-4B by the Qwen team Apache-2.0 An 8-bit MLX conversion of alibiserikbay/JevK5 at its v0.2 tag, Algorythm-Canada/jevk5-0.2-mlx-8bit

The Gemma Terms of Use that apply to DiffusionGemma's weights are the user's to follow. docs/credits.md credits every model and upstream project, with the revisions this release pins. OpenJevSwift is an independent project, not affiliated with or endorsed by TypeSafe AI (the makers of Jev), Google DeepMind or NVIDIA (DiffusionGemma), or the authors of the other models it serves.

Install

The libraries, with SwiftPM

// In Package.swift
platforms: [.macOS(.v14), .iOS(.v17)],
dependencies: [
    .package(url: "https://github.com/Algorythm-Canada/OpenJevSwift.git", from: "0.1.0"),
],
targets: [
    .target(
        name: "MyApp",
        dependencies: [
            .product(name: "OpenJevCore", package: "OpenJevSwift"),
            .product(name: "OpenJevEncoders", package: "OpenJevSwift"),
        ]),
]
  • OpenJevCore, the engine and the wire types, builds on macOS 14, iOS 17 and Linux.
  • OpenJevEncoders runs Verdict and Laya on Core ML from macOS 15 and iOS 18. OpenJevDiffusionGemma and OpenJevLetterReadout (JevK5) run on MLX on Apple silicon; they exist on Apple platforms only.
  • The package pins mlx-swift 0.32.3 and mlx-swift-lm 3.32.3 exactly, so an app that also depends on either uses those versions.
  • Building the MLX modules with the Metal shaders MLX runs on needs Xcode 26.4 or later and its Metal Toolchain component (xcodebuild -downloadComponent MetalToolchain).
  • Before 1.0 a minor release may break the API: from: "0.1.0" takes 0.2.0 when it comes, and .upToNextMinor(from: "0.1.0") stays on 0.1 patches.

The DocC article Making decisions in an app loads a model and answers a request.

The openjev binary

On an Apple silicon Mac with macOS 15 or later and Xcode 27:

xcodebuild -downloadComponent MetalToolchain
git clone --branch 0.1.0 https://github.com/Algorythm-Canada/OpenJevSwift.git
cd OpenJevSwift
swift build -c release --product openjev
.build/release/openjev serve --backend verdict

The first start downloads Verdict's converted package, tokenizer and calibrator and checks each file's SHA-256; the server then listens on 127.0.0.1:8080. With Xcode 26.4 to 26.6, add --build-system swiftbuild to swift build, or the mlx and jevk5 backends lack MLX's Metal shaders. On Linux the same build gives the tool without a backend. docs/deployment.md covers the settings, a launchd job, the logs and the exit statuses, and SECURITY.md what the server connects to and how it handles keys.

The demo app

Examples/TriageDemo
is an iPhone app that answers upstream's README example on the device, as you type: whether a
customer message needs a reply within the hour (noul), which team should handle it (choice)
and how upset the customer is (score), with every option's probability as a bar. It needs Xcode
26.4 or later and an iPhone or a simulator with iOS 18 or later. The first launch downloads
Verdict, about 310 MB, and checks each file's SHA-256; later launches work offline.