287 lines
16 KiB
HTML
287 lines
16 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en" data-theme="dark">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
|
<meta name="theme-color" content="#0c0c10">
|
|
<script>
|
|
(function () {
|
|
try {
|
|
var t = localStorage.getItem('bridgeswarm.site.theme');
|
|
if (t !== 'light' && t !== 'dark') t = 'dark';
|
|
document.documentElement.setAttribute('data-theme', t);
|
|
var meta = document.querySelector('meta[name="theme-color"]');
|
|
if (meta) meta.setAttribute('content', t === 'light' ? '#2dd4bf' : '#0c0c10');
|
|
} catch (e) {
|
|
document.documentElement.setAttribute('data-theme', 'dark');
|
|
}
|
|
})();
|
|
</script>
|
|
|
|
<title>Download & Install BridgeSwarm</title>
|
|
<meta name="description" content="Install BridgeSwarm on macOS, Linux, or Windows: one-line installer, loading the extension in Chrome/Edge/Firefox, building from source, verifying the install, and troubleshooting.">
|
|
<meta name="author" content="HoneyPeer, LLC">
|
|
<link rel="canonical" href="https://bridgeswarm.dev/download">
|
|
|
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link href="https://fonts.googleapis.com/css2?family=Syne:wght@600;700;800&family=DM+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500&family=IBM+Plex+Mono:wght@400;500;600&display=swap" rel="stylesheet">
|
|
|
|
<link rel="stylesheet" href="/src/styles/global.css">
|
|
<link rel="stylesheet" href="/src/styles/theme-light.css">
|
|
<link rel="stylesheet" href="/src/styles/docs.css">
|
|
<link rel="stylesheet" href="/src/styles/download.css">
|
|
|
|
<link rel="icon" type="image/png" sizes="16x16" href="/assets/favicons/favicon-16x16.png">
|
|
<link rel="icon" type="image/png" sizes="32x32" href="/assets/favicons/favicon-32x32.png">
|
|
<link rel="icon" type="image/png" sizes="48x48" href="/assets/favicons/favicon-48x48.png">
|
|
<link rel="shortcut icon" href="/assets/favicons/favicon.ico">
|
|
<link rel="apple-touch-icon" sizes="180x180" href="/assets/favicons/apple-touch-icon.png">
|
|
<link rel="manifest" href="/assets/favicons/site.webmanifest">
|
|
<link rel="mask-icon" href="/assets/logo/bridgeswarm-wordmark.svg" color="#2dd4bf">
|
|
<meta name="msapplication-TileImage" content="/assets/favicons/mstile-150x150.png">
|
|
<meta name="msapplication-config" content="/assets/favicons/browserconfig.xml">
|
|
|
|
<meta property="og:type" content="website">
|
|
<meta property="og:site_name" content="BridgeSwarm">
|
|
<meta property="og:title" content="Download & Install BridgeSwarm">
|
|
<meta property="og:description" content="One-line installer for macOS, Linux, and Windows. Load the extension, verify the native host, and troubleshoot common issues.">
|
|
<meta property="og:url" content="https://bridgeswarm.dev/download">
|
|
<meta property="og:image" content="https://bridgeswarm.dev/assets/brand/og-image.png">
|
|
<meta name="twitter:card" content="summary_large_image">
|
|
<meta name="twitter:title" content="Download & Install BridgeSwarm">
|
|
<meta name="twitter:description" content="One-line installer for macOS, Linux, and Windows. Load the extension, verify the native host, and troubleshoot common issues.">
|
|
<meta name="twitter:image" content="https://bridgeswarm.dev/assets/brand/twitter-card.png">
|
|
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@graph": [
|
|
{
|
|
"@type": "Organization",
|
|
"@id": "https://bridgeswarm.dev/#organization",
|
|
"name": "HoneyPeer, LLC",
|
|
"url": "https://bridgeswarm.dev/",
|
|
"logo": "https://bridgeswarm.dev/assets/logo/bridgeswarm-icon-512.png",
|
|
"email": "[email protected]",
|
|
"sameAs": ["https://git.ssh.surf/snxraven/BridgeSwarm"]
|
|
},
|
|
{
|
|
"@type": "SoftwareApplication",
|
|
"@id": "https://bridgeswarm.dev/#software",
|
|
"name": "BridgeSwarm",
|
|
"applicationCategory": "DeveloperApplication",
|
|
"operatingSystem": "macOS, Linux, Windows",
|
|
"url": "https://bridgeswarm.dev/",
|
|
"publisher": { "@id": "https://bridgeswarm.dev/#organization" },
|
|
"offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" },
|
|
"license": "https://www.gnu.org/licenses/agpl-3.0.html",
|
|
"downloadUrl": "https://bridgeswarm.dev/download",
|
|
"softwareVersion": "1.0.0",
|
|
"description": "Brings the Hyperswarm P2P stack into desktop browsers via a Bare native messaging host."
|
|
}
|
|
]
|
|
}
|
|
</script>
|
|
</head>
|
|
<body class="page-download">
|
|
<div class="bg-mesh" aria-hidden="true"></div>
|
|
<div class="bg-grid" aria-hidden="true"></div>
|
|
|
|
<div data-nav></div>
|
|
|
|
<main id="main">
|
|
|
|
<header class="page-hero">
|
|
<div class="container">
|
|
<p class="section-label" style="justify-content:center;">Download</p>
|
|
<h1>Install BridgeSwarm</h1>
|
|
<p class="lead">Two pieces: a small native host binary and a browser extension. The installer wires them together and registers native messaging so Chrome, Edge, and Firefox can find the host. No Node.js or git clone required for a normal install.</p>
|
|
</div>
|
|
</header>
|
|
|
|
<section class="section section-sm" id="install" aria-labelledby="install-title">
|
|
<div class="container install-wide">
|
|
<div class="section-head reveal">
|
|
<p class="section-label">Step 1</p>
|
|
<h2 id="install-title">Run the installer</h2>
|
|
<p class="lead">Downloads prebuilt native-host binaries and the extension from the rolling Gitea release <a href="https://git.ssh.surf/snxraven/BridgeSwarm/releases/tag/latest-main"><code>latest-main</code></a>.</p>
|
|
</div>
|
|
|
|
<div class="grid grid-2 reveal">
|
|
<div class="card">
|
|
<span class="badge">macOS / Linux</span>
|
|
<pre style="margin-top:1rem;"><code>curl -fsSL https://git.ssh.surf/snxraven/BridgeSwarm/raw/branch/main/scripts/web-installer.sh | bash</code></pre>
|
|
<p>Installs the host to <code>~/.bridgeswarm/</code> and saves <code>BridgeSwarm-1.0.0.zip</code> / <code>.xpi</code> to <code>~/Downloads</code>.</p>
|
|
</div>
|
|
<div class="card">
|
|
<span class="badge badge-info">Windows (PowerShell)</span>
|
|
<pre style="margin-top:1rem;"><code>irm https://git.ssh.surf/snxraven/BridgeSwarm/raw/branch/main/scripts/install.ps1 | iex</code></pre>
|
|
<p>Run in a normal PowerShell window (no admin required). Installs to <code>%LOCALAPPDATA%\bridgeswarm\</code> and saves archives to <code>%USERPROFILE%\Downloads</code>.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="callout info reveal">
|
|
<div class="callout-icon">i</div>
|
|
<div class="callout-body">
|
|
Coexists cleanly with <code>holesail-browser</code> if you have it installed — different install directory, different native messaging host name, different extension IDs. Neither installer touches the other's files.
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section section-sm" id="what-it-does" aria-labelledby="what-it-does-title">
|
|
<div class="container install-wide">
|
|
<div class="section-head reveal">
|
|
<p class="section-label">Step 2</p>
|
|
<h2 id="what-it-does-title">What the installer actually does</h2>
|
|
<p class="lead">Nothing hidden — read <a href="https://git.ssh.surf/snxraven/BridgeSwarm/src/branch/main/scripts/install.sh">scripts/install.sh</a> yourself. In order:</p>
|
|
</div>
|
|
|
|
<div class="card reveal">
|
|
<ol style="padding-left:1.2rem; display:flex; flex-direction:column; gap:0.75rem; color:var(--text-secondary);">
|
|
<li>Stops any running <code>bridge-swarm-host</code> process (path-scoped, never touches other native hosts).</li>
|
|
<li>Preserves your existing <code>bridge-swarm-storage</code> directory (moved aside, not copied, so the Corestore device-file seal survives a reinstall).</li>
|
|
<li>Downloads and unzips the platform binary for your OS/arch from the <code>latest-main</code> Gitea release.</li>
|
|
<li>On macOS: clears the quarantine attribute, ad-hoc code-signs the host binary and its extracted <code>.bare</code>/<code>.dylib</code> addons, and writes an entitlements plist so library validation doesn't block unsigned native addons.</li>
|
|
<li>Writes a small launcher script that sets <code>BRIDGE_SWARM_STORAGE</code> and <code>BRIDGESWARM_EXAMPLES_DIR</code> before starting the binary.</li>
|
|
<li>Writes native messaging manifests named <code>com.bridgeswarm.json</code> into the Chrome, Chromium, and Firefox native-messaging-hosts directories for your OS — never overwriting any other vendor's manifest.</li>
|
|
<li>Restores your preserved storage directory.</li>
|
|
<li>Downloads the extension <code>.zip</code> (Chrome/Edge) and <code>.xpi</code> (Firefox) into your Downloads folder, removing any stale <code>BridgeSwarm-*</code> archives first.</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section section-sm" id="load-extension" aria-labelledby="load-extension-title">
|
|
<div class="container install-wide">
|
|
<div class="section-head reveal">
|
|
<p class="section-label">Step 3</p>
|
|
<h2 id="load-extension-title">Load the extension</h2>
|
|
</div>
|
|
|
|
<div class="grid grid-2 reveal">
|
|
<div class="card">
|
|
<h3>Chrome / Edge</h3>
|
|
<ol style="padding-left:1.1rem; display:flex; flex-direction:column; gap:0.6rem; color:var(--text-secondary); font-size:0.92rem;">
|
|
<li>Open <code>chrome://extensions</code>.</li>
|
|
<li>Enable <strong>Developer mode</strong> (top right).</li>
|
|
<li>Drag & drop <code>~/Downloads/BridgeSwarm-1.0.0.zip</code> onto the page — or extract it and use <strong>Load unpacked</strong>.</li>
|
|
<li>Confirm the extension ID reads exactly <code>jhmbaojjfkkpoolhkoohklbjokdmbdpm</code>. If it doesn't match, re-download rather than editing IDs by hand.</li>
|
|
<li>Fully restart the browser (quit, don't just close the window).</li>
|
|
</ol>
|
|
</div>
|
|
<div class="card">
|
|
<h3>Firefox</h3>
|
|
<ol style="padding-left:1.1rem; display:flex; flex-direction:column; gap:0.6rem; color:var(--text-secondary); font-size:0.92rem;">
|
|
<li><strong>Temporary</strong> (any Firefox): <code>about:debugging</code> → <strong>This Firefox</strong> → <strong>Load Temporary Add-on…</strong> → select the downloaded <code>.zip</code>.</li>
|
|
<li><strong>Permanent</strong> (Nightly / Developer Edition only): set <code>xpinstall.signatures.required</code> to <code>false</code> in <code>about:config</code>, then <code>about:addons</code> → gear → <strong>Install Add-on From File</strong> → select the <code>.xpi</code>.</li>
|
|
<li>Restart Firefox after installing.</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
<p class="lead" style="margin-top:1.5rem;">Both browsers require a full restart after the first install — native messaging hosts are only re-discovered on browser startup.</p>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section section-sm" id="from-source" aria-labelledby="from-source-title">
|
|
<div class="container install-wide">
|
|
<div class="section-head reveal">
|
|
<p class="section-label">Step 4</p>
|
|
<h2 id="from-source-title">Building from source</h2>
|
|
<p class="lead">For contributors, or if you'd rather build the host yourself instead of trusting a prebuilt binary.</p>
|
|
</div>
|
|
<div class="card reveal">
|
|
<pre><code>git clone https://git.ssh.surf/snxraven/BridgeSwarm.git
|
|
cd BridgeSwarm
|
|
npm run setup # or ./scripts/install-from-source.sh
|
|
# Then in the browser: Load unpacked → the extension/ directory</code></pre>
|
|
<p>Requires Node.js for tooling; the host itself runs on Bare <code>>=1.29.4</code> pulled in as an npm dependency.</p>
|
|
<pre><code>npm run pack # extension zip + xpi
|
|
npm run build:dist:package # all-platform host zips (best run on CI with bare-build)</code></pre>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section section-sm" id="verify" aria-labelledby="verify-title">
|
|
<div class="container install-wide">
|
|
<div class="section-head reveal">
|
|
<p class="section-label">Step 5</p>
|
|
<h2 id="verify-title">Verify the install</h2>
|
|
</div>
|
|
|
|
<div class="docs-cards reveal">
|
|
<a class="docs-card" href="#" onclick="return false;" style="cursor:default;">
|
|
<span class="card-tag">Overview</span>
|
|
<h3>Open the Control Center</h3>
|
|
<p>Click the BridgeSwarm toolbar icon → Dashboard. The Overview tab should show the native host as connected.</p>
|
|
</a>
|
|
<a class="docs-card" href="http://127.0.0.1:4173/">
|
|
<span class="card-tag">Examples</span>
|
|
<h3>Enable the examples server</h3>
|
|
<p>In Settings, toggle <strong>Examples server</strong> on, then open <strong>http://127.0.0.1:4173/</strong> — not <code>file://</code>.</p>
|
|
</a>
|
|
<a class="docs-card" href="/learn/#capabilities">
|
|
<span class="card-tag">Console</span>
|
|
<h3>Check the page API</h3>
|
|
<p>Run <code>await BridgeSwarm.ready()</code> then <code>BridgeSwarm.capabilities.list()</code> in devtools.</p>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section section-sm" id="troubleshooting" aria-labelledby="troubleshooting-title">
|
|
<div class="container install-wide">
|
|
<div class="section-head reveal">
|
|
<p class="section-label">Troubleshooting</p>
|
|
<h2 id="troubleshooting-title">Common issues</h2>
|
|
</div>
|
|
|
|
<div class="card reveal" style="display:flex; flex-direction:column; gap:0.5rem;">
|
|
<details>
|
|
<summary style="cursor:pointer; font-weight:650; padding:0.5rem 0;">"Native host has exited"</summary>
|
|
<p style="padding:0.25rem 0 0.75rem;">The launcher runs Bare via Node. Re-run the installer, or from a source checkout run <code>npm install</code> in <code>native-host/</code> followed by <code>npm run build:host</code>, so the local <code>bare</code> dependency and launcher paths are correct.</p>
|
|
</details>
|
|
<details>
|
|
<summary style="cursor:pointer; font-weight:650; padding:0.5rem 0;">"Access to the specified native messaging host is forbidden"</summary>
|
|
<p style="padding:0.25rem 0 0.75rem;">Your extension ID doesn't match the native messaging manifest's <code>allowed_origins</code>. From source: <code>./scripts/update-native-manifest-extension-id.sh YOUR_EXTENSION_ID</code>. For a release install, re-run the installer instead of hand-editing the manifest.</p>
|
|
</details>
|
|
<details>
|
|
<summary style="cursor:pointer; font-weight:650; padding:0.5rem 0;">"hrpc not available"</summary>
|
|
<p style="padding:0.25rem 0 0.75rem;">The HRPC spec hasn't been generated for this build. From a source checkout, run <code>npm run build:hrpc</code>.</p>
|
|
</details>
|
|
<details>
|
|
<summary style="cursor:pointer; font-weight:650; padding:0.5rem 0;">macOS: media capability missing after an update</summary>
|
|
<p style="padding:0.25rem 0 0.75rem;">Run <code>npm run repair:macos</code> so the <code>.bare</code> addons (including <code>bare-ffmpeg</code>) are re-extracted and codesigned, then fully quit the browser (Cmd+Q) and relaunch.</p>
|
|
</details>
|
|
<details>
|
|
<summary style="cursor:pointer; font-weight:650; padding:0.5rem 0;">Peers aren't showing up in each other's lists</summary>
|
|
<p style="padding:0.25rem 0 0.75rem;">Confirm every tab is joined to the exact same topic string, enable debug logging in Settings, and check the Dashboard's Activity tab for connection events.</p>
|
|
</details>
|
|
</div>
|
|
|
|
<p class="lead" style="margin-top:1.5rem;">Still stuck? See <a href="/community#support">community & support</a>, or read the full <a href="/learn/">user guide</a> for how the pieces fit together.</p>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="cta-band reveal">
|
|
<div class="container">
|
|
<div class="cta-card">
|
|
<h2>Ready to write your first P2P app?</h2>
|
|
<p class="lead">The user guide walks through Hyperswarm topics, Noise, Hyper* storage, and the Control Center from first principles.</p>
|
|
<div class="cta-actions">
|
|
<a class="btn btn-primary btn-lg" href="/learn/">Read the user guide</a>
|
|
<a class="btn btn-ghost btn-lg" href="/use-cases/">Browse use cases</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
</main>
|
|
|
|
<div data-footer></div>
|
|
|
|
<script type="module" src="/src/js/site.js"></script>
|
|
</body>
|
|
</html>
|