jev-cli

September 19, 2026 · View on GitHub

CI npm License: MIT Website

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.

CommandAnswersDocs
jev verifyDoes this evidence support, contradict, or ignore each claim?docs/verify.md
jev screenIs this text trying to hijack an AI agent? Is it worth reading?docs/screen.md
jev classifyWhich label fits? Which labels apply? Where in this hierarchy?docs/classify.md
jev extractWhich span in the text is the email, amount, date, id I want?docs/extract.md
jev findWhich candidate best answers the query? Does any?docs/find.md
jev rerankHow relevant is each result to the query, on its own?docs/rerank.md
jev matchDo these two records describe the same thing?docs/match.md
jev routeWhich handler takes this request, with which arguments?docs/route.md
jev askAny yes/no, pick-one, or rated question you write yourselfdocs/ask.md
jev compactWhich old tool calls in this agent transcript still matter?docs/compact.md
jev batchAny of the above, over many rows, with a concurrency pooldocs/batch.md
jev authStore the API key in the keychain instead of exporting itdocs/auth.md
jev configShow or edit settings; check which key source is in usedocs/config.md
jev modelsList the models your account can usedocs/config.md#models
jev updateCheck npm for a newer jevctl release and install itdocs/update.md

Conventions

Same rules for every command. Details in docs/output.md and docs/config.md.

Rule
InputAny value is literal text, @path for a file, or - for stdin (one per command). @@x is a literal starting with @.
OutputTable 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 codes0 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.
ThresholdsDefaults 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.
ErrorsOne 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

License

MIT