<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sz-chrome-remote-extension.git/broker, branch master</title>
<subtitle>pi-chrome, patched to drive a signed-in browser on another host through a broker, with an MCP server
</subtitle>
<id>https://git.soarez.net/sz/sz-chrome-remote-extension.git/atom?h=master</id>
<link rel='self' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/'/>
<updated>2026-11-06T09:20:16+00:00</updated>
<entry>
<title>broker: refuse uploads from outside the staging directory</title>
<updated>2026-11-06T09:20:16+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-11-06T09:20:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=85b49885256464b735923eaa771044706383718f'/>
<id>urn:sha1:85b49885256464b735923eaa771044706383718f</id>
<content type='text'>
page.upload and a raw DOM.setFileInputFiles through cdp.call now have to name
files whose real path is under /tmp/pi-chrome-uploads (PI_CHROME_UPLOAD_DIR),
on the broker's host. Anyone holding the token could otherwise attach any file
the user can read to a page.
</content>
</entry>
<entry>
<title>broker: a standalone bridge for the browser's host</title>
<updated>2026-10-14T11:15:57+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-14T11:08:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/sz-chrome-remote-extension.git/commit/?id=f2e93bba02734461b4e40a1a2684372e6f2437c7'/>
<id>urn:sha1:f2e93bba02734461b4e40a1a2684372e6f2437c7</id>
<content type='text'>
Upstream's bridge lives inside whichever pi session started first on the
machine running the browser, and only serves that machine. The broker takes
its place permanently: upstream's HTTP contract to the extension on loopback,
and /command and /status on a second, private address for other hosts, behind
a bearer token (PI_CHROME_TOKEN, or PI_CHROME_TOKEN_COMMAND).
</content>
</entry>
</feed>
