Zia Studio
Home Support Parle privacy Terms

Parle

A browser extension · open source, AGPL-3.0-only · early

Parle shows you what Hacker News and Reddit have already said about the page you are reading. It finds the discussions, puts a small mark on the page when there are any, and — once you connect an AI Provider of your own — summarises what those conversations actually said, with a followable link under every claim.

No account, no server of ours, and it tells you before it sends anything anywhere. It is a Manifest V3 extension for Chrome, Safari and Firefox from one codebase. It works with no account, no server and no AI connected; each of those is an upgrade rather than a requirement.

Status: early. Hacker News and Reddit work end to end; Reddit may refuse requests depending on your network. Read what Parle sends before you install it, and what is not built before you rely on it.

A Wikipedia article on the Antikythera mechanism with the Parle panel open beside it, showing live Hacker News discussions and top-level comments
One tab per conversation, busiest first. Top-level comments stay readable in the narrow panel; replies remain nested and collapsed until you open a branch, or you can flatten them into one level.

Who it is for

People who read a lot of links and want the argument that already happened underneath them: the correction, the person who built the thing, the benchmark that was disputed six years ago. Parle does not rate pages, score outlets or tell you what to think. It points at the conversation and gets out of the way.

What it does

On a page somebody has discussed, a small round mark appears at the top right carrying a count, and the toolbar icon carries the same one. Clicking either opens the discussions. On a page nobody has discussed, Parle puts nothing at all on the page — no badge, no mark, no node of ours in the document — and the toolbar says so specifically rather than showing an empty list.

The toolbar button is the account of what happened: every place Parle asked and exactly what each one answered, including the ones that refused and the ones it chose not to ask. Reddit answers 403 from many addresses; that is reported as a refusal, never as "nothing found", because those are opposite facts.

The same Wikipedia article with only a small dark circular mark carrying the number of discussions at the top right of the page
The mark and its count. That circle is the whole of what Parle adds to a page — and it is added only where there is something to read.
The Parle toolbar popup listing every place it asked and what each answered, with X not asked because it is not in this build
The toolbar button. Every place asked, and what each answered on that run. Found, nothing, refused and not asked remain different sentences because they are different facts.

A site's front page is a special case and is treated as one. Opening google.com could otherwise produce 148 rows about 148 unrelated events. On an address that is a site's entrance rather than a document, discussions older than thirty days are folded behind one disclosed, counted, one-click line. Nothing is deleted, nothing is un-asked, and the discussions are already in the panel when that line is drawn.

What Parle sends, and to whom

Parle sends the address of the page you are reading — and nothing else — to Hacker News and Reddit, to find out whether anyone has discussed it. That is the same thing as pasting the link into their search boxes — it is not anonymous, and those services see it.

It does this automatically on most pages, if you asked it to. It does not do it on pages matching a built-in skip list — banks, webmail, health, government, adult sites, social feeds, and private or internal addresses — or on pages whose address visibly carries a token or credential. It never sends the part of an address after the #, and it strips tracking parameters first.

That skip list is a list. It is incomplete, and it will miss things, including services nobody has told us about and short share links that look like ordinary addresses.

Three things this project will not claim:

  • Not "your browsing is private." It is not. Every page you read that is not skipped produces requests to other companies carrying that page's address.
  • Not "we exclude addresses carrying credentials." The rules catch several common shapes. A short share link that looks like an ordinary path cannot be detected at all.
  • Not "we protect sensitive categories." A list of sites cannot cover health, internal company tools or documents, and the best lists available are measurably missing well-known providers.

The skip list is a floor, not a guarantee. That is why there is a global switch to turn automatic lookups off, a per-site pause, and a way to add your own entries.

Precisely what leaves your machine

WhereWhat is sentCredentials
hn.algolia.com the page's address, tidied (up to four alias forms of it) none — no cookies, no key, no account
www.reddit.com, then old.reddit.com if that is refused the same address your own Reddit cookies on the first attempt, because Reddit answers 403 without them. The fallback is cookie-free. Reddit can be switched off entirely.
A link shortener — t.co, bit.ly and the like only while you are already on Hacker News, Reddit or X, and only on automatic: one HEAD for a shortened link that was on the page in front of you, to learn where it points. Nothing about any other page you have read. Capped at 150 an hour. none
X nothing. The code that would ask X is compiled out of this build — the requests are absent from the shipped file, not merely disabled. —
Comment bodies — hn.algolia.com/api/v1/items/…, www.reddit.com/comments/….json only after you open the panel or ask for a Digest: the busiest discussion is read when the panel opens; another is read when you choose its tab; asking for a Digest reads at most six. Never on a page load. none for Hacker News; your Reddit cookies for Reddit, as above
The AI Provider you connected, if you connected one on that same press: the page's address and the text of the comments just fetched. The largest thing Parle ever sends anywhere, and the only thing that never happens without a deliberate click. your own API key or token, which you pasted
Any server run by this project nothing. There is no backend, and the extension contacts none. —

The first thing it does is ask

On install, Parle opens one page and asks a question with two answers: look pages up automatically, or only when you click the toolbar button. The disclosure above it is under a hundred words — where the address goes, by name; that the skip list will miss things; and which of the three sites this build cannot contact at all. The long version is one link away.

