NewDesktop v0.1.10 is out, spec.jev 0.1.10 inside
spec.jev

μ · Only what's needed.

Only the context the task needs

spec.jev is a coding agent. A small, fast judge called Jev makes dozens of small decisions for the main model in every turn: what stays in the context, whether a command is safe, whether the work is really done. The main model keeps its attention on the work.

$ npm i -g spec.jev

Needs Node.js 22.19 or newer. Then run spec.jev in a project folder; the first time, spec.jev setup connects a model.

macOS · Windows · Linux · open source (MIT + Apache-2.0) · built on pi

Watch a real turn

MU · A REAL TURN

Judge first, then act

Ask for a plan, and most agents send every tool and skill description along with it. Models write better code every month, and their reports get harder to read. spec.jev splits the work: Jev judges, the main model works and a model picked for plain speaking tells you where things stand.

~/slugify — spec.jev
  4     .toLowerCase()                                                              
  5     .replace(/[^a-z0-9]+/g, "-")                                                
 -6     .replace(/^-/, "");                                                         
 +6     .replace(/^-+|-+$/g, "");                                                   
  7 }                                                                               
                                                                                    

                                                                                    
 $ cd /Users/Shared/mu/slugify && npm test 2>&1                                     
                                                                                    
 ... (10 earlier lines, ctrl+o to expand)                                           
 ℹ fail 0                                                                           
 ℹ cancelled 0                                                                      
 ℹ skipped 0                                                                        
 ℹ todo 0                                                                           
 ℹ duration_ms 84.5005                                                              
                                                                                    
 Took 0.3s                                                                          
                                                                                    

 All 4 tests pass now. The bug was in src/slugify.js — the final .replace() only
 stripped a leading dash (/^-/) but not a trailing one. Changed it to /^-+|-+$/g to
 strip dashes from both ends.

────────────────────────────────────────────────────────────────────────────────────

────────────────────────────────────────────────────────────────────────────────────
~/slugify (master)
↑6.2k ↓643 R19k CH94.0% $0.034 (sub) 2.5%/200k (auto)     claude-sonnet-4-6 • medium
jev-1.13-free active: multi_step_task -> heavy 752ms Permissions: Full access
A real recording: spec.jev 0.1.8, the free Jev as judge, Claude Sonnet 4.6 as the model.
The hive tab in the desktop app: four bees research in parallel; the arrows are findings Jev judged worth delivering
The hive tab in the desktop app: each arrow is a finding Jev judged worth delivering.
The plain-language board: what's being done, how far it got and the running account below
The plain-language board: what it's doing, how far it got and the running account.

When you send a message

Jev reads it first

Is this a new task, a follow-up or a correction? Should a message that arrives mid-run interrupt now? Does it need skills and tools, or will a one-line answer do?

◆ jev-1.13-free multi-step task · full effort · 752 ms

This is a real turn. "Run the tests and fix the failing ones" comes in, and in under a second Jev answers: a multi-step task, full effort. Skills and MCP servers the task doesn't need stay out of the context until it does.

When a tool answers

Output goes through Jev first

A test run or a search easily returns hundreds of lines. Jev judges chunk by chunk what matters now; only that enters the context, and the rest is archived behind a pointer, ready when it's needed.

In web pages and MCP results, instructions aimed at the model are withheld before it reads them.

Before acting

Block what's risky, ask only when it matters

Before a command runs, rules flag anything risky, and Jev checks that you asked for it and that it doesn't cross a constraint you stated. There are three permission modes, Full access, Jev approves and Ask first, and you can switch at any time. In Jev approves mode, Jev lets through what the task clearly needs and asks you about the rest.

When the turn ends

Done means verified

When the model says it's done, spec.jev checks whether anything verified that, whether the turn drifted and whether to go back to a checkpoint.

/goal <condition> keeps the agent working until the condition holds. The main model checks whether it does, with Jev as the fallback; when the same error comes back again and again, Jev judges whether the approach is a dead end.

The hive

Several bees at work, Jev in the middle

When several agents work on one hard problem, splitting up the work is easy; communication is hard. Say nothing, and each walks into the same dead end. Say everything, and every context fills with the others' chatter.

In spec.jev's hive, Jev judges every finding: is it worth sharing, and does it matter to this bee? Only then does it reach another bee as context. When a later finding overturns an earlier one, the correction goes to every bee that heard it.

The plain-language board

Working and reporting are different jobs

Models get stronger, and their reports read more and more like notes for a machine. In spec.jev the working model keeps working its own way. Every few tool calls Jev checks what happened, picks what's really news and hands it to a model chosen for speaking plainly, which tells you where things stand.

When a run ends, you see not just "done" but what was actually done.

WHAT WE LEFT OUT

What spec.jev doesn't do

A model's attention is limited, and so is its context. These are the things spec.jev chose not to do, or chose to do differently.

01

Fewer interruptions

In Jev approves mode, Jev lets through what the task clearly needs and asks you about the rest.

02

No toolbox in every prompt

Each message is judged: small talk, a follow-up or work to do. Skills and MCP servers that aren't needed stay out of the context.

03

Fewer summaries

When the context grows, stale tool results are dropped instead of summarized, and summary-free compaction is an option. Before the cache expires, spec.jev judges whether a refresh is worth it.

04

No locked-in judge

40 decision points, each with its own switch and its own judge: the free Jev, the local Laya or any LLM.

05

No key needed to start

Without a judge key, the free Jev on OpenCode Zen answers, and spec.jev says so once a day.

06

No new foundation

The command line is built on pi, with its models, extensions, skills and session tree; the desktop app is built on AionUi.

What each of the 40 decision points asks and changes

ALSO

One set of accounts, settings and lessons for the command line and the app

Import conversationsBring in your Codex and Claude Code conversations and carry on in spec.jev.
Subscription sign-inChatGPT, Claude, Grok and Google, signed in inside the app, no keys to copy around.
LessonsYour corrections and the traps the agent found a way around are kept; a lesson that is recalled and never followed retires itself.
Built-in browserJev drives it step by step: look at the page, judge once, act; it stops to ask before submitting or paying.
A ledger of verdictsEvery verdict and how long it took: /status, spec.jev ledger and the app's Judge tab.
13 interface languagesThe desktop app speaks English, 简体中文, 繁體中文, 日本語, 한국어 and 8 more.

GET INVOLVED

Help make spec.jev better

spec.jev works without a key. To use your own TypeSafe key or another judge, see Judges.

If spec.jev is useful to you, star it on GitHub

A star helps more people find it. The code, the discussions and every release live in the repository.

Star on GitHub1