Skip to content
buluorayPublic

About

Pure Jev that can "type" and drive towards task completion.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

5 stars

Watchers

0 watching

Forks

Latest commit

 

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

JevOnly

Pure Jev that can "type" and drive towards task completion. No LLM anywhere: code builds every option from the page and the goal, Jev only picks — and that is enough to fill forms, type, and finish the task.

Google Flights: one-way Boston to Paris CDG, premium economy, Air France only

Wikipedia: the tallest building in Seattle and in Portland, heights in meters

git clone https://github.com/buluoray/JevOnly.git && cd JevOnly && ./run.sh

Needs Python 3.12+, Node.js 22+ and a TypeSafe API key (tsk_…). run.sh creates a venv, installs Chromium, and opens the live viewer at http://127.0.0.1:7791: paste the key, a start URL and a goal, press Run, and watch every observation, vote, action, verification, copy and undo as it happens.

Without the viewer:

export TYPESAFE_API_KEY=tsk_…
jevonly run --start https://en.wikipedia.org \
  --goal "On Wikipedia, find the tallest building in Seattle and the tallest building in Portland, Oregon. Note the height in meters of each." \
  --variant noaccept_kb --out events.jsonl

That goal ends in about 20 steps, 80 Jev calls and 30 seconds with the answer 286; 166.

Demo

The recordings above, in full quality (click to play):

jevonly-google-flights.mp4
jevonly-wikipedia.mp4

How it works

No planner model, no helper LLM, no free text. Every step is a closed question to Jev over options the code enumerated from the page, the goal and a register of copied values:

  1. Observe the page (accessibility snapshot of enabled controls and visible text).
  2. Vote: one request answers done?, off path? and which action next?
  3. Bind values: a field can only receive a fact, a span of the goal (a name, a date, or a stretch of the goal's own words Jev narrows down to), or a value copied from the page — never invented text.
  4. Act and verify: Chromium performs the action; Jev compares before and after. Failures are undone.
  5. Stop when Jev says so, when every value the goal asked for is in hand, or when a code-owned check passes.

Irreversible actions (a risk vote ≥ 0.5) go through a gate: refuse (CLI default), ask (viewer default), or allow. Details: How it works · Architecture · Events · FAQ.

The rules in jevonly.core are environment-agnostic; the browser (jevonly.envs.browser) is the first environment. See Writing an environment.

QA regression suites

The same loop, pointed at a site you own, is a cheap regression tester: a suite of closed tasks, each run several times, one pass/fail row per case, every run's event log kept for replay.

jevonly qa suite.jsonl --repeat 3 --out qa-out/

One case per line:

{"id": "cart-badge", "start": "https://staging.shop.example/", "facts": {"sku": "A-1"},
 "goal": "Add the product with the given sku to the cart and stop when the cart badge shows 1",
 "expect": {"text": "Cart (1)", "answer": ["1"]}}

expect.text / expect.url_contains / expect.selected is a code-owned check on the page — the run passes only when the page really shows it, whatever Jev says. expect.selected names a control (by accessible name) whose ARIA state must read selected, pressed or checked, for end states that are a choice rather than text. expect.answer lists substrings the reported answer must contain. The command prints a table (pass count, median steps, seconds, Jev calls, tokens, estimated cost, why a run failed), writes qa-report.json + qa-report.md, and exits non-zero when any run failed. A case costs about a cent per run (measured: $0.014 for a 20-step task).

Safety and privacy

  • The viewer binds to 127.0.0.1 only; the key stays in the tab's sessionStorage and the local process.
  • The goal, facts and page observations are sent to TypeSafe. Point it at pages you are willing to send there.
  • Nothing irreversible runs by default (see the gate above). Screenshots and replays never leave the machine.

Limits

  • English-centric goal splitting; sites that block automation are treated as walls, not bypassed.
  • One run at a time per viewer; without a code-owned check, stopping is Jev's judgment.

Development

make install && make test && make lint

Apache-2.0. Docs start at docs/README.md.

About

Pure Jev that can "type" and drive towards task completion.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages