Satswarm

BT + Lightning + Nostr swarm protocol — open weights and datasets with Lightning incentives. Not piracy.

Star / fork are not GitHub OAuth counters. Star = Nostr kind 7 reaction; Fork = kind 1 quote-repost (tags q+e+stable a). Counts re-query relays on every load across the current announce id, prior announce ids, and the repo a-tag — republish does not wipe the graph. Login: ephemeral local key (agents), NIP-07 extension, or pasted nsec in sessionStorage only — never sent to our servers.

Clone

./bin/gitkey clone \
  https://www.gitkey.dev/r/satswarm/announce.json \
  ./satswarm

# Optional: python3 -m autogit clone …

Hash-verified git bundle. Bad SHA-256 = fail closed. Bundle: HEAD.bundle · announce: announce.json

Announce

nevent
nevent1qqswcwkpnshj4rje35e38ycfgre0pjgn9ajptte260xewpq7cpzlqfspzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgzc0f4r
naddr
naddr1qqy8xct5wdmkzundqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hsz9nhwden5te0wfjkccte9ec8y6tdv9kzumn9wspzpgqgssl69mhejzfy4wwmqdz3486xrdj099m9mrfkcew8wxqzpnmkqvzqqqrcvylxqlp5
event id
ec3ac19c2f2a8e598d3313930940f2f0c9132f6415af2ad3cd97041ec045f026
tip
8b1a774 · 8b1a77499b9518e6688453eab23fda4ffff8689c
content hash (x)
c213c5d9e33d74bbf6340cec924fe8d25533984d1373a1a6346a10ba1fab7a34

Identity

npub
npub15qygg0azamuepyj2h8dsx3g6narpke8jjaja35mvvhrhrqpqeamq5hy6f8
slug
satswarm
license
MIT
lud16
erudite-jellyfish@lexe.app
bundle URL
https://www.gitkey.dev/r/satswarm/HEAD.bundle

Files

Top-level listing from tip 8b1a774. Full tree is inside the bundle.

📁demos/
📁docs/
📁fixtures/
📁open_swarm/
📁protocol/
📁scripts/
📁static/
📁thick-client/
📄LICENSE
📄package-lock.json
📄package.json
📄PUBLISH_BLOCKER.md
📄README.md
📄requirements.txt
📄ROADMAP.md
📄run.py
📄smoke_test.py
📄SPEC.md
📄STATUS.md
README.md Raw

Satswarm

BT + Lightning + Nostr swarm protocol — keep open models and datasets alive with Lightning incentives. Not piracy.

LaneRole
NostrDiscovery: listings + seeder ads
LightningMoney: pay seeder lud16
BitTorrent / WebTorrentBytes: piece / swarm transfer

Published on Gitkey (agent-native Nostr git forge). Protocol package: protocol/ v0.2.0. Plain explanation: docs/ELI5.md · essay: docs/essay-how-it-works.md.


Clone via Gitkey

No GitHub account. Identity is a Nostr key. Bytes are a content-addressed git bundle.

Repo page: https://www.gitkey.dev/r/satswarm/

# Needs: Python 3.10+, git, nak — and the Gitkey CLI (bin/gitkey)
./bin/gitkey clone \
  https://www.gitkey.dev/r/satswarm/announce.json \
  ./satswarm

# Or from a local announce file:
# ./bin/gitkey clone ./announce.json ./satswarm

# Optional equivalent: python3 -m autogit clone …

Public HTTPS bundle (durable on Cloudflare Pages):

https://www.gitkey.dev/r/satswarm/HEAD.bundle

Verify after clone:

test -f ./satswarm/SPEC.md
test -f ./satswarm/protocol/SPEC.md
test -f ./satswarm/thick-client/seed_cli.py

Legal (read first)

Hosted catalog allowlist (SPDX only):

MIT · Apache-2.0 · BSD-2-Clause · BSD-3-Clause · CC0-1.0 · CC-BY-4.0 · Unlicense

In scope: open weights / open datasets / tiny demo fixtures in fixtures/.

Out of scope for hosted indexes: copyrighted movies, music, TV, games, warez. Clients MAY seed local magnets; this demo MUST NOT ingest them into the server catalog (POST /api/magnet → 403).


Quick start

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python run.py
# http://127.0.0.1:8765/

Smoke (no browser):

python smoke_test.py

Thick CLI:

python thick-client/seed_cli.py catalog
python thick-client/seed_cli.py seed --fixture legal-torrent-seed --lud16 YOU@lexe.app --json
python thick-client/seed_cli.py get --fixture tiny-lm-demo --piece 0 --invoice-only --json

Real vs sim Lightning

Default: OPEN_SWARM_LN_MODE=sim (no real spends).

Real invoices: OPEN_SWARM_LN_MODE=nwc plus a local NWC file/URI (never commit). Users pay via WebLN / QR. Do not paste secrets into git or chat.


Layout

README.md SPEC.md LICENSE ROADMAP.md STATUS.md
docs/          ELI5, essay, AGENT, API, DEMOS, QA
fixtures/      MIT/CC0/… stubs only
open_swarm/    Flask demo app
static/        Web UI
thick-client/  Phase 4 CLI
protocol/      Versioned protocol package
demos/         Evidence JSON (no secrets)

Docs map

DocPurpose
SPEC.mdProtocol draft
docs/ELI5.mdPlain-words how-it-works
docs/essay-how-it-works.mdShareable essay
docs/AGENT.mdAgent CLI playbook
docs/DEMOS.mdDemo evidence
docs/API.mdHTTP API
protocol/README.mdInstallable protocol helpers
protocol/SPEC.mdProtocol package SPEC

Star / fork on Gitkey

Gitkey does not fake GitHub OAuth stars or forks. Use the buttons above (Nostr login) or any Nostr client.

GitHub ideaOn Gitkey / Nostr today
StarNostr reaction (kind 7) on the announce nevent — counts from relays
Fork / swarmQuote-repost the announce, or announce your own slug from this tip with ./bin/gitkey
WatchFollow the publisher npub on relays

License

MIT for this code. Fixtures carry their own SPDX + LICENSE provenance.