Skip to main content
Glama
w-partners
by w-partners

🤖 Wbrowser

Deine KI kann nichts hinter einer Anmeldung sehen. Genau das behebt das – auf dem Betriebssystem, das du tatsächlich benutzt.

Dein Assistent kann im Web suchen, aber er kann dein Postfach, dein Dashboard oder das interne Tool deines Unternehmens nicht öffnen. Alles Nützliche liegt hinter einer Anmeldung, die es nicht hat.

Wbrowser verschafft ihm einen Platz in deinem eigenen Chrome – dem, in dem du bereits angemeldet bist. Dasselbe Fenster, dieselben Tabs. Du siehst zu, wie jeder Klick landet, und kannst dir die Maus mitten in der Aufgabe wieder zurücknehmen.

Dein Passwort verlässt dich nie. Du meldest dich selbst an; Chrome speichert es; Wbrowser steuert nur das Fenster, das bereits geöffnet ist.

Läuft auf Windows, macOS, Linux and WSL – jede Variante wurde auf echter Hardware gemessen, auf einem anderen Rechner, von jemand anderem als der Person, die diesen Teilgeschrieben hat:

Plattform

Chrome

Verifiziert von

Windows 10

151

andere Maschine & andere Bedienung – inkl. Ende-zu-Ende

macOS 15

151

andere Maschine & andere Bedienung

Linux (headless)

148

andere Maschine & andere Bedienung – inkl. Sicherheitsprüfung

WSL2

151

Maintainer

Gemessen 2026-08-24. Nicht jeder Test lief überall – Details unter Plattform-Hinweise.

Etwa 2.600 Zeilen JavaScript, Python and Shell. MIT. Small genug, um an einem Nachmittag gelesen zu werden und an dich angepie zu werden.

English · 한국어 · 中文 · Español

check License: MIT Node Platforms Windows


Warum es das gibt

KI-Browser habee alle die gleiche Form: Du installierst einen neuen Browser mit einem integrierten Assistenten – Aside, Comet, Dia. Diese Form kostet dich drei Dinge:

Deren Bauform

Was sie dich kostet

Ein neuer Browser zur Installation

Neues Profil, neue Anmeldungen, neue Standards

Der Assistent lebt darin

Deine Sitzungen liegen in einem fremden Build

Die Plattform bestimmen sie

Aside und Dia sind heute nur für macOS

Wir haben den umgekehrten Aufbau gewählt. Kein neuer Browser – dein vorhandenes Chrome, deine vorhandenen Logins, und der Assistent arbeitet in dem Fenster, in das du bereits schaust. Du beobachst jeden Klick und kannst dir die Maus mitten in der Aufgabe zurück. Nichts zu übertragen, nichts zu übergeben.

Diese Wahl ist auch der Grund, warum es unter Windows, macOS, Linux and WSL läuft: Wir mussten nicht für jede Plattform einen Browser bauen, es gab also keine Plattformauswahl.

Brauchst du etwas? Bau es dir.

Genau, das ist die Idee. Kein Produkt, das auf jemand anderen Plan wartet – sondern ein kleines Tool, das dir gehört, auf deiner bereits genutzten Maschine, im bereits reingeloggten Browser freely. Ungefähr 2.600 Zeilen. JavaScript, Python and Shell – klein genug für einen Halbtag. Lies es, ändere es, mach es dir. Wbrowser richtet sich an Windows, macOS, Linux and WSL – denn „Welches Betriebssystem du benutzt?“ sollte nie der Grund sein, nicht in deinem eigenen Browser automatisieren zu können. Gemessen auf macOS, nativen Linux, WSL2 und nativem Windows – auch wenn nicht jeder Check überall hetzte lief (siehe Plattform-Hinweise).


Related MCP server: Chrome DevTools MCP

Was ist das?

Die meisten Automatisierungswerkzeuge geben deiner KI einen frischen and leeren Browser. Sie kann so deine E-Mails, Dashboards nicht alles, was hinter einem Login steht, nicht sehen – mann nicht es gibt Passwörter weiter und für Dienste API-Integrationen einricht.

Wbrowser wählt den Gegenteil: Du melden einmal von Hand and dich an in einem normalen Chrome-Fenster. Danach kann dein Terminal (oder dein KI-Assistent) genau dieses Fenster steuern – überall bereits eingeloggt.

./wb go https://mail.example.com   # opens in YOUR logged-in session
./wb read                          # tells you what's on screen
./wb click '#compose'              # clicks it

Wbrowser bekommt deine Passwörter nie. Du tippst sie; Chrome speichert sie; Wbrowser steuert nur das Fenster, das schon offen ist.


Eine Anmeldung macht oft viele Websites zugänglich

Das ist der Teil, der den Einrichtungs-Aufwand es wert macht. Melden dich einmal in diesem Fenster bei Google an und:

Google itself       google.com · youtube.com · your Workspace apps
Sites using Google SSO   your CRM, your booking system, your dashboards —
                         whatever "Sign in with Google" reaches
Everything else     log in by hand once; it stays

Gemessen an einem echten Profil: Eine Google-Sign-in brachte YouTube and two internal business system with Google SSO – none of which had been separately logged in. Der andere Rest (GitHub, Reddit, bankenähnliche Portal) wurde einmal manuell angemeldet und ist bestehen gebend.

Der Einrichtungsaufwand ist also ungefähr: eine Google-Anmeldung plus jeweils eine Anmeldung für alles, das kein Google nutzt. Danach kommt dein Agent mit einem überall hin.

🔴 Die Kehrseite ist ist dieselbe Tatsache: Wer diesen Browser steuern kann, khan auf jededer dieser Websites in deinem Namen handeln. Siehe Sicherheit.

Was das Tool nicht tut

  • Nach deinem Passwort wünscht nicht speichern. Du meld dich an; Chrome behät es; Wbrowser steuert das offeneen Fenster. type protokolliert niemals, was eingegeben wurde.

  • Gibt keine Cookie-Werte aus. Nicht in der Ausgabe, nicht in Logs – Cookies sind die Anmeldung.

  • Errät nicht, welche Konto möchtest. Einsteige ein Konto, das nicht geöffnet ist, und es schelt. Dem eine E-Mail von falschen Konto zu senden ist schlimmer als eine Fehlermeldung.

  • Kickt Absenden / Bezahlen / Löschen nicht nach Zeitplan. Unbeaufsichtigte Aufträge verweigern diese Schritte, es sei denn, dieser Auftrag meldet sich aktiv dazu. Schaut niemand, wenn eine Vollautomatis sagt.

Eine Einschränkung, die wir messen und dir nicht verschweigten

Chromes Debugging-Port hat keine Authentifizierung. Jeder Prozess, die als du auf diesem Rechner unterwegs ist, könnt sich an deine Sitzungen hängen und sie dazu auftreten. Zurückgelegt haben wir, unindem wir gültig aus einem nicht verwandten Prozess verbunden und die offene Tabs aufgeführt hasen. 127.0.0.1 ist kein Grenzzzaun; es heißt: „Alles, was als du läuft, kommt hinein.“

Das ist Chromes Design choice, not something we added. Jedermann in dieser Kategorie turbt es. Wir notieren es lieber writing, bevor du's später merkt – find in Sicherheit das full Threat Model.

Schnellstart

git clone https://github.com/<you>/Wbrowser.git
cd Wbrowser
# Wbrowser drives your *system* Chrome, so Playwright's own browser
# download is unnecessary — skip it and save ~400MB:
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm install

node launch.js       # 1. opens a dedicated Chrome window
                     # 2. log into your sites in that window (by hand!)
node engine.js       # 3. start the control engine
./wb go https://example.com

Das war's eigentlich. Schritt 2 ist das Einzige, was du jemals Hands arbeit fewer musst.

Falls ./wb sagt, „Permission denied” – dieser executable flag hat den Klon nicht überlebt (man Doopsetups trennen ihn). Einmal fixen:

chmod +x wb install.sh autostart.sh sync-session.sh

Headless-Server (ohne Anzeige): Wbrowser erkennt ohne fehlendes $DISPLAY und startet Chrome wichtig bzw. headless automatisch. Du kannst das in beiden Richtungen durücken with WBROWSER_HEADLESS=1 or =0. Beachte, dass du can not log you hand without a screen – use ./sync-session.sh import to import sessions from a desktop machine.

Windows user: run these in WSL or just node on native Windows – both work. See Plattform-Hinweise.


Warum ein eigenes Chrome-Fenster?

Seit Chrome 136 (März 2025) wird --remote-debugging-port beim Standard-Profilverzeichnis von Chrome ignorized. Google hat das geändert, weil Angreifer Remote-Debugging genutzt hat, um Cookies zu stehlen.

