{
  "markdown": "<p align=\"center\">\n  <img src=\"extension/icons/ghostlight-mascot.png\" alt=\"Ghostlight mascot: a small sky-blue pixel-art ghost holding a glowing lantern\" width=\"100\" height=\"100\">\n</p>\n\n<h1 align=\"center\">Ghostlight MCP</h1>\n\n<p align=\"center\"><strong>Give your agent a visible place in the browser you already use.</strong></p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/sylin-org/ghostlight/actions/workflows/ci.yml\"><img src=\"https://github.com/sylin-org/ghostlight/actions/workflows/ci.yml/badge.svg?branch=dev\" alt=\"CI\"></a>\n  <a href=\"https://www.npmjs.com/package/ghostlight\"><img src=\"https://img.shields.io/npm/v/ghostlight?color=38BDF8&label=npm\" alt=\"npm\"></a>\n  <a href=\"https://github.com/sylin-org/ghostlight/releases/latest\"><img src=\"https://img.shields.io/github/v/release/sylin-org/ghostlight?color=38BDF8&label=release\" alt=\"release\"></a>\n  <a href=\"https://registry.modelcontextprotocol.io\"><img src=\"https://img.shields.io/badge/MCP_registry-org.sylin%2Fghostlight-38BDF8\" alt=\"MCP registry\"></a>\n</p>\n\n<p align=\"center\"><img src=\"docs/assets/demo.gif\" alt=\"Ghostlight reading and completing a launch brief in a real browser with visible page, field, and click feedback\" width=\"838\" height=\"766\"></p>\n<p align=\"center\"><sub>A launch brief moves from empty form to ready for review, in full view.</sub></p>\n\n<p align=\"center\"><a href=\"#your-first-five-minutes\"><strong>Install Ghostlight</strong></a> | <a href=\"https://sylin.org/ghostlight/decision-aid/\">See where it fits</a> | <a href=\"docs/guides/installation.md\">Installation guide</a> | <a href=\"docs/trust/README.md\">Trust Center</a></p>\n\nYour agent needs a page you are signed in to. The usual answer is a second, empty browser that\nknows none of your sessions, driven by a model that has to learn Chrome internals to get anything\ndone.\n\nGhostlight gives it a tab group inside the Chromium you already have open. The work happens in\nfront of you: watch it, pause it, take the wheel, or end the session. The model says what it wants,\nand Ghostlight does the browser part.\n\nAsk an agent to read a page, complete a form, handle a file, follow a popup, or investigate a\nfailed web workflow. Ghostlight carries the task across tabs and browser changes while keeping the\nbrowser work and its controls on your machine.\n\n> A light left burning, so the halls stay safe.\n\n## Where it stands today\n\nThe published release is 1.3. It is available as the GitHub release\n[`v1.3.2`](https://github.com/sylin-org/ghostlight/releases/tag/v1.3.2), the npm package\n`ghostlight@1.3.2`, the Chrome Web Store adapter v1.0.0 (adapter 1.1.0 is in review), and the\nMCP Registry record `org.sylin/ghostlight 1.3.2`, all observed on 2026-09-02 and recorded in\n[`docs/public-status.json`](docs/public-status.json).\n\n## What you get\n\n- **24 catalog tools**: 23 browser tools covering tabs, navigation, reading a page, screenshots,\n  semantic clicks and hovers, form input, file upload, scripts, waits, short sequences, and\n  dialogs, plus one policy tool that explains the authority in force. One call carries\n  the intent; Ghostlight performs the browser steps behind it.\n- **One truthful answer per call**: what happened, what changed in the browser, what is ready, and\n  whether running it again is safe. Ghostlight writes that answer, never the page, and adds at most\n  two recovery steps of its own. When an effect is uncertain it says so rather than guessing, and\n  never proposes a replay that could submit a form twice.\n- **A desktop workbench** in the tray that shows work as it happens.\n- **Your machine, and only your machine.** Ghostlight runs as you, reaches your browser over local\n  IPC, and keeps a payload-free local record. No account, no telemetry, no activation service, no\n  update ping, no hosted control plane, and no second hidden browser. The only network traffic is\n  the browsing you asked for.\n\n## Your first five minutes\n\nYou need Chrome, Edge, Brave, or Chromium 116+, an MCP client, and Node.js for the installer. The\nservice you run afterward is native Rust.\n\n1. Install Ghostlight and register the MCP clients it finds:\n\n   ```sh\n   npx -y ghostlight install\n   ```\n\n2. Add\n   [Ghostlight in Browser](https://chromewebstore.google.com/detail/ghostlight-in-browser/lejccfmoeogmhemakeknjjdhkfkgncdl)\n   from the Chrome Web Store.\n\n3. Restart an MCP client if it does not hot-reload tools.\n\n4. Give it one small, read-only task:\n\n   > Open https://example.com/ in a new Ghostlight tab, summarize the page, and tell me which tab\n   > you used. Do not click, type, submit, or change the page.\n\nA sky-blue Ghostlight group should appear in your browser. The agent opens the page, reads it, and\nnames the exact tab it used. That one prompt proves the whole connection without authorizing a\nclick or write. Next time, it reuses that group and the nearest tab it already owns on that site,\nso repeated work stops littering your tab strip.\n\nIf a step needs attention, run:\n\n```sh\nnpx -y ghostlight doctor\n```\n\n`doctor` checks the client entry, local service, browser connection, and extension, then names the\nnext action. The [installation guide](docs/guides/installation.md) covers targeted clients, source\nbuilds, updates, uninstall, and symptom-led recovery.\n\n## From one page to a whole workflow\n\nGhostlight is at its best when browser work has a thread to follow:\n\n- **Pick up where you are signed in.** Open an application in the Chromium profile you chose and\n  work with the session already there. Credentials stay with the browser.\n- **Finish the interaction.** Navigate, fill forms, upload files, resolve dialogs, wait for page\n  state, and carry results from one step into the next.\n- **Follow the browser.** Keep working when a site opens a supported child tab or when a known\n  workspace changes underneath the task.\n- **See what failed.** Bring page state, console messages, and network requests together so the\n  next debugging step comes from evidence instead of guesswork.\n\nUse the same browser capability from Codex, Claude Code, Claude Desktop, Cursor, VS Code, Windsurf,\nZed, OpenCode, Crush, or another compatible stdio MCP client. Agents receive structured page\nreads, exact element references, bounded action receipts, and specific recovery guidance. They can\nask the policy tool to explain the authority in force at any moment.\n\n## The browser stays a shared space\n\nGhostlight works in a dedicated sky-blue tab group inside the browser window you chose. Page\nscans, clicks, typing, drags, and longer phases share one visual language, so the movement on screen\nhas an explanation.\n\nPause the workspace, take over for a delicate step, or stop it. Move its tabs where you want them;\nGhostlight follows the workspace instead of snapping it back. Ordinary tabs remain outside the\nagent's owned set.\n\nClosing a tab needs two independent yes votes: the orchestrator's authority, and the browser's own\npreserve-tabs setting, which ships on. That keeps the evidence of what happened in front of you.\nClosing a tab yourself always works.\n\nPersonal use is complete without a policy manifest. Start with the full browser engine and get\nuseful work done. When a workflow needs stronger boundaries, grant `read`, `action`, `write`, and\n`execute` capabilities by MCP identity and domain. Add sacred domains, dry-run preflight, and\nstructured audit while the browser experience stays the same. The\n[governance guide](docs/guides/governance-configuration.md) shows the operating model, and the\n[Trust Center](docs/trust/README.md) carries the security, privacy, continuity, deployment, and\nprocurement evidence.\n\n## What it will and will not do\n\nWith no policy configured, ordinary remote HTTP(S) browsing is allowed. Loopback addresses,\nlink-local metadata endpoints, non-HTTP schemes, credential fields, and stale handles stay\nprotected regardless. Optional local and managed policy layers can only take capability away, and\nper-request restrictions narrow things further. Nothing hands access back.\n\nCredential-class fields come to you. Ghostlight does not type secrets.\n\nThe audit record holds identifiers, decisions, and content-minimized measurements: which tool ran,\nwhether authority allowed it, how long it took, and what it did -- 3 fields, 1,240 words, 1280x720.\nThe site an action landed on is named, because that answers where your agent went and is already in\nyour own tab strip. Paths, queries, fragments, page text, field values, screenshots, selectors, and\ndialog text never enter it. [`docs/guides/siem-integration.md`](docs/guides/siem-integration.md) is\nthe exact record shape.\n\nThe full catalog is in [`docs/1.0/LANGUAGE.md`](docs/1.0/LANGUAGE.md), and the exact policy schema\nis in [`docs/guides/governance-configuration.md`](docs/guides/governance-configuration.md).\n\n## The workbench\n\nOpen the tray icon and you land **At a glance**: the action running right now in full, finished\nactions stacking below it, newest first, each in Ghostlight's own words -- \"Opened example.com.\",\n\"Read 1,240 words.\", \"Filled 3 fields and submitted the form.\" -- never the page's. Beside it sit\n**MCP integrations**, which connects the coding clients you already have and merges into their\nconfiguration with a backup; **Status**, which answers whether the stack is healthy; **Policy**,\nwhich states what the current rules allow, one plain line per capability, naming the layer that\ndecided each one; and **About**, which carries the promise underneath it: it never phones home.\n\nPause and resume sit in the header beside the lamp, the same control the tray offers. Closing the\nwindow returns it to the tray and leaves the authority running. If the desktop shell cannot start,\nGhostlight exits instead of leaving an invisible authority.\n\n## Build it from source\n\nRust 1.82 or newer, plus Chromium 116 or newer for browser validation.\n\n```sh\ncargo build --workspace\n```\n\nThree executables land side by side:\n\n- `ghostlight` -- the orchestrator and the desktop workbench;\n- `ghostlight-mcp-connector` -- the MCP stdio edge;\n- `ghostlight-browser-connector` -- the Chromium native-messaging relay.\n\n```sh\ntarget/debug/ghostlight open\n```\n\nThat shows the workbench, or focuses the one already running. Then open **MCP integrations**,\nconnect the client you want, and restart or reconnect it. [`docs/DEV-LOOP.md`](docs/DEV-LOOP.md)\ncovers browser registration and the full validation loop.\n\nAfter that first setup there is no startup ritual: launching a connected MCP client or Chromium\ndemand-starts Ghostlight when it is not already running. There is no service-only launch mode.\n\nThe one-command install is the primary journey:\n\n```sh\nnpx -y ghostlight install\n```\n\nSigned-checksum native packages, portable archives, and a self-contained Claude Desktop MCPB are\nequivalent release routes. Every route uses the matching store adapter and the same three native\nexecutables.\n\n<details>\n<summary><strong>Current release and compatibility</strong></summary>\n\n**Platform state.** Windows and Linux are the supported 1.0 platforms, verified against live\nbrowsers on development hosts; the clean installed-product evidence lanes continue after\npublication. macOS has no 1.0 artifact yet.\n\n**Extension state.** The Chrome Web Store listing serves adapter v1.0.0, matching the published\n1.0.0 service line.\n\nThe service and Chrome adapter version independently. The\n[compatibility map](compatibility.json) is authoritative, and the\n[public status file](docs/public-status.json) owns current release, platform, and store state.\n\nThe MCP edge negotiates a compatible stdio revision per client; the compatibility map records\nthem. See the [changelog](CHANGELOG.md) for release changes and upgrade consequences.\n\n</details>\n\n<details>\n<summary><strong>How Ghostlight fits together</strong></summary>\n\n```text\nMCP Client <--stdio--> ghostlight-mcp-connector <--typed IPC--> ghostlight orchestrator\n    <--browser IPC--> ghostlight-browser-connector <--native messaging--> Extension <--CDP--> Browser\n```\n\nThe orchestrator makes every product decision and owns everything the model reads. The two\nconnectors carry protocol and relay lifecycle, nothing more. The extension owns Chromium, the\npage, and the drawing, and never policy. Adding a feature normally means changing the orchestrator\nalone; that is a contract the shores are held to, not a happy accident.\n\nThe desktop is a presentation adapter inside the same process, not a second service. It has no GUI\nprotocol, command runner, filesystem access, or browser primitives.\n[`ADR-0102`](docs/adr/0102-integrated-desktop-workbench.md) records why.\n[`docs/SPEC.md`](docs/SPEC.md) gives the deeper governance model.\n\n</details>\n\n## Choose your next step\n\n| I want to... | Start here |\n| --- | --- |\n| Install, verify, update, recover, or uninstall | [Installation guide](docs/guides/installation.md) |\n| Let an AI client perform setup | [Agent install guide](llms-install.md) |\n| Try a complete visible workflow | [Launch brief demo](https://sylin.org/ghostlight/demo/brief/) |\n| Build from source and test locally | [Source-development path](docs/guides/installation.md#path-b-build-from-source) |\n| Understand which browser operating model fits | [Decision aid](https://sylin.org/ghostlight/decision-aid/) |\n| Add boundaries or review trust evidence | [Governance guide](docs/guides/governance-configuration.md) and [Trust Center](docs/trust/README.md) |\n| Read the product promise and journeys | [`docs/1.0/INTENT.md`](docs/1.0/INTENT.md) |\n| Read the complete model-facing language | [`docs/1.0/LANGUAGE.md`](docs/1.0/LANGUAGE.md) |\n| Read the architecture and acceptance contracts | [`docs/1.0/ARCHITECTURE.md`](docs/1.0/ARCHITECTURE.md), [`docs/1.0/ACCEPTANCE.md`](docs/1.0/ACCEPTANCE.md) |\n| See where the candidate stands | [`docs/STATUS.md`](docs/STATUS.md) |\n| Contribute code, docs, testing, or ideas | [Contributing guide](CONTRIBUTING.md) |\n| Read every decision, and why | [ADR index](docs/adr/) |\n\n## License and continuity\n\nGhostlight is entirely free and open source: everything in this repository, including the\ngovernance module, is Apache-2.0 OR MIT. [`LICENSING.md`](LICENSING.md) explains what that\ncovers. The former open-core split and its paid tiers were withdrawn by\n[ADR-0140](docs/adr/0140-fully-open-source-licensing.md).\n\nLicense state never reaches runtime -- there is no license check to reach it. An installed copy\nkeeps working on its own terms, with no check-in and no expiry. The\n[Continuity Promise](docs/trust/continuity.md) carries the durable version of that.\n\n## Questions and contributions\n\n[GitHub Issues](https://github.com/sylin-org/ghostlight/issues) for reproducible defects,\n[GitHub Discussions](https://github.com/sylin-org/ghostlight/discussions) for questions and ideas,\nand hello@sylin.org for security, licensing, or anything that should not be public.\n\nI build Ghostlight in partnership with AI coding agents.\n[`CONTRIBUTING.md`](CONTRIBUTING.md) explains the current boundaries and the gates every change\npasses.\n",
  "bytes": 14995,
  "sha": "698065205f28aa53c5d0aee42f2466813accb9c230dbf7748656db10907be817",
  "repo_slug": "sylin-org/ghostlight",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_org_sylin_ghostlight_43ece4da/readme"
}