Read-only live state of your Chrome tabs for AI agents: fields, console errors, network, storage.
Live browser-state verification for AI coding agents.
Your AI says "done." Exnos is how it knows.
One tool call returns the full state of the Chrome tab you're looking at: every field, every button, every console error, network requests, storage, performance—in milliseconds. Read-only. Local. Free and open source.
By GOL Productions.
AI coding agents edit files and hope for the best. When something breaks:
You: "The button doesn't work"
AI: "Can you check the console for errors?"
You: "It says TypeError something something"
AI: "Can you paste the full error?"
Back and forth. Slow. Frustrating.
You: "The button doesn't work"
AI: [calls exnos_verify]
AI: "Console shows 'TypeError: handleClick is not defined' at line 47.
The handler was renamed to onClick. Fixing now."
Exnos gives your AI eyes. It sees what you see—instantly.
npx @golproductions/exnos@latest setup
That's it. Detects Claude Code, Cursor, and Windsurf—registers with all of them, opens the extension folder, tells you to load it in Chrome. Takes 30 seconds.
1. Connect your agent
{ "mcpServers": { "exnos": { "command": "npx", "args": ["@golproductions/exnos"] } } }
Or for Claude Code:
claude mcp add --scope user exnos -- npx @golproductions/exnos
2. Load the extension
npx @golproductions/exnos@latest path
Open chrome://extensions → Developer mode → Load unpacked → select that folder.
Badge reads ON when connected.
| Category | Data |
|---|---|
| Identity | URL, title, ready state |
| Forms | Every visible field with live value (passwords masked) |
| Buttons | Text and disabled state |
| Checkboxes | Checked state with labels |
| Alerts | Visible error/success/warning UI |
| Console | Errors and uncaught exceptions since page load |
| Network | Every fetch/XHR: URL, status, response body. Failures first. |
| WebSocket | Sent and received frames |
| Storage | localStorage, sessionStorage, cookies |
| Performance | Page load, TTFB, paint timing, long tasks, heap |
| Focus | Which element has focus |
| Shadow DOM | Pierces web component boundaries |
| Iframes | Same-origin content + cross-origin count |
| App State | window.__* values |
| Screenshot | Optional PNG capture |
| Tool | Purpose |
|---|---|
exnos_verify | Full live state. The main tool. |
exnos_tabs | List all open tabs. |
exnos_screenshot | PNG screenshot of visible tab. |
exnos_fetch_tabs | Verify multiple tabs at once. |
| Parameter | Description |
|---|---|
tab | Match tab by URL or title substring. Default: active tab. |
selector | CSS selector for deep-dive: text, bounds, computed styles, HTML. |
includeHidden | Include off-screen elements. Default: false. |
screenshot | Also capture PNG. Returns data URL. |
Pass selector to get:
selectorText — inner text contentselectorVisible — actually visible?selectorBounds — {top, left, width, height}selectorHTML — outer HTMLselectorStyles — computed: color, backgroundColor, fontSize, fontWeight, fontFamily, padding, margin, border, zIndex, overflow, transform, transitionnpx @golproductions/exnos@latest setup # configure everything
npx @golproductions/exnos@latest uninstall # remove everything Exnos added (run it in each project where you ran init)
npx @golproductions/exnos@latest path # extension folder path
npx @golproductions/exnos@latest init # write rules to agent config
npx @golproductions/exnos@latest rules # print rule text
┌─────────────┐ MCP/stdio ┌─────────────┐ WebSocket ┌─────────────┐
│ AI Agent │ ◄────────────────► │ MCP Server │ ◄──────────────► │ Extension │
│ │ │ :17872 │ │ │
└─────────────┘ └─────────────┘ └──────┬──────┘
│
Chrome APIs
│
┌──────▼──────┐
│ Your Tab │
└─────────────┘
changed: true/false on repeated callsExnos sends nothing to GOL Productions. No account, no telemetry, and no GOL server. Traffic goes from the extension to a local server on 127.0.0.1, which only accepts the Exnos extension and requests from this machine: a web page cannot connect to it.
However: What Exnos returns goes to your AI agent, which forwards it to its model provider. Cookies, storage, and response bodies can carry session tokens.
Point it at what you're debugging, not your banking tab.
127.0.0.1:17872. The Chrome extension always connects on this port, so keep it free.GET / returns {"exnos":true,"extension":true|false}document_start—pages open before extension load need one refreshchrome://) cannot be inspectedFree, under the GOL Open License: use, modify and redistribute it, with attribution to GOL Productions kept in every copy and fork. See LICENSE.
"Exnos" and "GOL Productions" are trademarks. Forks must use a different name and state that they are based on software by GOL Productions.
Exnos is part of the GOL Productions toolchain.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y @golproductions/exnosMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"com-golproductions-exnos": {
"command": "npx",
"args": [
"-y",
"@golproductions/exnos"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup reference@golproductions/exnosnpmExnos works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.