Gnutonium is a small Bun-based Gnutella client you can run from the terminal or embed in a TypeScript app.
Gnutonium is compatible with major clients like GTK-Gnutella, Phex, Shareaza and others.
Features:
- share files from a downloads folder
- search the Gnutella network
- browse peer's shared files
- manage downloads (pause/resume/cancel)
It can be used as:
- an interactive CLI
- a scriptable CLI runner
- a library inside another app that requires access to the Gnutella network
Download a prebuilt executable from the releases page.
Older releases use the GnutellaBun name and gnutella-bun-* filenames.
After downloading a Gnutonium build, run the executable directly:
./gnutonium-linux-x64 init --config gnutella.json
./gnutonium-linux-x64 run --config gnutella.jsonGnutonium requires Bun 1.4.2 or newer for inbound TLS upgrades, including when installed through npm.
NOTE: Gnutonium does not work on Node yet - raise an issue if this is a feature you want.
npm install -g gnutonium
gnutonium init --config gnutella.json
gnutonium run --config gnutella.jsonIf you want to run from source:
bun install
bun run bin/gnutonium.ts init --config gnutella.json
bun run bin/gnutonium.ts run --config gnutella.jsonInstall the library with npm install gnutonium and run it with Bun (not Node). The npm package and CLI command are both named gnutonium. The public TypeScript import is:
import { GnutellaServent, loadDoc } from "gnutonium";
const configPath = "./gnutella.json";
const doc = await loadDoc(configPath);
const node = new GnutellaServent(configPath, doc);
await node.start();
node.sendQuery("hello world");Gnutonium identifies itself on the network with vendor code NIUM.
- Quickstart: get the CLI working in a few minutes
- CLI Guide: full command and config reference
- Developer Guide: embed Gnutonium and follow the source reading guide
Gnutonium is released under the GNU General Public License v3.0. See LICENSE.

