Skip to content

Jev Tools & CLIs

Editors and desktop surfaces: Neovim, Obsidian, Chrome, and macOS

Neovim, Obsidian, Chrome, and macOS: the small surfaces where a fast decision model fits, from completion to link suggestions.
Published
Category
Jev Tools & CLIs
Resources cited
10
Reading time
6 min
Tags#tools#editors#desktop#integrations

In a web request, a decision model has seconds and retries. In an editor it has a keystroke, a popup, and a user who will notice. Desktop integrations look like small tools: rank these completions, route this prompt, badge this post, suggest this folder. The judgment is narrow and the failure path is usually to do nothing.

Neovim: completion as ranking

jev-complete.nvim uses Jev as a ranking oracle rather than a generator. Buffer words appear instantly as fuzzy matches; then Jev re-ranks up to 30 candidates against the surrounding code and rebuilds the menu after about a second. It only ranks words already in the buffer, so it cannot invent an identifier. Without a key it stays fuzzy-only with one warning.

It reorders only above a 0.7 confidence threshold, uses a 3-second timeout, and supports noul, choice, or score formats, with noul the cheapest. Three guards protect the update: the popup must be visible, the cursor must not have moved, and the typed prefix must be unchanged. debug_guards names the guard that rejected an update.

It needs Neovim 0.12+, curl, and a key. Jev latency is 0.5–1.5 seconds, and auto-trigger increases calls; the trade is a better order for a menu that already appeared.

Neovim: routing and review

jev-router.nvim classifies a prompt with one Choice question named intent and dispatches to open a file, edit code, run a command, or answer a question. Edits apply as changed hunks behind a vimdiff preview, and commands appear in vim.ui.input before running.

Below 0.6 confidence the on_uncertain callback fires; for read_file the plugin falls back to a vim.ui.select picker rather than guessing, and the same fallback covers an unavailable API. The timeout defaults to 30,000 ms, and injected context is capped at 200 files and 20,000 characters.

It costs two calls: Jev routes, and a separate chat model writes or answers. Defaults are typesafe/jev-1.13 for routing and openai/gpt-4o-mini for chat. "Jev in the editor" usually means Jev decides which work to do, not that it does the work.

jev-lens.nvim is a viewer, not a judge. It reads the verdict file the separate jev-lens Claude Code plugin writes under ~/.claude/jev-lens/repos/<key>/verdict.json, keyed by a hash of the repo root. It makes no API calls, needs no key, and sends nothing out. The popup says whether to open a diff, which files matter, and why.

The strip action is the one thing that edits your buffer: it removes flagged debris after a confirm showing the count, refuses on unsaved changes, and re-checks every line first. Those checks catch a drifted file, not a wrong judgment. With jev-gates 0.4 or later, behavior-changing edits with no run, test, or check open the popup on their own. It needs Neovim 0.10+.

Obsidian: decisions over a vault

Jev Graph Search shortlists notes locally, then sends selected titles, bounded aliases, and excerpts to Jev for reranking. It returns the exact passage, not a summary. On one 8,851-node tax-code graph, top-five source recall rose from 63.9% to 81.8%; top-one rose from 33.2% to 73.2%. That is a single graph, and the README reports no other benchmark.

Search, place, audit, and traverse are the commands; place proposes changes without writing to the graph. Setup stores the key in a private per-user file outside the graph, and --offline uses local lexical ranking so the example runs without a key. Obsidian vaults are read recursively; Logseq Markdown works, but the Logseq database and Org-mode do not.

Jevault is a folder and tag suggester. It ranks existing folders and suggests tags with match probabilities. It never moves notes: pick a suggestion by click or 1–9 and confirm; Esc leaves the note in place. It requires Obsidian Desktop 1.11.4+ and a key stored as an Obsidian secret; there is no offline mode, and each request consumes credits.

Graph Search is retrieval with evidence; Jevault is a filing assistant that refuses to act without confirmation.

Chrome: feed filters

jev-lens badges X and LinkedIn posts READ, MAYBE, or SKIP as they scroll into view, judged against a plain-English interest profile. READ posts get a green border, SKIP posts fade out, and ads are skipped without a call. The README reports about 300 ms per judgment and roughly 3 cents per 1,000 posts at $0.042 per million input tokens with output free.

It is not on the Chrome Web Store: clone the repo, enable Developer mode, and load extension/ unpacked. The popup is the configuration screen: who you are, posts to read, posts to skip, thresholds, and the key. Until a key is saved, posts show a "no API key" badge instead of a verdict.

X Feed Pilot is a macOS app plus Chrome extension that browses, reads, and interacts with X's For You feed. Posts without images go to Jev; posts with their own images go to OpenAI's gpt-6-luna Decisions API. Sessions run up to 10 minutes or 80 posts, with 8 likes and 4 bookmarks. Decisions use a 15-second timeout, no retry, and no model switching; three consecutive failures stop the session. Reading history stays local; automating interactions may violate X's rules.

macOS and iOS: clipboard, chat, camera

jev-paste is a menu-bar app that decomposes copied text into semantic fields and offers an inline Tab hint when you focus a matching input. It keeps clipboard history with a 6-hour half-life and 24-hour default retention, and stays silent in search bars, URL bars, passwords, and generic inputs. Label matching fills a field whose label matches a Key: value line, in Chinese or English. Native paste is untouched. The catalog excerpt does not show credential setup; check the repository first.

