Skip to content
MrJev

jev-paint

Local app that turns Jev's per-pixel probability distributions into paintings.

View on GitHub →

Hands-on review

Asks Jev for the colour of every pixel and renders the distributions as a painting. A small local experiment where every README claim checked out.

Good for

  • Seeing what a probability distribution looks like when you paint it
  • A zero-dependency local app: one Python file, no build step
  • A short, honest README where every statement matches the code

Watch out for

  • A 32x32 canvas is thousands of questions; the grid size is the bill
  • The key sits in browser local storage in plain text, as the README says
  • The endpoint is hard-coded, so no gateway or proxy

Tested Sep 20, 2026 at ecf9c48d290e · Python 3.9 and Node 18 in Docker, offline; its own tests plus a security check of every documented claim

How we reviewed this: we ran it in Docker on Python 3.9 and Node 18 with no network, ran all three documented test commands, and checked each of the README’s claims against the running server.

What it does

jev-paint, by Arvind Achimala, is a local studio that turns Jev into a painter. You describe an image; for every pixel it asks a typed question, and the renderer turns the distributions — not just the winners — into brush colour, underpainting and relief.

Four modes: a 16-colour Choice per pixel, a yes/no silhouette, three Nouls for RGB channels, or a hue Choice plus two Scores for saturation and lightness. Requests scale with the canvas: an 8×8 palette painting is one request of 64 questions; 32×32 in HSL mode is eight requests and around 3,000 questions.

We measured that ourselves by running its request builder across every mode and grid size. The README’s “larger grids make more requests” is accurate, and the numbers are steep enough that the grid selector is effectively the spend control.

Everything checked out

This is the rare review where the interesting finding is that there isn’t one. We verified each claim:

  • Server binds to loopback; a forged Host header gets 403, a cross-origin request gets 403, a request without a key gets 401, bad JSON gets 400.
  • Logging is disabled outright — the handler’s log method is overridden to do nothing, with a comment saying never to log headers, prompts or credentials. Upstream errors return a status code without relaying the body.
  • Nothing is written to disk. Paintings live in memory and vanish on reload.
  • The bundled fixtures contain public art prompts and probabilities, no credentials.
  • Its tests pass on the versions the README names, including Node 18.

The state sent is exactly the description, the canvas size, an origin convention and a one-line task. No account data, no device information.

Three things worth knowing rather than fixing: the endpoint is hard-coded, so you can’t point it at a gateway; the client’s overall timeout is longer than the server’s per-request one, so a cancelled request still costs; and the key lives in browser local storage in plain text, which the README states plainly.

Verdict

A local creative experiment, as the author says — and the best-behaved small project in this round. If you want to understand what a calibrated probability looks like, painting one is a surprisingly good way in.

For other demos, see TypeSafe Mario and JevPilot.

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.