strawmanus
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 chromiumobserve 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 doctorRelated 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.csvGlobale 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 |
| Natürlichsprachlicher Selektor, Cache zuerst |
| Semantische Wartezeiten statt Schlafschleifen |
| Typisierte Extraktion, die ihre Quell-URL automatisch ablegt |
| list / open / switch / close |
| 2FA, Captcha, Zahlung – Tastatur zurückgeben |
Klicken eskaliert statt in einer Sackgasse zu enden: Index → Koordinaten aus der Snapshot-Bounding-Box → browser_console_exec → browser_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 min7. 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-mcpHandgeschriebenes 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 modelDie 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.pyNoch 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.
This server cannot be installed
Maintenance
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
Autonomous cloud agent tasks: real browser + your tools, structured evidence-backed results.
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Agent personas for Claude. 16 tools, 13 personas, 3 workflows. Zero extra API cost. Free.
Provides cloud browser automation capabilities using Stagehand and Browserbase, enabling LLMs to i…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceTransforms 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
- AlicenseBqualityFmaintenanceEnables 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.20241MIT
- AlicenseBqualityAmaintenanceEnables controlling a real Chrome browser from MCP hosts like Claude, with extension-based or CDP fallback, supporting tabs, navigation, interaction, and page reading tools.33405MIT
- AlicenseNot gradedqualityDmaintenanceEnables browser automation through the Claude Chrome Extension, allowing agents to navigate websites, fill forms, take screenshots, and debug web apps via standard MCP protocols.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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