CLM vs localjev
Contrastive Language Models: CLM-8B, an open System-1 decision model scoring states against actions — typed choice/score/yes-no answers on a TypeSafe-compatible API, up to 9x faster than Jev. — versus — GitHub Next's local Jev bridge: a Bun/TypeScript POST /v1/systemone that translates typed decision questions into prompts for DiffusionGemma behind any OpenAI-compatible endpoint.
Both give you a local endpoint for Jev-style typed questions; localjev bridges to DiffusionGemma via prompts, CLM serves its own trained decision model.
| CLM | localjev | |
|---|---|---|
| Stars | 3.0k | 821 |
| Forks | 256 | 54 |
| Language | Python | TypeScript |
| License | Apache-2.0 | MIT |
| Last activity | 6 days ago | 23 days ago |
| Topics | decision-models, local | decision-models, gateway, local |
| Curated connections | 5 | 8 |
CLM — the curator's take
Use it when an agent must pick among many candidates fast — next action, tool, best-of-N verifier — and you want calibrated probabilities on your own GPU; cached state/action embeddings are why it beats Jev on latency. Not for anything generative: it ranks, never writes. Needs a Qwen3-8B encoder under vLLM plus the head, and states past 2,048 tokens are truncated unless you raise both limits.
localjev — the curator's take
Use LocalJev when you want to point TypeSafe's SDK at your own hardware today, with a model you already serve: set TYPESAFE_BASE_URL and the quickstart runs unchanged, with chunking, admission control (max-inflight, HTTP 529 queue), and corrective retries on malformed JSON already handled. Read the honesty in its own README before trusting it: the probabilities are *generated* by the model as a JSON scalar/vector, not read from logits, so it is wire-compatible with Jev but not mathematically equivalent — OpenJev's structured read needs unmerged vLLM extensions that oMLX doesn't expose. That makes it fine for routing and triage, and the wrong tool for consequential decisions until you have run its own bake-off (AG News / BoolQ / SST-5, five models, two input lengths) on your workload. If you would rather own calibrated probabilities than borrow them, kev trains a readout head instead of prompting.