All software

jev-mac

A command-line typed-decision engine on Apple's foundation models: a state and typed questions in, a probability distribution for each question out.

2026SwiftmacOS

jev-mac answers typed questions about a piece of text. You give it a state (a support ticket, an email, a review, or JSON) and a set of questions, and instead of free text it returns a probability distribution for each one: a choice over named options, a score over the levels of a rubric, or a noul, the probability that a proposition is true.

It follows the architecture of laya-mlx (external link, opens in a new tab), but runs only on the language model that ships with macOS, through Apple's FoundationModels framework: no downloaded weights, no MLX, no Python. It is an experiment, for fun and research, and its README says so on the first line. Claude Code wrote it in a day in September 2026, and the post Porting a typed-decision engine to Apple's foundation models tells how, and what a thousand tests found.

Getting it

It needs macOS 27 on Apple silicon with Apple Intelligence turned on, and the Xcode 27 toolchain to build. make on its own lists every target.

git clone https://github.com/bkarak/jev-mac.git
cd jev-mac
make release
make models

The binary is .build/release/jev-mac, and make install copies it to /usr/local/bin (PREFIX changes where). make models describes the Apple models on the Mac and times the on-device one.

Using it

$ jev-mac predict --preset triage --summary "I was billed twice this month. Please refund the duplicate charge."
department [choice] → billing  confidence=1.00
    billing    ████████████████████████  1.000
    technical  ························  0.000
    sales      ························  0.000
    account    ························  0.000
urgency [score] → level 1  expected=1.00  confidence=1.00
    ...
wants_refund [noul] → true  P(true)=1.000  ████████████████████████

Four presets come with it (triage, email, moderation and sentiment), and your own questions go in a JSON file passed with --questions. --batch reads one state per line and writes one JSON result per line. jev-mac snake plays snake in the terminal with the model choosing every move, and jev-mac bench times it all.

Where it stops

Apple's framework exposes no probabilities, so the model is asked to write its own: the answer first, then a weight from 0 to 100 for every option. They come out certain more often than they should, including when the answer is wrong. A question takes about 0.9 s, and a three-question prediction about 2.4 s, on an M4 Max. The on-device model has 8,192 tokens of context and fifteen languages (Greek is not one of them), Apple's guardrails refuse some of the inputs the moderation preset exists to classify, and Private Cloud Compute rejects requests from an unsigned command-line tool.

Source

MIT-licensed Swift, with 1,000 tests: 577 that run in under a second without the model, and 423 that run against it. It is current software, so where the repository and this page differ, the repository is current.

Snake demo

jev-mac's snake demo in a terminal: the model picks every move, and the panel beside the board shows its probabilities for the four directions, the dead-end risk and whether the food is reachable.
jev-mac's snake demo in a terminal: the model picks every move, and the panel beside the board shows its probabilities for the four directions, the dead-end risk and whether the food is reachable.