site/bergamot/index.html
Local Dev 3e87ab3f81 site audit: home, Ariadne page, Hermes downloads, releases/dl consolidation
Home: Prometheus and Hermes are live, not "designed"; new Ariadne and
Pithos cards; VPN, Bergamot and Mirrors linked; the page no longer claims
to run on nginx or to list "seven pieces".

/ariadne: new Silent Mode-headered page for the resolver family — Android
browser (APK, hash, signing key), standalone Windows resolver, how a lookup
resolves — linking out to the sovereign ariadne.x. "Ariadne" tab added to
every page's top nav; VPN and Bergamot navs normalised to the site-root
scheme while there.

Hermes: Download section (Windows installer + MSI, Android APK with hashes
from the manifest, web messenger), mobile and Windows marked live, hero
image path fixed; the brand-kit page's links were relative to a URL that
no longer has a trailing slash and the folder had never been deployed.

Releases/dl: the live dl manifest had been overwritten from a stale base
and was serving 0.3.106 to updaters while 0.3.110 was on the host; merged
(union) and reshipped. Manifest gains hermes-android/hermes-desktop; keep
policy aligned between the page (releases-page.mjs) and the VPS
(dl-vps-archive.sh, new, all products) so the page never links a build the
host no longer has. dl.silentmode.st/ now serves a generated index with
absolute links; dl-latest.sh tracked in-repo and extended with Hermes rows.
scripts/site-linkcheck.mjs resolves links the way the slash-less URLs do.
2026-10-24 03:35:20 +03:00

195 lines
10 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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="ariadne">Ariadne</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>