Skip to main content
Glama

strawmanus

Ein Browser-Steuerungsagent, der Manus' Aktionsschicht mit Strawberrys Sitzungs-, Selektoren- und Wiederverwendungsschicht verbindet.

Manus hat die besseren Hände: eine flache Browser-API mit 12 Tools, Koordinaten-Fallback, wenn die Elementerkennung fehlschlägt, eine JS-Konsole als Notausgang, eine Markdown-zuerst-Wahrnehmung und eine strikte Schleife mit einem Tool pro Iteration. Strawberry (Dendrite Systems) hat den besseren Körper und das bessere Gedächtnis: Es läuft in Ihrem echten, angemeldeten Browser, löst Elemente aus natürlicher Sprache auf und speichert das Ergebnis zwischen, sodass es sich selbst heilt, wenn sich die Website ändert, speichert erfolgreiche Aufgaben als wiederverwendbare Fähigkeiten und fragt nach, bevor es etwas Unumkehrbares tut.

Keines funktioniert allein. Manus zahlt bei jeder Wiederholung einer Aufgabe die vollen Modellkosten erneut und kann, da es in einer wegwerfbaren Linux-Sandbox läuft, strukturell nicht an einer Anmeldewand vorbeikommen. Strawberry ist geschlossen und bietet keine Primitive zum Programmieren. strawmanus ist die Kombination: Manus' Aktionsraum, gesteuert in Ihrem eigenen Chrome, mit jeder Elementauflösung zwischengespeichert.


Installation

pip install -r requirements.txt && playwright install chromium

observe funktioniert ohne API-Schlüssel. Alles, was modellgesteuert ist, benötigt einen:

export ANTHROPIC_API_KEY=sk-ant-...

Dann prüfen Sie die Umgebung:

python -m strawmanus doctor

Related MCP server: agent-browser-mcp

Verwendung

# See exactly what the agent sees — no API key, no model call
python -m strawmanus observe --url https://github.com/trending

# Run a task
python -m strawmanus run "top 5 trending TypeScript repos today, 2 sources per fact" --expect 5

# Log in once by hand; later headless runs inherit the session
python -m strawmanus auth --url linkedin.com

# Save a successful run as a skill, then replay it with new arguments
python -m strawmanus run "search for Acme Corp" --save-skill find-co --param company="Acme Corp"
python -m strawmanus replay find-co --arg company="Globex Inc"

# Fan subtasks across tabs (they share the logged-in browser)
python -m strawmanus companions "price Linear" "price ClickUp" "price Asana"

# Score against the seat-free Strawberry benchmarks
python -m strawmanus bench --tasks B9,B12 --judge --csv scores.csv

Globale Flags: --profile {cloned,real,fresh,attach} · --headless · --max-steps N · --auto-approve · --allow DOMAIN · --parallel N · --cdp URL.

Der Zustand liegt in ~/.strawmanus/: sm.db (Selektor-Cache, Speicher, Laufprotokoll), skills/, runs/<stamp>-<slug>/{report.md,trace.json,guard.json}, profile/.


So funktioniert es

1. Wahrnehmung: drei Schichten in einer Nutzlast

[page] url=https://github.com/trending | title='Trending repositories on GitHub today · GitHub' | viewport 1/3 | tabs=1

[interactive] (viewport only; use index, or coordinate_x/coordinate_y for anything missing)
  0[:]<a>Homepage</a>
  1[:]<button>Platform</button>
  ...
  52[:]<a>obra / superpowers</a>
  53[:]<a>275,441</a>
  60[:]<a>You must be signed in to star a repository</a>

[markdown] (whole page, links/images stripped — if this answers the question, do not scroll)
# Trending
## RyanCodrai / turbovec
A vector index built on TurboQuant, written in Rust with Python bindings
348 stars today
...

