Repository navigation
Architecture
How the three Chat Export repos connect on your machine: Chrome extension (logged-in provider tabs), local MCP server on 127.0.0.1, and optional operator dashboard. All automation uses the MV3 extension bridge in your browser profile — not Chrome DevTools MCP and not cloud vendor APIs for chat ops.
Related: Installation and Quickstart · Native, Docker, and Kubernetes Deployment · Dashboard and security · Use cases · RU
The extension injects export UI and talks WebSocket to the server when the bridge is enabled. MCP clients (Cursor, Claude Desktop, Open WebUI, local LLMs, etc.) call HTTP MCP on the same host. Dashboard static UI is served by the server at /dashboard/ when embedded.
flowchart LR
subgraph browser [Your Chrome]
EXT[Chat Export extension]
TABS[Provider web tabs]
TABS <--> EXT
end
subgraph local [127.0.0.1]
SRV[chat-export-server]
DASH[Dashboard /dashboard]
SRV --- DASH
end
subgraph agent [Your IDE]
MCP[Cursor / MCP client]
end
EXT <-->|WebSocket ceb_| SRV
MCP <-->|HTTP MCP cem_/cek_| SRV
Tokens: ceb_ — extension WebSocket (/ws); cem_ / cek_ — MCP (/mcp). Plaintext keys are shown once; only hashes are stored server-side for MCP keys.
The browser hub accepts one or two Chrome profiles (ceb_ connections), enqueues long work per browser lane, persists a SQLite chat cache, exposes MCP tools, and serves dashboard APIs.
flowchart TB
EXT[Chrome extension] <-->|WS /ws ceb_| HUB[Browser hub]
HUB --> Q[Job lanes per browser]
Q --> MCP[MCP /mcp]
MCP --> AGENT[Cursor etc. cem_/cek_]
HUB --> API[Dashboard /dashboard/api]
API --> UI[Dashboard static UI]
Q --> DB[(SQLite cache + WAL)]
Endpoints (typical): /ws and /ext — extension; /mcp — MCP; /health — probe; /dashboard/ — operator UI; /dashboard/api — authenticated dashboard RPC.
The dashboard is static React built into the server tree. The operator's browser loads UI assets; session cookie ce_dash_sid gates API calls to the same origin.
flowchart LR
USER[Operator browser]
USER --> DASH[/dashboard UI/]
DASH --> API[/dashboard/api/]
API --> SRV[chat-export-server core]
SRV --> EXT[Extension WS]
-
Manual export — content scripts read the live DOM in provider tabs; downloads use
chrome.downloadsonly. No server required. -
MCP automation — MCP client →
POSTStreamable HTTP on/mcp→ server enqueues jobs → WebSocket RPC to extension → in-tab actions (list, get, export, create, ask, delete with gates). -
Dashboard — browser session to
/dashboard/→ API on/dashboard/api→ same process as MCP (read-only monitoring + token/browser management).
Protocol schemas: packages/protocol/ in chat-export-server.
| Surface | Where documented |
|---|---|
Native CLI (chat-export-server start) |
Installation and Quickstart, server README |
| Docker / Colima | Native and Kubernetes Deployment |
Kubernetes (deploy/k8s) |
Native and Kubernetes Deployment, server deploy/k8s/README.md
|
| Split nginx front (optional) | Dashboard and security, dashboard README |
Two-tier consent in the extension (LEGAL.md): general export disclaimer and advanced MCP / automation opt-in. See Home — Legal & Two-Tier ToS.