jev-cli
September 19, 2026 · View on GitHub
Fast, typed AI judgments from the command line, powered by TypeSafe's Jev model.
Jev does not write text. You give it content and a question with a fixed set of answers, and it returns a probability for each answer in a few hundred milliseconds for a fraction of a cent. jev wraps that into commands you can pipe into, script around, and gate CI on.
Installed from npm as jevctl. The command is jev. Website: jevcli.vectorz.app.
Install
npm install -g jevctl
jev auth login # paste your TypeSafe key at the hidden prompt; stored in the OS keychain
jev config # confirms the key is found and shows the effective settings
Needs Node.js 20.12+ and a key from console.typesafe.ai/settings/keys. No install: npx jevctl <command>.
First run
jev verify "Helmets are optional for adults" \
--evidence "Every rider must wear an approved helmet."
# Verdict Conf Action Claim
- ------------ ---- ------ -------------------------------
1 contradicted 1.00 auto Helmets are optional for adults
Exit code was 2: a claim was contradicted. Add --json to any command for machine-readable output, or --dry-run to see exactly what would be sent without calling the API.
Commands
Each command has its own page with options, output fields, and examples.
| Command | Answers | Docs |
|---|---|---|
jev verify | Does this evidence support, contradict, or ignore each claim? | docs/verify.md |
jev screen | Is this text trying to hijack an AI agent? Is it worth reading? | docs/screen.md |
jev classify | Which label fits? Which labels apply? Where in this hierarchy? | docs/classify.md |
jev extract | Which span in the text is the email, amount, date, id I want? | docs/extract.md |
jev find | Which candidate best answers the query? Does any? | docs/find.md |
jev rerank | How relevant is each result to the query, on its own? | docs/rerank.md |
jev match | Do these two records describe the same thing? | docs/match.md |
jev route | Which handler takes this request, with which arguments? | docs/route.md |
jev ask | Any yes/no, pick-one, or rated question you write yourself | docs/ask.md |
jev compact | Which old tool calls in this agent transcript still matter? | docs/compact.md |
jev batch | Any of the above, over many rows, with a concurrency pool | docs/batch.md |
jev auth | Store the API key in the keychain instead of exporting it | docs/auth.md |
jev config | Show or edit settings; check which key source is in use | docs/config.md |
jev models | List the models your account can use | docs/config.md#models |
jev update | Check npm for a newer jevctl release and install it | docs/update.md |
Conventions
Same rules for every command. Details in docs/output.md and docs/config.md.
| Rule | |
|---|---|
| Input | Any value is literal text, @path for a file, or - for stdin (one per command). @@x is a literal starting with @. |
| Output | Table by default. --json for scripts, --md for PR comments, --format csv|tsv|jsonl, --pluck <path> for one value. JSON field names are a stable contract. |
| Exit codes | 0 ok · 1 usage, config, input, or network error (stderr) · 2 a --fail-on condition matched. Code 2 makes jev a gate in &&, hooks, and CI. |
| Thresholds | Defaults follow TypeSafe's cookbooks. Sample your data with --json, then tune via flags or config. |
| Global flags | --json --md --format --pluck --dry-run -m -P --timeout -q --no-color, before or after the subcommand. |
| Errors | One line on stderr, exit 1. A response that is not one answer per question is Malformed response, never a silent pass. |
Claude Code plugin
The repo ships a plugin that teaches Claude Code when to use jev, adds /jev:* slash commands, and replaces Claude Code's compaction summary with jev compact's verbatim procedure.
claude plugin marketplace add Nasrallah-AL/jev-cli
claude plugin install jev@jev-cli
See plugin/README.md, and plugin/hooks/README.md for the compaction hook.
More
- Output formats: text, json, jsonl, md, csv, tsv, and
--pluck - Configuration: config file, environment variables, providers, global flags
- Recipes: CI gates, agent guardrails, dedupe, routing, compaction
- Guidelines: writing good claims and labels, reading confidence, cost
- Use from Node.js: the same functions as a library
- Troubleshooting
- Contributing, Security, Changelog