Repository navigation
Opt-in browser automation budgets and a readiness signal for coding agents #16356
Replies: 1 comment
|
One data point from the other side of the boundary you draw ("embedded browser tools that cannot select a launcher would remain outside enforcement"). In Mars (the browser we are building in Rust, with its own agent interface) we put the admission inside the browser instead of in front of it, and it covered that gap for free. How it works: one browser process listens on a per-user unix socket (0600, private directory, fresh token per run) and agents attach to it as lanes. The cap is 8 attached agents; the ninth gets a refusal with the reason ("Too many agents are attached.") instead of a hang or a retry loop. Each lane may hold at most 8 open tabs, and the ninth Two things that made it hold up, both of which line up with your proposal:
What we do not have, and your proposal does: a minimum launch interval, a runtime limit, and any hardware-health input. Our caps are counts only. If the freeze you saw turns out to be GPU mapping pressure rather than concurrency, a count cap like ours would not have saved you. |
Uh oh!
There was an error while loading. Please reload this page.
Could Omarchy offer an opt-in browser automation launcher and a machine-readable readiness signal for coding agents?
When several agent sessions run browser checks on the same workstation, each can make reasonable decisions locally while their combined workload competes with the interactive desktop. Agent instructions can recommend restraint, but separate sessions need a shared admission mechanism and a current signal telling them when to defer browser work.
The proposed first contribution is deliberately small:
Illustrative command names, not a proposed final CLI:
This would govern participating automation only. Embedded browser tools that cannot select a launcher would remain outside enforcement. It should preserve literal arguments, exit status, cancellation, and Playwright's pipe transport; use private per-user state; avoid interactive profiles; and never broadly kill browsers or reset the display GPU. A cooperative process-group supervisor is not a sandbox, and a cgroup alone should not be assumed to contain Chromium when it creates its own application scope.
Optional hardware-health adapters and bounded diagnostics could follow separately. They should distinguish unsupported or stale evidence from healthy readings. In particular, free framebuffer VRAM does not prove that GPU virtual-address mappings are available. A vendor-specific monitor should not become a default dependency for every machine.
The motivation was an unclean shutdown on an NVIDIA/Wayland workstation, preceded by repeated mapping-allocation failures and an application crash. The cause remains unresolved: there is no proof that coding agents caused the freeze, and counts of Chromium-named systemd scopes are not counts of browser roots or concurrent sessions. This suggestion is about workload coordination and feedback, not a claimed driver fix or a verified Omarchy bug.
A local prototype now uses a shared supervised launcher, continuous byte-bounded GPU evidence, independent freshness checks, and persistent agent guidance. It passed 24 synthetic tests covering admission, cancellation, orphan detection, stale health, file handling, and rollback; a real headless Playwright
about:blanklaunch verified pipe compatibility and cleanup. A live stop/restart check verified stale-status refusal and recovery. Those observations establish the exercised boundaries, not long-term prevention of desktop freezes. The prototype's paths, NVIDIA assumptions, and policy defaults need generalizing before an upstream patch.Related work, with different scope:
Would maintainers prefer a small core launcher/status contract with agent documentation, or an external optional tool documented by Omarchy? I'd target a focused PR once that ownership boundary is agreed, keeping GPU diagnostics separate.
AI assistance: GPT-6 via Codex. Submitted on the user's behalf; validation claims above describe the local prototype only.
All reactions