JevLang
TypeScript/Python policy engine where Jev only answers declared questions and code decides routes, gates and actions.
Overview
JevLang (timmikeladze) is a policy engine for decisions that would otherwise live inside a prompt: routing, triage, approvals, escalation and guarding an agent's tools. You declare questions (noul, choice or score) and a policy of rules, confidence gates and actions in TypeScript or Python. The model only answers the questions; the policy picks the branch.
Answers are validated against the declared questions, and confidence gates escalate to a human instead of guessing. Each decision records its readings, confidence and the clause that fired, and recorded runs replay byte-for-byte so policy changes can be diffed against history. Actions support confirmation, cooldowns, budgets, rollbacks and a signed journal. Policies serialise to a fingerprinted JSON artifact that loads identically in both languages. Pure decisions, validation and replay work offline with no account. It is aimed at teams that need auditable LLM-driven routing.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | Is this message spam? | — |
| Choice | Which team should handle this ticket? | billing · technical · sales |
| Score | How frustrated is the customer? | — |
How it works
- Declare questions and a policy with rules, gates and an otherwise branch
- Model (Jev) answers only the questions the policy needs
- Answers are validated; a low-confidence gate escalates to a human
- The matching clause's action is dispatched with guards and journaled
- Recorded decisions can be replayed to test policy changes
Strengths
- Routing logic is typed code, so typos fail at build time
- Explainable, replayable decisions with an audit journal
- Same policy verified in TypeScript and Python
- No runtime dependencies; decide and replay work offline
Caveats
- Model calls still need a provider key
- Policy authoring adds upfront design work
- Maturity of the action and rollback layer is not stated
Getting started
bun add jevlang (Node 22+).At a glance
- Type
- Project
- Status
- beta
- Language
- TypeScript
- Runtime
- Node 22+, Bun, Python
- Has code
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
A policy engine for LLM decisions: declare routes, gates and actions once in TypeScript or Python, and every decision comes validated, explainable, replayable and audited.
logicrw/awesome-jev-projects
Frequently asked questions
Does the model choose the branch?
No. The model answers declared questions and the policy's clauses decide; low confidence escalates.
Can I test without a model?
Yes. decide() reads answers you pass in, so validation and replay run offline.
How does it relate to jevlang (sumanmichael)?
They are separate projects with the same name; this one is a policy engine, the other a Python syntax extension.
Related projects
TypeScript runtime that turns Jev's probabilistic answers into versioned, replayable decisions via ordered YAML policy rules.
ServicebetaTypeScript- jev-usecases★ 22
Collection of production-shaped Python harnesses implementing most of TypeSafe's listed Jev decisions with confidence-gated logic.
ProjectbetaPython DeepSeek Harness plugin registering a jev_decide tool so the agent can ask Noul, Choice or Score questions and gate on probabilities.
PluginbetaTypeScriptDeepSeek Harness Web GUI plugin giving the agent a jev_ask tool, usage tracking and an optional command guard with explicit caveats.
PluginbetaTypeScriptDeepSeek Harness bundle registering a jev_ask tool for typed noul, choice and score questions to Jev.
ProjectprototypeTypeScriptPython dialect that adds a '~' operator and jev/case blocks so a branch can ask Jev a yes/no, scale or choice question.
ProjectprototypePython