Skip to content
MrJev

Jev demos

Seven side-by-side demos that run with no keys and label themselves simulated. Each visitor's key gets its own budget by fingerprint, and any key is redacted out of upstream errors.

View on GitHub →

Hands-on review

Seven side-by-side demos that run with no keys at all, label themselves simulated, and redact your key out of any upstream error.

Good for

  • Running with no keys at all, and saying SIMULATED rather than pretending
  • A redact step so an upstream error cannot echo your key back
  • Each visitor's key gets its own budget, keyed by a SHA-256 fingerprint

Watch out for

  • The timings in the first tab are illustrative, and it says so
  • No tests; `tsc --noEmit` is the whole check
  • It is a demo site, not something to build on

Tested Sep 22, 2026 at 4d5d69f6a902 · node:24 in Docker, started with no keys and no network to see what it does on its own

How we reviewed this: we started it with no keys and no network to see what it does unaided, then read its key handling. We made no Jev calls.

What it is

Seven tabs showing the same argument from different angles — an animated LLM-versus-Jev duel, an LLM router, ticket triage, 500 emails classified in parallel, a live slop filter, a title scorer, and a cost slider. The line at the top is the one this directory keeps arriving at:

Jev makes the decision. An LLM writes the words. Your code owns the control flow.

It works with nothing

npm install && npm start, no keys, no network:

Jev demos on http://localhost:3000
  Jev (TypeSafe): SIMULATED (set TYPESAFE_API_KEY)
  Claude        : simulated
  Kimi          : simulated
  Budget:         $0.50 per key (set DEMO_BUDGET_USD)
  Probe:          jev=simulated claude=simulated kimi=simulated

The page loads and every provider is labelled SIMULATED in the startup banner and in the probe line. Nothing pretends to be a live result. The first tab’s animation is described in the README as “illustrative timings” rather than measured, which is the right word for a thing drawn to explain a point.

That matters more than it sounds. A demo that quietly falls back to canned data while looking live is the most common failure in this category, and this one tells you its state twice before you open the page.

The key handling is the part worth copying

It is a bring-your-own-key demo, deployed publicly, which is exactly the setup where keys leak. Three deliberate defences, all in src/keys.ts:

/** Stable, non-reversible id for a key, used to give each visitor's key its own budget. */
const fingerprint = (key) => createHash("sha256").update(key).digest("hex").slice(0, 16);

/** Replace any of the current request's keys in a string, so an upstream error can never echo one back. */
export function redact(message) { … }
  • Budgets are per key, by fingerprint. Each visitor’s key gets its own $0.50 bucket keyed by a SHA-256 prefix, so one visitor cannot spend another’s allowance and the server never needs to store the key to do the accounting.
  • Errors are redacted. Any key from the current request is replaced with [your key] before a message is shown. We have spent the month finding tools that echo a provider’s error body straight through; this one anticipated it.
  • Hosted mode ignores server keys entirely: HOSTED mode: server keys are ignored; visitors must bring their own. The deployed demo cannot spend the author’s money.

We found no path that writes a key to disk or logs one; the only startup output is whether a key is set.

Engineering

MIT, Node 22.6+, no build step. tsc --noEmit is clean and there are no tests, which is fair for a demo site and is the reason not to build anything on it.

Sixteen stars.

Verdict

The best “show me what this is for” page in the directory, and the only demo we have run that is careful about the keys visitors paste into it.

Send it to someone who has heard of Jev and does not see the point. Read src/keys.ts if you are ever going to deploy a demo that asks strangers for an API key — the fingerprint-and-redact pair is twenty lines and gets a hard thing right.

For a keyless demo of an agent loop rather than a dashboard, see JevLoop; for a gateway that holds the key itself, Jeview.

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

Review updated Sep 22, 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.