Interaktive Elemente sind nur der Viewport, im exakten Format index[:]<tag>text</tag> von Manus, per elementFromPoint auf Treffer getestet, sodass verdeckte Steuerelemente verworfen werden. Das Markdown deckt das gesamte Dokument ab, einschließlich unterhalb des Falzes – das ist der eigentliche Kostenhebel, denn die meisten Nur-Lese-Fragen werden ohne ein einziges Scrollen beantwortet. Screenshots sind optional, für den Fall, dass das DOM wirklich mehrdeutig ist.

Passwort-, OTP- und Kartenfelder werden indiziert, damit sie ausgefüllt werden können, aber ihr Text und Wert gelangen nie in den Kontext des Modells:

  4[:]<input type=password><redacted secret field></input>

2. Manus' 12 Tools, wörtlich – plus 5

browser_view · browser_navigate · browser_restart · browser_click · browser_input · browser_move_mouse · browser_press_key · browser_select_option · browser_scroll_up · browser_scroll_down · browser_console_exec · browser_console_view

Die Namen werden exakt beibehalten, weil Modelle bereits darauf generalisieren, und Manus' veröffentlichte Verhaltensregeln übertragen sich dann direkt. Zusätzlich hinzugefügt:

Tool

Warum

browser_find(description) → index

Natürlichsprachlicher Selektor, Cache zuerst

browser_wait_for(description)

Semantische Wartezeiten statt Schlafschleifen

browser_extract(description, schema)

Typisierte Extraktion, die ihre Quell-URL automatisch ablegt

browser_tabs(action, target)

list / open / switch / close

browser_takeover(reason)

2FA, Captcha, Zahlung – Tastatur zurückgeben

Klicken eskaliert statt in einer Sackgasse zu enden: Index → Koordinaten aus der Snapshot-Bounding-Box → browser_console_execbrowser_takeover. Drei aufeinanderfolgende Fehlschläge auf einer Seite injizieren die Eskalationsleiter in die Schleife.

3. Der Selektor-Cache ist der größte Gewinn

(domain, normalized description){selector, fingerprint{tag, role, text_hash}, hits, misses} in SQLite.

Auflösungsreihenfolge: Cache-Treffer → Fingerabdruck verifizieren → verwenden, bei null Modellaufrufen. Bei Abweichung oder Fehlschlag wählt das Modell einen Index aus der Elementliste und der Cache wird neu geschrieben – Dendrites Selbstheilung, für die Manus kein Äquivalent hat. Eine wiedergegebene Fähigkeit auf einer gesunden Seite kostet überhaupt keine Modellaufrufe; strawmanus cache zeigt, was sich angesammelt hat.

4. Echter Browser zuerst

Standard ist ein persistentes Chrome-Profil, das strawmanus gehört – echte Cookies, Anmeldewände bereits gelöst, keine Anmeldedaten werden irgendwo gespeichert. --profile real verwendet Ihr tatsächliches Profil (Chrome muss geschlossen sein), --profile attach verbindet sich mit einem Chrome, das Sie selbst mit --remote-debugging-port=9222 gestartet haben, --profile fresh bietet einen sauberen Kontext für reproduzierbare Benchmarks. strawmanus auth --url <site> ist das Dendrite-Muster: Sie melden sich einmal manuell an, der Speicherzustand wird für spätere Headless-Läufe gespeichert.

5. Nichts Unumkehrbares geschieht stillschweigend

Jede Aktion wird vor dem Versand als lesen / weiches Schreiben / unumkehrbar klassifiziert. Senden, Absenden, Bezahlen, Löschen, Posten, Bewerben, Abonnieren, Übertragen, Zusammenführen, Pushen – und die Eingabetaste in einem Verfassen-Feld – werden zur Bestätigung mit einer Vorschau des Ziels und der Nutzlast zurückgehalten:

  ⚠  irreversible action held for confirmation
     what: click 'Send invoice' on x.com
      why: click target text contains 'send'
     approve? [y/N]

--auto-approve gilt nur für Domains, die mit --allow übergeben wurden. Zurückgehaltene Aktionen werden im Bericht unter „Zur Genehmigung zurückgehalten (nicht ausgeführt)" aufgeführt, sodass ein blockierter Schritt sichtbar ist und nicht stillschweigend fehlt. Jede Entscheidung wird in guard.json geschrieben.

6. Eine Tatsache ohne Quelle kann nicht ausgegeben werden

Strawberrys Benchmark-Rubrik wird zur Laufzeit durchgesetzt, nicht erst nachträglich bewertet. Fakten werden in ein Hauptbuch mit der URL, von der sie tatsächlich gelesen wurden, eingetragen; eine Suchmaschinen-Ergebnisseite wird als Quelle abgelehnt und das Modell wird angewiesen, die echte Seite zu öffnen. Die Konfidenz ist mechanisch – Hoch (2+ offizielle Quellen), Mittel (1), Niedrig (abgeleitet) – und report.render() wirft eine Ausnahme, anstatt eine Null-Quellen-Behauptung auszugeben. Berichte enden mit einer festen Statuszeile, Blockern, Telemetrie und der selbst eingeschätzten Autonomie des Agenten:

**Status:** Complete | **Entities Found:** 5/5 | **Duration:** 6.2 min

7. Fähigkeiten und Begleiter

Eine erfolgreiche Ablaufverfolgung wird zu einer parametrisierten Fähigkeit destilliert: Rausch-Tools werden entfernt, literale Argumentwerte durch {{param}} ersetzt, Elementtext bleibt erhalten, sodass jeder Schritt bei der Wiedergabe neu lokalisiert werden kann. Begleiter verteilen Teilaufgaben über Tabs hinter einem Semaphor, jeder mit seinem eigenen Ereignisstrom, und teilen sich den einen angemeldeten Browser.


Übergeben Sie den Browser direkt an Claude

Alles oben Genannte steuert den Agenten über die CLI. serve-mcp kehrt es um: Der Browser wird zu einem Werkzeug, das Claude im Gespräch hält, ein persistentes Chrome, das über mehrere Runden geöffnet bleibt, Werkzeugaufruf für Werkzeugaufruf gesteuert, wobei die Argumentation im Chat stattfindet und nicht in einer skriptgesteuerten Schleife.

claude mcp add strawmanus -- python -m strawmanus serve-mcp

Handgeschriebenes JSON-RPC 2.0 über stdio, keine zusätzliche Abhängigkeit. Alle 17 Browser-Tools plus 9 Trading-Tools. Chrome startet beim ersten Werkzeugaufruf, nicht bei der Registrierung, sodass das Hinzufügen des Servers kein Fenster öffnet. browser_takeover gibt sofort zurück, anstatt auf input() zu blockieren – stdin ist hier der Protokollkanal, also würde Blockieren den Server in eine Sackgasse führen; stattdessen stoppt das Modell und fragt Sie im Gespräch.

Die Trading-Tools zielen auf Olymp Trade und verfügen über eine Arithmetik-Schicht, ein Journal, das die Begründung hinter jedem Trade aufzeichnet, und Risikogrenzen, die im Code unterhalb der Argumentationsebene durchgesetzt werden, sodass eine Ablehnung endgültig ist. Die Designannahme ist, dass „kein Vorteil" die wahrscheinliche Antwort ist, und das Demo-Beweis-Gate existiert, damit diese Antwort erreichbar ist: Echtes Geld erfordert die untere Grenze des 95%-Wilson-Intervalls, um die Gewinnschwelle zu überschreiten, nicht die Punktschätzung. Ein Demo-Datensatz mit 120 Trades bei einer Gewinnrate von 61,7 %, plus 146,80, meldet immer noch edge proven NO.

TRADING.md enthält das vollständige Bild, einschließlich der AGB und strukturellen Risiken, die Sie lesen sollten, bevor Sie dies auf echtes Geld richten.


Benchmarks

