Skip to main content
Glama

The Problem

Every time your AI agent needs to use the web, it starts from scratch. No cookies, no saved passwords, no history. It has to log in again and again — and half the time the automation gets detected and blocked.

  • Agent fills a login form → site detects Selenium/Playwright → blocked

  • Agent stores a password in a variable → session ends → password gone

  • Agent tries to reuse a browser → cookies wiped → logged out again

  • You paste credentials into the chat → now they're in your conversation history

Your agent has no identity. Every session is a stranger.

Related MCP server: puppeteer-real-browser-mcp-server

The Solution

Navvi gives your agent a persistent browser with its own identity. A Camoufox (anti-detect Firefox) that remembers where it's been, stays logged in, and manages its own credentials — without ever exposing passwords to the AI.

  • Persistent sessions — cookies, logins, and history survive restarts

  • Credential vault — passwords generated and stored inside the container, auto-filled into forms without the AI ever seeing them

  • Doesn't get blocked — anti-detect browser with OS-level input that passes bot detection where Selenium and Playwright fail

  • CAPTCHA handling — auto-clicks through common bot checks, with VNC handoff to a human when it can't

  • Multi-persona — each persona runs in its own isolated container with dedicated cookies, credentials, and history

  • Keeps your context clean — 11 high-level tools by default, 12 more unlock on demand so your agent isn't overwhelmed by options

Quick Start

1. Add to Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "navvi": {
      "command": "uvx",
      "args": ["navvi@latest"],
      "env": {
        "NAVVI_GPG_PASSPHRASE": "pick-any-random-string-here"
      }
    }
  }
}

NAVVI_GPG_PASSPHRASE enables the credential vault (gopass). On first boot, Navvi generates a GPG key automatically. The key persists in a Docker volume across restarts.

Keep your passphrase safe. If you lose it and the Docker volume is deleted, all stored passwords are unrecoverable.

3. Use

Just tell your agent what to do:

"Log into Tutanota with stored credentials"
"Search DuckDuckGo for 'navvi browser' and list the top results"
"Sign up for a new Outlook account"

Navvi's journey tools (navvi_browse, navvi_login) handle navigation, element finding, clicking, typing, and screenshots internally. No manual step-by-step needed.

Atomic tools are hidden by default. Unlock them when you need precise control:

navvi_atomic(enable=true)                          -> unlock low-level tools
navvi_open url=https://example.com                 -> navigate
navvi_find selector="input[type=email]"            -> locate element -> (x, y)
navvi_fill x=512 y=498 value="me@example.com"     -> type into it
navvi_screenshot                                   -> see what happened

4. Optional: Install skills

Skills give your AI agent dedicated browsing capabilities — isolates browser work from your main conversation. Works with Claude Code, Cursor, and 40+ other agents.

npx skills add fellowship-dev/navvi

Or install manually:

curl -fsSL https://raw.githubusercontent.com/fellowship-dev/navvi/main/install-companions.sh | bash

Included skills:

  • navvi-browse — autonomous web browsing with vision-driven navigation

  • navvi-login — login with stored credentials, handles reCAPTCHA and 2FA

  • navvi-signup — create new accounts with auto-generated credentials


If Navvi is useful to you, please ⭐ star the repo — it helps others discover it.


Use Cases

Persistent logins. Log into a service once — your agent stays logged in across sessions. No more re-entering credentials, no more expired sessions.

Secure credential management. Passwords are generated and stored inside the container. autofill types them into forms — the AI never sees the raw password at any point.

Account signup. Your agent creates accounts on services — generates passwords inside the container, fills forms, and persists the credentials for future logins.

Multi-persona workflows. Run multiple browser identities simultaneously — each persona gets its own container with isolated cookies and credentials.

Form automation on protected sites. Fill complex forms with dropdowns, date pickers, and multi-step wizards. OS-level input passes bot detection that blocks Selenium and Playwright.

Visual evidence for PRs. Screenshot your staging app before and after a code change. Record a user flow as a GIF. Attach it to the pull request.

How It Works

Each persona runs in its own Docker container with a dedicated Firefox instance, cookies, and profile. Your agent talks MCP, Navvi translates to browser actions.

Anti-detection uses Camoufox — a patched Firefox with fingerprint masking at the C++ level. Sites that detect and block Selenium, Playwright, and headless Chrome don't detect Navvi.

All input uses xdotool — OS-level mouse and keyboard events that websites cannot distinguish from a real person.

Credentials are stored in gopass inside the container:

  • generate — creates a random password, stores in gopass. The password never leaves the container or appears in AI context.

  • autofill — reads gopass and types directly into the browser. The password never travels through the AI.

  • import — bulk-import existing credentials from a JSON file.

Multi-persona — each persona runs in its own container (navvi-{name}) with an isolated Firefox profile, cookies, and history. Gopass credentials are namespaced per persona (navvi/{persona}/{service}) in a shared vault.

MCP Tools

By default, Navvi shows 11 high-level tools. Atomic tools unlock on demand via navvi_atomic.

Journey tools (default)

Tool

What it does

navvi_browse

Primary tool — give it an instruction + URL, it handles everything

navvi_login

Log into a service using stored credentials

Lifecycle

Tool

What it does

navvi_start

Start container + persona's Firefox instance

navvi_stop

Stop container (profiles preserved)

