judgment
Rust crate and jud CLI where a decision is a .jud rubric file answered by a System One model, type-checked and testable without a key.
Overview
judgment provides typed, calibrated judgments from TypeSafe System One models and any server that speaks the same wire format, as a Rust crate and the jud command line. A decision is written as a .jud rubric file or as Rust types: the questions to ask about a JSON state and the policy that turns answers into verdicts. You pipe a state in and get one verdict per question out, such as actionable yes with probability 0.97, desk billing with confidence 0.87, and tone at level angry.
The crate makes four things properties of the types: an answer can only be read as what was asked, a probability is a probability, a transient failure does not fail the decision, and the decision is testable without a key through recorded answers. A record and tune loop lets thresholds be tested against labelled cases and tuned from recorded answers. TYPESAFE_BASE_URL points it at other compatible servers. It installs via mise, Homebrew, cargo or Docker, and ships a Claude Code plugin. It is not affiliated with TypeSafe.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | Is this event actionable? | — |
| Choice | Which desk should handle this event? | — |
| Score | What is the tone of this message? | — |
How it works
- Write a .jud rubric with questions and thresholds
- Pipe a JSON state into jud
- Model answers; types verify each answer before it is read
- Policy turns answers into verdicts
- Record answers and tune thresholds against labelled cases
Strengths
- Type system prevents misreading answers
- Testable offline with recorded answers
- Works with any compatible server
- Multiple install routes with checksums and attestations
Caveats
- Example recordings are scripted, not model output
- Rust-centric
- Unofficial
Getting started
brew install chussenot/tap/jud, then cat event.json | jud triage.jud (set TYPESAFE_API_KEY for live answers).At a glance
- Type
- Plugin
- Status
- beta
- Language
- Rust
- Runtime
- crate, CLI, Docker, Claude Code plugin
- Has code
- yes
- Has tests
- yes
Use cases and integrations
How curated lists describe it
Typed, calibrated judgments from System One models: a decision written as a…
wh000wh000/awesome-jev-liveTyped, calibrated judgments from System One models: a decision written as a .jud file or as Rust types, answered by a model, verified before it is read, testable with no key. Rust crate, jud CLI (cat event.json | jud triage.jud), Claude Code plugin. Not affiliated with TypeSafe AI.
hellogumbo/awesome-jev
Frequently asked questions
What is a .jud file?
A rubric: the questions to ask about a JSON state and the policy that turns answers into verdicts.
Can I test without a key?
Yes, recorded answers replay with no key or network.
Does it only work with TypeSafe?
No, any server speaking the same wire format works via TYPESAFE_BASE_URL.
Related projects
Python dialect that adds a '~' operator and jev/case blocks so a branch can ask Jev a yes/no, scale or choice question.
ProjectprototypePythonRust CLI and library that asks Jev typed questions via OpenRouter and combines the probabilities with fuzzy-logic rules into decisions.
CLIbetaRustUnofficial standard-library Go client for Jev with generic typed Choice values and local confidence thresholds.
ProjectbetaGoRust CLI for Jev: ask yes/no, choice and rubric questions about text and branch on exit codes, JSON or MCP tools.
MCP serverbetaRustLocal service to define, test and publish versioned Jev judgment functions, callable over HTTP by backends and over MCP by agents.
MCP serverbetaTypeScriptRuby gem that stores Jev Noul, Choice and Score answers about a record's text as ordinary ActiveRecord columns you can query.
LibrarybetaRuby