A submarine with a sonar.
The plugin doesn't think — that's the browser's job. It listens for the agent's tool calls, executes them locally in your project, and reports the outcome back. Quiet, transparent, and the only thing on this hull is what you can read in the source.
pk-live-f3e9·······a8c4
What's inside.
The Web Connector is a single Lua plugin — about 3,300 lines — that does four things: handshake, index, poll, execute. Nothing more.
It does not contain a model, a parser, an LLM client, or a UI for chatting. All of that is in the browser. The plugin is the part that touches your project, and we kept it small on purpose so you can read it.
Tools the plugin can execute
Permissions, in plain English.
Studio asks you to allow two things on first connect. Here's exactly what each one does and why we need it.
pisces-agent…us-east4.run.app. Long-poll for tool calls, send back results. Nothing else outbound, nothing third-party, nothing automatic.ChangeHistoryService entry — Ctrl+Z restores instantly.What you won't find in the source.
- No
loadstring. Nothing is dynamically evaluated. - No remote
require. The plugin doesn't pull module IDs from the cloud at runtime. - No
getfenv/setfenv. No environment hacking. - No telemetry. No analytics SDK, no third-party pixel, no fingerprinting. The server only sees what you typed and the tool results that came back.
- No background activity. When you click Disconnect (or close Studio), the polling loop stops within ~1 second.
Open pisces_web_plugin.lua on the public repo and read it end-to-end if you want — it's not minified, not compiled, not a single obfuscated require shrugging at you. The whole point of the bridge being open is that you can verify everything we just said.