EVA — Web Automation
The AI brain of Mino. A FastAPI service running Google ADK with Gemini that drives a remote browser through complex web workflows — up to 150 steps, streamed in real-time via SSE.
tinyfish-io/evaTech Stack
Agent Loop
LLM generates a tool call → tool executes in browser → page settles → fresh context injected → repeat.
POST /create-and-run-session-sse→ LLM Guard → Request browser →Gemini LLM
Generate tool call
Browser Tool
Execute via Playwright
Page Settle
Wait for DOM stability
Context Inject
Fresh state → next LLM call
final_responseinitializedaction*complete15 Browser Tools
Four categories of tools the agent can invoke each step.
Navigation
visit_url— Navigate to URLpress_key— Keyboard presswait— Sleep N secondsInteraction
click_element— Click by tf220_idinput_text— Fill input fieldselect_option— Dropdown selectlist_options— List dropdown optionsExtraction
content_extract— Structured data extractionpage_description— AI page Q&Ascreenshot— Screenshot + visionget_context_for_element— HTML contextSpecial
inspect_image— Analyze imageinspect_pdf— Analyze PDFreconfigure_browser— Switch to stealthauthenticate— Vault-based loginKey Concepts
Page Context Injection
Before every LLM call, fresh page state (elements, URLs, DOM diff) is injected via before_model callback. Agent always sees current browser state.
Nemo Routing
EVA can route to Nemo as primary (if codified plan exists) or run Nemo as shadow for data collection. Controlled by /store/lookup.
Agent Memory
Per-task learning — stores successful patterns in S3/Postgres and generates LLM hints for similar future tasks.
LLM Guard
Safety check before execution. Screens goals for harmful content before the agent loop begins.