> Remote access must use HTTPS with valid TLS. Plain HTTP is acceptable only on a loopback interface for local development. Never expose Oyster directly to an untrusted network over unencrypted HTTP.
Oyster can execute coding-agent tools, edit workspace files, manage credentials, and start local services. Treat access to it like shell access to the host.
The bearer token authenticates a client; it does not encrypt traffic. Without TLS, an observer can capture the token, prompts, transcripts, file contents, OAuth interactions, and API requests.
Terminate TLS before traffic crosses an untrusted network. Supported patterns include:
1 2browser ── HTTPS ──> cloudflared edge ── tunnel ──> 127.0.0.1:8080 browser ── HTTPS ──> TLS reverse proxy ── HTTP ──> 127.0.0.1:8080
An HTTP hop is acceptable only when it is confined to loopback or an equivalently trusted private boundary. Use a trusted certificate and verify that browsers show HTTPS without certificate warnings.
Do not publish port 8080 directly. Bind to 127.0.0.1 when a same-host tunnel or reverse proxy is the only intended entry point:
1HOST=127.0.0.1 node server/server.mjs
PI_UI_TOKEN and store it outside source control./#token=…; fragments are not sent in HTTP requests, and the application removes it after capture.Provider credentials remain in pi's auth.json, but authenticated users can manage them and can run agents that use them. OAuth authorization data is transient, yet it still travels through the browser and server during an active flow. TLS protects that data in transit.
Removing a local API key or OAuth credential does not revoke it upstream. Revoke compromised keys and connected-app grants with the provider.
.ui-token, auth.json, SQLite files, and backups with host permissions.cloudflared updated.