Pasting the address you use for Officer produced http://https://platform.officer.dev:18792/ — the scheme was taken as part of the hostname and http:// prepended anyway. It failed as "Relay not reachable", which reads as the relay being down rather than the URL being mangled. normalizeHost strips a scheme, a path and credentials, keeps IPv6 brackets, and lifts a port out of the address so pasting host:9000 moves the port field instead of dropping it. The field is rewritten with the result, so what is shown is what is stored. The scheme is now always https, and wss for the socket, whatever was typed. The relay carries a pairing token on every request and drives a browser someone is signed into; plaintext because a field was left blank is not a default worth having. CONSEQUENCE, stated rather than discovered: the relay itself still serves plain HTTP on 18792, so the extension cannot connect until it is behind TLS. That is a proxy host away and it is the right shape — the raw port was never reachable from anywhere but the tailnet anyway. The unreachable message now says what was tried and that the port is normally private, instead of "verify the server address", which is true and useless when the address is fine. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Browser
Drive your own browser from Officer — your tabs, your sessions, your logins.
This is not a scraper. It attaches to the Chrome you are already using, so a page behind a login is a page Officer can see, because you are signed in to it. Ask an agent about what is on your screen, have it read a tab, navigate, or take a screenshot of something no headless browser could reach.
You install an extension. The plugin ships it; Chrome loads it from disk, and you paste one address and
one token from Settings to pair. extension/SETUP.md has the steps.
Each account pairs its own browser. Two people on one server drive two different browsers, and neither can see the other's tabs.
Not yet tested end to end. The relay moved from inside the platform to its own process as part of this
extraction, and no browser has been paired against it since. It typechecks and installs; whether an
extension connects is the next thing to find out. BLOCKERS.md is honest about the rest.
Needs no host packages — the relay is Bun, and Chrome is on whatever machine you are sitting at.