CLI reference

September 18, 2026 ยท View on GitHub

All commands support --help. jevdroid --version prints the package version.

CommandEffectCalls Jev?
doctorFind ADB and list connected device statesNo
inspectPrint the active accessibility observation locallyNo
benchmark --samples 10Measure sequential accessibility readsNo
demoRun a deterministic fake navigation taskNo
run GOAL --package PACKAGEExecute a bounded agent taskYes
scroll --package PACKAGE --count 5Execute a bounded scrolling taskYes

inspect, benchmark, run, and scroll accept --serial when more than one device is attached. Diagnostic output may contain your serial number or visible UI text; do not post it publicly without reviewing it.

Run and scroll options

OptionDefaultPurpose
--packageRequiredAllowed application package
--backenduiautomatorPersistent UIAutomator2 over ADB, or standard adb
--providervercelvercel or typesafe
--modelProvider defaultJev model ID override
--max-steps20Hard ceiling on decisions, including skipped actions
--budget0.10Local estimated USD ceiling
--input-price0.042Estimated USD per million input tokens
--traceOffPath for a new metadata-only JSONL trace
--jsonOffJSON lines for decisions, actions, and final result

Navigation supports --allow-taps, --allow-back, and --allow-checkable (requires taps). All are off by default. Scroll supports --count (default 5) and --pause (default 0.5 seconds between gestures, excluding inference time). The count must fit inside --max-steps; allow extra decisions for launching or waiting.

Repeat --package for a navigation task spanning multiple apps. A scroll task accepts exactly one package. inspect and benchmark also accept --backend.

jevdroid run "Open the settings application" \
  --package com.android.settings --package org.example.yourapp --backend adb

The hidden interactive prompt is preferred for local experiments. Noninteractive jobs use AI_GATEWAY_API_KEY or TYPESAFE_API_KEY. JevDroid does not load .env automatically, accept key arguments, or write credentials to disk.

Result and exit codes

  • 0: completed gesture count, model_done, or successful diagnostic/demo.
  • 2: incomplete run, model stop, limit, cancellation during a run, or operational error returned by the agent. Inspect the final status.
  • 1: setup, credential, configuration, or local I/O error.
  • 130: interrupt before/after the agent loop.

Argument parsing errors also use exit code 2. JSON mode's final event contains status and counts but no free-form error body. A nonzero exit requires attention; it is never automatically retried.