Skip to content

feat: add a jev-ultrafast feature - #26

Closed
ashwin153 wants to merge 4 commits into
mainfrom
claude/jev-ultrafast-sandbox-gwel3e
Closed

ashwin153 wants to merge 4 commits into
mainfrom
claude/jev-ultrafast-sandbox-gwel3e

Conversation

@ashwin153

@ashwin153 ashwin153 commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Installs Jev Ultrafast, Browser Use's browser agent driven by TypeSafe's Jev model. Each step reads the page into a numbered table of controls. One Jev request picks both the operation and its target. The loop takes no screenshots.

Upstream ships a library and an inspector UI, but no command that takes a goal and returns a result. So the feature adds one, jev-ultrafast --url URL --goal GOAL, for coding agents to call as a tool. It runs the README's Agent(url, goals).run() loop against a fresh headless Chromium from the Playwright cache, attaching Browser Harness to it (with per-run state and telemetry off). When the run stops it prints a JSON object with the status, any error, the final URL, title and visible text, and the actions taken. It exits 0 only for done.

  • SIGTERM exits through cleanup, so the browser is stopped.
  • Chromium keeps its sandbox wherever it can. It falls back to --no-sandbox, with a warning, only as root, without user namespaces, or when JEV_ULTRAFAST_NO_SANDBOX=1 is set.
  • Upstream has no releases or PyPI package, so version is a git ref. It defaults to the pinned commit 1231850.
  • The package goes into a root-owned virtualenv under /usr/local/share/jev-ultrafast, with a private uv-managed Python. The uv used for the build comes from its release archive, checked against a pinned SHA-256.
  • Credentials are read only at run time (TYPESAFE_API_KEY, TEXT_MODEL_*).

Tested locally (root and non-root) and in CI: with an invalid key, a run launches Chromium, reads the probe page, and reports TypeSafe's 401 as JSON. No browser is left running afterwards.

Part of hooking Jev into the sandbox, with orianna-ai/devcontainer#99 (the image) and orianna-ai/orianna#9093. That PR's jev_ultrafast plugin gives agents this CLI. Its run_jev_ultrafast_request uses the library directly and doesn't need this feature.

🤖 Generated with Claude Code

https://claude.ai/code/session_01YavqL3CxMgmpdpwTTe5oeq

Installs Browser Use's Jev Ultrafast browser agent into a private
virtualenv and adds a jev-ultrafast CLI that runs one goal against a
fresh headless Chromium and prints the outcome as JSON.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YavqL3CxMgmpdpwTTe5oeq

Copy link
Copy Markdown
Contributor Author

devcontainer-features is red, but in the buildbuddy feature, which this PR doesn't touch: curl: (22) The requested URL returned error: 403. src/buildbuddy/install.sh pipes install.buildbuddy.io. That script looks up the latest release through the unauthenticated GitHub API (api.github.com/repos/buildbuddy-io/bazel/releases/latest), and shared runners often hit that API's rate limit. main last passed on Sep 7. The job stops at the first failing feature, so jev-ultrafast's scenarios never ran.

No fix for this exists yet. A robust one would be for the buildbuddy feature to stop depending on the API, for example by pinning a release asset URL. That belongs in its own PR. I'm re-running the failed job once.


Generated by Claude Code

Comment thread src/jev-ultrafast/jev-ultrafast.py Resolved
Comment thread src/jev-ultrafast/install.sh Resolved

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 57bcce1. Configure here.

Comment thread src/jev-ultrafast/jev-ultrafast.py Resolved
- Launch Chromium with its sandbox first; fall back to --no-sandbox
  only as root, without user namespaces, or when asked, and say so.
- Stop the browser's process group on every failed launch, not only on
  a timeout.
- Fetch uv's release archive and check it against a pinned SHA-256
  instead of piping astral.sh's installer into sh.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YavqL3CxMgmpdpwTTe5oeq
Adds --jsonl, which writes each decision and then the result to stdout
as JSON lines so a caller such as the sandbox runner can stream a run.
SIGTERM now exits through cleanup, so the browser is stopped too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YavqL3CxMgmpdpwTTe5oeq
The sandbox runner now drives the jev-ultrafast library itself, so no
caller streams the CLI anymore. SIGTERM cleanup stays.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YavqL3CxMgmpdpwTTe5oeq

Copy link
Copy Markdown
Contributor Author

Closing this PR. We dropped the agent-facing jev_ultrafast plugin from orianna-ai/orianna#9093, and that plugin was the only thing that used this CLI. The sandbox now drives the jev_ultrafast library directly through run_jev_ultrafast_request, so the image doesn't need the feature.


Generated by Claude Code

@ashwin153 ashwin153 closed this Oct 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants