Open weights can be deleted, paywalled, or regulated away. ossllms preserves them on a peer-to-peer network, so a model’s survival stops depending on any single host.
The models already sitting in your Hugging Face cache are complete, authoritative copies. Seed them and you help keep them alive for everyone.
I.
The mission
“Our goal is to advance digital intelligence in the way that is most likely to benefit humanity as a whole, unconstrained by a need to generate financial return.
We believe AI should be an extension of individual human wills and, in the spirit of liberty, as
broadly and evenly distributed as possible.”
— OpenAI, “Introducing OpenAI,” December 11, 2015.
It was written down once. We make it literal. Open models, held in pieces by everyone — the decentralization is the mission.
An honest line first: we keep this promise for models that are already open. ossllms preserves and redistributes open weights. It does not pry open what was never released.
II.
What you do
Four commands. Each one is a small act of preservation — it keeps a model alive, for you and for whoever comes after you.
pull
$ossllms pull hf/sentence-transformers/[email protected]+1110a243fdf4 # verified bytes into your HF cache
This keeps a model alive. Every pull is one more independent copy. The model now lives on your disk, in the standard Hugging Face cache, not just on one host’s storage.
contribute
$ossllms contribute # seed matches already in your HF cache
This keeps a model alive. The bytes you already downloaded become supply for the next person — no re-download, no duplication; ossllms seeds matches straight from the cache you already have. Run ossllms contribute --dry-run to see what would seed, or ossllms tui --contribute for a guided view of your cache.
publish
$ossllms publish ./my-model --yes-public# sign it, announce it, seed it — you’re the first seeder
You become its first seeder. ossllms builds a signed, content-addressed release, announces it to the catalog, and seeds it from your machine; it endures as it gains other seeders and, if it matches Hugging Face, catalog inclusion. Prefer to pick from what you already have? ossllms tui --contribute lists the models in your HF cache the catalog doesn’t have yet and lets you check the ones to publish.
This keeps a model alive. Ask for exact content by hash. Whoever holds those bytes can serve them — no canonical host required, and you get exactly the bytes you named or nothing.
III.
Why you can trust it
Transport is peers and seeders. Trust is local: before a release lands in your cache, ossllms checks the signed manifest against the bytes and prints exactly what it found. Here is the real shape of that output.
ossllms verify all-MiniLM-L6-v2
$ ossllms verify hf/sentence-transformers/[email protected]+1110a243fdf4integrity: OK (12/12 files)
origin: Verified (signer: ossllms)
provenance: Matches HF(1110a243fdf4)
-> Verified.NOTE: 'Verified' = origin+integrity, not 'safe to run'.
integrity: OK (n/m files)
Integrity
Every file is hashed against the signed manifest. The label shows how many passed, e.g. 12/12. A single changed byte fails the check before anything lands in your cache.
origin: Verified (signer: ossllms)
Origin
The manifest is signed by a pinned key — the ossllms catalog key, not the lab. The alternative label is UNVERIFIED (community upload). It says who vouched for the listing.
provenance: Matches HF(<rev>)
Provenance
A separate label. When the catalog carries signed HF data, ossllms checks files against the hash captured in the signed manifest. It is omitted when there is no HF data.
On the signer. “origin: Verified (signer: ossllms)” means the ossllms catalog key signed this listing — it does not mean the original lab signed it. Publisher-namespace signing, where a lab signs its own namespace, is a future direction and is not shipped today.
On “Matches HF”. It is checked offline against the hash recorded in the signed manifest, not a live re-fetch from Hugging Face. When a release has no HF data — like oslm/ossllms/smoke-tiny below — the provenance label is simply absent.
On the word “Verified”. It means verified origin and integrity, not “safe to run.” Treat model weights like any other code you did not write.
IV.
Turn your cache into infrastructure
You already paid to download the bytes. The cache broadcaster turns that idle Hugging Face cache into a seeding node — mounted read-only, sharing nothing until you explicitly consent.
ConsentOSSLLMS_CACHE_BROADCASTER_YES_PUBLIC=1 is the explicit opt-in for public redistribution. Nothing is shared until you set it.
Read-only cacheYour cache mounts at /hf-cache:ro. The broadcaster reads eligible cached snapshots; it never writes to them.
Seeds matchesIt seeds the cached snapshots that match signed catalog entries — the models you already hold become supply.
Swarm ports6881/tcp and 6881/udp carry the peer traffic for the seeded bytes.
DashboardA catalog and status dashboard is served on :8080.
Browser TUIA read-only browser TUI is served on :8081.
StatePersistent state lives in the ossllms-cache-broadcaster-state volume at /var/lib/ossllms.
The image runs the published broadcaster from ghcr.io/gittb/ossllms-cache-broadcaster:latest. Availability that peers report is a hint, not proof — the integrity and origin checks are what actually decide whether bytes are trustworthy.
V.
In the terminal
ossllms is CLI-first: search the signed catalog, pull verified bytes into the HF cache, then contribute from that same cache.
Search
ossllms — search minilm
$ ossllms search minilm REF VERSION ────────────────────────────────────────────────────────────── hf/sentence-transformers/all-MiniLM-L6-v2 0.0.1+1110a243fdf4license Apache-2.0
provenanceMatches HF(1110a243fdf4)availability torrent metadata + 1 web seed
(a hint, not proof)pull: ossllms pull hf/sentence-transformers/[email protected]+1110a243fdf4
Pull & contribute
ossllms — pull + contribute
$ ossllms pull hf/sentence-transformers/[email protected]+1110a243fdf4fetching 12 files …integrity: OK (12/12 files)
origin: Verified (signer: ossllms)
provenance: Matches HF(1110a243fdf4)
-> Verified.(origin+integrity, not 'safe to run')placed in the Hugging Face cache $ ossllms contribute --statusreachability: serving
VI.
Get started
Install from PyPI, find a model, pull verified bytes into the HF cache, and leave it seeding. That is the whole contribution.
The package is on PyPI. Pulls write to the standard Hugging Face cache. --dry-run shows what would be seeded before you commit; ossllms contribute --status confirms you are serving. Verified means origin and integrity, not safe to run.
VII.
Catalog directory
The current public catalog lists 2 pullable model releases. This static HTML is generated from catalog manifests and works without JavaScript.
This page is a mirrorable directory, not a browser verifier. Run the listed ossllms commands, ossllms catalog update, and ossllms catalog verify to verify signatures, hashes, build reports, and HF provenance locally against the package trust root.