Component

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/eva

Tech Stack

FrameworkFastAPI (Python 3.13)
AIGoogle ADK + Gemini 2.5 Flash
BrowserPlaywright via remote CDP
Limits150 steps / 20 min timeout

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 →
repeat— up to 150 steps / 20 min
🧠

Gemini LLM

Generate tool call

🔧

Browser Tool

Execute via Playwright

Page Settle

Wait for DOM stability

📋

Context Inject

Fresh state → next LLM call

↩ loop back to Gemini LLM untilfinal_response
→ SSE events:initializedaction*complete

15 Browser Tools

Four categories of tools the agent can invoke each step.

Navigation

visit_urlNavigate to URL
press_keyKeyboard press
waitSleep N seconds

Interaction

click_elementClick by tf220_id
input_textFill input field
select_optionDropdown select
list_optionsList dropdown options

Extraction

content_extractStructured data extraction
page_descriptionAI page Q&A
screenshotScreenshot + vision
get_context_for_elementHTML context

Special

inspect_imageAnalyze image
inspect_pdfAnalyze PDF
reconfigure_browserSwitch to stealth
authenticateVault-based login

Key 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.

Code Pointers

eva/agents/eva_agent/web_agent.pyWebAgent class (ADK Agent subclass)
eva/agents/eva_agent/toolsAll 15 browser tools
eva/agents/eva_agent/promptsSystem prompt templates
eva/browser_driverBrowserDriverManager, WaitForPageSettle, CDP
eva/sse/models.pySSE event types: initialized, action, complete, error
eva/nemo_integrationHTTP client for Nemo service