Skip to main content
Glama

Tether

Tether hero

Private, local-first browser control for AI assistants.

One connector. Every AI. Your browser, your rules.


Connect any AI assistant — Claude, ChatGPT, Codex, Cursor — to your real, logged-in browser, with per-site permissions, per-action approvals, and a tamper-evident audit log. No cloud relay required.

Tether is a connector, not an agent: the AI client brings the reasoning, Tether enforces your governance. Policy is evaluated in exactly one place — the extension's policy engine — so a compromised client or relay gains zero capabilities (TRD §2.3).

⚠️ Beta. Tether is under active development. See Beta limitations before relying on it.


Quick start

git clone https://github.com/tether-ai/tether.git
cd tether
pnpm install
pnpm build

# Start the local daemon
node apps/daemon/dist/index.js serve

# Load the unpacked extension
#   chrome://extensions → Developer mode → Load unpacked
#   → apps/extension/.output/chrome-mv3

Then point your MCP client at http://127.0.0.1:18796/mcp (streamable HTTP) or run node apps/daemon/dist/index.js connect claude-code to configure a harness automatically.

Tether demo — snapshot → click flow, recorded from the real daemon + Chrome


Related MCP server: Umbra MCP Server

How it works

┌──────────────┐   MCP (stdio / HTTP)   ┌─────────────────┐
│  AI client   │ ◄────────────────────► │  Local daemon   │
│ (your model) │                        │  127.0.0.1 only │
└──────────────┘                        └────────┬────────┘
                                                 │ loopback WS + token auth
                                        ┌────────▼────────┐
                                        │  MV3 extension  │
                                        │  policy engine  │  ← the single point
                                        │  redaction      │    where capability
                                        │  audit chain    │    is granted
                                        └─────────────────┘
  • 40 tools across read (browser_snapshot, browser_find, browser_get_text, …) and act (browser_click, browser_type, browser_submit, …), plus the kill switch and vault integration.

  • Zero plaintext on the wire for hosted mode — X25519 + AES-256-GCM sealed envelopes end-to-end; the relay carries no readable content (PRV-03).

  • Local OCR screenshot redaction — browser_screenshot redacts rendered secrets (PAN, email, bearer tokens, API keys, private keys) on this machine before the image is returned. Image bytes never leave the device.

  • Kill switch — one click aborts in-flight actions, closes sockets and revokes tokens in < 200 ms, from three entry points, and stays killed across reconnects (HR-10) until you explicitly reset it.

  • Tamper-evident audit chain — every state-changing action is recorded write-ahead; hashes chain entries so tampering is detectable.


Three modes (PRD §7.2)

Mode

Path

Best for

Status

A — Local

AI client ⇄ 127.0.0.1 daemon ⇄ extension

CLI & IDE harnesses (Claude Code, Codex, Cursor)

✅ shipped

B — Hosted

Extension ⇄ outbound WSS ⇄ relay ⇄ public /mcp

ChatGPT Business+, claude.ai, mobile

🚧 in progress

C — In-page

WebMCP proxy + optional chat-UI bridge

Gemini in Chrome, web chatbots

🔬 experimental

Mode A requires no network access and no cloud account. Everything runs on your machine.


Why it's safe by construction

Risk

Control

Secret leakage into model context

Outbound redaction (PAN w/ Luhn, email, phone, IBAN, bearer/JWT, API keys, private-key blocks) + on-device OCR redaction of screenshots

Unapproved destructive actions

Three-tier policy (T0 read / T1 write / T2 submit), T2 requires a per-action diff + single-use confirmation token

Prompt injection from web pages

Page content is untrusted data (HR-6); injection fixtures in the 50-task eval suite

Runaway agents

Rate limits, action budgets (< 30 s or resumable task handles), kill switch

Silent surveillance

No telemetry, no crash reporting, no update pings without explicit opt-in (HR-13)

Over-broad permissions

optional_permissions granted at runtime from user gestures, each justified in PERMISSIONS.md (HR-3)

Full analysis: THREAT_MODEL.md.


Beta limitations

We'd rather tell you than oversell:

  • Demo Mode is not shipped — there is no simulated browser; Tether drives your real Chrome.

  • Egress monitoring is detect-only in v1 — main-world fetch/XHR instrumentation alerts but does not block; CDP-based blocking arrives with Power Mode (v1.1).

  • Chrome only — no Firefox/Safari port yet (Firefox lacks a chrome.debugger equivalent); no mobile.

  • WebMCP in-page bridge requires Chrome 149+ and is experimental, opt-in, and clearly labelled.

  • Screenshot OCR redaction is best-effort — it runs locally and is pattern-driven; heavily stylised fonts or text baked into images-of-images may evade it. Screenshots are always annotated openWorldHint:true and the side panel shows an amber badge when OCR is unavailable.

  • Hosted relay (Mode B) is in development — the self-host path exists (apps/relay, RELAY_MODE=selfhost) but the managed relay is not generally available.


Documentation

Doc

Contents

PRD.md

Product requirements, hard rules (§4), non-goals (§3.2)

TRD.md

Technical design, module boundaries, dependency table

THREAT_MODEL.md

SEC-01…SEC-14 threat→control matrix

PERMISSIONS.md

One row per manifest permission + justification

SECURITY.md

Reporting vulnerabilities, disclosure policy, bounty

CONTRIBUTING.md

Dev setup, code style, PR process

docs/RELEASE.md

Release gates

docs/

Submission prep, traceability, protocol reference


Contributing

Issues and pull requests are welcome! Start with CONTRIBUTING.md — it covers dev setup, the (strict!) code style, and the testing bar. Security bugs: please follow SECURITY.md rather than opening a public issue.


License

MIT © Tether Authors

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Lets AI assistants control your real Chrome browser to perform web tasks like reading pages, taking screenshots, clicking, and typing, using your existing logged-in sessions.
    133
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to securely control a user's existing Chrome profile locally, providing typed browser actions, form and editor support, WordPress workflows, terminal automation, and Figma inspection with policy-based authorization and redacted auditing.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to drive a real, already logged-in browser from the CLI or over MCP, with enforceable approval gates for actions and safeguards against prompt injection.
    1,795,674 npm
    1
    Mozilla Public 2.0