Demnach ist ein nicht standardmäßiges --user-data-dir zur Pflicht. „Xbrowser erstellt ist unter ~/.wbrowser und startet Chrome dort.

Das bedeutet: Deine bisherigen Logins werden nicht übertragen. Du meldich dich einmal in dem neu Windows-Fenster an – von then an bleiben sie dort erhalten.

⚠️ Kopieren macht nicht dein Chrome-Profilverzeichnis. Selbstversucht: 685 Cookies wurden 3…“? Did copy your Chrome profile folder doesn't not work. We tried: 685 cookies became 3, and every session cookie was dropped. Chrome invalidiert Profile, die es nicht erkennt. Melden dich neu an – it takes a minute and it does what it soll actually work.


Commands

./wb go <url>              open a page, return its structure
./wb read                  summarize the current page
./wb click <selector>      click an element
./wb type <selector> <text>   fill an input
./wb press <key>           Enter, Tab, Escape, ArrowDown…
./wb eval '<js>'           run JavaScript in the page
./wb console [regex]       console logs + uncaught exceptions
./wb network               failed requests (4xx/5xx, CORS, timeouts)
./wb shot [file.png]       screenshot
./wb tabs                  open tabs, grouped by agent
./wb close                 close only the tabs you opened
./wb status                is everything up? which profile?
./wb show                  bring the browser window to the front

Keine Selektoren raten

./wb read liefert die tatsächlichen ückbaren Elemente der Seite:

inputs(1):
  - #searchbox_input  (Search the web without being tracked)
buttons(3): Search, Sign in, Settings

Kopier von da. (Wir haben für das Suchfeld einmal input[name=q] geraten i. There is may be a textarea. read wusste das schon.)


Sag einfach deinem Assistenten, was er tun soll

Sobald verbunden bist du mit, du hörst auf, Kommandos zu tippen, und beschreibst behauptete:

„Öffne mein Dashboard and fass die heutigen ZahlenZone zusammenss." „Was liegt in meinem Einkaufswagen auf dem Shopping-Portal?" „Checke, ob die Buchung tatsächlich durchgegangen ist."

Die Verbindung uses Model Context Protocol – wenn dein Assistent MCP unterstützt (Claude, Nein, and others), du das ist wenigen Zeilen Konfiguration zugel open.

Lokal (stdio):

{
  "mcpServers": {
    "wbrowser": {
      "command": "node",
      "args": ["/path/to/Wbrowser/mcp-server.js"]
    }
  }
}

Remote (HTTP):

export WBROWSER_MCP_TOKEN=$(openssl rand -hex 32)
node mcp-server.js --http --port 7982 --host 127.0.0.1

Sprich danach einfach mit dem:

„Öffne mein Dashboard und fasse heutige Zahlenasammenge." „Was sieht mein Einkaufswagen liegt?"

Werkzeuge: browser_open browser_read browser_click browser_type browser_press browser_eval browser_console browser_screenshot browser_tabs browser_status

🔴 Die remote server startet ohne Token nicht. That's not optional – it's driving a browser with all eures Logins. Wer diesen Port erreicht, become you.


Ein Agent sollte folgendes usieren

Das sind echte Fehler, die beim Entwickeln passiert ist. If you create one's own Skill/Prompt Wrapper for Wbrowser, nimm diese Punkte mit:

  1. Set selten did you choose raus? browser_read returns the real one on the page. stew once guessed input[name=q] for such a input; it was a textarea, and read knew.

  2. Ließ das Formular vor dem Absenden nochmal. In one batch form, rows 2–10 had the customer field cleared as "not keep" checkbox etc. Every row on pre-check hat save it; Otherwise: had 9 broken records.

  3. Zähle, bevor du pressst. Eight times Enter in Folge nourishes 38 Rows – page faster endeverifying. Drückt einmal ab, verlost die Zählung zu.

  4. Behandle framework forms mit eval; type if it misses. React ignores direct Vervalue – use native native setter plus input/change events. Wenn type does real keystroke.

  5. Prüfe, with whatance you're verbunden. browser_status tells whether the window is actually holding logs. Not empty "empty profile" return k success and not nothing.

Scheduled jobs (cron)

Create jobs/morning-check.json:

