ossllms.
Apache-2.0 GitHub

A preservation network for open-weight AI

Keep open models open.

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.

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.

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.

pull by hash
ossllms pull sha256:<hex> # content-addressed, host-independent

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.

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.

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

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

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.

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.

host your HF cache
docker run --rm -p 6881:6881/tcp -p 6881:6881/udp -p 8080:8080/tcp -p 8081:8081/tcp -e OSSLLMS_CACHE_BROADCASTER_YES_PUBLIC=1 -v "${HF_HUB_CACHE:-$HOME/.cache/huggingface/hub}:/hf-cache:ro" -v ossllms-cache-broadcaster-state:/var/lib/ossllms ghcr.io/gittb/ossllms-cache-broadcaster:latest
  • Consent OSSLLMS_CACHE_BROADCASTER_YES_PUBLIC=1 is the explicit opt-in for public redistribution. Nothing is shared until you set it.
  • Read-only cache Your cache mounts at /hf-cache:ro. The broadcaster reads eligible cached snapshots; it never writes to them.
  • Seeds matches It seeds the cached snapshots that match signed catalog entries — the models you already hold become supply.
  • Swarm ports 6881/tcp and 6881/udp carry the peer traffic for the seeded bytes.
  • Dashboard A catalog and status dashboard is served on :8080.
  • Browser TUI A read-only browser TUI is served on :8081.
  • State Persistent 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.

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

Pull & contribute

Get started

Install from PyPI, find a model, pull verified bytes into the HF cache, and leave it seeding. That is the whole contribution.

quick start
python -m pip install ossllms
ossllms search minilm
ossllms pull hf/sentence-transformers/[email protected]+1110a243fdf4
ossllms contribute --dry-run
ossllms contribute

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.

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.

Open catalog search

sentence-transformers/all-MiniLM-L6-v2

hf/sentence-transformers/[email protected]+1110a243fdf4

Matches HF @1110a243fdf4
Version
0.0.1+1110a243fdf4
Store
hf
License
Apache-2.0
Size
87.3MiB
Files
12
Signed
ossllms
Availability
torrent metadata + 1 web seed
Freshness
static
Safe to run
not claimed; ossllms verifies bytes only
ossllms pull hf/sentence-transformers/[email protected]+1110a243fdf4
ossllms pull sha256:53aa51172d142c89d9012cce15ae4d6cc0ca6895895114379cacb4fab128d9db

Open model page

HF provenance missing
Version
0.0.1
Store
oslm
License
Apache-2.0
Size
217B
Files
4
Signed
ossllms
Availability
bundled local bytes
Freshness
static
Safe to run
not claimed; ossllms verifies bytes only
ossllms pull oslm/ossllms/[email protected]
ossllms pull sha256:0449d06b9ac5e9686de32fefc26facba309f8a18ca574b6b74ed384470efd507

Open model page