Skip to content
MrJev

Varina

Multi-seat exploration engine for game mechanics and rule systems that diverges, fact-checks and repeats; Jev decides whether an answer deserves deeper exploration and whether a new idea is already on the board. Business Source License, in Chinese.

View on GitHub →

Hands-on review

A design-exploration engine: several LLM seats propose ideas and Jev prunes the duplicates. Its Jev layer is careful and fails safe; the repo ships no tests.

Good for

  • Game mechanics, rule systems and other design problems where the obvious answer is the problem
  • Seeing several models' ideas side by side, with near-duplicates pruned rather than piled up
  • A reference for gating and deduplicating with Jev conservatively: when unsure, keep

Watch out for

  • Business Source License: free in production only below CNY 5M a year in related revenue
  • No tests in the repository: `npm test` runs zero
  • Cost scales with seats and rounds; the default configuration is several times what we ran

Tested Oct 10, 2026 at 6ab3d232e9e2 · Node 24 in Docker; one live /varina exploration on a reduced configuration with qwen/qwen3.7-flash on OpenRouter for every seat and a logging stand-in in place of Jev; its Jev gateway driven directly through eight failure cases

How we reviewed this: we ran one real exploration end to end, with every LLM seat on the cheapest model that could drive it (qwen/qwen3.7-flash on OpenRouter) and a stand-in in place of Jev that logged each request and answered in TypeSafe’s published shape. To keep the bill small we cut the configuration down: three seats instead of eight, one decomposition round instead of three, two divergence rounds instead of five. We then drove its Jev gateway directly through eight success and failure cases. We made no Jev calls, so nothing here measures how well Jev judges duplicates.

What it is

Varina (the repository was called Aha-Engine until October) is for design problems with a large solution space and an obvious, disappointing answer: a cooperative game whose late rounds are solved, an economy that inflates, an incentive that gets gamed. You describe the problem and point it at a workspace folder of rules or code. A main agent writes a baseline answer, using ReAct to read the workspace. Then a deep exploration runs: several “seats” split the problem into sub-questions, answer them, and diverge from a shared board under different “cognitive operator” task cards. The agent fact-checks what they claim and edits the board between rounds, and finally writes comparable proposals. It runs as a local web app, a CLI and an MCP server, in Chinese, with DeepSeek, GLM and Gemini as default seats and any OpenAI-compatible endpoint configurable.

The exploration only starts when you ask for it, with /varina or the toggle in the UI. Our first run, without the command, produced a good baseline answer and made no Jev calls at all.

What Jev does here

Three narrow jobs, all yes/no or pick-one:

  • The gate. After the baseline answer, should deeper exploration start? It is a choice between START and ASK, with START defined to include uncertainty. Varina only skips exploration when ASK has probability ≥ 0.9 and confidence ≥ 0.8. On a two-way choice those are the same condition under TypeSafe’s published formula, so the second check is a safety net.
  • Idea deduplication. For each new idea, is it already covered by the active ideas on the board? It is a noul with a long, careful definition: shared wording is not duplication, opposite conclusions stay separate, “if uncertain, return False”. Duplicates go at ≥ 0.85.
  • Sub-question deduplication. The same idea for the decomposition, under a written policy with four conditions for “duplicate” and eight for “keep”.

The failure handling leans the same way:

case result
gate: ASK at 0.95, confidence 0.9 skip exploration
gate: ASK at 0.85 explore anyway
gate: an answer outside START/ASK refused with an error
a 529, then an answer answered on the second try
three 529s error after three attempts; the key is redacted from the message
a 401 error at once, no retry
an idea-dedup request that fails that one idea is kept

One leniency matters only off TypeSafe: if a compatible server answers a noul with the string "yes" instead of a probability, the gateway reads it as certainty and drops the idea, skipping the 0.85 threshold. Jev always returns a number.

What one exploration costs, and sends

Our reduced run made 27 LLM calls and 38 Jev requests: one gate, three sub-question checks and 34 idea checks. The Jev requests came to 237 KB in all, the largest 9 KB. Four LLM calls failed, all because we had capped output at 8,192 tokens or because qwen omitted a field. Those were our settings, not the project’s. The default configuration runs eight seats over five divergence rounds after three decomposition rounds, so expect several times both numbers. Budget for the LLM seats; the Jev side is the small part.

What reaches Jev is the problem statement, the full baseline answer — 2,100 characters in our run — and the board’s ideas with their failure conditions. Workspace files go out only as far as the agent quotes them. The rules file it read did; a notes file with a planted marker that it never opened did not, and neither did a planted .env. Directory listings hide dotfiles by default.

Running it

npm start serves the UI on 127.0.0.1:27333, and it is careful about it. It binds loopback only, refuses any request whose Host is not 127.0.0.1 or localhost, which blocks DNS rebinding, and refuses cross-origin writes, so a web page cannot start a paid run in the background. Keys entered in the UI are written to config.local.json, which is git-ignored and stored in plaintext.

Two things a contributor will notice. The README says to run the tests with npm test, but the repository has no tests/ directory, so the command passes with zero tests. We reported it, along with the noul leniency above. And the licence is Business Source License 1.1. Production use is allowed while related revenue stays under CNY 5 million over twelve months, and each version becomes Apache-2.0 three years after its release.

Verdict

A thoughtful use of Jev: it does the cheap, repetitive judgement inside an expensive multi-model loop, with every threshold set so that doubt means “keep exploring” and “keep this idea”. The LLM seats did real work on our solved-game problem. The final proposals were specific, and they named what still needed testing. 581 stars.

Know what you are buying into. Every exploration is dozens of LLM calls, the code ships without a test suite, and the licence is source-available rather than open source. For a lighter way to put Jev inside an agent’s own decisions, see OpenMuse.

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

Review updated Oct 10, 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.