Guide
Give an agent a real browser
Some work only exists in a browser: a portal without an API, a screen behind a login, a flow that has to be seen. A browser seat puts that browser behind the router so any seat the owner allows can ask for it — without installing the browser on a server. The browser starts on demand; the connector must be connected for a job to arrive, either continuously or for a scheduled wake window. Status: the adapter is in the repository and was verified in a live run across the network.
One browser, many agents
The browser is installed once, on the machine of the person who owns the session: a PC or a laptop, because the browser is a desktop application. The seat connects out to the router, so no inbound port, VPN or port forward is needed.
Every agent that person allows dispatches a job to that seat. The seat is bound to one person and one profile, because a browser's identity is the person who is logged in, not the organization.
Run the seat
The adapter is a small process that takes a job, runs the listed steps through the browser, and returns what happened. It starts the browser if it is closed and never stops it: closing the application would take the owner's tabs with it.
EGO_BROWSER_CLI— path to the browser CLI on that machineEGO_PROFILE_ID— the profile the seat uses; one seat per profileBROWSER_ALLOWED_ORIGINS— the agent seats that may call itBROWSER_ALLOWED_DOMAINS— the hosts it may visitBROWSER_CONTENT_POLICY—workormetadata-onlyBROWSER_STATE_PATH— dedupe and quota file, so a restart does not re-run a job
The job
A job carries a closed list of steps: navigate, click, fill, wait, extract, screenshot, title. Anything else is rejected before the browser is touched. The result keeps the router's envelope and adds the URL, the title, the extracted rows and receipts with timings.
{ "steps": [
{ "op": "goto", "url": "https://portal.example.com/orders" },
{ "op": "extract", "selector": "table tr", "fields": ["text"], "limit": 20 }
] }
Who may use it, and what leaves it
Three checks stand between a caller and the browser: the router only lets allowed seats address it, the seat rejects any other origin before running, and revoking the seat cuts it off within seconds.
A personal profile runs in metadata-only mode: the seat still performs actions, but extraction and screenshots are refused, so page content never leaves the browser and is never stored. Work profiles may return content, within the artifact retention of the deployment.
The same idea for tests
Browser automation explores; it does not prove. Deterministic web tests belong to a separate seat that runs a fixed suite and returns a failure bundle: the failing test, the step, the error code, a screenshot and a trace, plus whether it is flaky.
That bundle is what a development agent can act on. The browser seat is for the flows that only exist behind a login; the test seat is for regression.