Until that question is answered, no address leaves your browser at all, on any page, whatever else is configured — and the pages already open in your browser are not read either. That is enforced in code and held by a test that asserts on what actually went out on the wire, not on what the screen said. Close the tab unread and you get an extension that looks nothing up and says so on every page.

Parle's first-run screen, headed What Parle sends, with two buttons: Look pages up automatically, and Only when I ask
The first screen, in full. Neither button is styled as the recommended one; a filled button beside a plain one would be an argument rather than a question.

What it stores, and where

Everything Parle keeps is in your own browser profile, and one button deletes it. Two things are written, and they differ in kind.

  • Your settings. One entry. If you connect an AI Provider with an API key, that key is in it as ordinary text. A Manifest V3 extension has no keychain — there is nothing better available to put a key in than the store every other setting goes in. Anything that can read your browser profile can read it. Use a key you can revoke.
  • What Hacker News, Reddit and X showed you. While you are on one of those three sites, Parle records the links on the page you are looking at, with the thread each came from and its score and comment count. It never leaves your machine, and it is why a link you click on Hacker News already has its thread attached before the page finishes loading — with no request to anyone.

What is deliberately not written to disk is anything derived from a lookup. A record built from what you already saw discloses nothing new; a record of every page you looked up would be a dated list of everywhere you had been, sitting on your disk. So the two halves are separated in the code rather than by convention — the half that records what you were already looking at gets a store that can write, and the half that looks pages up gets one whose writes die with the service worker.

The full detail is in the Parle privacy policy, including how to list the entire store yourself in one line.

Digests, and why they need a Provider of yours

Finding discussions needs no AI and never will. A Digest — a set of attributed statements about what those discussions actually said — needs a model, and you supply it. That is where the free/paid line is drawn, so an install with nothing connected is a complete product rather than an upsell wall.

Building one means fetching the comment bodies of the discussions on the page and sending that text to your Provider — far more traffic than the lookups that found them. So it never happens on its own. The panel shows you the sentence first — Parle will read the comments of 3 discussions and send them to your own API key to be summarised. It has not done that yet. — and only a click does anything.

You can connect an OpenAI-compatible API key (including a model running on your own machine at http://localhost:8080/v1) or your browser's built-in on-device model, where there is one, in which case the comments never leave the machine at all. "Log in with ChatGPT" is a rough edge and is labelled as one: the client is written but there is no sign-in flow, so it takes a token pasted from elsewhere.

Every Finding cites a comment, and the citation is a link you can follow. A Digest may report a claim as disputed — the only judgement it makes, and always someone else's — on one condition: that you can go and read the objection yourself. A disputed Finding pointing at a whole 640-comment thread is discarded rather than shown. Model output that cites a discussion which was never fetched cannot be constructed at all; that is a type constraint, not a check somebody remembered to write.

The Parle panel showing a Digest headed What these discussions said, with three quoted findings, each followed by a link to the specific comment it came from
A Digest. Under each statement is a link to the specific comment it came from. This launch image uses the local stand-in Provider to quote real comments and cite them; the panel stamps which Provider and model wrote any real Digest.

What is not built

  • X is compiled out of this build. The connector is written, but the endpoint research is unresolved and it would be your own X account at risk.
  • Reddit is real code that often gets refused. You will see it reported as a refusal.
  • No sign-in flow for ChatGPT, on any platform. See above.
  • No offline list of already-discussed pages ships yet, which is exactly why every page you open that is not skipped gets asked about. The toolbar says so in those words. The format is built and tested; nothing builds or serves the list.
  • Shared Digests — written once for a popular page and served to readers with no Provider — need a backend, and there is none.
  • The Safari build is Manifest V3 and builds, but still needs Xcode or an App Store Connect upload to become an installable app.

Install it

Parle is not in an extension store yet. The Chrome Web Store submission is being prepared — this page exists partly because that submission needs a privacy policy at a public address. Until it is listed, you install it by building it, which takes about a minute.

You need Node 24 or newer and pnpm 9.12.

git clone https://github.com/ziahamza/parle-extension
cd parle-extension
pnpm install
pnpm --filter @parle/extension build

Then, in Chrome:

  1. Open chrome://extensions.
  2. Turn on Developer mode, top right.
  3. Click Load unpacked.
  4. Choose apps/extension/.output/chrome-mv3.

A tab opens with the disclosure and the one question. Nothing is looked up until you answer it. Then open a page that has been discussed and wait a second or two.

Firefox and Safari are built from the same source:

pnpm --filter @parle/extension exec wxt build -b firefox
pnpm --filter @parle/extension exec wxt build -b safari

Source, licence, contact

Parle is AGPL-3.0-only, every line of it, including every disclosure on this page as testable code: github.com/ziahamza/parle-extension. The network clause is deliberate: you may deploy the whole stack yourself and point your own install at it; you simply cannot do so privately.

Issues and questions: the issue tracker, or hello@ziahamza.com.

See the Parle privacy policy. If it and the extension ever disagree, the extension is what actually runs — tell us and it gets fixed.

← Back to home

Zia Studio is operated by Zia Capital, LLC.

Parle privacy Privacy Terms Contact © 2026