
Webnav
io.github.lucyfuur94Published by GitHub account lucyfuur94v0.2.0Updated Nov 3, 2026
A zero-LLM MCP server that replays recorded site maps instead of re-exploring browser routes.
Overview
A zero-LLM browser navigation server that replays recorded site maps so an assistant can walk known multi-step web routes deterministically.
- What you can do
- Walk a recorded route from a start state to a goal, pausing at genuine forks and resuming after the assistant picks an element
- Drive a live browser step by step: navigate, snapshot, click, type, read a page, run targeted JS, inspect network calls
- Search the open web and extract evidence from results
- Record, analyse and edit a site's map, export or import map packs, and inspect maps as outlines or diagrams
- Store login and form credentials locally and open a local operator dashboard
- When to use it
- Useful when an assistant repeatedly drives the same website — internal tools, back-office workflows, automation testing — and you want navigation remembered rather than re-reasoned each run. Less valuable for shallow one- or two-hop routes, where ad-hoc browser driving performs about the same.
- Requirements
- Runs as a local process over stdio, started with the webnav command and the mcp argument. Needs Node.js 18, 20 or 22 and the Playwright CLI package installed globally alongside the webnav npm package. A browser is driven locally; maps and credentials are stored under the user's home directory. No API keys or environment variables are declared.
Installation
In SourceWeft
- Open Webnav in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
webnav
[CI] [License: Apache 2.0] [TypeScript] [PRs welcome] [zero-LLM]
Stop your web-browsing AI agent from re-exploring the same sites every run. Your agent maps
a website once — then travels it forever with webnav walk: deterministic, zero-LLM,
page-to-page autopilot that pauses only at genuine forks (what to buy, an irreversible button)
and hands the wheel back. It's a reusable site map, not page compression — most token-saving
tools shrink what the agent reads; webnav remembers where things are so it stops re-finding
the route. webnav is the map and the mechanics; the agent keeps all the judgment.
See it
A real run against saucedemo's full checkout flow (map + credentials already recorded):
4 agent-visible CLI calls, login → inventory → cart → checkout form (auto-filled from locally-stored creds — never in the map) → overview. 12 browser actions underneath, zero agent tokens spent on navigation.
In our navigation benchmark (both arms on Haiku, the same
browser underneath), on a deep multi-step route walk used ~3× fewer agent steps than an agent
ad-hoc-driving the raw browser — median 6 calls vs 18 — and reached the goal more reliably (3/3 vs
2/3). Honest caveat, also in that file: the win shows up on deep, reliably-walked routes; on
shallow 1–2-hop routes, or when the agent falls back to manual driving, the two tie. webnav helps
most exactly where ad-hoc driving hurts most — the long, repeated journeys.
Drive a tab from a side panel (Chrome extension)
There's also a Chrome extension in webnav-extension/ — a docked side
panel where you type a goal and watch the agent drive your active tab (read / click / type /
scroll, via chrome.debugger/CDP), on your own Claude Code subscription. It recalls first
(list_routes → check_route) so a site you've mapped is replayed, not re-explored — and every
run is recorded back into the map, so the next time is the cheap deterministic walk.
- Ask (approve a plan first) or Act (run on its own); irreversible steps (pay / place order / delete) always pause for you.
- Watch every step — narration + the tool trail render live; a cursor glides to each action.
- Take over any time, drive by hand, hand back.
- Teach mode — flip to Teach and demonstrate a task by hand once; it becomes a named,
deterministic route any agent can
walk(typed values never leave the browser).
Try it (needs the local server for the zero-LLM navigation + recording):
Then chrome://extensions → Developer mode → Load unpacked → pick webnav-extension/,
open the panel (toolbar icon or ⌘/Ctrl-E), paste the token, and type a goal. Runs show up on
the dashboard tagged Extension. Full walkthrough: webnav-extension/README.md.
Why
Web agents re-discover the same websites every single day, paying the same token bill every time: snapshot → reason → click → snapshot. For sites you (or your agents) use repeatedly — internal tools, automation testing, back-office workflows — that navigation should be remembered, not re-reasoned. webnav stores the durable intent of each step, replays it deterministically, self-heals when the site drifts, and never auto-fires an irreversible action: commit points always pause for the agent (or you) to decide.
Quickstart (≈2 minutes to a working walk)
The seeded Saucedemo map is a working example. To map your own site, hand an agent the prompt in
docs/LEARNING-A-SITE.md, record a session yourself, or use the Chrome
extension below. For development, map packs, and contributing from source:
Using it from an MCP client (Claude Desktop/Code, etc.) — webnav serves every verb as an MCP
tool over stdio, so your agent gets walk/use/search/… natively, no shelling out. One line:
How the map grows (start here if you're new)
webnav is a map — and a fresh install is not blank, but it is small. Here's honestly what you get and how it grows, so there are no surprises:
-
What ships, out of the box. The first time you run any verb, webnav seeds a shared map at
~/.webnav/webnav.db(per-user, shared across every terminal/folder on the machine — not a per-directory file). It comes pre-seeded with one worked example: saucedemo.com — a full login→browse→cart→checkoutwalkmap. This works immediately:Nothing else is seeded — webnav is a blank-slate map tool, and saucedemo is the single example that proves it works. You record your own sites (see below); that's the product. This fits any flow you repeat against the same site: automation testing, internal tools, back-office workflows, recurring agent tasks. (An earlier GitHub-recall
- internet-graph engine — the v1 proof-of-engine — was removed from the tree 2026-06-13; it lives in git history if that surface ever returns.)
-
The map persists and self-heals. It's saved to
~/.webnav/webnav.dband reused on every run — you do not rebuild it each time. When a remembered step drifts (a renamed or moved element), awalkescalates once for the agent to pick the element, then writes the fix back so the next run resolves it deterministically (principle #3). Routes you use stay fresh. Credentials for login-gated sites live outside the map, locally, at~/.webnav/credentials.json(chmod 600) — never in the DB, never shared. -
Mapping a NEW site — hand your AGENT the learn prompt. webnav is built for agents, so you don't map by hand: you give an agent (even a cheap one — we use Haiku) the reusable prompt in
docs/LEARNING-A-SITE.mdand let it run autonomously. It drives the site once through webnav'suseprimitives while recording, thendev graph-analyse --draftfolds that into a SELF-VERIFIED map (absolute URLs, unique element fingerprints, the in-page affordance repertoire, the declared domain shadow) which it persists withdev graph-edit. No hand-authoring of fingerprints or URLs. (That prompt learned the seeded OrangeHRM map — login + 11 modules, exercised — in a single one-shot run.) Re-learn cleanly withdev node-clear. -
Or skip learning — import a map pack someone already made. A map travels as a pack, so only the first person learns a site.
webnav dev import-map <pack.json>loads a site's skeleton; set your own login withdev creds set(packs are skeleton-only, never carry credentials). Two packs ship inmappacks/(saucedemo, OrangeHRM);dev export-map <site>makes your own to share. -
Or record a site by browsing it yourself. No agent needed: run
webnav dev record-live --session S --url <site>— it opens a headed browser at that URL, and you click through the flow naturally. Every action you take is captured (real playwright a11y snapshots, never typed values — only which field changed) into the same session store the agent-record path uses. Stop with Ctrl-C orwebnav dev record-stop --session S, then it's the samedev graph-analyse <session> --draft→graph-edit→walkpipeline. -
Or drive + record from the Chrome extension — the side panel above: give the agent a goal, it drives your active tab (recalling known routes first), and the run is captured back into the map. (An earlier extension capture-only path that approximated the a11y tree from the raw DOM is retired — it broke on SPAs; the current extension captures via real CDP accessibility instead.
dev ingeststill exists as that legacy receiver.) -
Inspect what you have anytime:
[webnav dashboard — Sessions tab with Extension/Agent/Manual source tags and a source filter] [webnav dashboard — Sessions tab with Extension/Agent/Manual source tags and a source filter]webnav dev dashboard(a localhost operator UI). Its Sessions tab lists every recorded run — tagged by source (Extension / Agent / Manual), with a filter, step counts, and a Verified badge — plus record-by-clicking + replay:Or the text views
dev outline <site>/dev mermaid <site>.
TL;DR: out of the box you can walk saucedemo; everything else you map yourself. Same
machine + a mapped site → instant, cached, self-healing. A brand-new site → you (or your
agent) record it once first.
Verbs
webnav <verb> --help for details. Output is JSON on stdout; exit 0 ok / 2 error / 3 empty.
MCP server
webnav mcp serves every verb as an MCP tool over stdio — point an MCP client at it and
agents get the verbs natively (no shelling out). Tools are generated from the same command
registry as --help, and every call runs the real CLI, so the two surfaces can't drift:
Consumer verbs can also be invoked canonically as webnav use <verb> ... and map-authoring verbs as webnav dev <verb> ...; bare consumer verbs (e.g. webnav read ...) still work too.
Inspect a site's map
The map is for the calling AGENT (walk), not a human dashboard. To inspect what's captured, use the text views — no UI:
Architecture (one CLI, three components, ZERO LLM)
- Explorer — reads a site's declared structure (observe-first), folds a recording into a self-verified map draft (states, typed affordances, the declared domain shadow), recognizes states.
- MapStore — SQLite persistence: states (+ affordances + declared shadow), projected edges, the site-node index, and record sessions.
- Router — walks a route, replays it (cached selector → deterministic fingerprint re-resolve),
self-heals, returns evidence OR a
needs-navigation/needs-classification"your move" response for the agent. Never judges, never calls an LLM.
Source map (src/)
Tests mirror this under tests/. The live e2e walk tests are gated behind WEBNAV_LIVE=1.
Principles (full list in CLAUDE.md)
- Observe first, traverse rarely. 2. Never traverse a declared commit point. 3. Store durable semantic routes; cache selectors. 4. Usage-learned weights are a hosted-service concern. 5. The map surfaces evidence; the agent judges. 5a. ZERO LLM in webnav — all reasoning offloaded to the calling agent via a call-and-response protocol. 6. The map is a use-case-independent navigation skeleton; goals declare signal interests. Never evade bot-walls — detect + escalate.
Status
All current work is merged to main, tests green. See docs/STATUS.md for the live
checklist, pending work, and known limitations; CLAUDE.md holds the settled design,
mental model, and principles. Design docs: docs/superpowers/specs/.
Contributing
PRs welcome — see CONTRIBUTING.md (the settled principles, dev setup, and how
to contribute a site map or map pack — the highest-leverage contribution). Map packs are
skeleton-only and never include credentials; the shipped examples are in mappacks/.
Report security issues privately per SECURITY.md. Be excellent to each other:
CODE_OF_CONDUCT.md.
License
Apache License 2.0. Free to use, modify, and redistribute (including commercially)
with attribution: retain the copyright notice and the NOTICE file. Includes an
explicit patent grant. Copyright 2026 Dikshant Yadav.
Source: README.md at commit 0f1c6f8
Tools
0Version history
1- v0.2.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts