cmux-browser▌
manaflow-ai/cmux · updated Apr 8, 2026
Browser automation for cmux webviews with snapshot-based element targeting and state verification.
- ›Open surfaces, navigate, and verify URLs before acting; snapshot with --interactive to get fresh element references for clicks, fills, and selections
- ›Wait patterns support selectors, text content, URL changes, load states, and custom JavaScript functions with configurable timeouts
- ›Recommended workflow: navigate → verify URL → wait for load state → snapshot → act → snapshot again to hand
Browser Automation with cmux
Use this skill for browser tasks inside cmux webviews.
Core Workflow
- Open or target a browser surface.
- Verify navigation with
get urlbefore waiting or snapshotting. - Snapshot (
--interactive) to get fresh element refs. - Act with refs (
click,fill,type,select,press). - Wait for state changes.
- Re-snapshot after DOM/navigation changes.
cmux --json browser open https://example.com
# use returned surface ref, for example: surface:7
cmux browser surface:7 get url
cmux browser surface:7 wait --load-state complete --timeout-ms 15000
cmux browser surface:7 snapshot --interactive
cmux browser surface:7 fill e1 "hello"
cmux --json browser surface:7 click e2 --snapshot-after
cmux browser surface:7 snapshot --interactive
Surface Targeting
# identify current context
cmux identify --json
# open routed to a specific topology target
cmux browser open https://example.com --workspace workspace:2 --window window:1 --json
Notes:
- CLI output defaults to short refs (
surface:N,pane:N,workspace:N,window:N). - UUIDs are still accepted on input; only request UUID output when needed (
--id-format uuids|both). - Keep using one
surface:Nper task unless you intentionally switch.
Wait Support
cmux supports wait patterns similar to agent-browser:
cmux browser <surface> wait --selector "#ready" --timeout-ms 10000
cmux browser <surface> wait --text "Success" --timeout-ms 10000
cmux browser <surface> wait --url-contains "/dashboard" --timeout-ms 10000
cmux browser <surface> wait --load-state complete --timeout-ms 15000
cmux browser <surface> wait --function "document.readyState === 'complete'" --timeout-ms 10000
Common Flows
Form Submit
cmux --json browser open https://example.com/signup
cmux browser surface:7 get url
cmux browser surface:7 wait --load-state complete --timeout-ms 15000
cmux browser surface:7 snapshot --interactive
cmux browser surface:7 fill e1 "Jane Doe"
cmux browser surface:7 fill e2 "jane@example.com"
cmux --json browser surface:7 click e3 --snapshot-after
cmux browser surface:7 wait --url-contains "/welcome" --timeout-ms 15000
cmux browser surface:7 snapshot --interactive
Clear an Input
cmux browser surface:7 fill e11 "" --snapshot-after --json
cmux browser surface:7 get value e11 --json
Stable Agent Loop (Recommended)
# navigate -> verify -> wait -> snapshot -> action -> snapshot
cmux browser surface:7 get url
cmux browser surface:7 wait --load-state complete --timeout-ms 15000
cmux browser surface:7 snapshot --interactive
cmux --json browser surface:7 click e5 --snapshot-after
cmux browser surface:7 snapshot --interactive
If get url is empty or about:blank, navigate first instead of waiting on load state.
Deep-Dive References
| Reference | When to Use |
|---|---|
| references/commands.md | Full browser command mapping and quick syntax |
| references/snapshot-refs.md | Ref lifecycle and stale-ref troubleshooting |
| references/authentication.md | Login/OAuth/2FA patterns and state save/load |
| references/authentication.md#saving-authentication-state | Save authenticated state right after login |
| references/session-management.md | Multi-surface isolation and state persistence patterns |
| references/video-recording.md | Current recording status and practical alternatives |
| references/proxy-support.md | Proxy behavior in WKWebView and workarounds |
Ready-to-Use Templates
| Template | Description |
|---|---|
| templates/form-automation.sh | Snapshot/ref form fill loop |
| templates/authenticated-session.sh | Login once, save/load state |
| templates/capture-workflow.sh | Navigate + capture snapshots/screenshots |
Limits (WKWebView)
These commands currently return not_supported because they rely on Chrome/CDP-only APIs not exposed by WKWebView:
- viewport emulation
- offline emulation
- trace/screencast recording
- network route interception/mocking
- low-level raw input injection
Use supported high-level commands (click, fill, press, scroll, wait, snapshot) instead.
Troubleshooting
js_error on snapshot --interactive or eval
Some complex pages can reject or break the JavaScript used for rich snapshots and ad-hoc evaluation.
Recovery steps:
cmux browser surface:7 get url
cmux browser surface:7 get text body
cmux browser surface:7 get html body
- Use
get urlfirst so you know whether the page actually navigated. - Fall back to
get text bodyorget html bodywhensnapshot --interactiveorevalreturnsjs_error. - If the page is still failing, navigate to a simpler intermediate page, then retry the task from there.
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.6★★★★★75 reviews- ★★★★★Min Johnson· Dec 24, 2024
Solid pick for teams standardizing on skills: cmux-browser is focused, and the summary matches what you get after install.
- ★★★★★Anaya Sanchez· Dec 24, 2024
We added cmux-browser from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Harper Jackson· Dec 20, 2024
cmux-browser has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Min Jackson· Dec 16, 2024
I recommend cmux-browser for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
- ★★★★★Nikhil Khan· Dec 8, 2024
cmux-browser fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Amina Khanna· Dec 4, 2024
Keeps context tight: cmux-browser is the kind of skill you can hand to a new teammate without a long onboarding doc.
- ★★★★★Nikhil Anderson· Nov 27, 2024
We added cmux-browser from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Kofi Desai· Nov 23, 2024
cmux-browser is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
- ★★★★★Anika Gill· Nov 19, 2024
I recommend cmux-browser for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
- ★★★★★Nikhil Brown· Nov 15, 2024
cmux-browser reduced setup friction for our internal harness; good balance of opinion and flexibility.
showing 1-10 of 75