Skip to content
MrJev

Jev Chat

Chat-style command bar where Jev picks the tool, arguments, and reply type, and code builds every reply from tool data.

View on GitHub →

Hands-on review

Every reply is template text or tool data; Jev only picks among options code supplies. Two destructive actions skip the confirmation step.

Good for

  • Seeing what an assistant looks like when nothing generates text
  • An inspector that shows the exact state and every question sent
  • A reference implementation for routing tools with typed questions

Watch out for

  • Two Home Assistant actions marked destructive run without confirmation
  • Every message, tool result and full request trace is stored in plain SQLite
  • Localhost only, no authentication: a demo, and it says so

Tested Sep 20, 2026 at e543aba8c21b · Node 24 in Docker, offline; 344 tests, a local start with no key, and a dependency audit

How we reviewed this: we ran it in Docker on Node 24 with no key and no network, ran its test suite, checked the dependency tree for any generative model, and read the tool adapters. We made no Jev calls.

What it does

jev-chat, by w3cj, is a chat assistant where no model writes anything. We checked: there is no OpenAI, Anthropic, Cohere, Mistral, Ollama or local-inference dependency anywhere in the lockfile. The only remote intelligence is Jev.

Replies are template code or verbatim tool output. Arguments can’t be invented either: code builds candidate pools — phrases from your message, dates parsed by a date library, numbers, titles from the previous result — and Jev picks a key like t3, which code maps back. The agents file makes the rule explicit: “No model writes text. Jev only picks among options code supplies. Never add free-text generation.”

One turn is one request carrying dozens of questions — we counted 42 in a single call (39 Choice, 3 Noul) — plus at most two follow-ups for spelling correction and clarification. Notably, it asks every tool’s argument questions before knowing which tool wins, so the count grows with the number of tools even though the number of round trips doesn’t.

Its 344 tests pass offline, it starts with no configuration at all (SQLite, created on first run), and with no key it says so plainly rather than failing oddly.

The part to fix before using it on a real home

Two Home Assistant adapters — setting a light and setting the thermostat — are marked destructive: true but define no confirm function, and the gate is if (adapter.confirm?.(args)). An undefined confirm is falsy, so they execute straight away. The README’s flow diagram shows state-changing actions producing a confirmation card; for these two, the card never appears.

It gets more interesting: the thermostat adapter picks its temperature from the number pool, which explicitly includes numbers carried over from the previous tool result. Ask for the weather, then say “set the thermostat” — the forecast’s high is a candidate.

The other side of the “can’t invent facts” guarantee is worth stating too: it can’t fabricate, but it will faithfully repeat text from a search summary, and that text can become a task’s contents. Not making things up is not the same as not carrying things along.

What it sends and stores

The state is your latest message, the last four turns, and a summary of the most recent tool result — truncated, not redacted, so Todoist task titles and Home Assistant device names leave your machine. Other third parties depend on which tools you enable: a weather API, a recipe API, Wikipedia, and MCP servers for Brave and Todoist.

Everything is stored: messages, cards, and the complete trace of each turn — one trace we looked at was 19 KB, containing the full state and all 42 questions — in plain SQLite with no retention policy. That trace is also the product’s best feature: the inspector shows you exactly what was sent.

We checked for key leakage with sentinel values and found none in the API responses or the database.

Verdict

As a demonstration that typed decisions can replace an LLM for routing and argument filling, this is the most convincing thing we’ve reviewed — and it’s deliberately a demo: localhost, no auth, no deployment story.

If you point it at a real home, add a confirm to those two adapters first, and remember the database is a transcript of everything you and your tools said.

For the general pattern, see JevRouter and jev-gateway.

See how it compares with other tools in Best Jev tools, tested hands-on.

Review updated Sep 20, 2026. Numbers quoted from the project are its author's own; we don't publish our own measurements of Jev.

More in Apps & Browser Extensions

Jev Chat Assistant

★ 8.2k▲ 105

jev-chat/jev-chat-jarvis

Android chat assistant that reads the conversation on screen through the accessibility service, has Jev judge the other person's intent and the risk, and fills in a drafted reply that you send yourself. Chinese and English editions.

Kotlin

OpenMuse

★ 6.1k▲ 479

CopilotKit/openmuse

CopilotKit's self-hosted personal agent with its own browser, terminal and files; Jev decides whether a reply becomes a clarification panel, a comparison of options or plain prose, and overrides the agent only when confident. Alpha.

TypeScriptReviewed

Shapeshift

★ 1.1k▲ 16

anishfn/shapeshift

One text box that turns what you type into the right small interface, an event card or a checklist or a bill split, with Jev choosing which; falls back to rules when no key is set.

TypeScriptReviewed

Get new Jev projects every week

New Jev releases, pricing changes, and the best new projects, once a week. No spam; unsubscribe anytime.

Powered by Buttondown. See our privacy policy.