{
  "schedule": "0 9 * * 1-5",
  "tab": "morning",
  "steps": [
    { "goto": "https://dashboard.example.com", "wait": 2000 },
    { "eval": "document.querySelector('.total').innerText" },
    { "shot": true }
  ]
}
node cron.js list      # what's registered
node cron.js next      # when each job runs next
node cron.js run <name>   # run once, now
node cron.js daemon    # run on schedule

0 9 * * 1-5 = Minute 0, Stunde 9, werktags. Standard-5-Felder-Cron.

Unrückrufbare Schritte sind standardmäßig blockiert

Unattended automation means nobody is watching when things go wrong. Step that think submit/pay/delete are not executed:

GXP11

„Einzelnen Auftrag (job) opt-in, nicht global.


Wer hat Kontrolle? (Visueller Hinweis)

Wenn ein Agent das Steuer hat: Du siehst es:

  • Umble Somatransparent: border, with einer label: 🤖 my-agent in control

  • Der spät prefix title: [my-agent] Dashboard

Die Grenze fades after 6 sek without activity, so „in control" also means "right now." Farbs deriviert from name? Consider GUI.

Better danach: MutationObserver supports with every Step, because SPA.


Multiple Konten

Open several Chrome profiles in the same window (Chrome state switcher). Wbrowser can target one after:

./wb -a work@example.com go https://mail.example.com
./wb windows                    # list open profiles

Or map sites to accounts in accounts.json:

{
  "sites": {
    "mail.example.com": { "account": "work@example.com" }
  }
}

🔴 Name an account, not open screen → Wbrowser fails instead of home. The blunt e-Mail from a fault is worse.


Plattform-Hinweise

OS

Chrome auto-detection

Windows

Program Files, AppData, Edge fallback

macOS

/Applications/Google Chrome.app, Chromium, Edge

Linux

google-chrome, chromium, snap, Edge

WSL

Windows Chrome first (the browser you actually use)

Default WBROWSER_CHROME=/path/to/chrome, if diese Fallback fails.

„was"? It still missing?

Auf echter Hardware getestet (2026-08-24):

Plattform

Chrome

Geprüft von

Was dort gemessen wurde

macOS 15

151

separater Operator

Start · Engine · CLI · Zustandspfade

Linux (nativ, headless)

148

separater Operator

das oben Genannte + Sicherheitsprüfung

WSL2 + Windows Chrome

151

Maintainer

das oben Genannte

Windows 10 (nativ)

151

separater Operator

das oben Genannte + End-to-End

Nicht jede Prüfung lief auf jeder Plattform. Die Sicherheitsprüfung (MCP-Verweigerung ohne Token, bestätigt mit ss, Engine außerhalb des Loopbacks nicht erreichbar) wurde unter Linux durchgeführt. Der End-to-End-Lauf (/health/act → echte Seitenextraktion) wurde unter Windows durchgeführt. UNC-Pfade (\\?als.localhost\...) funktionieren ebenfalls – gemessen, entgegen unserer Erwartung.

Die Sicherheitsprüfung wurde unter Linux auf einem anderen Rechner durchgeführt: Ohne Token stellt der MCP-HTTP-Server seinen Dienst ein und öffnet nie einen Socket (mit ss bestätigt); die Engine bindet ausschließlich an 127.0.0.1 und ist über das Tailnet nicht erreichbar.


Sicherheit

Dieses Tool steuert einen Browser, der alle Ihre Logins enthält. Behandeln Sie es entsprechend.

  • 🔴 127.0.0.1 ist kein Zaun – es heißt: „Jeder Prozess, der unter Ihren Rechten läuft, kommt herein.“ Der Chrome-Debug-Port (9222) hat keine Authentifizierung. Jeder lokale Prozess auf dieser Maschine – eine andere App, ein npm-Postinstall-Hook, ein verirrtes Skript – kann sich anhängen und jede Sitzung steuern, in der Sie angemeldet sind. Messergebnis: Ein fremder Prozess hat GET http://127.0.0.1:9222/json/list aufgerufen und die geöffneten Tabs ohne jegliche Anmeldedaten aufgezählt. Führen Sie das nur auf einem Rechner aus, auf dem Sie allen Prozessen vertrauen, die unter Ihrem Benutzerkonto laufen.

  • Die Engine bindet nur an 127.0.0.1. Machen Sie sie niemals direkt von außen erreichbar.

  • 🔴 mcp-server.js --host 0.0.0.0 existiert und bindet an jede Schnittstelle. Der Code gibt zwar eine Warnung aus, aber dann ist der Port schon offen. Verwenden Sie 127.0.0.1, außer Sie befinden sich in einem vertrauenswürdigen privaten Netzwerk (VPN/Tailnet) – und verwenden Sie in jedem Fall einen Token.

  • Der MCP-HTTP-Server erfordert einen Token und startet ohne einen nicht.

  • ./wb type protokolliert nicht, was eingegeben wurde – es könnte ein Passwort sein.

  • Cookie-Werte werden nie ausgegeben, protokolliert oder von einem Befehl zurückgegeben.

  • Nicht verwenden, um Passwörter, Kreditkartennummern oder behördliche Ausweisnummern einzugeben. Melden Sie sich selbst an; Wbrowser übernimmt die bestehende Sitzung.

