Skip to content

n8n Integration

Sam LABBE edited this page Oct 13, 2026 · 1 revision

n8n Integration

n8n-nodes-navette — navette in your n8n workflows, as a community node. Navigate, read, screenshot, click, type and evaluate a real system WebView (WebKit on macOS, WebView2 on Windows, WebKitGTK on Linux) driven by the ~1 MB navette daemon — no Chromium download, no 557 MB browser cache in your CI or container.

Source: integrations/n8n-nodes-navette/ · npm package: n8n-nodes-navette · in-repo version: 0.3.1 · zero dependencies by design.

Two ways to use it

Beginner — build the flow by hand. Every action speaks plain names: Open a page → Take a screenshot, Open a page → Read the page → send to Slack. The Navigate action carries an Options section (window size, wait-for-element, screenshot) so a full capture is ONE node.

The "go to this site and extract this" way — AI Agent. The node is usableAsTool: drop an AI Agent node (any chat model), add the navette actions as its tools, and just tell it what you want:

"Go to https://news.ycombinator.com and give me the top 5 titles with their points."

The agent opens pages, reads the markdown it gets back, clicks if it must, and answers — no workflow wiring beyond the two nodes. Pair with n8n's built-in Information Extractor for strict-JSON answers. Version 0.3.1 adds the dedicated agent operation ("Browse for me (AI)") — the self-driving operation with Navigate Options all-in-one.

Operations

Operation Body Note
Navigate url, withContent, format redirects complete fine
Read format markdown for LLM steps
Screenshot — PNG as binary output (attach to email/Slack directly)
Click selector, waitNavigation pointer+mouse events — Radix menus open
Type selector, value React-safe native setter
Evaluate js escape hatch
Wait selector, ms polls until it exists
Viewport width × height per session
Login site keychain-bound, origin-bound fill — the workflow never sees the password
Export / Import State — the cookie jar out and back in (storageState equivalent)
Sessions / Close — housekeeping
Agent (0.3.1+) mission / startUrl the "Browse for me (AI)" self-driving operation

Sessions are named contexts inside the daemon — one per site; cookies persist between nodes and runs.

Install

# the daemon first (brew / cargo / docker — one binary)
navette serve --port 8765

In n8n: Settings → Community nodes → Install → n8n-nodes-navette. Then create the navette daemon credential (Base URL http://127.0.0.1:8765, Token only if the daemon runs --token).

Local install for development:

cd integrations/n8n-nodes-navette && npm pack     # zero dependencies
docker cp navette-nodes-navette-<ver>.tgz n8n:/tmp/
docker exec -it n8n npm install /tmp/navette-nodes-navette-<ver>.tgz
docker restart n8n

Docker networking: if n8n runs in Docker, the host daemon is reachable at http://host.docker.internal:8765 — which requires the daemon to accept that Host header:

navette serve --port 8765 --allow-host host.docker.internal   # pair with --token beyond a private LAN

The login pattern

  1. navette creds set mysite once (password → OS keychain, bound to the origin) — then the Login node logs in without the workflow ever seeing the password; or log in by hand once and Export State → Import State the cookie jar between runs.
  2. Navigate → Type → Click the real UI; Read/Screenshot to verify.
  3. Same daemon, same sessions, ~1 ms actions — the measured Playwright comparison is in demo/wordpress (see Demos).

Shipped example workflows

  • examples/wordpress-audit-workflow.json — the WordPress audit: 9 of 12 operations in one realistic run.
  • examples/devto-replybot-workflow.json — the dev.to reply bot.

The zero-dependency rule

The node wraps a loopback JSON API — there is no SDK to vendor and no browser to download, which is the whole point. package.json ships an empty dependencies object on purpose; keep it that way. (Compatibility note: package.json declares both n8n.nodes and the legacy n8n-nodes key — n8n-core 2.x reads n8n.nodes.)

Clone this wiki locally