← directory

kind 35128 · 2026-10-13 09:31 UTC

Peerless — a Nostr nsite you can read, fork, and republish

Peerless is a browser-based download utility. It runs entirely in your browser, has no backend, no account, and no telemetry. You open the page, paste a link, and get a file. That is the whole idea. What it does It downloads direct links. Anything on a server that sends the right headers — a static file, a GitHub release asset, a PDF, a video, a zip — you paste the URL and Peerless streams it into memory, shows you a progress bar, and hands you the file when it is done. Pause and resume are supported. Failed downloads retry automatically with exponential backoff. You can queue many URLs at once; only three run in parallel, and the rest wait their turn. High-priority items jump the queue. It resolves IPFS. Paste an ipfs:// CID or any URL that contains /ipfs/<cid> and Peerless rewrites it through a public gateway. It tries four gateways in order if one is slow or down. It fetches GitHub release assets. Paste a direct release asset URL and it downloads. Paste a release tag URL and Peerless asks the GitHub API for the list of assets and lets you pick one. If the release has a single asset, it just downloads. It reads Archive.org details pages. Paste an archive.org/details/... URL and Peerless pulls the file listing, sorts it by media-first then by size, and shows a picker. You can grab one file or queue them all. This one needs a CORS proxy — see below. It shares files between your own devices over WebRTC. Click "Share files", pick a few files from your device, and Peerless generates a magnet link and copies it to your clipboard. Send that link to another device (message, email, whatever), paste it into the same field on that device, and the files stream directly over the internet. No server, no cloud, no account. Both devices must be online at the same time. This works because both ends speak WebRTC, which is the one peer-to-peer transport a browser is allowed to use. It does not do torrents from the general swarm. This is not a bug. A browser cannot open raw TCP or UDP sockets, and the vast majority of BitTorrent peers use those protocols. A browser-based client can only talk to WebRTC peers, which almost no public torrent has. If you paste a magnet from a public tracker, it will not download. There is no code change that fixes this. If you need torrents, use a desktop client. Peerless is honest about that and does not pretend otherwise. Why use it Because sometimes you just want a file and you do not want to install anything. Because Archive.org downloads break in browsers due to CORS and Peerless has a one-click fix. Because moving a file from your laptop to your phone should not require uploading it to a third party. Because the thing is a single HTML file with no build step and no backend, and you can read every line of it. What it does not do No accounts. No telemetry. No analytics. No cookies. No ads. No "Pro" tier. It does not phone home. The only network requests it makes are the ones you trigger: fetching a URL you pasted, resolving an IPFS CID through a gateway, calling the GitHub API, reading Archive.org metadata, and — if you use the share feature — connecting to public WebRTC trackers to find the other device. Nothing else. How to use it Paste a URL into the box at the top of the sidebar and press Enter. It appears in the Downloads list with a live progress bar. When it finishes, click Save to write it to disk. If you have several URLs, paste them one per line and they all get added at once. To download from IPFS, paste the CID with the ipfs:// prefix, or any ipfs.io-style URL. Peerless will rewrite it through a gateway automatically. To download from GitHub, paste the URL of a release asset. It downloads directly. If you paste a release tag page instead, Peerless fetches the asset list and shows a picker. To download from Archive.org, click the CORS Proxy button first and pick one of the presets. corsproxy.io is a reasonable default. Save it. Then paste an archive.org/details/... URL. Peerless reads the file list and lets you pick. To send a file to another device, click the "Share files" box, pick your files, and copy the magnet link that appears. Send it to the other device. Paste it into the URL field on that device. The transfer starts automatically. CORS and why it matters Many servers, including Archive.org's metadata API, do not send the Access-Control-Allow-Origin header that browsers require for cross-origin requests. When a site blocks the request, the browser will not even show you the error, it just fails. That is why downloading from Archive.org does not work in a plain browser tab. A CORS proxy is a small server that fetches the file on your behalf and adds the missing header. Peerless ships with a list of public ones. They are shared and rate-limited, so for anything serious you should deploy your own. The dialog links to a Cloudflare Workers recipe that takes about two minutes and is free. When a direct fetch fails and a proxy is configured, Peerless retries through the proxy automatically. The card shows "Via proxy" so you can tell. The interface The sidebar has three parts. At the top is the main URL input. Below that is the CORS proxy button. Below that is the Peer-to-Peer share panel. In the footer there is a status line and a question-mark button that replays the guided tour. The main column is the Downloads list. Each card shows the filename, the URL, a progress bar, current speed, size, and status. On each card you get Pause, Save, Copy link, Copy as curl, Rename, and a priority button that cycles High, Normal, Low. You can drag a card by its handle to reorder the queue. You can select multiple cards with checkboxes and act on them in bulk. The filter bar above the list lets you search by name or URL and filter by status. Press the slash key to jump into it. The header shows live download speed, active transfers, queue length, completed file count, the current proxy name, and a sixty-second speed sparkline. Keyboard shortcuts Press the question-mark key or click Keys in the sidebar to see the full list. The most useful ones: slash focuses the filter. Ctrl+K focuses the URL field. Ctrl+Enter adds the URL without leaving the field. Ctrl+E exports the pending session as JSON. Ctrl+I imports one. Ctrl+A selects all cards, Delete removes the selection, P pauses or resumes, R retries failures, S saves finished files. The number keys 1, 2, and 3 set High, Normal, and Low priority on the selection. Escape closes the player, dismisses the current modal, or clears focus. Clipboard watcher If you copy a URL from anywhere and then paste it into the page — not into a text field, just paste it anywhere — a toast appears with an Add button. Click it and the URL is queued. This is convenient when you are copying links out of a chat or an email and do not want to click back and forth. Guided tour The first time you open Peerless, an animated tour walks through the interface with a spotlight on each area: the URL field, the filter, the proxy, the share panel, the header stats, and the status footer. You can skip it at any point, and it will not return. To see it again, click the question-mark button in the sidebar footer. Session statistics The Stats panel shows all-time bytes downloaded, completed files, added URLs, your success rate, current active downloads, current queue length, session bytes since page load, and peak speed this session. You can reset all-time numbers if you want to start clean. Export and import Export saves your pending downloads and peer shares to a JSON file. Import restores them. Useful if you want to move your work between browsers, or keep a backup of a long queue before clearing cache. Limitations worth knowing A browser tab can only hold so much in memory. Files under a few hundred megabytes are fine. Files above a gigabyte will work but are wasteful; a desktop client is the right tool for those. The app warns you when a download crosses the threshold. Free public CORS proxies rate-limit. If Archive.org suddenly returns 403, it is almost always the shared proxy and not the app. Try a different preset, or deploy your own. WebRTC share requires both devices to be online at the same time. It is a live peer connection, not a mailbox. If one side closes the tab, the transfer stops. Some servers block unknown user agents or require a referer header. Peerless cannot get around that from inside a browser. If a specific download keeps failing with 403 or 401, the server is refusing you and there is nothing a browser-side tool can do. Browsers do not expose raw sockets, so no browser-based app can join the general BitTorrent swarm. Peerless does not pretend otherwise. If a magnet link does not resolve, that is why. How to run it locally There is no build step. Clone or download the file and open index.html in a modern browser. Chrome, Firefox, Safari, and Edge all work. WebRTC requires a secure context, so if you serve it over a local HTTP server rather than opening the file directly, use https or localhost. How to host your own copy Any static host will do. GitHub Pages, Netlify, Cloudflare Pages, S3 with static hosting, or a plain nginx directory. It is one HTML file with everything inlined, plus an optional stylesheet if you split it out. No server-side language, no database, no environment variables. Copy it, serve it, done. License MIT. Use it, fork it, change it, ship it. No attribution required, though a link back is nice. Why it exists Because the browser is already a file-transfer tool and it has been held back by missing primitives for too long. IPFS and WebRTC give it enough to do useful peer-to-peer work. Peerless is the smallest possible app that uses both, plus the standard HTTP fetch path, to move files around without a server in the middle. That is the whole idea. It is not a startup. It is not a product. It is a tool that does a small number of things well and says so.

