Nemo — Orchestration
Next-gen codification engine. Plans once with an LLM, serializes the plan to deterministic steps, and replays them without any AI calls on subsequent runs. Faster, cheaper, more reliable.
tinyfish-io/web-agentTech Stack
Packagetf-nemo (Python ≥ 3.12)
OrchestrationLangGraph state machine
PlanningGemini 3 Flash + Claude Sonnet
ElementsAgentQL (get_by_prompt → XPath)
StoreDatabricks Lakebase
The Big Idea: Codification
First run: LLM generates a plan — each step is codified into deterministic, XPath-based actions
Serialization: Plan saved as codified_steps.json — a fully deterministic recipe
Subsequent runs: Replay without any LLM calls — just execute the codified steps directly
Validation: Validated plans cached in Nemo Store (Databricks Lakebase) for reuse
10 Step Types
| Step | Codification Method |
|---|---|
linear-step | LLM planning loop (Gemini + Claude) |
click-step | AgentQL → XPath |
navigate-step | Self-codifying |
enter-text-step | AgentQL → XPath |
extract-data-step | LLM schema inference |
scroll-step | AgentQL → XPath |
select-option-step | AgentQL → XPath |
transform-data-step | LLM code generation |
do-until-step | Pre-codified only |
if-conditional-step | Pre-codified only |
Nemo Service (FastAPI)
POST /stream-run
Primary SSE endpoint — EVA calls this when routing to Nemo as primary orchestrator.
POST /enqueue-run
Fire-and-forget background run for shadow data collection alongside EVA.
POST /store/lookup
Check Nemo Store (Databricks) for an existing codified plan before deciding the orchestration path.
Code Pointers
web-agent-core/src/nemo/agent.pyWebAgent (main entry point)
web-agent-core/src/web_agent_core/graph.pyLangGraph state machine builder
web-agent-core/src/web_agent_core/stepsAll 10 step types + codifiers
web-agent-core/src/web_agent_core/steps/linearLinearStepCodifier (planning loop)
nemo-service/nemo_service/web_server.pyFastAPI endpoints
nemo-service/nemo_service/nemo_store.pyDatabricks Lakebase client