site: bergamot.x landing page — on-device translator provider
Registered bergamot.x on-chain with {s3: bns/bergamot/, u: silentmode.st/bergamot}.
The page explains what Bergamot (Mozilla's WASM translator) will add to Theseus:
an on-device translation provider that never sends the page to a server, as an
alternative to the hosted LibreTranslate backend. Models mirror from Sia on
first use, one direction per download.
Lives at:
- https://silentmode.st/bergamot (ICANN)
- https://silentmode.st/bns/bergamot.x/ (gateway proxy)
- bergamot.x (BNS; Sia-backed through bns/bergamot/)
The provider stub comes in a follow-up Theseus commit.
This commit is contained in:
parent
071760c544
commit
c254582a23
1 changed files with 194 additions and 0 deletions
194
bergamot/index.html
Normal file
194
bergamot/index.html
Normal file
|
|
@ -0,0 +1,194 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Bergamot — on-device translation — Silent Mode</title>
|
||||
<meta name="description" content="Bergamot: web page translation that runs entirely on your computer. No server sees the page you are reading. Marian NMT compiled to WebAssembly, Mozilla's language models mirrored on Sia. Comes to Theseus Navigator as a provider option alongside LibreTranslate.">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Silent Mode">
|
||||
<meta property="og:title" content="Bergamot — on-device translation — Silent Mode">
|
||||
<meta property="og:description" content="Web page translation that runs entirely on your computer. No server sees the page you are reading.">
|
||||
<meta property="og:url" content="https://silentmode.st/bergamot">
|
||||
<meta property="og:image" content="https://silentmode.st/brand/og.png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<link rel="stylesheet" href="/shared.css?v=20260910">
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
||||
<style>
|
||||
.pair-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin-top:1rem}
|
||||
.pair{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:12px 14px}
|
||||
.pair .nm{font-weight:600;font-size:13.5px}
|
||||
.pair .sub{color:var(--mut);font-size:12px;margin-top:3px}
|
||||
.pair .st{color:var(--dim);font-size:11px;margin-top:5px;letter-spacing:.04em;text-transform:uppercase}
|
||||
.vs{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:1rem}
|
||||
@media (max-width:720px){.vs{grid-template-columns:1fr}}
|
||||
.vs .col{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:16px 18px}
|
||||
.vs .col h3{color:var(--ink);margin:0 0 .4rem}
|
||||
.vs .col ul{margin:.3rem 0 0;padding-left:1.2rem;color:var(--mut);font-size:13.5px;line-height:1.7}
|
||||
.vs .col .tag{font:600 11px/1 system-ui;letter-spacing:.22em;text-transform:uppercase;margin-bottom:.4rem;color:var(--acid)}
|
||||
.vs .col.alt .tag{color:var(--sia)}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<nav class="topnav">
|
||||
<a class="brand" href="/"><svg class="logo" viewBox="0 0 32 20" aria-hidden="true"><rect class="l1" x="1.5" y="3.5" width="17" height="13" rx="6.5" ry="6.5" fill="none" stroke-width="2.6"/><rect class="l2" x="13.5" y="3.5" width="17" height="13" rx="6.5" ry="6.5" fill="none" stroke-width="2.6"/></svg>Silent <span class="g">Mode</span></a>
|
||||
<a href="/theseus">Theseus</a>
|
||||
<a href="/prometheus">Prometheus</a>
|
||||
<a href="/sirius">Sirius</a>
|
||||
<a href="/hephaestus">Hephaestus</a>
|
||||
<a href="/helios">Helios</a>
|
||||
<a href="/hermes">Hermes</a>
|
||||
<a href="/tools">Tools</a>
|
||||
</nav>
|
||||
|
||||
<header class="hero">
|
||||
<div class="mark">🌿</div>
|
||||
<h1>Bergamot <span class="pill p-designed" style="vertical-align:middle;font-size:12px;margin-left:.6rem">designed · not yet built</span></h1>
|
||||
<p class="tag">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.</p>
|
||||
</header>
|
||||
|
||||
<div class="wrap narrow">
|
||||
|
||||
<section class="plain">
|
||||
<h2>The one idea that makes this different</h2>
|
||||
<p class="lede">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.</p>
|
||||
|
||||
<div class="note"><b>The Bergamot pitch.</b><br>
|
||||
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.</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>How it will work in Theseus</h2>
|
||||
<ol class="steps">
|
||||
<li><b>Pick on-device translation.</b>
|
||||
<span>Settings › Language has a <code class="inline">Translator engine</code>
|
||||
row with two options: <i>LibreTranslate (hosted — fast, uses our server)</i>
|
||||
and <i>Bergamot (on-device — nothing leaves your computer)</i>. Default is
|
||||
LibreTranslate; flip to Bergamot once a model is downloaded.</span></li>
|
||||
<li><b>Download a language pack.</b>
|
||||
<span>Click a language that isn't installed yet in the language picker.
|
||||
Theseus fetches the Argos-equivalent Bergamot model from
|
||||
<code class="inline">bergamot.x</code>'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.</span></li>
|
||||
<li><b>Translate the page.</b>
|
||||
<span>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.</span></li>
|
||||
<li><b>Keep the model, or delete it.</b>
|
||||
<span>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.</span></li>
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Hosted vs on-device</h2>
|
||||
<p class="lede">Two providers, same chip, pick per preference. Many users will
|
||||
want both — fast fallback on obscure languages, local for everyday reading.</p>
|
||||
<div class="vs">
|
||||
<div class="col">
|
||||
<div class="tag">libretranslate — hosted</div>
|
||||
<h3>Fast, no setup</h3>
|
||||
<ul>
|
||||
<li>Nothing to download; works the first time you pick a language</li>
|
||||
<li>Larger model (Argos) → better translations on long sentences</li>
|
||||
<li>The page's text is POSTed to <code class="inline">silentmode.st/libre</code></li>
|
||||
<li>Only logs the request's existence, not its content (by policy, not by maths)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col alt">
|
||||
<div class="tag">bergamot — on-device</div>
|
||||
<h3>Private, no server in the loop</h3>
|
||||
<ul>
|
||||
<li>One-time download per language direction (~15–25 MB)</li>
|
||||
<li>Smaller model → good on short sentences, loses nuance on long ones</li>
|
||||
<li>Nothing leaves your computer; works on a plane</li>
|
||||
<li>Mozilla-origin models (<a href="https://github.com/mozilla/firefox-translations">firefox-translations</a>)
|
||||
mirrored to Sia so you don't need their CDN</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Supported directions (planned)</h2>
|
||||
<p class="lede">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 <code class="inline">src→en</code> + <code class="inline">en→dst</code>
|
||||
automatically when there is no direct <code class="inline">src→dst</code>.</p>
|
||||
<div class="pair-grid">
|
||||
<div class="pair"><div class="nm">en → es / es → en</div><div class="sub">Spanish</div><div class="st">to mirror</div></div>
|
||||
<div class="pair"><div class="nm">en → fr / fr → en</div><div class="sub">French</div><div class="st">to mirror</div></div>
|
||||
<div class="pair"><div class="nm">en → de / de → en</div><div class="sub">German</div><div class="st">to mirror</div></div>
|
||||
<div class="pair"><div class="nm">en → el / el → en</div><div class="sub">Greek</div><div class="st">to mirror</div></div>
|
||||
<div class="pair"><div class="nm">en → ru / ru → en</div><div class="sub">Russian</div><div class="st">to mirror</div></div>
|
||||
<div class="pair"><div class="nm">en → it / it → en</div><div class="sub">Italian</div><div class="st">to mirror</div></div>
|
||||
<div class="pair"><div class="nm">en → pt / pt → en</div><div class="sub">Portuguese</div><div class="st">to mirror</div></div>
|
||||
<div class="pair"><div class="nm">en → nl / nl → en</div><div class="sub">Dutch</div><div class="st">to mirror</div></div>
|
||||
</div>
|
||||
<p class="tag" style="margin-top:1rem">The index of what's actually on Sia will live at
|
||||
<code class="inline">bergamot.x/index.json</code> and will drive the picker's
|
||||
"Install" buttons. Empty today — the first upload lands when Theseus's
|
||||
Bergamot provider is wired up.</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Honest boundaries</h2>
|
||||
<div class="grid">
|
||||
<div class="card">
|
||||
<h3>Smaller model = different quality</h3>
|
||||
<p>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.</p>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h3>WebAssembly + a few modern APIs</h3>
|
||||
<p>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.</p>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h3>No automatic model updates</h3>
|
||||
<p>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.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="note warn"><b>Status: name registered, provider stub landing in the next
|
||||
Theseus. Model mirror empty.</b><br>
|
||||
<code class="inline">bergamot.x</code> 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 <i>Bergamot</i>
|
||||
in Settings routes the chip back to LibreTranslate with a one-time notice.
|
||||
This page exists to explain where it is going.</div>
|
||||
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<div>Silent Mode — a Deviant project.</div>
|
||||
<div class="fine">Bergamot is a Mozilla project under the Mozilla Public License;
|
||||
the compiled WebAssembly runtime and the trained translation models are
|
||||
distributed by Silent Mode under the same terms. See
|
||||
<a href="https://github.com/mozilla/firefox-translations">github.com/mozilla/firefox-translations</a>
|
||||
and <a href="https://browser.mt">browser.mt</a> for the upstream work.</div>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Reference in a new issue