A community-driven registry for the Claude Code ecosystem. Not affiliated with Anthropic.
Are you the author? Sign in to claim
Built from the ground-up for agents, Vessel Browser is an open source AI browser for Linux/Mac/Windows that provides a d
Open source chromium-based browser for persistent web agents. Linux is the most mature install target today, and macOS release packaging is available from source.
Vessel gives external agent harnesses a real browser with durable state, MCP control, and a human-visible supervisory UI. It is built for long-running workflows where the agent drives and the human audits, intervenes, and redirects when needed.
Vessel is in active development and currently makes no security assurances. Use and deploy it with care.
https://github.com/user-attachments/assets/0a72b48a-873a-4eb0-b8f2-23e34d8472c4
Want the full agent toolkit from day one? Start a 7-Day Free Trial of Vessel Premium — $5.99/mo.
Linux AppImage from GitHub Releases:
Vessel-<version>-x64.AppImagechmod +x Vessel-*.AppImage./Vessel-*.AppImageCtrl+,) and confirm the MCP endpoint shown therenpm install -g @quanta-intellect/vessel-browser
vessel-browser
Or run it directly without installing:
npx @quanta-intellect/vessel-browser
curl -fsSL https://raw.githubusercontent.com/unmodeled-tyler/vessel-browser/main/scripts/install.sh | bash
Vessel development uses Node.js 22. If you use fnm, run fnm use from the repo root to pick up .node-version.
fnm use
npm install
npm run dev
If you want extra local AI tracing in development, create an optional src/main/telemetry/trace-logger.local.cjs file. Vessel will load it only in local dev builds, and packaged production builds ignore it.
Most browser automation stacks are either headless, stateless, or designed around a human as the primary operator. Vessel is built around the opposite model: the browser is the agent's operating surface, and the human stays in the loop through a visible interface with clear supervisory controls.
Vessel is built for persistent web agents that need a real browser, durable state, and a human-visible interface. The agent is the primary operator. The human follows along in the live browser UI, audits what the agent is doing, and steers when needed.
Today, Vessel provides the browser shell, page visibility, and supervisory surfaces needed to support that model. The long-term goal is not "a browser with AI features," but a browser runtime for autonomous agents with a clear supervisory experience for humans.
Ctrl+L) — a secondary operator surface for harness-driven workflows and future runtime commandsCtrl+Shift+L) — live supervision across eight tabs: Supervisor, Bookmarks, Checkpoints, Chat, Automate, History, Changes, and ResearchF12) — inspect console output, network requests, and MCP/agent activity in a resizable panel at the bottom of the window; export logs by category and date range as JSONCtrl+N; print the active page with Ctrl+P or save it directly as PDF with Ctrl+Shift+Pundo_last_action toolintent (what the page is for), expectedContent (what to expect on the page), keyFields (important form fields), agentHints (arbitrary directives), and a stored pageSchema; humans can create and edit this metadata directly in the Bookmarks tab, and all fields are searchablepageType (article, product, form, search, checkout, login, dashboard), primaryEntity (structured fields for products and articles), formFields (with names, types, labels, selectors), and actionButtons (with inferred intents: submit, addToCart, login, etc.); schema is attached to every content extraction resultflow_start; progress is tracked step-by-step with flow_advance and visible in the sidebar throughout executionChanged badge in the address bar when the title, headings, or main content differ on a later visit; expand it to see a compact summary of what changed since the last snapshotCtrl+Shift+F) — hide all chrome, content fills the screenMost browsers treat automation as secondary and assume a human is the primary actor. Vessel is the opposite: it is the browser for the agent, with a visible interface that keeps the human in the loop.
That means the product should optimize for:
| Layer | Technology |
|---|---|
| Engine | Chromium (Electron 40) |
| UI Framework | SolidJS |
| Language | TypeScript |
| Build | electron-vite + Vite |
| AI Control | External agent harnesses (Hermes Agent, OpenClaw, MCP clients) + built-in chat (Anthropic, OpenAI, Ollama, llama.cpp, and any OAI-compatible endpoint) |
| Content Extraction | @mozilla/readability |
Main Process Renderer (SolidJS)
├── TabManager (WebContentsView[]) ├── TabBar, AddressBar
├── AgentRuntime (session + supervision) ├── CommandBar (secondary surface)
├── MCP server for external agents ├── AI Sidebar (Supervisor/Bookmarks/Checkpoints/Chat/Automate/History/Changes/Research)
├── AI providers (Anthropic + OAI-compat) ├── DevTools Panel (Console/Network/Activity)
├── Supervision, bookmarks, checkpoints ├── Agent Transcript Dock
└── IPC Handlers ◄──contextBridge──► ──► └── Signal stores (tabs, ai, ui)
└── IPC Handlers ◄──contextBridge──► Preload API
Each browser tab is a separate WebContentsView managed by the main process. The browser chrome (SolidJS) runs in its own view layered on top. All communication between renderer and main goes through typed IPC channels via contextBridge.
The sidebar Automate tab renders kit forms entirely in the renderer and passes the rendered prompt to the built-in agent via the same query() path used by the Chat tab — no additional IPC surface is needed. The Changes tab reads the current page's diff timeline through IPC and unlocks persisted history for Premium users. The Research tab has a dedicated IPC surface for its state machine: briefing is available to everyone, while objective approval, parallel browser sub-agents, report synthesis, and markdown export are Premium-gated during the beta.
The installer:
~/.local/share/vessel-browservessel-browser launcher in ~/.local/binvessel-browser-launch helper in ~/.local/binvessel-browser-update helper in ~/.local/binvessel-browser-status helper in ~/.local/bin~/.config/vessel/vessel-settings.json with MCP port 3100~/.config/vessel/mcp-stdio-snippet.json~/.config/vessel/mcp-http-snippet.jsonvessel-browser-mcp helper that can run as a stdio-to-HTTP proxy (--stdio) or print config snippetsThe packaged AppImage path:
Windows packaged releases:
Vessel-<version>-x64-setup.exe NSIS installerYou do not need to uninstall Vessel before installing a newer Windows release. Uninstall first only if you are recovering from a broken install or intentionally removing local Vessel data.
After install:
vessel-browser
# Use the pinned Node.js 22 runtime
fnm use
# Install dependencies
npm install
# If Electron download fails, use a mirror:
ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/" npm install
# Development (with HMR)
npm run dev
# Production build
npm run build
# Smoke-test the MVP release path
npm run smoke:test
# Package an unpacked Linux app
npm run dist:dir
# Package a Linux AppImage
npm run dist
# Package an unpacked universal macOS app bundle (run on macOS)
npm run dist:mac:dir
# Package universal macOS DMG + ZIP artifacts (run on macOS)
npm run dist:mac
# Verify a universal macOS build contains Intel and Apple Silicon slices
npm run verify:mac:universal
# Package signed macOS DMG + ZIP artifacts (run on macOS with signing set up)
npm run dist:mac:signed
Notes:
npm run dev still launches the stock Electron binary, so Linux may continue showing the default Electron gear icon in developmentnpm run dist / npm run dist:dir use the Vessel app iconnpm run build:icon:mac regenerates resources/vessel-icon.icns from resources/vessel-icon.png for macOS packagingnpm run dist:mac and npm run dist:mac:dir build universal macOS artifacts by default, so the same app runs natively on Intel and Apple Silicon Macsnpm run dist:mac:x64 and npm run dist:mac:arm64 are available when you need smaller architecture-specific test artifactsnpm run verify:mac:universal uses lipo to confirm the packaged app executable and Electron framework include both x86_64 and arm64 slicesnpm run dist:mac, npm run dist:mac:dir, npm run dist:mac:x64, and npm run dist:mac:arm64 intentionally disable auto-signing so local packaging works on any Mac without keychain setupnpm run dist:mac:signed and npm run dist:mac:dir:signed build universal artifacts and use normal electron-builder signing discovery; if your login keychain has duplicate Apple certs, clean those up or use a dedicated keychain before running the signed pathxvfb-run -a npm run smoke:testVessel is designed to act as the browser runtime that your external agent harness drives.
Ctrl+,) to confirm MCP status, copy the endpoint, or change the MCP portvessel-browser-mcp --stdio as the MCP command (auth is resolved automatically), or connect directly to http://127.0.0.1:<mcpPort>/mcp with the bearer token from ~/.config/vessel/mcp-auth.jsonNotes:
3100Ctrl+,) and enable Chat Assistant to set a provider and modelllama.cpp (Local) is a first-class chat provider in Settings and targets http://localhost:8080/v1 by default; Vessel auto-fetches the active model from llama-serverllama-server, use --ctx-size 16384 minimum and 32768 recommended for reliable Vessel agent loops; lower values often fail once prompt, tool schema, and tool history accumulateChanged badge when Vessel detects that a previously visited page has meaningfully changed since the last saved snapshotgithub-logged-in, and reload that state in later runsVessel can talk directly to a local llama-server through its OpenAI-compatible API.
Example:
llama-server -m /path/to/model.gguf --port 8080 --ctx-size 32768
Then in Vessel:
Ctrl+,)llama.cpp (Local) as the providerhttp://localhost:8080/v1Notes:
--ctx-size 16384 is the minimum practical setting for Vessel agent loops--ctx-size 32768 is the recommended default for longer browsing sessionsllama-server context size below the recommended floor, or if it cannot detect the ctx size from the running serverInitial memory tools:
vessel_memory_note_createvessel_memory_appendvessel_memory_listvessel_memory_searchvessel_memory_page_capturevessel_memory_link_bookmarkBookmark and folder tools exposed today include:
vessel_bookmark_listvessel_bookmark_searchvessel_bookmark_openvessel_bookmark_savevessel_bookmark_removevessel_create_foldervessel_folder_renamevessel_folder_removePage interaction and recovery tools exposed today include:
vessel_extract_contentvessel_read_pagevessel_scrollvessel_dismiss_popupvessel_set_ad_blockingvessel_wait_forvessel_screenshot (Premium) — capture the full page as an image for visual AI analysisundo_last_action — restore the browser to the snapshot captured before the last successful mutating agent actionPage highlight tools:
vessel_highlight — visually mark text or an element on the page with a labeled, color-coded overlay; persists until clearedvessel_clear_highlights — remove all highlights from the current pageWorkflow tracking tools:
vessel_flow_start — begin a named multi-step workflow and declare its steps upfront; progress appears in the sidebar throughout executionvessel_flow_advance — mark the current step complete and advance to the nextvessel_flow_status — check current workflow progressvessel_flow_end — clear the active workflow trackerData extraction tools (Premium):
vessel_extract_table — extract a page table as structured JSON rows with column headersNamed session tools exposed today include:
vessel_save_sessionvessel_load_sessionvessel_list_sessionsvessel_delete_sessionSession files are sensitive because they may contain login cookies and tokens. Vessel stores them under the app user-data directory with restrictive file permissions.
Agent Credential Vault tools (Premium):
vessel_vault_status — check whether stored credentials exist for a domain (returns labels/usernames, never passwords)vessel_vault_login — fill a login form using stored credentials (blind fill — credentials go directly into the page, never into the AI conversation)vessel_vault_totp — generate and fill a TOTP 2FA code from a stored secretSession performance tools (Premium):
vessel_metrics — show per-tool call counts, average durations, error rates, and total session statsVault security model:
Notable extraction modes include:
visible_only — only currently visible, in-viewport, unobstructed interactive elements plus active overlaysresults_only — likely primary search/result links onlyfull / summary / interactives_only / forms_only / text_onlyThe extraction output can distinguish:
Stdio proxy MCP config (recommended — resolves auth automatically):
{
"mcpServers": {
"vessel": {
"command": "vessel-browser-mcp",
"args": ["--stdio"]
}
}
}
The stdio proxy reads the bearer token from ~/.config/vessel/mcp-auth.json at connection time, so no manual token management is needed.
Vessel must already be running when your MCP client connects, and ~/.config/vessel/mcp-auth.json must exist from install or first launch.
Generic HTTP MCP config (requires copying the token manually):
{
"mcpServers": {
"vessel": {
"type": "http",
"url": "http://127.0.0.1:3100/mcp",
"headers": {
"Authorization": "Bearer <token from ~/.config/vessel/mcp-auth.json>"
}
}
}
}
Hermes Agent config.yaml MCP config:
mcp_servers:
vessel:
url: "http://127.0.0.1:3100/mcp"
headers:
Authorization: "Bearer <token from ~/.config/vessel/mcp-auth.json>"
timeout: 180
connect_timeout: 30
The installer writes three snippets to:
~/.config/vessel/mcp-stdio-snippet.json~/.config/vessel/mcp-http-snippet.json~/.config/vessel/mcp-hermes-snippet.yamlIt also installs a helper command:
vessel-browser-mcp
Helper examples:
# Run as stdio-to-HTTP proxy (for MCP client integration)
vessel-browser-mcp --stdio
# Recommended stdio MCP snippet
vessel-browser-mcp
# Generic JSON snippet with Authorization header
vessel-browser-mcp --format json
# Hermes-ready YAML snippet with Authorization header
vessel-browser-mcp --format hermes
# Raw MCP endpoint URL
vessel-browser-mcp --format url
# Raw MCP bearer token
vessel-browser-mcp --format token
Source install update helpers:
# Check whether a source-install update is available
vessel-browser-update --check
# Fetch, rebuild, and update the local source install
vessel-browser-update
Status helper:
# Human-readable local install + MCP status
vessel-browser-status
# Machine-readable status for harnesses
vessel-browser-status --json
Smart launch helper:
# Launch Vessel using the best available local install
vessel-browser-launch
# Show the chosen launch path without starting anything
vessel-browser-launch --dry-run
vessel-browser-launch prefers a healthy source install and falls back to the newest local AppImage when the source install is likely blocked by Electron sandbox permissions.
| Shortcut | Action |
|---|---|
Ctrl+L | AI Command Bar |
Ctrl+Shift+L | Toggle AI Sidebar |
Ctrl+Shift+F | Toggle Focus Mode |
F12 | Toggle Dev Tools Panel |
Ctrl+N | New Window |
Ctrl+T | New Tab |
Ctrl+W | Close Tab |
Ctrl+Shift+T | Reopen Closed Tab |
Ctrl+Shift+N | New Private Window |
Ctrl+F | Find in Page |
Ctrl++ / Ctrl+= | Zoom In |
Ctrl+- | Zoom Out |
Ctrl+0 | Reset Zoom |
Ctrl+P | Print Active Page |
Ctrl+Shift+P | Save Active Page as PDF |
Ctrl+, | Settings |
src/
├── main/ # Electron main process
│ ├── ai/ # Agent tools, query flow, and AI provider implementations
│ ├── tabs/ # Tab + TabManager (WebContentsView)
│ ├── agent/ # Agent runtime, checkpoints, supervision, flow tracking
│ ├── content/ # Readability extraction, reader mode, screenshot, page snapshots/diff
│ ├── config/ # Settings persistence
│ ├── autofill/ # Autofill profile persistence and form-field matching
│ ├── ipc/ # IPC handler registry
│ ├── vault/ # Agent Credential Vault (encrypted storage, consent, audit)
│ ├── mcp/ # MCP server for external agent control
│ ├── devtools/ # CDP session management for Dev Tools panel
│ ├── highlights/ # Page highlight capture, injection, and persistence
│ ├── health/ # Runtime health monitoring (MCP, settings, ports)
│ ├── premium/ # Subscription management, feature gating, Stripe integration
│ ├── bookmarks/ # Bookmark and folder persistence
│ ├── history/ # Browse history
│ ├── memory/ # Obsidian vault hooks
│ ├── network/ # Ad blocking, URL safety, link validation, downloads
│ ├── sessions/ # Named session save/load/delete
│ ├── startup/ # App initialization, menu, shortcuts, renderer bootstrap
│ ├── telemetry/ # PostHog analytics (opt-in)
│ ├── tools/ # Tool definitions, input coercion, pruning
│ ├── window.ts # Window layout manager
│ └── index.ts # App entry point
├── preload/ # contextBridge scripts
│ ├── index.ts # Chrome UI preload
│ └── content-script.ts # Web page preload (readability)
├── renderer/ # SolidJS browser UI
│ └── src/
│ ├── components/
│ │ ├── chrome/ # TitleBar, TabBar, AddressBar, AgentTranscriptDock
│ │ ├── ai/ # CommandBar, Sidebar (Supervisor/Bookmarks/Checkpoints/Chat/Automate/History/Changes/Research)
│ │ ├── devtools/ # DevTools panel (Console, Network, Activity)
│ │ └── shared/ # Settings panel
│ ├── stores/ # SolidJS signal stores (tabs, ai, ui, runtime, bookmarks, etc.)
│ ├── styles/ # Theme, global CSS
│ └── lib/ # Keybindings, markdown, automation kits registry
└── shared/ # Types + IPC channel constants
MIT
Developed by Tyler Williams in Portland, Oregon (2026)
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
Secure MCP server for MySQL database interaction, queries, and schema management
English-first Korean equity intelligence MCP — DART filings, foreign-holder 5%-rule flows, activist filings, KRX news. F
0
via CLI