How friedjof/jev-mobile works
jev-mobile is a durable Android sub-agent: clients submit high-level tasks, which are persisted and claimed by a single worker. The worker delegates execution to the mobile agent, whose documented loop observes and normalizes UI state, evaluates task requirements, asks a decision provider to choose from valid actions, journals and executes mutations, then verifies observable results. The graph also preserves durable task operations, information and clarification paths, safety recovery, tracing, and the documented Android backends. Evidence is limited to the README and the supplied source excerpts/index; uncertain internal wiring is omitted.
Main entry points: mobile_agent.py Mobile agent · task_store.py SQLite task store · worker.py Durable worker · mutation_engine.py Mutation transaction
Components 23
Task delegation
- CLI and task API
src/jev_mobile/cli.py - MCP delegation
src/jev_mobile/mcp_server.py - Task semantics
src/jev_mobile/tasks.py
Agent execution
- Mobile agent
src/jev_mobile/agent/mobile_agent.py - UI normalization
src/jev_mobile/state/normalize.py - Semantic UI state
src/jev_mobile/state/models.py - Mutation transaction
src/jev_mobile/actions/mutation_engine.py - Persistence verification
src/jev_mobile/agent/mobile_agent.py - Risk escalation
src/jev_mobile/escalation/handler.py
Requirements and decisions
- Requirements evaluation
src/jev_mobile/requirements/evaluator.py - Requirement generation
src/jev_mobile/requirements/generators.py - Valid action catalog
src/jev_mobile/actions/builder.py - Jev decision provider
src/jev_mobile/providers/jev.py - Information tasks
src/jev_mobile/requirements/information.py
Device integration
- Device adapter
src/jev_mobile/device/adapter.py - Portal ADB backend
src/jev_mobile/device/portal_adb.py - Android accessibility bridge
android/jev-mobile-bridge/app/src/main/java/io/jev/mobile/bridge/JevAccessibilityService.kt
Durability and operations
- SQLite task store
src/jev_mobile/task_store.py - Durable worker
src/jev_mobile/runtime/worker.py - Mutation journal
src/jev_mobile/actions/mutation_journal.py - JSONL traces
src/jev_mobile/tracing/trace.py - Worker readiness
src/jev_mobile/runtime/readiness.py
Other components
- Task requester
Connections 25
- Task requester → CLI and task API: submits task
README.md - Task requester → MCP delegation: delegates task
README.md - CLI and task API → SQLite task store: persists request
README.md - MCP delegation → SQLite task store: delegates tasks
src/jev_mobile/mcp_server.py - Task semantics → SQLite task store: defines task data
src/jev_mobile/task_store.py - Durable worker → SQLite task store: claims task
src/jev_mobile/runtime/worker.py - Durable worker → Mobile agent: runs task
src/jev_mobile/runtime/worker.py - Durable worker → Worker readiness: checks readiness
README.md - Mobile agent → UI normalization: normalizes snapshots
src/jev_mobile/agent/mobile_agent.py - UI normalization → Semantic UI state: produces state
src/jev_mobile/state/normalize.py - Mobile agent → Requirements evaluation: evaluates progress
src/jev_mobile/agent/mobile_agent.py - Requirement generation → Task semantics: interprets goal
src/jev_mobile/requirements/generators.py - Mobile agent → Valid action catalog: builds candidates
src/jev_mobile/agent/mobile_agent.py - Mobile agent → Jev decision provider: requests decision
README.md - Jev decision provider → Semantic UI state: reads semantics
src/jev_mobile/providers/jev.py - Mobile agent → Mutation transaction: executes action
src/jev_mobile/agent/mobile_agent.py - Mutation transaction → Mutation journal: journals intent
src/jev_mobile/actions/mutation_engine.py - Mutation transaction → Device adapter: dispatches mutation
src/jev_mobile/actions/mutation_engine.py - Mobile agent → Persistence verification: verifies result
README.md - Device adapter → Portal ADB backend: selects backend
- Device adapter → Android accessibility bridge: uses USB tunnel
README.md - Mobile agent → Risk escalation: handles risk
README.md - Mobile agent → Information tasks: supports read tasks
README.md - Mobile agent → SQLite task store: records progress
src/jev_mobile/agent/mobile_agent.py - Mobile agent → JSONL traces: writes trace
src/jev_mobile/agent/mobile_agent.py