Avatar
Sirius
4523be58d395b1b196a9b8c82b038b6895cb02b683d0c253a955068dba1facd0
developing iris.to

Hashtree is very simple, it's just blossom + "this is how you define directories and chunk files". Merkle roots are saved in nostr events so you can have npub/path directories whose content you can edit. Files.iris.to supports nip-34 pull requests and issues. You could use it as one remote even if you also use grasp.

You could link them by their nhash if clients supported them. I'll add support to iris.to soon.

They're merkle trees on blossom. Kind 30078 event with ["d", "videos/videoname"], content: merkleRoot points to them. I might actually just make ["d", "videos"] which would contain all your vids in the same merkle tree dir, less event fetching.

They have no url that can be viewed in other apps, this comes from chunked & encrypted blossom-like hashtree-ts https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree-ts

https://video.iris.to/ - full of quality content

If you have a YouTube channel, please back it up with https://github.com/yt-dlp/yt-dlp and upload the whole directory!

I guess i should make a nostr note & media backup tool as well.

Initial clone from a git pack would be faster than fetching each object separately. But packs change hash whenever anything is added, so you'd lose the deduplication that the hashtree filesystem provides: same object in two repos would be stored twice.

I just installed ngit, trying it out. Git's native sync is faster than requesting every object by its blossom content hash. On the other hand, git-remote-htree doesnt require git servers, just blossom or webrtc peers.

Sha256 would be nice, but this is just a git remote helper. Choice of hash algorithm depends on how you init your git repo: git init --object-format=sha256. It stores the .git dir structure (with sha1 blob filenames by default) on blossom.

Need help testing git on blossom:

---

Install rust:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Install git-remote-htree:

cargo install git-remote-htree

Add htree remote to your repo & push

git remote add htree htree://self/your-repo-name

git push htree master

Try cloning a repo:

git clone htree://npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree-rs

Web interface for browsing repos:

https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree-rs

---

Added support for encrypted repos:

git remote add htree-secret htree://self/your-secret-repo#link-visible

It replaces #link-visible with #k=randomkey xor key which is required to read the repo.

Encrypted to your nsec only

git remote add htree-secret htree://self/your-secret-repo#private

No more GitHub β€” publish your git repos on Blossom:

---

cargo install hashtree-cli

cd your_repo

# self is an auto-generated nostr identity (nsec) in ~/.hashtree/keys

git remote add htree htree://self/your_repo

git push htree master

clone:

git clone htree://npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree-rs

view at files.iris.to e.g. https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree-rs

---

Vibe coded this in 3 weeks, using Claude Opus 4.5, along with

https://docs.iris.to collaborative docs editor

https://video.iris.to decentralized youtube

https://files.iris.to decentralized filesharing

https://meet.iris.to decentralized video calls

I believe AI will be actually good for freedom tech: soon everyone will have the resources to create the software they need, not just big tech.

https://github.com/mmalmi/hashtree-ts - it's basically blossom with directories and file chunking.

* Merkle tree roots published on nostr, so you can have npub/path addressed directories whose content you can update.

* Chunks are encrypted by default (Freenet style CHK content hash key encryption).

* Peers request chunks over WebRTC with Freenet style privacy preserving HTL hops-to-live algorihtm.

* HTTP blossom servers used as fallback.

I also have github replacement on hashtree in the works: https://files.iris.to/#/npub1g53mukxnjkcmr94fhryzkqutdz2ukq4ks0gvy5af25rgmwsl4ngq43drvk/repos/hashtree-ts

New version of https://docs.iris.to - collaborative docs editor on Nostr & blossom is here, should be much more reliable now.

Good point. It generates a random npub for you. There should be extension login option (double tap avatar or profile -> switch account) but I'll add nsec as well.

Halp me get better content onto the home page https://video.iris.to

Code is the spec 😬 https://github.com/irislib/meet using ephemeral 25050 evts to do signaling. Sending participant profile as rumor over datachannel. Chat messages sent over peer datachannels, unsigned.

Fixed graph-api.iris.to, now it's able to serve crazy big graph snapshots again. This graph is 30MB serialized, with 300K users and 12M follow relationships.

nostr:npub1lr2zzf989mvf393y0tv39ara6a4vddkd6y87z784up9vl6ks6j3qtudl6a will have to sing Queen at the next Rockamoto

Nostr apps should be served over Nostr, independently of DNS, CAs and host servers. Nostr app env can provide key management, relay connections and event storage without every app having to duplicate. Ideally, this would happen on the browser or even OS level.

nostr:note1205kts0atv8zs275as3hn6ejlscgdlzng63x0pyq8x8c2mry38jqql69j8

Replying to Avatar fiatjaf

This is a very good idea:

nostr:nevent1qvzqqqqqqypzplrsshpc8wn3w3tsf0wpcmhu7latqxt4q809nrz7d3fh4s9n9fxtqythwumn8ghj7un9d3shjtnswf5k6ctv9ehx2ap0qy88wumn8ghj7mn0wvhxcmmv9uqzpztk9s6tr2me0yy4ddl34ns6ymwzqtt4zhqwmufxnag56n9u68fdkcx8f7

Not because of the way nostr:npub1l3cgtsurhfchg4cyhhqudm70074sr96srhje330xc5m6czej5n9s9q6vs2 frames it, but because it fixes the problem of web clients being what the user wants them to be and truly representing the user and not some new malware everyday loaded from a URL controlled by someone else.

Parent web app could run relay conns & event storage and child apps could communicate with it over postMessage

Replying to Avatar fiatjaf

This is a very good idea:

nostr:nevent1qvzqqqqqqypzplrsshpc8wn3w3tsf0wpcmhu7latqxt4q809nrz7d3fh4s9n9fxtqythwumn8ghj7un9d3shjtnswf5k6ctv9ehx2ap0qy88wumn8ghj7mn0wvhxcmmv9uqzpztk9s6tr2me0yy4ddl34ns6ymwzqtt4zhqwmufxnag56n9u68fdkcx8f7

Not because of the way nostr:npub1l3cgtsurhfchg4cyhhqudm70074sr96srhje330xc5m6czej5n9s9q6vs2 frames it, but because it fixes the problem of web clients being what the user wants them to be and truly representing the user and not some new malware everyday loaded from a URL controlled by someone else.

I did not find source code for 44billion.net. Is there a spec for this "napp" packaging?

On the other hand, if you don't have an extension, it's safer to give your nsec to only 1 website instead of 10...