[
  {
    "assets": [
      {
        "content_type": "application/octet-stream",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.3.0/ditto-relay-2.3.0-linux-x86_64",
        "name": "ditto-relay-2.3.0-linux-x86_64",
        "platforms": [
          "linux-x86_64"
        ],
        "sha256": "84bc3e92019cee7a248ec097611b4fc64c88dd9fd1eea1c181bba051b8d475dc",
        "size": 22432496
      },
      {
        "content_type": "application/octet-stream",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.3.0/ditto-relay-2.3.0-linux-aarch64",
        "name": "ditto-relay-2.3.0-linux-aarch64",
        "platforms": [
          "linux-aarch64"
        ],
        "sha256": "e8fb7146f7cb9d298bfe26deafd03a568ee743a2fc5a828892fb421bbcd8848c",
        "size": 19908136
      },
      {
        "content_type": "application/vnd.debian.binary-package",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.3.0/ditto-relay-2.3.0-linux-x86_64.deb",
        "name": "ditto-relay-2.3.0-linux-x86_64.deb",
        "platforms": [
          "linux-x86_64"
        ],
        "sha256": "f12e84ba1414bc08122865cc0eacc95aec1f57aa24e7c1507985c045a4606b5f",
        "size": 10858846
      },
      {
        "content_type": "application/vnd.debian.binary-package",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.3.0/ditto-relay-2.3.0-linux-aarch64.deb",
        "name": "ditto-relay-2.3.0-linux-aarch64.deb",
        "platforms": [
          "linux-aarch64"
        ],
        "sha256": "faa3e0e3be6c41e2f670583dcb2908290b01e15274e93335496bd0de325c7c66",
        "size": 10503616
      },
      {
        "content_type": "application/x-rpm",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.3.0/ditto-relay-2.3.0-linux-x86_64.rpm",
        "name": "ditto-relay-2.3.0-linux-x86_64.rpm",
        "platforms": [
          "linux-x86_64"
        ],
        "sha256": "8ae28a0feeea4b09fb2b2eaeb86ffa74d3332d028e74b8e9ca09f242c94fc6c6",
        "size": 10791878
      },
      {
        "content_type": "application/x-rpm",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.3.0/ditto-relay-2.3.0-linux-aarch64.rpm",
        "name": "ditto-relay-2.3.0-linux-aarch64.rpm",
        "platforms": [
          "linux-aarch64"
        ],
        "sha256": "24e5c9009acf8df43f28f31a275de067de64c56f7f9eda4b84ad0222f4be79a5",
        "size": 10395159
      }
    ],
    "channel": "stable",
    "notes": "- The relay makes its own key the first time it starts, in `secret.key` in\n  `data_dir` unless `secret_key_file` says otherwise, so NIP-85 assertions,\n  trending labels, and NIP-11's `self` work without setting anything up.\n  `ditto-relay check` says which key it would use, or that one would be made,\n  without making it. **A relay that had no `secret_key_file` now serves all\n  three**; `nip85 = false` turns the assertions off, and `trends_interval = 0`\n  the labels.\n- NIP-11's `software` is the relay's homepage,\n  `https://gitworkshop.dev/soapbox.pub/ditto-relay`, as the spec requires,\n  rather than its name. `software`, `icon` and `banner` can be set to other\n  URLs, or to `\"\"` to leave them out.\n- The relay's page sends all three CORS headers NIP-11 requires, and answers\n  preflight `OPTIONS` requests, which got a 405.\n- The example config sets settings off from their descriptions: settings are\n  commented out with `#`, descriptions with `# `, and sections have banners.\n  Its `pubkey` is a placeholder rather than a real key.",
    "prerelease": false,
    "published_at": "2026-10-14T20:23:11Z",
    "version": "2.3.0"
  },
  {
    "assets": [
      {
        "content_type": "application/octet-stream",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.2.0/ditto-relay-2.2.0-linux-x86_64",
        "name": "ditto-relay-2.2.0-linux-x86_64",
        "platforms": [
          "linux-x86_64"
        ],
        "sha256": "7a857f0957e5696643287c3af75c57d909695cc662a45cab21b6c36523691bea",
        "size": 22410736
      },
      {
        "content_type": "application/octet-stream",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.2.0/ditto-relay-2.2.0-linux-aarch64",
        "name": "ditto-relay-2.2.0-linux-aarch64",
        "platforms": [
          "linux-aarch64"
        ],
        "sha256": "a5ce77024fc372017e1a67fc90fff3d11b0c61de1e0b3bd1b3d788ac909f692d",
        "size": 19893152
      },
      {
        "content_type": "application/vnd.debian.binary-package",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.2.0/ditto-relay-2.2.0-linux-x86_64.deb",
        "name": "ditto-relay-2.2.0-linux-x86_64.deb",
        "platforms": [
          "linux-x86_64"
        ],
        "sha256": "05279ebdab7eb3fc7c7641e093889eb9c33806fdb759411fd9a04a3e227b2fb4",
        "size": 10849756
      },
      {
        "content_type": "application/vnd.debian.binary-package",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.2.0/ditto-relay-2.2.0-linux-aarch64.deb",
        "name": "ditto-relay-2.2.0-linux-aarch64.deb",
        "platforms": [
          "linux-aarch64"
        ],
        "sha256": "cbc2a46fd553bd6d65f686d5345cf36a592e22532ad8eb27373fffbe80fe2924",
        "size": 10478262
      },
      {
        "content_type": "application/x-rpm",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.2.0/ditto-relay-2.2.0-linux-x86_64.rpm",
        "name": "ditto-relay-2.2.0-linux-x86_64.rpm",
        "platforms": [
          "linux-x86_64"
        ],
        "sha256": "acda18465c21097f5e593bec67af9dc329d75c49088dd8aca84fa89263fceb8e",
        "size": 10781968
      },
      {
        "content_type": "application/x-rpm",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.2.0/ditto-relay-2.2.0-linux-aarch64.rpm",
        "name": "ditto-relay-2.2.0-linux-aarch64.rpm",
        "platforms": [
          "linux-aarch64"
        ],
        "sha256": "14fd243506d313186ab790a4eb81896c51e01fdf1f35628fe187187fd44801b9",
        "size": 10370527
      }
    ],
    "channel": "stable",
    "notes": "- NIP-77 negentropy syncing, so strfry (`strfry sync`), `nak sync`, and other\n  clients and relays can find which events each side is missing without\n  sending them all. It's on by default; `negentropy = false` turns it off,\n  and `negentropy_max_events` (1,000,000, as strfry's `maxSyncEvents`) bounds\n  how many events one sync may cover. Syncs find their events as a REQ does,\n  honoring `since`, `until` and `limit`; search filters can't be synced.\n- The negentropy protocol is the relay's own, in `src/negentropy.rs`, ported\n  from the `negentropy` crate, which a message of a few bytes could make\n  abort the process.\n- Arti comes from the head of Soapbox's fork: the guard manager expands its\n  sample at most once a second, and the onion service waits at least 10\n  seconds before retrying a descriptor upload.",
    "prerelease": false,
    "published_at": "2026-10-14T18:32:59Z",
    "version": "2.2.0"
  },
  {
    "assets": [
      {
        "content_type": "application/octet-stream",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.1.2/ditto-relay-2.1.2-linux-x86_64",
        "name": "ditto-relay-2.1.2-linux-x86_64",
        "platforms": [
          "linux-x86_64"
        ],
        "sha256": "83b08c82913b501b1efc3956d9f87a3c2b6bf81a77910fb73fdfd0273b098c95",
        "size": 22293488
      },
      {
        "content_type": "application/octet-stream",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.1.2/ditto-relay-2.1.2-linux-aarch64",
        "name": "ditto-relay-2.1.2-linux-aarch64",
        "platforms": [
          "linux-aarch64"
        ],
        "sha256": "52302df615c397d221fb5c409ea3726fbd8aef72347acdf7c59a90260fc0aece",
        "size": 19788088
      },
      {
        "content_type": "application/vnd.debian.binary-package",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.1.2/ditto-relay-2.1.2-linux-x86_64.deb",
        "name": "ditto-relay-2.1.2-linux-x86_64.deb",
        "platforms": [
          "linux-x86_64"
        ],
        "sha256": "1e7ab9edf521b01dc60a8f87a20bbc50a64e5e72fabdf0ce3c159a90b7e756fb",
        "size": 10806632
      },
      {
        "content_type": "application/vnd.debian.binary-package",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.1.2/ditto-relay-2.1.2-linux-aarch64.deb",
        "name": "ditto-relay-2.1.2-linux-aarch64.deb",
        "platforms": [
          "linux-aarch64"
        ],
        "sha256": "f35f23f7d8423fb7daaed6de3453bbbfcb5bed2314bce68183c691b5da3f9300",
        "size": 10450650
      },
      {
        "content_type": "application/x-rpm",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.1.2/ditto-relay-2.1.2-linux-x86_64.rpm",
        "name": "ditto-relay-2.1.2-linux-x86_64.rpm",
        "platforms": [
          "linux-x86_64"
        ],
        "sha256": "9b970cf9802c21f73fc7c958216612906ca1635a6bddc6ccc25e7ba9968e5eec",
        "size": 10738977
      },
      {
        "content_type": "application/x-rpm",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.1.2/ditto-relay-2.1.2-linux-aarch64.rpm",
        "name": "ditto-relay-2.1.2-linux-aarch64.rpm",
        "platforms": [
          "linux-aarch64"
        ],
        "sha256": "f11d89aa6100913cbe2c6a2edd4ea3be7b76c39aa2b3991868a295b4e86e109e",
        "size": 10342574
      }
    ],
    "channel": "stable",
    "notes": "- Clients are pinged every 30 seconds rather than every 60, well under the\n  60 seconds nginx waits by default on a quiet connection before closing it.\n  A client not heard from in a minute is now dropped.",
    "prerelease": false,
    "published_at": "2026-10-13T21:47:28Z",
    "version": "2.1.2"
  },
  {
    "assets": [
      {
        "content_type": "application/octet-stream",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.1.1/ditto-relay-2.1.1-linux-x86_64",
        "name": "ditto-relay-2.1.1-linux-x86_64",
        "platforms": [
          "linux-x86_64"
        ],
        "sha256": "0a423d134fc1bedccdb91b275c17b8ea096c6bdf5fcb4c75cee102de67730a02",
        "size": 22293488
      },
      {
        "content_type": "application/octet-stream",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.1.1/ditto-relay-2.1.1-linux-aarch64",
        "name": "ditto-relay-2.1.1-linux-aarch64",
        "platforms": [
          "linux-aarch64"
        ],
        "sha256": "19a601a207832d0fcd5dd3ffffc9ff0bade5366f89b3a0527b1189bc93b65b55",
        "size": 19788088
      },
      {
        "content_type": "application/vnd.debian.binary-package",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.1.1/ditto-relay-2.1.1-linux-x86_64.deb",
        "name": "ditto-relay-2.1.1-linux-x86_64.deb",
        "platforms": [
          "linux-x86_64"
        ],
        "sha256": "54fd8477b071c74bfd46e69a2ecba6b47e6bdc800b08adf9206339abbc99d19e",
        "size": 10796756
      },
      {
        "content_type": "application/vnd.debian.binary-package",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.1.1/ditto-relay-2.1.1-linux-aarch64.deb",
        "name": "ditto-relay-2.1.1-linux-aarch64.deb",
        "platforms": [
          "linux-aarch64"
        ],
        "sha256": "bbd7d2101f587be2033d8a114c02b998a14987b6e8a3226bb771a0b077a45d2e",
        "size": 10448378
      },
      {
        "content_type": "application/x-rpm",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.1.1/ditto-relay-2.1.1-linux-x86_64.rpm",
        "name": "ditto-relay-2.1.1-linux-x86_64.rpm",
        "platforms": [
          "linux-x86_64"
        ],
        "sha256": "2e64fd9370e2879be87947712b9ad4086820bc91cc7066eb2206797d07dfcbbb",
        "size": 10728614
      },
      {
        "content_type": "application/x-rpm",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.1.1/ditto-relay-2.1.1-linux-aarch64.rpm",
        "name": "ditto-relay-2.1.1-linux-aarch64.rpm",
        "platforms": [
          "linux-aarch64"
        ],
        "sha256": "911517e1c5c432bafd610ced7d72548882ef2ee0c01c0672209537f61acc992c",
        "size": 10340765
      }
    ],
    "channel": "stable",
    "notes": "- The onion service stays reachable. Arti now comes from Soapbox's fork,\n  where each descriptor upload waits at least 120 seconds: Arti gave up on\n  slow directory relays after 30 and never published to them, so the onion\n  dropped out for minutes to an hour at a time, about twenty times a day. The\n  fork also makes choosing relays far cheaper in CPU.",
    "prerelease": false,
    "published_at": "2026-10-13T16:22:32Z",
    "version": "2.1.1"
  },
  {
    "assets": [
      {
        "content_type": "application/octet-stream",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.1.0/ditto-relay-2.1.0-linux-x86_64",
        "name": "ditto-relay-2.1.0-linux-x86_64",
        "platforms": [
          "linux-x86_64"
        ],
        "sha256": "1680d43e569d4f7362f90c08e0cfc75a6808bbcb2b3f6cdfb1b514a8d61a98e2",
        "size": 22297280
      },
      {
        "content_type": "application/octet-stream",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.1.0/ditto-relay-2.1.0-linux-aarch64",
        "name": "ditto-relay-2.1.0-linux-aarch64",
        "platforms": [
          "linux-aarch64"
        ],
        "sha256": "54b1422612926c1e406774912569c3db85b6b85a51d9be7a7b626b617d080d76",
        "size": 19788728
      },
      {
        "content_type": "application/vnd.debian.binary-package",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.1.0/ditto-relay-2.1.0-linux-x86_64.deb",
        "name": "ditto-relay-2.1.0-linux-x86_64.deb",
        "platforms": [
          "linux-x86_64"
        ],
        "sha256": "4bb9f0be760882b17d1439ae5be23509aba86d5de64415b1b47a0304a535b2e4",
        "size": 10804480
      },
      {
        "content_type": "application/vnd.debian.binary-package",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.1.0/ditto-relay-2.1.0-linux-aarch64.deb",
        "name": "ditto-relay-2.1.0-linux-aarch64.deb",
        "platforms": [
          "linux-aarch64"
        ],
        "sha256": "fd4e0e51a088e5a4f0a22d9ba5b4e9465093e265e2da8f443967226d9307f42f",
        "size": 10449756
      },
      {
        "content_type": "application/x-rpm",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.1.0/ditto-relay-2.1.0-linux-x86_64.rpm",
        "name": "ditto-relay-2.1.0-linux-x86_64.rpm",
        "platforms": [
          "linux-x86_64"
        ],
        "sha256": "7ce6b195550c3b8fc733d2ea08cf9692a8ea372b1dae40f43cf021796f30fbed",
        "size": 10736025
      },
      {
        "content_type": "application/x-rpm",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.1.0/ditto-relay-2.1.0-linux-aarch64.rpm",
        "name": "ditto-relay-2.1.0-linux-aarch64.rpm",
        "platforms": [
          "linux-aarch64"
        ],
        "sha256": "79ec7b8ae66d69640ce0d2bc56d947e047c181e876cdfc3218b474900f0f600f",
        "size": 10341608
      }
    ],
    "channel": "stable",
    "notes": "- `ditto-relay delete --filter <json> [--age <seconds>] [--dry-run]` removes\n  every stored event a filter matches, and drops it from the search index.\n  While the relay runs, `delete` asks it, over a Unix socket in the database\n  directory, and the relay's own writer removes the events between its other\n  writes; a second process asking LMDB for its writer lock could wait on a\n  busy relay indefinitely. With the relay stopped, `delete` does it itself,\n  holding a lock the relay waits for as it starts. `--dry-run` only reads.\n- `ditto-relay check` validates the configuration, and the onion key if Tor\n  is on, without starting the relay or opening its database.\n- The relay can serve itself as a Tor onion service too, with Tor (Arti)\n  built in, by setting `enabled = true` under `[tor]`. The onion's key is a\n  file in C Tor's format, so an existing onion's address can be kept, and\n  `[tor.service]` and `[tor.arti]` take Arti's own settings. Over Tor the\n  landing page and NIP-11 name the onion, AUTH and requests to vanish may name\n  it, and the write policy plugin is told `sourceType` `\"Tor\"`. Over HTTPS,\n  the landing page points Tor Browser to the onion with `Onion-Location`.\n- The default `log` keeps Tor's routine out of the log.",
    "prerelease": false,
    "published_at": "2026-10-12T19:45:59Z",
    "version": "2.1.0"
  },
  {
    "assets": [
      {
        "content_type": "application/octet-stream",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.0.0/ditto-relay-2.0.0-linux-x86_64",
        "name": "ditto-relay-2.0.0-linux-x86_64",
        "platforms": [
          "linux-x86_64"
        ],
        "sha256": "cd879a817c9471c8158e777d9b7efc090ffcf822e9c74894fb01ea3b263391cb",
        "size": 10230544
      },
      {
        "content_type": "application/octet-stream",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.0.0/ditto-relay-2.0.0-linux-aarch64",
        "name": "ditto-relay-2.0.0-linux-aarch64",
        "platforms": [
          "linux-aarch64"
        ],
        "sha256": "48ac85da9665e338f3ff1c1b60197319111571c08f6eece90d7955737e3e8867",
        "size": 9145264
      },
      {
        "content_type": "application/vnd.debian.binary-package",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.0.0/ditto-relay-2.0.0-linux-x86_64.deb",
        "name": "ditto-relay-2.0.0-linux-x86_64.deb",
        "platforms": [
          "linux-x86_64"
        ],
        "sha256": "c88eeb576d1553acbd68c7d23f67ca2662d09050a024017a4ae1a17ca2fe8f49",
        "size": 5070974
      },
      {
        "content_type": "application/vnd.debian.binary-package",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.0.0/ditto-relay-2.0.0-linux-aarch64.deb",
        "name": "ditto-relay-2.0.0-linux-aarch64.deb",
        "platforms": [
          "linux-aarch64"
        ],
        "sha256": "b7e351fc8ef60a267a8e488e6d13f0c5b57b598383bf18d6ce3da4994355e11e",
        "size": 4943844
      },
      {
        "content_type": "application/x-rpm",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.0.0/ditto-relay-2.0.0-linux-x86_64.rpm",
        "name": "ditto-relay-2.0.0-linux-x86_64.rpm",
        "platforms": [
          "linux-x86_64"
        ],
        "sha256": "e715ada355038f9cbb12a7d91a8b15a89b24976a485d8e6e6d79a9e91755ad33",
        "size": 5050952
      },
      {
        "content_type": "application/x-rpm",
        "download_url": "https://pkg.soapbox.pub/releases/soapbox.pub/ditto-relay/download/2.0.0/ditto-relay-2.0.0-linux-aarch64.rpm",
        "name": "ditto-relay-2.0.0-linux-aarch64.rpm",
        "platforms": [
          "linux-aarch64"
        ],
        "sha256": "feef9b77c391e0686567580afd638959829a48f4f87b771a75766ba68238e796",
        "size": 4910111
      }
    ],
    "channel": "stable",
    "notes": "The first release of Ditto Relay in Rust, rewritten on its own database in\nplace of the OpenSearch-backed relay that came before it.\n\n- Events are kept as compact binary records in LMDB, with indexes built on its\n  sorted duplicate keys, and full-text search runs on Tantivy.\n- NIPs 1, 9, 11, 40, 42, 45, 50, 62 and 70. Reads are open to everyone; AUTH\n  is only needed to publish NIP-70 protected events.\n- NIP-50 search, with the `sort:hot`, `sort:top`, `sort:rising`,\n  `sort:controversial` and `sort:zaps` orderings ranked by a web of trust\n  seeded from pubkeys of your choosing, and the `autocomplete:`, `language:`,\n  `sentiment:`, `media:`, `video:`, `nsfw:`, `protocol:`, `client:`, `tag:`,\n  `pow:` and `distinct:author` extensions, each of which a leading `-`\n  negates, and negative search terms.\n- A `sort:hot` page that the week before its `until` leaves short of its\n  limit goes on to the weeks before, each ranked after the last, so a week\n  with nothing hot never comes back as an empty page, which clients take for\n  the end of what the filter matches.\n- NIP-45 `COUNT`, with HyperLogLog sketches for large tags.\n- NIP-85 trusted assertions and trending labels, signed by the relay's own\n  key.\n- Replaceable and addressable events keep the versions they replace.\n- strfry-compatible write policy plugins, and Prometheus metrics on an address\n  of their own.\n- Configuration is a TOML file, named with `--config` or found in\n  `~/.config/ditto-relay` or `/etc/ditto-relay`; `ditto-relay.example.toml`\n  lists every setting.\n- Each release publishes static binaries for x86_64 and aarch64 Linux, and\n  `.deb` and `.rpm` packages that install the binary, a systemd unit and\n  `/etc/ditto-relay/ditto-relay.toml`, and create the `ditto-relay` user and\n  `/var/lib/ditto-relay`.\n- The landing page shows the version it is running.",
    "prerelease": false,
    "published_at": "2026-10-09T19:40:49Z",
    "version": "2.0.0"
  }
]