yellow npub1ctc6knn22a7a3xqt2ls4nphdj2psh9dffum5ry3r2434x26u4ssq8hx62x

2 files in the manifest · size billed from the file band until the blobs are here. up to 20 files, 10 MB included.

up to 20 files, 10 MB included
21,000 sats/year
30 days
2,100 sats (one tenth)

Card 21,000/year (20 files, 10 MB). Site 42,000 (200 files, 100 MB). App 84,000 (2,000 files, 1 GB). Past that, 42,000 per extra 1,000 files and 5,000 per extra 100 MB, per year. 30 days is one tenth. Check the domain box only if you will point DNS at this gateway. Opens a Lightning invoice. Copies the files onto https://nsitepin.com/blossom and assigns a hostname.

Missing files

These files were checked. They were not on the hosts listed here.

pathsha256missing on
/__MACOSX/._index.html d2550ebf3832a5cc9e117e36e2ab413f72579703d3eb528cbbd13eb7b7684b48
https://nsite.run · missing

Manifest

event id
fcfd8c57749ad2254f4d3e77d56d2f7e07e76d5b7ceec1153efaeb694bc262e2
aggregate x
None
d tag
peerless

Paths

pathsha256hosts
/index.html 5fcf323a467f0397468265db73d9186764740a52dc42d318782b7b730a4f5ec0
https://nsite.run · degraded
https://nostr.download · degraded
https://blssm.us · degraded
https://blossom.yakihonne.com · degraded
https://zencrown.relay2aeon.quest/ · degraded
preview
/__MACOSX/._index.html d2550ebf3832a5cc9e117e36e2ab413f72579703d3eb528cbbd13eb7b7684b48
https://nsite.run · missing
https://nostr.download · degraded
https://blssm.us · degraded
https://blossom.yakihonne.com · degraded
https://zencrown.relay2aeon.quest/ · degraded
preview
/404.html 5fcf323a467f0397468265db73d9186764740a52dc42d318782b7b730a4f5ec0
https://nsite.run · degraded
https://nostr.download · degraded
https://blssm.us · degraded
https://blossom.yakihonne.com · degraded
https://zencrown.relay2aeon.quest/ · degraded
preview