jev-chat-jarvis reads visible WeChat messages through OCR or the system text interface, classifies intent and risk from 0 to 9, and drafts reply candidates without injecting anything into WeChat. It reports eight intents at 86.4% zero-shot on a 22-message Chinese regression set; that is a small set, not a benchmark. On an M1 Pro it estimates about 1.5 seconds for intent and 1.5–2 seconds for candidates. It can use TypeSafe Jev or a local decider-2b of about 7 GB, and is read-only. Prebuilt releases are not notarized.

PocketJev is the on-device contrast: an iOS prototype that runs Qwen3-VL-2B-4bit through MLX, reads the next-token logits for A/B/C, and scores 2–26 supplied options without generating text. It is 1.78 GB, downloaded on first use; inference stays on the phone. The README says the displayed percentages are relative scores among the supplied choices, not calibrated probabilities of correctness.

What the surfaces have in common

SurfaceWhere judgment runsBudgetFailure mode
Neovim completionHosted Jev~1s reorderKeep fuzzy order
Neovim routerOpenRouter30s timeoutPicker or callback
ObsidianHosted JevInteractiveNo write without confirm
Chrome feedHosted Jev~300msSkip ads, show no verdict
macOS / iOSHosted or local1.5–2sStay silent or manual

Three rules apply. Keep the decision narrow enough to finish inside the interaction budget, and measure the tail with latency percentiles. Decide the fail-open behavior before shipping: a completion menu keeps its fuzzy order, a folder mover refuses, and a feed filter shows nothing rather than guesses. Put the write behind a confirm when the consequence is irreversible.

Local is real but not free. A local decision server removes the hop and keeps state on the machine, at the cost of hardware and calibration. Browser and Computer Use covers the agent side, Jev in Coding Agents covers the editor loop, and Multimodal Decision Models covers the image path behind Box and PocketJev. The desktop must feel instant; the work is making uncertainty deliberate.

From the Jev directory

The resources behind this article.

A macOS floating panel that reads visible WeChat messages through OCR, has a local decider model or TypeSafe Jev classify intent and risk from 0 to 9, then generates and reranks reply candidates without injecting anything into WeChat.
Jev Tools & CLIs#community#python#macos
12GitHub stars
CLI and agent skill that finds useful notes in a local Obsidian vault or Logseq Markdown graph: it shortlists candidates on your machine, then has Jev rank them against your question and returns the exact source passage.
Jev Tools & CLIs#community#catalog-import#madewithjev
A macOS menu-bar app that decomposes copied text — agendas, itineraries, bug reports, contact info — into semantic fields and offers an inline Tab hint when you focus a matching input, leaving native paste untouched. Powered by TypeSafe JEF.
Jev Tools & CLIs#community#catalog-import#logicrw
2GitHub stars
Obsidian desktop plugin that suggests destination folders for the active Markdown note using only folders that already exist in the vault, plus existing tags with match probabilities. It never moves notes automatically: you select a suggestion and confirm.
Jev Tools & CLIs#community#catalog-import#logicrw
2GitHub stars
Neovim plugin that classifies your prompt with a single Jev choice question over the OpenRouter Decisions API, then dispatches to one of four native handlers: open a file, edit code, run a command, or answer a question.
Jev Agents & MCP#community#awesomejev#catalog-import
1GitHub stars
An experimental iOS app that turns an on-device Qwen3-VL model into a multiple-choice decision tool: it reads next-token logits for A/B/C and scores 2-26 supplied options without generating any text.
Jev Cookbooks#community#swift#ios
1GitHub stars
Neovim popup that reads the verdict jev-lens writes after a Claude Code edit and tells you whether to open a diff, which files matter and why, with a strip-debris action, lazydiff on a key, and no API calls of its own.
Jev Integrations & Adapters#community#awesomejev#catalog-import
4GitHub stars
Chrome extension that badges X and LinkedIn posts READ / MAYBE / SKIP as they scroll into view, judged by Jev against an interest profile you write in plain English — no keyword lists, no cloud account.
Jev Tools & CLIs#community#catalog-import#logicrw
1GitHub stars
Neovim plugin that uses Jev as a ranking oracle: buffer words appear instantly as fuzzy matches, then Jev re-ranks up to 30 candidates against surrounding code and rebuilds the menu.
Jev Tools & CLIs#community#github
1GitHub stars
Early-stage macOS app and Chrome extension that steers X's For You feed by browsing, reading, and interacting with posts. Posts without images are judged by Jev; posts with attached images go to Luna. Reading history stays on the local machine.
Jev Agents & MCP#madewithjev#agents#browser
Back to all articles

Related Jev articles

Low-code workflows are a natural fit for typed decisions. How the n8n and Zapier integrations work, and where the abstraction leaks.
Jev Tools & CLIs#tools#low-code#automation
Read article
Browser loops are long series of small decisions, and the expensive model does not need to make any of them. The patterns behind the fastest agents, from element tables to OCR plus accessibility trees.
Jev Tools & CLIs#browser#computer-use#agents
Read article

From the Jev AI model community

Posts from builders shipping with Jev right now.

Follow @typesafeai