Tethernet is a developer tool published by ByteClub. Contact: mike@byteclub.com
Tethernet creates a local WebSocket connection between your Chrome browser and a server process running on your own machine (localhost). This allows a locally-running AI assistant (such as Claude Code) to read page content, take screenshots, inspect network traffic, and interact with web pages at your direction.
This is a developer tool. It requires manual setup, a locally-running server process, and an explicit consent step before any capability is active. It does nothing on its own.
| Data type | When accessed | Where it goes |
|---|---|---|
| Page content, DOM structure, text | Only when a developer session is active and a command is issued | Your local machine only (ws://localhost) |
| Screenshots | Only when explicitly requested | Your local machine only |
| Network request metadata (URLs, headers, status codes, timing) | Only during active capture sessions or when passive mode is enabled | Stored in-memory in the extension; accessible only to your local session |
| HTTP response bodies | Only during active debugger-attached capture sessions | Your local machine only |
| Non-HttpOnly cookies | Only when explicitly requested | Your local machine only |
| JavaScript execution results | Only when a script is sent from your local session | Returned to your local machine only |
| Passive mode network log | When passive mode is enabled by the user | Stored in-memory in the extension (ring buffer, max 500 entries); never transmitted externally |
| Permission | Why it is required |
|---|---|
tabs | List open tabs, switch between them, and identify the active tab for commands. |
storage | Persist user consent state and the local server port between browser sessions. |
webNavigation | Enumerate iframes within a page so developers can inspect them. |
webRequest | Capture HTTP request metadata (URL, method, headers, status, timing) during developer debugging sessions and passive mode. Listeners are installed but idle — no processing occurs when capture is not active. |
cookies | Read and set non-HttpOnly cookies to help debug authentication and session state — equivalent to the DevTools Application panel. HttpOnly cookies remain inaccessible per Chrome's design. |
scripting | Execute JavaScript in pages at the developer's direction — equivalent to the DevTools console. Code originates exclusively from the user's local process, never from a remote server. |
offscreen | Maintain a persistent WebSocket connection. Chrome MV3 service workers are killed after ~30 seconds of inactivity; the offscreen document keeps the connection to localhost alive. |
debugger | Capture HTTP response bodies during active capture sessions — the same data visible in the DevTools Network panel. Without this API, response payloads are inaccessible to extensions. The debugger attaches only to the active tab, only while a capture session is explicitly running, and detaches immediately when the session ends. Chrome shows an "automated software" info bar on the recorded tab during this time. |
windows | Focus the correct browser window before taking a screenshot when multiple windows are open. |
downloads | Monitor download completion events to report filename, size, and MIME type after the user initiates a download. No files are downloaded or modified autonomously. |
<all_urls> | Content scripts must be injectable on any page because developers work across many different sites. Nothing happens on any page unless the user has connected and issued a command. Chrome automatically blocks injection on chrome://, chromewebstore.google.com, and other sensitive pages. |
On first install, an onboarding page opens explaining every capability and its risks — including prompt injection — before any functionality is enabled. The user must check a consent checkbox before the extension activates. Consent can be revoked at any time from the extension popup, which immediately disconnects the session and disables all capabilities.
The WebSocket connection is always ws://localhost:PORT — it never connects to any remote server. The port is entered manually by the user and changes each session. All data exchanged stays on the user's own machine. The extension has no hardcoded remote endpoints.
Tethernet is a developer tool not intended for users under 13. We do not knowingly collect any information from children.
Material changes will be reflected in the "Last updated" date above.