Sitzungs-Backup

./sync-session.sh export   # cookies → encrypted store
./sync-session.sh import   # restore on another machine
./sync-session.sh status

🔴 Cookies sind so sensibel wie Passwörter – sie sind die Anmeldung. Das Skript weigert sich zu schreiben, wenn das Ziel nicht tatsächlich verschlüsselt ist, und weigert sich, aus einem Geheimtext wiederherzustellen, den es nicht entschlüsseln kann.


Umgebungsvariablen

Variable

Standardwert

Zweck

WBROWSER_CHROME

automatisch

Pfad zur ausführbaren Chrome-Datei

WBROWSER_PROFILE_DIR

~/.wbrowser

Profilverzeichnis

WBROWSER_PROFILE

Default

Profilname darin

WBROWSER_CDP_PORT

9222

Chrome-Debug-Port

WBROWSER_PORT

7981

Port der Steuerungs-Engine

WBROWSER_AGENT

auto

Name im Kopf und im Tab

WBROWSER_MCP_TOKEN

Erforderlich für Remote MCP

WBROWSER_NOTES

Verzeichnis für tägliche Arbeitsnotizen (optional)


Autostart

# Linux / WSL (systemd user service)
./install.sh
systemctl --user status wbrowser

Die Engine startet automatisch. Der Browser muss weiterhin gestartet werden – er ist ein Desktop-Prozess, und es sollte Ihre Entscheidung sein, wann er sich öffnet.


Bekannte Einschränkungen

  • Keine automatisierte Testsait in CI prüft Syntax und einige Invarianten; alles, was einen echten Browser betrifft, wurde manuell auf vier Plattformen gemessen. Das skaliert nicht, und genau das wäre der nützlichste Beitrag eines Mitwirkenden.

  • Keine Natural-Language-Schleife fest eingebaut. Der Agent wählt die Selektoren; read gibt ihm die echten, so dass er nichts raten muss.

  • Nur Chrome/Chromium. Firefox hat kein CDP.

  • Ein CDP-Port = ein Chrome-Prozess. Profile, die in diesem Fenster geöffnet wurden, sind sichtbar; ein separat gestarteter Chrome ist es nicht.


Beiträge & Sicherheit

  • CONTRIBUTING.md – die Regeln, die diesen Code geprägt haben, und wie Sie ihn testen

  • SECURITY.md – 🔴 das Bedrohungsmodell. Lesen Sie dieses, bevor Sie das Tool auf einem gemeinsam genutzten Rechner verwenden: Der Chrome-Debug-Port hat keine Authentifizierung, sodass jeder lokale Prozess, der unter Ihrem Benutzerkonto läuft, Ihre Sitzungen steuern kann.

Sicherheitsproblem gefunden? Bitte eröffnen Sie im wir bitte ein privates Advisory und kein öffentliches Issue.

Lizenz

MIT – siehe LICENSE.

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI coding assistants to control and inspect a live Chrome browser for automation, debugging, performance analysis, network monitoring, and DOM interaction through Chrome DevTools Protocol.
    2,211,104
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to control and automate your Chrome browser directly, leveraging existing login states and configurations for tasks like content analysis, semantic search across tabs, screenshots, network monitoring, and interactive operations.
    10
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Lets AI assistants control your real Chrome browser to perform web tasks like reading pages, taking screenshots, clicking, and typing, using your existing logged-in sessions.
    131
    MIT

View all related MCP servers

Related MCP Connectors

  • AI-powered browser automation — navigate, click, fill forms, and extract data from any website.

  • Live browser debugging for AI assistants — DOM, console, network via MCP.

  • Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.

View all MCP Connectors

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/w-partners/Wbrowser'

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