navvi_status

Show running containers, personas, and health

Observation

Tool

What it does

navvi_screenshot

Capture the screen

navvi_vnc

Get live VNC URL for human handoff

Persona management

Tool

What it does

navvi_persona

Create, update, list, delete browser personas

navvi_account

Track accounts per persona (service, email, credential ref)

Progressive disclosure

Tool

What it does

navvi_atomic

Unlock/hide 12 low-level tools (click, find, fill, etc.)

Tool

What it does

navvi_open

Navigate to a URL

navvi_find

Find element by CSS selector → screen (x, y)

navvi_click

Click at coordinates

navvi_fill

Click + type text

navvi_press

Press a key

navvi_scroll

Scroll the page

navvi_drag

Drag between two points

navvi_mousedown/up/move

Low-level mouse control

navvi_url

Get current page URL

navvi_creds

Manage credentials: list, get, generate, import, autofill

navvi_list

List available Codespaces (remote mode)

Tool

What it does

navvi_record_start

Start recording screenshots

navvi_record_stop

Assemble MP4

navvi_record_gif

Convert to GIF

Resources

Read persona state without tool calls:

URI

What it returns

personas://list

All personas with account counts

persona://{name}/state

Config, accounts, recent actions

persona://{name}/accounts

Account details

audit://{name}/log

Last 20 actions

Prompts

Structured workflows available as prompt templates:

Prompt

What it does

signup_flow

Step-by-step account creation on a service

login_flow

Log in using stored credentials

qa_walk

Walk a page for QA — screenshot, find issues, report

Personas

Each persona is a separate browser identity with its own container, Firefox instance, cookies, credentials, and history.

navvi_persona(action="create", name="mybot", description="GitHub admin", stealth="high")
navvi_start(persona="mybot")           -> launches container navvi-mybot
navvi_persona(action="list")
navvi_account(action="add", persona="mybot", service="github.com", email="bot@x.com")

Persona config and state live in ~/.navvi/navvi.db. Each persona's browser profile persists in its own Docker volume (navvi-profile-{name}). Credentials share a common gopass vault.

Requirements

  • Docker — the browser runs in a container

  • uv — curl -LsSf https://astral.sh/uv/install.sh | sh (or brew install uv)

  • NAVVI_GPG_PASSPHRASE — any random string, enables the gopass credential vault. Set in .mcp.json env.

  • ffmpeg (optional) — only needed for video recording

  • ANTHROPIC_API_KEY (optional) — enables Haiku vision for navvi_browse ($0.002/step). Without it, falls back to claude -p CLI or heuristics. For best results, install the skills instead — they use Claude Code's native vision at no extra cost.

Contributing

See CONTRIBUTING.md for development setup and guidelines.

License

MIT

Available Tools

31 tools

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 31 tool updatesv3.21.0
    • First observednavvi_account
    • First observednavvi_atomic
    • First observednavvi_browse
    • First observednavvi_click
    • First observednavvi_context
    • First observednavvi_creds
    • First observednavvi_drag
    • First observednavvi_fill
    • First observednavvi_find
    • First observednavvi_flow
    • First observednavvi_hold
    • First observednavvi_list
    • First observednavvi_login
    • First observednavvi_milestone
    • First observednavvi_mousedown
    • First observednavvi_mousemove
    • First observednavvi_mouseup
    • First observednavvi_open
    • First observednavvi_persona
    • First observednavvi_press
    • First observednavvi_record_gif
    • First observednavvi_record_start
    • First observednavvi_record_stop
    • First observednavvi_screenshot
    • First observednavvi_scroll
    • First observednavvi_start
    • First observednavvi_status
    • First observednavvi_stop
    • First observednavvi_tab
    • First observednavvi_url
    • First observednavvi_vnc

TDQS

A3.7/5.0

Scored across 31 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: high-level browsing (navvi_browse), low-level actions (navvi_click, navvi_fill), credential management (navvi_creds), persona lifecycle (navvi_persona, navvi_account, navvi_milestone), etc. Even related tools like mouse actions are differentiated by action type. No overlapping ambiguity.

Naming Consistency5/5

All tools follow the consistent snake_case pattern 'navvi_<verb_or_noun>'. The naming is predictable: verbs for actions (browse, click, find) and nouns for entities (context, flow, persona). No mixed conventions or irregular patterns.

Tool Count4/5

31 tools is higher than typical (3-15) but well-justified given the comprehensive scope: browser automation (atomic & high-level), credential management, persona profiles, knowledge context, recording, and infrastructure. Each tool has a defined role without redundancy.

Completeness4/5

The tool set covers the full lifecycle of persona-driven web automation: browser control (open, find, click, type, scroll), credential handling, knowledge storage, flow recipes, and recording. Minor gaps exist (e.g., file uploads, extension management) but do not hinder primary workflows.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI agents to authenticate with websites using a real Chromium browser with anti-detection measures and human-in-the-loop support for captchas and 2FA. Features stealth browsing, human-like interactions, and persistent session storage to automate and resume login workflows.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides AI assistants with powerful, detection-resistant browser automation capabilities, allowing them to control a real web browser to navigate, extract content, and perform tasks while avoiding bot detection.
    18
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/fellowship-dev/navvi'

If you have feedback or need assistance with the MCP directory API, please join our Discord server