goldfinch v0.10.4 · MIT · one runtime dep
goldfinch logo

$ goldfinch --open

a chromium browser with shields, cookie jars, a media panel,
and an MCP automation surface. that's the whole pitch.
# it's a real browser, not a demo. clone and run:
$ git clone https://github.com/msieurthenardier/goldfinch.git
$ cd goldfinch && npm install && npm start

# verify the build (what CI runs on every PR):
$ npm test && npm run typecheck && npm run lint
✔ 300+ unit tests   ✔ tsc --noEmit   ✔ eslint   ✔ npm audit (high)

# drive it from an agent (off by default, loopback only):
$ # settings → automation → enable, mint a jar key, then:
$ curl -H "Authorization: Bearer <jar-key>" http://127.0.0.1:49707/mcp
→ 30 tools: navigate click type scroll screenshot readDom getHistory …
license MIT runtime deps 1 telemetry none node ≥ 22 platforms mac · win · linux CI test · typecheck · lint · audit
// 01 — what it is

cat README.md

Goldfinch is a desktop browser built on Electron where the interesting parts are the ones mainstream browsers won't give you: enforced privacy on every session, named container identities, a page-media catalog, and a first-class agent interface.

engine
Chromium via Electron — each tab a native WebContentsView
shields
block trackers/ads · strip utm/fbclid/gclid · isolate 3p cookies · farble canvas/webgl/audio
jars
named containers = isolated session partitions · burner tabs · per-jar history + retention · New Identity wipe + reseed
media panel
catalogs img/srcset/css-bg/video/audio/embeds · lightbox · docked player · download with the page's own session
automation
MCP over streamable HTTP · 127.0.0.1 only · per-jar bearer keys · origin/host pinned vs DNS rebinding · audit log
internal pages
goldfinch:// privileged scheme · strict CSP · origin-checked IPC · unreachable from web content
// 02 — the privacy posture

grep -r "telemetry" src/ # 0 results

No analytics, no crash beacons, no silent anything. The one documented egress is an opt-in spellcheck dictionary fetch (Linux/Windows only, after you turn it on). Everything else the browser does is in the source, and the source is one dependency deep.

two-point URL gate
renderer createTab check + main-process will-navigate guard share one predicate
session policy
shields attach to every partition at session-created — no per-jar config to forget
trust boundary
internal vs web, enforced by origin + session marker at the main-process IPC boundary
a11y gate
axe-core sweeps the live app — WCAG 2.1 A/AA, curated allowlist, new findings fail
// 03 — the agent interface

man goldfinch-mcp

The automation surface is a thin MCP adapter over an injected-deps engine. The SDK is the single runtime dependency, pinned exact, imported in exactly one file.

drive × 18
navigate, click, typeText, scroll, pressKey, dragPointer, zoom, printToPDF, findInPage…
observe × 4
captureScreenshot, captureWindow, readDom, readAxTree
eval × 2
evaluate, injectScript — executeJavaScript in the guest main world, zero CDP
admin & history
getChromeTarget, enumerateWindows, downloadsList, jar-confined getHistory
// 04 — get it

ls releases/

note: builds are unsigned — expect a Gatekeeper/SmartScreen prompt on first launch and allow it through.