jevkit
Rust CLI for Jev that lints typed question sets offline, then sends them and prints probabilities, labels and scores as JSON.
Overview
jevkit is a command-line client for TypeSafe's Jev, installed as the jev binary (crate jevkit-cli). You write noul, choice and score questions in terse YAML or JSON, or inline with --noul, pass a passage, and get back JSON with probabilities, labels and score values on stdout.
Its main idea is validation before billing. The README points out that the API happily charges for questions that cannot inform you, such as a choice with one option or a score with one level, and that label descriptions act as the prompt. jev lint runs offline rule checks (about 0.5 ms) and returns a distinct exit code so CI or a pre-commit hook can reject such sets. Other features include a per-call usage ledger, layered config, keyring-stored keys and an agent skill so coding agents can drive the CLI. It is for developers and agents who call Jev from scripts.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | Is this risky? (any inline yes/no question) | — |
| Choice | Which severity label applies to the passage?(inferred) | low · medium · high |
| Score | How urgent is this passage?(inferred) | — |
How it works
- Write a question set in YAML/JSON or pass --noul inline
- jev lint checks it offline and exits 2 if a question is billed-but-useless
- jev ask expands the terse form to the canonical wire payload and calls Jev
- Parsed answers print as JSON; optional --log records request, tokens and cost
Strengths
- Catches useless or forced questions before any paid call
- Machine-friendly JSON output and documented exit codes for CI
- Keys kept in the OS keyring, not shell history
- Ships an agent skill for coding agents
Caveats
- Calls the hosted Jev API (or a configured provider) for answers
- README counts of lint rules differ between sources (13 vs 20)
- Licence not stated in the list entry
Getting started
cargo install jevkit-cli (installs the jev binary), or curl -fsSL https://raw.githubusercontent.com/ariel-frischer/jevkit/main/install.sh | shAt a glance
- Type
- CLI
- Status
- beta
- Language
- Rust
- Runtime
- CLI
- Has code
- yes
- Has tests
- yes
Use cases and integrations
How curated lists describe it
Developer tooling: Rust CLI that validates `Choice`/`Score`/`Noul` question sets with 13 offline lint rules before any Jev call, then sends the canonical wire payload and prints parsed, confidence-bearing JSON answers to stdout using exit code 2 to reject a billed-but-useless request.
yibie/awesome-jevFast Rust CLI for TypeSafe Jev: typed decisions, offline linting before you pay.
hellogumbo/awesome-jev
Frequently asked questions
What does jev lint check?
It flags question sets that would be billed but uninformative, such as single-option choices or criteria that just restate labels.
Is it faster than curl?
Not for the API call itself; the README says the saving is in what you write and in offline linting.
Does it need a TypeSafe key?
Yes for jev ask; jev lint works entirely offline.
Related projects
Hack Club's lightweight LLM proxy, listed for adding a Jev forwarding endpoint behind its auth, limits and usage logging.
MCP serverproductionTypeScriptGo MCP server giving any client typed Jev decisions via OpenRouter or TypeSafe, with validated answers and no paid retries.
MCP serverproductionGoUnofficial hosted or local Jev MCP server giving agents a quick second opinion: it picks yes/no, scale or choice and returns probabilities.
MCP serverbetaTypeScriptnpm library that rate-limits, spend-caps, caches and redacts every Jev request made in a loop.
LibrarybetaJavaScriptRust CLI for Jev: ask yes/no, choice and rubric questions about text and branch on exit codes, JSON or MCP tools.
MCP serverbetaRustpip-installable Jev kit: a CLI for verify, screen, classify, extract, route and rerank, plus an MCP server for the primitives.
MCP serverbetaPython