bench/tasks.json enthält die 9 Aufgaben aus Strawberrys veröffentlichter B1–B12-Spezifikation, die keinen kostenpflichtigen Sitzplatz benötigen (B6–B8 benötigen Zugriff auf LinkedIn Sales Navigator / CRM / ATS), bewertet nach seiner Rubrik – Datengenauigkeit 35, Quellenqualität 25, Vollständigkeit 25, Einsicht 10, Geschwindigkeit 5 – abzüglich einer Straftabelle, die mit −20 pro erfundenen Datenpunkt angeführt wird.

Pro Benchmark laufen zwei Durchläufe. Der mechanische Durchlauf benötigt kein Modell und erfasst, was tatsächlich schiefgeht: Fakten ohne Quelle, Fakten mit nur einer Quelle, Entitätsdefizite, Überschreitungen der Zeitvorgabe, abgesicherte numerische Sprache. Der --judge-Durchlauf bewertet dann mit einem separaten Modellaufruf, der nur das ausgegebene Markdown sieht – der Agent benotet nie seine eigenen Hausaufgaben.

Tests

python tests/test_core.py    # 33 offline: no browser, no network, no API key
python tests/test_live.py    # 6 end-to-end: real headless Chrome, scripted stub model

Die Live-Suite führt den gesamten Stack gegen ein echtes DOM aus, wobei das Modell durch ein Skript ersetzt wird, was die Invarianten ohne Schlüssel überprüfbar macht: das Snapshot-JS gegen echtes HTML, die Wache, die Send invoice ablehnt, während Show details erlaubt wird (behauptet auf dem eigenen Zustand der Seite, nicht auf dem Rückgabewert), der Cache, der von kalt zu warm wechselt, während die Anzahl der Modellaufrufe konstant bleibt, ein Werkzeugaufruf pro Iteration, eine abgelehnte und gemeldete Snippet-Quelle und eine Fähigkeit, die mit einem neuen Argument wiedergegeben wird.

Layout

strawmanus/
  cli.py  config.py  loop.py  llm.py
  prompts/system.md          # agent loop, browser, information, safety, deliverable rules
  browser/
    session.py   # CDP attach / persistent profile / fresh context, tabs, storage state
    observe.py   # the three-layer observation
    actions.py   # Manus's 12 + 5, on Playwright
    selectors.py # NL selector → cache → fingerprint verify → self-heal
    guard.py     # risk classifier, confirm gate, secret redaction
  memory/
    store.py     # SQLite: prefs, per-domain quirks, run log
    skills.py    # trace → parameterized skill; replay with relocation
  research/
    sourcing.py  # citation ledger
    report.py    # the deliverable contract
  bench/
    tasks.json  judge.py

Noch nicht gebaut

Trigger (Auslösen einer Fähigkeit aus einem Gmail-Label oder einem GitHub-PR), MCP-Konnektoren und Manus' Datei-Tools sind entworfen, aber nicht implementiert. Die modellgesteuerte Schleife wurde Ende-zu-Ende gegen einen skriptgesteuerten Stub getestet, noch nicht gegen einen Live-API-Schlüssel.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    Transforms Chrome browser into an AI-controlled automation tool that allows AI assistants like Claude to access browser functionality, enabling complex automation, content analysis, and semantic search while preserving your existing browser environment.
    MIT
  • A
    license
    B
    quality
    F
    maintenance
    Enables AI agents to directly control your real Chrome browser with full context including login sessions, cookies, and open tabs. It provides tools for page scanning, JavaScript execution, CDP control, screenshots, and physical mouse/keyboard input for authentic browser automation.
    20
    241
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Enables controlling a real Chrome browser from MCP hosts like Claude, with extension-based or CDP fallback, supporting tabs, navigation, interaction, and page reading tools.
    33
    40
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables browser automation through the Claude Chrome Extension, allowing agents to navigate websites, fill forms, take screenshots, and debug web apps via standard MCP protocols.
    1
    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/painbaba/strawmanus'

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