Garland: Your Keys, Your Files, No Trusted Third Party

Max

npub1klkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qulx3vt

hex

f47a512f508a07ac685e9d5195d92f53a237366977cb797932639cc10a6f12c0

nevent

nevent1qqs0g7j39agg5pavdp0f65v4myh48g3hxe5h0jme0yex88xppfh39sqprpmhxue69uhhyetvv9ujuem4d36kwatvw5hx6mm9qgst0mtgkp3du662ztj3l4fgts0purksu5fgek5n4vgmg9gt2hkn9lqd528gy

naddr

naddr1qqgrsde5xcexzvny8qerjvf3vgmkxqgcwaehxw309aex2mrp0yhxwatvw4nh2mr49ekk7egzyzm7669svt0xkjsju50a22zurc0qa589z2xd4yatzx6p2z64a5e0cqcyqqq823cl550hk

Kind-30023 (Article)

2025-11-29T11:33:55Z

I've been working on something and I want to share it early to get feedback.

The problem is simple: I want to store files across multiple servers without trusting any single provider, recover everything with just my private key, and have it feel like a normal folder on my phone.

Existing solutions either require accounts or lock you into one provider, treating encryption as an afterthought. I wanted something built for sovereignty from the ground up.

What is Garland?

Garland is middleware. It creates a virtual drive on your device that syncs to Blossom servers, decentralized blob storage with content addressing. Think of it like having your own S3 bucket, except:

  • No accounts. Your Nostr private key (nsec) is your identity.
  • No single point of failure. Files replicate across multiple Blossom servers you choose.
  • Full encryption, complete recovery. Everything encrypted client-side before upload. Lose your phone? Import your nsec on a new device and everything comes back.

How it works

Your files live as encrypted blobs on Blossom servers. But how does Garland know what files you have? That's where Nostr comes in.

Every time you click "Save," Garland:

  1. Uploads new/changed encrypted blobs to your Blossom servers
  2. Creates a Nostr event containing an encrypted manifest (file paths, hashes, sizes, server locations)
  3. Links this event to the previous one, forming a hash chain

This chain is your file system's history. You can roll back to any point. If you accidentally delete something, the old blob is still on Blossom, just point to an earlier manifest.

Handling conflicts

Multi-user-write file systems are crazy complex, so that's out of scope. But what if you put your nsec on two phones and both write at the same time? You get a fork, two events pointing to the same parent.

Garland detects this and shows you the conflicting files. You choose: keep the old version, keep the new version, or keep both. No silent data loss.

What I'm looking for

Garland is early, and there's lots of work to do:

  • Architecture review. Does this scheme make sense to you?
  • Rust developers. The core (encryption, Blossom client, Nostr signing) is Rust.
  • Flutter developers. The UI and platform integration.
  • GrapheneOS users. This is built with you in mind first.

If any of this resonates, if you've wanted file storage that respects your sovereignty, I'd love to hear from you. Feedback, criticism, contributions all welcome.

原始 JSON

{
  "kind": 30023,
  "id": "f47a512f508a07ac685e9d5195d92f53a237366977cb797932639cc10a6f12c0",
  "pubkey": "b7ed68b062de6b4a12e51fd5285c1e1e0ed0e5128cda93ab11b4150b55ed32fc",
  "created_at": 1777543606,
  "tags": [
    [
      "d",
      "87462a2d82911b7c"
    ],
    [
      "image",
      "https://image.nostr.build/8a9c5a598a51fdc1f3e5f45aea076038885ffd45ed9ccefefa9762749d2426fb.jpg"
    ],
    [
      "title",
      "Garland: Your Keys, Your Files, No Trusted Third Party"
    ],
    [
      "summary",
      "Garland turns Blossom blob storage into a virtual drive on your device. Your Nostr key is your password. No accounts, no cloud lock-in."
    ],
    [
      "published_at",
      "1764416035"
    ],
    [
      "t",
      "austrian-economics"
    ],
    [
      "t",
      "freedom-tech"
    ],
    [
      "t",
      "garland"
    ],
    [
      "t",
      "nostr"
    ],
    [
      "t",
      "blossom"
    ],
    [
      "t",
      "encryption"
    ],
    [
      "t",
      "self-sovereignty"
    ],
    [
      "t",
      "decentralization"
    ],
    [
      "t",
      "backup"
    ]
  ],
  "content": "I've been working on something and I want to share it early to get feedback.\n\n**The problem is simple:** I want to store files across multiple servers without trusting any single provider, recover everything with just my private key, and have it feel like a normal folder on my phone.\n\nExisting solutions either require accounts or lock you into one provider, treating encryption as an afterthought. I wanted something built for sovereignty from the ground up.\n\n## What is Garland?\n\nGarland is middleware. It creates a virtual drive on your device that syncs to Blossom servers, decentralized blob storage with content addressing. Think of it like having your own S3 bucket, except:\n\n- **No accounts.** Your Nostr private key (nsec) is your identity.\n- **No single point of failure.** Files replicate across multiple Blossom servers you choose.\n- **Full encryption, complete recovery.** Everything encrypted client-side before upload. Lose your phone? Import your nsec on a new device and everything comes back.\n\n## How it works\n\nYour files live as encrypted blobs on Blossom servers. But how does Garland know what files you have? That's where Nostr comes in.\n\nEvery time you click \"Save,\" Garland:\n1. Uploads new/changed encrypted blobs to your Blossom servers\n2. Creates a Nostr event containing an encrypted manifest (file paths, hashes, sizes, server locations)\n3. Links this event to the previous one, forming a hash chain\n\nThis chain is your file system's history. You can roll back to any point. If you accidentally delete something, the old blob is still on Blossom, just point to an earlier manifest.\n\n## Handling conflicts\n\nMulti-user-write file systems are crazy complex, so that's out of scope. But what if you put your nsec on two phones and both write at the same time? You get a fork, two events pointing to the same parent.\n\nGarland detects this and shows you the conflicting files. You choose: keep the old version, keep the new version, or keep both. No silent data loss.\n\n## What I'm looking for\n\nGarland is early, and there's lots of work to do:\n\n- **Architecture review.** Does this scheme make sense to you?\n- **Rust developers.** The core (encryption, Blossom client, Nostr signing) is Rust.\n- **Flutter developers.** The UI and platform integration.\n- **GrapheneOS users.** This is built with you in mind first.\n\nIf any of this resonates, if you've wanted file storage that respects your sovereignty, I'd love to hear from you. Feedback, criticism, contributions all welcome.\n",
  "sig": "b17b3d78fa2a7b9f76a71c1dd70986ca3b0ffd34973458c3024f2d8fdf1a906103486fa7832b33a9fe98aa03de5a39ec8977369f35de165ec88f7c7b4d18e11f"
}