🌿

Bergamot designed Β· not yet built

Web page translation that runs entirely on your computer. The page's text never leaves the device β€” no cloud, no third party, nobody building a profile of what you read.

The one idea that makes this different

Every hosted translator β€” Google, DeepL, LibreTranslate β€” reads the page for you by taking a copy. The server sees the text, the user, the page, the time, and often keeps it. Even an operator who promises not to log is one subpoena, one breach, or one quiet policy change away from the opposite.

The Bergamot pitch.
Mozilla's Bergamot project compiled a real neural translator (Marian NMT) to WebAssembly, and trained a set of small language models that run on a laptop CPU in milliseconds per sentence. Theseus will ship Bergamot as a built-in translator provider: pick a language, download its ~17 MB model once, and translation happens inside the tab. The server you'd otherwise send the page to isn't in the loop.

How it will work in Theseus

  1. Pick on-device translation. Settings β€Ί Language has a Translator engine row with two options: LibreTranslate (hosted β€” fast, uses our server) and Bergamot (on-device β€” nothing leaves your computer). Default is LibreTranslate; flip to Bergamot once a model is downloaded.
  2. Download a language pack. Click a language that isn't installed yet in the language picker. Theseus fetches the Argos-equivalent Bergamot model from bergamot.x's Sia bucket (that's this page's other half: the model distribution lives here), verifies the SHA-256, installs it under your Theseus profile. One pack = one direction, ~17 MB.
  3. Translate the page. Same flow as today β€” the chip picks up a page in a language different from yours, offers to translate, the WASM engine does the work in a Web Worker so the UI stays smooth. No request goes to any server.
  4. Keep the model, or delete it. Each downloaded pack is a file in your profile. Delete it and the language falls back to the hosted provider (if enabled) or disappears from the "installed" list.

Hosted vs on-device

Two providers, same chip, pick per preference. Many users will want both β€” fast fallback on obscure languages, local for everyday reading.

libretranslate β€” hosted

Fast, no setup

  • Nothing to download; works the first time you pick a language
  • Larger model (Argos) β†’ better translations on long sentences
  • The page's text is POSTed to silentmode.st/libre
  • Only logs the request's existence, not its content (by policy, not by maths)
bergamot β€” on-device

Private, no server in the loop

  • One-time download per language direction (~15–25 MB)
  • Smaller model β†’ good on short sentences, loses nuance on long ones
  • Nothing leaves your computer; works on a plane
  • Mozilla-origin models (firefox-translations) mirrored to Sia so you don't need their CDN

Supported directions (planned)

The first batch mirrors Theseus's current hosted set — the languages the chip already handles — so flipping to Bergamot never loses a language that was working before. Each pair is one direction; the client pairs src→en + en→dst automatically when there is no direct src→dst.

en β†’ es / es β†’ en
Spanish
to mirror
en β†’ fr / fr β†’ en
French
to mirror
en β†’ de / de β†’ en
German
to mirror
en β†’ el / el β†’ en
Greek
to mirror
en β†’ ru / ru β†’ en
Russian
to mirror
en β†’ it / it β†’ en
Italian
to mirror
en β†’ pt / pt β†’ en
Portuguese
to mirror
en β†’ nl / nl β†’ en
Dutch
to mirror

The index of what's actually on Sia will live at bergamot.x/index.json and will drive the picker's "Install" buttons. Empty today β€” the first upload lands when Theseus's Bergamot provider is wired up.

Honest boundaries

Smaller model = different quality

Bergamot models are tuned for size and speed, not scale. Short sentences read great; long literary paragraphs will sound more rigid than a hosted translator produces. Pick the engine by the page.

WebAssembly + a few modern APIs

Needs SharedArrayBuffer, WASM SIMD, and cross-origin isolation to run fast β€” all of which Theseus already enables for the right contexts. Older sandboxed add-on hosts without these would get a slow path.

No automatic model updates

Downloaded packs sit in your profile until you upgrade them. If the upstream model improves, Theseus will offer the newer pack in Settings; it does not swap it under you.

Status: name registered, provider stub landing in the next Theseus. Model mirror empty.
bergamot.x is reserved on-chain and the provider radio ships in Theseus so the plumbing is in place; the Bergamot runtime and model mirror follow in a later release. Until then, picking Bergamot in Settings routes the chip back to LibreTranslate with a one-time notice. This page exists to explain where it is going.