<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2026-09-10T17:23:58Z</updated>
  <generator>https://yabu.me</generator>

  <title>Nostr notes by Stefano Marinelli - littleFedi</title>
  <author>
    <name>Stefano Marinelli - littleFedi</name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://yabu.me/npub1pn5kp8lxccavveesvl9yyapuuhkk2rr5uu7sfz9zhfqvxjw70fwsea4tzd.rss" />
  <link href="https://yabu.me/npub1pn5kp8lxccavveesvl9yyapuuhkk2rr5uu7sfz9zhfqvxjw70fwsea4tzd" />
  <id>https://yabu.me/npub1pn5kp8lxccavveesvl9yyapuuhkk2rr5uu7sfz9zhfqvxjw70fwsea4tzd</id>
  <icon>https://littleone.littlefedi.social/media/019fd149-5c36-7bce-9aa6-1cdaff7f060c/image.jpg</icon>
  <logo>https://littleone.littlefedi.social/media/019fd149-5c36-7bce-9aa6-1cdaff7f060c/image.jpg</logo>




  <entry>
    <id>https://yabu.me/nevent1qqstym2sd096mjs0956d9p08hu7fjsf9e2h7x2rjrsp7utvtrpyxwnczyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96yvr4hq</id>
    
      <title type="html">Hello, littleFedi friends! Some days ago, I created an official ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqstym2sd096mjs0956d9p08hu7fjsf9e2h7x2rjrsp7utvtrpyxwnczyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96yvr4hq" />
    <content type="html">
      Hello, littleFedi friends!&lt;br/&gt;&lt;br/&gt;Some days ago, I created an official account for the littleFedi project. It&amp;#39;s still almost empty and I&amp;#39;m planning to populate and starting to post from it after EuroBSDCon.&lt;br/&gt;&lt;br/&gt;If you want to receive the official communications about littleFedi, you can already follow that user: @littlefedi_official &lt;br/&gt;&lt;br/&gt;Enjoy!&lt;br/&gt;&lt;br/&gt;#littleFedi #littleOne
    </content>
    <updated>2026-09-07T18:24:50Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs8chjy99eh2zzanmq29yn33805ph8sh5tyhecazf4e5etpdwtuqkqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea967p57uu</id>
    
      <title type="html"># For the first time, littleFedi will be shown publicly And I ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs8chjy99eh2zzanmq29yn33805ph8sh5tyhecazf4e5etpdwtuqkqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea967p57uu" />
    <content type="html">
      # For the first time, littleFedi will be shown publicly&lt;br/&gt;&lt;br/&gt;And I have to say, this makes me very happy. :)&lt;br/&gt;&lt;br/&gt;A pre-release build will be running on a **Raspberry Pi Zero 2 W** at **Berlin FediDay**, where people will be able to see it, try it, play with it, and probably abuse it a little too.&lt;br/&gt;&lt;br/&gt;Unfortunately I won&amp;#39;t be there in person, because I&amp;#39;ll be at **EuroBSDCon** that same weekend.&lt;br/&gt;&lt;br/&gt;But really, what better place than FediDay for the first public appearance of littleFedi?&lt;br/&gt;&lt;br/&gt;A huge thanks to &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1xpzt8r7ph8kle39zrrkwrf7n4yuazscr77qvuv6cmyxnfc9s7aasvxa80p&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Adam Burns&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1xpz…a80p&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; - Adam - for taking this on, building the demo, testing it independently, and agreeing to respect the temporary source embargo while we complete the last checks before the public release.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m especially curious to see how littleFedi behaves once it&amp;#39;s in the hands of people who didn&amp;#39;t build it.&lt;br/&gt;&lt;br/&gt;This is exactly the kind of test I was hoping for.&lt;br/&gt;&lt;br/&gt;More details about the presentation:&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://ctalx.c-base.org/fediday-2026/talk/review/AJNLVMPYRSVX3JDHDHYSEZZNSP9KQSYH&#34;&gt;https://ctalx.c-base.org/fediday-2026/talk/review/AJNLVMPYRSVX3JDHDHYSEZZNSP9KQSYH&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;#littleFedi #littleOne #OwnYourData #Fediverse
    </content>
    <updated>2026-09-07T15:44:10Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsdyxa9k74z6yfx2h7n256vt9elpx9rt7a68qgfv3q4fjpn73jykpqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea968k9rff</id>
    
      <title type="html">**A small development update from the last two days:** - We added ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsdyxa9k74z6yfx2h7n256vt9elpx9rt7a68qgfv3q4fjpn73jykpqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea968k9rff" />
    <content type="html">
      **A small development update from the last two days:**&lt;br/&gt;&lt;br/&gt;- We added a couple of quality-of-life options for the web interface. You can now choose whether your timeline and notifications refresh automatically as new activity arrives. The preference is saved in your browser, so it remains in place between visits.&lt;br/&gt;- There is also a new option to choose your default landing page. If Catch-up is enabled on the instance, you can make it the page you see when opening littleOne, rather than always starting from the home timeline.&lt;br/&gt;- We also revised relationship notifications. Notifications for unfollows, blocks, unblocks, and rejected follow requests are now disabled by default. They can still be enabled individually from **Settings → Notifications** for people who want them.&lt;br/&gt;- Instance administrators can additionally disable those notifications for everyone through the configuration file:&lt;br/&gt;  &lt;br/&gt;  &lt;br/&gt;  &lt;br/&gt;  ```&lt;br/&gt;  [instance]&lt;br/&gt;  block_sensitive_relationship_notifications = true&lt;br/&gt;  ```&lt;br/&gt;&lt;br/&gt;When this option is enabled, the personal setting is hidden and individual opt-ins are overridden. Existing notifications and saved preferences are left untouched.&lt;br/&gt;&lt;br/&gt;- Alongside these changes, we merged a few branches and reviewed several incoming requests.&lt;br/&gt;&lt;br/&gt;Thanks to everyone who contributed feedback and testing!&lt;br/&gt;&lt;br/&gt;#littleOne #littleFedi&lt;br/&gt;&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;```
    </content>
    <updated>2026-09-05T07:21:06Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsf2nt9qrvzmv7y9ztl95d2pvu0q5xh7emc67m5pyj3njhnrpzuwdqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96p9rz5a</id>
    
      <title type="html"># Today’s littleFedi updates: - Strengthened allowlist-only ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsf2nt9qrvzmv7y9ztl95d2pvu0q5xh7emc67m5pyj3njhnrpzuwdqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96p9rz5a" />
    <content type="html">
      # Today’s littleFedi updates:&lt;br/&gt;&lt;br/&gt; - Strengthened allowlist-only federation: redirects, discovery, deliveries, and hostname handling now consistently respect the policy. (**Spoiler alert:** there&amp;#39;s a reason behind this 😉)&lt;br/&gt; - Fixed boosts for local-only posts, plus a timeline relative-time refresh issue.&lt;br/&gt;  - Fixed an Android PWA green-bar issue by letting the manifest update normally.&lt;br/&gt;  - Disabling remote media caching now safely clears leftover cache jobs instead of leaving the queue unhealthy.&lt;br/&gt;&lt;br/&gt;#littleFedi #littleOne #Fediverse #OwnYourData
    </content>
    <updated>2026-09-03T19:17:59Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs9d46x7fupctu4xt8kltjz4cylsjyp5d5gs96ycq6myyzh0akt0vqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96cuux0a</id>
    
      <title type="html">There are **48 local accounts** on this instance. It may not be ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs9d46x7fupctu4xt8kltjz4cylsjyp5d5gs96ycq6myyzh0akt0vqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96cuux0a" />
    <content type="html">
      There are **48 local accounts** on this instance.&lt;br/&gt;&lt;br/&gt; It may not be extremely active, but *SQLite is handling the workload very well*. The load is currently close to zero, even though littleFedi is running on a cheap VPS with 2 cores and 4 GB of RAM. It handles federation, lazy media caching, housekeeping and the usual background work&lt;br/&gt;  while using around **600 MB of RSS**.&lt;br/&gt;&lt;br/&gt;That figure represents the whole process footprint - not just the post cache - and includes the Go heap, reusable allocations, buffers and SQLite memory mappings.&lt;br/&gt;&lt;br/&gt; When an incoming post is relevant to a local user, littleFedi inserts it into that user’s materialized home feed in SQLite at ingest time. Opening the home timeline therefore requires an indexed read instead of rebuilding it from follows and followed hashtags. A bounded in-memory cache also keeps hot entities, timeline windows and rendered pages ready, while a background warmer refreshes the timelines of recently active users.&lt;br/&gt;&lt;br/&gt;Cache misses, restarts and evictions still fall back to SQLite, but the normal warm path is very fast. The bubble timeline also uses the cache, although its cold database path still needs quite a bit of work.&lt;br/&gt;&lt;br/&gt;For comparison, **my single-user instance on a Raspberry Pi Zero 2 W uses around 60 MB of RSS a few seconds after browsing around**.&lt;br/&gt;&lt;br/&gt;Go’s garbage collector runs automatically and reclaims unreachable heap objects. Some memory may remain reserved for reuse, however, so RSS does not necessarily fall immediately after a collection cycle.&lt;br/&gt;&lt;br/&gt;littleFedi isn’t trying to compete with snac on minimalism - snac is awesome and remains the best solution for many scenarios. The goal is to offer a different experience while remaining usable across a wide range of hardware platforms and operating systems.&lt;br/&gt;&lt;br/&gt;#littleFedi #littleOne #OwnYourData
    </content>
    <updated>2026-09-03T07:49:26Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqszhgr3c89h8upn6zaxm5v5xawdnt0g7f3l2kgtlhan09pwrls6peqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea960qz2fy</id>
    
      <title type="html">There was a problem and users following a #littleFedi instance ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqszhgr3c89h8upn6zaxm5v5xawdnt0g7f3l2kgtlhan09pwrls6peqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea960qz2fy" />
    <content type="html">
      There was a problem and users following a #littleFedi instance from an #Akkoma instance were left in a pending situation.&lt;br/&gt;&lt;br/&gt;It should be fixed now. Thank you &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1qf5cutfre7fh8agrccyz6340udf9f3xf5jx9cd0umm6xue38td4sxdynp2&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Jason Tubnor 🇦🇺&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1qf5…ynp2&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; and &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub12wpk5z8cezwj7cmshusn0vp3luv69y74clk2asurkvph7z2gzqmqwfe8ay&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;oxy ::openbsd::&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub12wp…e8ay&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; for your help!
    </content>
    <updated>2026-08-31T06:58:03Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsvvhjenjmlvw6hcm9zqrqshl4q0zy40g77f4cgqqj7cavp3vpal7szyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96m00nn4</id>
    
      <title type="html">Go, #littleFedi, go! #littleFedi #littleOne #note1e4s…39tr</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsvvhjenjmlvw6hcm9zqrqshl4q0zy40g77f4cgqqj7cavp3vpal7szyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96m00nn4" />
    <content type="html">
      Go, #littleFedi, go!&lt;br/&gt;&lt;br/&gt;#littleFedi #littleOne&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/note1e4syphaqla790h4ep2y0tttqjzw65juug5acpppmn8jl9s4wnt2q9439tr&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;note1e4s…39tr&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt; **...let&#39;s lower the barriers even further!** &lt;br/&gt;Now this instance is running on a **Raspberry Pi A&#43;** (*1 core @ 700 MHz, 256MB RAM*), so even less than the Raspberry Pi Zero W it was running on before. &lt;br/&gt;&lt;br/&gt;**On NetBSD, of course!**&lt;br/&gt;&lt;br/&gt;#littleFedi #NetBSD #RunBSD #OwnYourData #Decentralization #OwnYourVoice&lt;br/&gt; &lt;img src=&#34;https://rpi0w.stefanomarinelli.it/media/01a05228-7c1a-71a9-ba38-66dfddd51bed/image.jpg&#34;&gt; &lt;br/&gt; &lt;/blockquote&gt;
    </content>
    <updated>2026-08-30T10:31:06Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs8h9n68m86sg3scepgx70qfc5vuexxezv5g33ptydl6w6tan72srczyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96p6gujt</id>
    
      <title type="html">**littleFedi doesn&amp;#39;t need a Raspberry PI to run.** It *can* ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs8h9n68m86sg3scepgx70qfc5vuexxezv5g33ptydl6w6tan72srczyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96p6gujt" />
    <content type="html">
      **littleFedi doesn&amp;#39;t need a Raspberry PI to run.**&lt;br/&gt;&lt;br/&gt;It *can* run on a Raspberry PI - and this is totally different.&lt;br/&gt;It&amp;#39;s a *Go* app, so the current compatibility matrix is:&lt;br/&gt;&lt;br/&gt;| Operating system  | Published binaries (`make release`) | Full release matrix (`make release-all`) | Also compiles (`make allreleases`)    |&lt;br/&gt;| ----------------- | ----------------------------------- | ---------------------------------------- | ------------------------------------- |&lt;br/&gt;| **FreeBSD**       | amd64, arm64                        | 386, arm                                 | none                                  |&lt;br/&gt;| **Linux**         | amd64, arm64, arm                   | 386, loong64, ppc64le, riscv64, s390x    | mips, mipsle, mips64, mips64le, ppc64 |&lt;br/&gt;| **NetBSD**        | amd64, arm                          | arm64                                    | 386                                   |&lt;br/&gt;| **OpenBSD**       | amd64, arm64                        | none                                     | 386, arm, ppc64, riscv64              |&lt;br/&gt;| **illumos**       | amd64                               | none                                     | none                                  |&lt;br/&gt;| **macOS**         | amd64, arm64                        | none                                     | none                                  |&lt;br/&gt;| **Windows**       | amd64                               | 386, arm64                               | none                                  |&lt;br/&gt;| **Solaris**       | none                                | none                                     | amd64                                 |&lt;br/&gt;| **DragonFly BSD** | none                                | none                                     | amd64                                 |&lt;br/&gt;| **AIX**           | none                                | none                                     | ppc64                                 |&lt;br/&gt;| **Plan 9**        | none                                | none                                     | 386, amd64, arm                       |&lt;br/&gt;| **Android**       | none                                | none                                     | arm64                                 |&lt;br/&gt;&lt;br/&gt;#littleFedi #littleOne
    </content>
    <updated>2026-08-28T13:28:07Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs9nw3wlslvhdyujjv8mglsz5eahxdxkuvuep6e6z6tv7sqrhhnvpqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96u7azhm</id>
    
      <title type="html">littleOne is a **powerful** (!!!) 2 core, shared VPS, with 4 GB ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs9nw3wlslvhdyujjv8mglsz5eahxdxkuvuep6e6z6tv7sqrhhnvpqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96u7azhm" />
    <content type="html">
      littleOne is a **powerful** (!!!) 2 core, shared VPS, with 4 GB Ram. &lt;br/&gt;It&amp;#39;s almost idle.&lt;br/&gt;&lt;br/&gt;But the Raspberry PI Zero W powered by NetBSD is a good testbed. Not because you *need* it, but because you can. And if it runs there... 😉&lt;br/&gt;&lt;br/&gt;#littleOne #littleFedi&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/note1g606j38w8g9m7x4legp0070275a63hdv694d4e4jncefre5whj7s9wenp8&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;note1g60…enp8&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt; **Thank you, friends!**&lt;br/&gt;&lt;br/&gt;The instance held up perfectly, without flinching! I also took advantage of the surge to identify a few areas for improvement, and they&#39;ve been pinned down. New patches will be rolled out over the next few days.&lt;br/&gt;&lt;br/&gt;**The release is getting closer and closer...**&lt;br/&gt;&lt;br/&gt;#littleFedi #Fediverse #OwnYourData &lt;/blockquote&gt;
    </content>
    <updated>2026-08-28T13:04:08Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsywywl26gymmm9vcxsgfgz7rve4cvcuhjeazgfdj8q5g9x4mw0tzgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96se294m</id>
    
      <title type="html">This is the *&amp;#34;roost&amp;#34;* littleFedi theme #littleFedi ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsywywl26gymmm9vcxsgfgz7rve4cvcuhjeazgfdj8q5g9x4mw0tzgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96se294m" />
    <content type="html">
      This is the *&amp;#34;roost&amp;#34;* littleFedi theme&lt;br/&gt;&lt;br/&gt;#littleFedi #Fediverse&lt;br/&gt; &lt;img src=&#34;https://littleone.littlefedi.social/media/01a044bd-5751-7ab6-9814-bd4de7da8b3a/image.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-08-27T19:40:56Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs85l0mp2hvkwkd7vqdwny20sr5em3tsv2syhmpvuy55ntg9f5eg3gzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea962c6l9j</id>
    
      <title type="html">littleFedi allows you to hide all posts that have images without ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs85l0mp2hvkwkd7vqdwny20sr5em3tsv2syhmpvuy55ntg9f5eg3gzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea962c6l9j" />
    <content type="html">
      littleFedi allows you to hide all posts that have images without alt text. &lt;br/&gt;Because **yes, that&amp;#39;s how it should be**.&lt;br/&gt;&lt;br/&gt;#littleFedi #littleOne #Fediverse&lt;br/&gt; &lt;img src=&#34;https://littleone.littlefedi.social/media/01a03928-cc77-7c7d-8de5-019ece29a358/image.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-08-25T13:42:50Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsyxr77jvvy4xmcs5res80qv08uluzqs4tdh0pgmxf97lfe7pk88fczyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96fpnlcs</id>
    
      <title type="html">The plan was to release the source code for #littleFedi before ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsyxr77jvvy4xmcs5res80qv08uluzqs4tdh0pgmxf97lfe7pk88fczyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96fpnlcs" />
    <content type="html">
      The plan was to release the source code for #littleFedi before the end of the month, but #EuroBSDCon takes place shortly after and I&amp;#39;ll be quite busy. &lt;br/&gt;Since the first few days post-release are always the most dynamic, the plan now is to release it right after (*shortly after 15 September*), allowing a few more weeks for bug fixes, tweaks, integrations, etc., that the **wonderful** people on this instance are sending in day after day.&lt;br/&gt;&lt;br/&gt;**To all of you: thank you!**&lt;br/&gt;&lt;br/&gt;#littleFedi #littleOne
    </content>
    <updated>2026-08-25T13:00:37Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsysn6mpx8ystqele9vm2jrjdjv4efay8js88dkt3uqt3pgef2hmrczyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96kjy6ax</id>
    
      <title type="html">A little while ago I wondered: how many people are on this ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsysn6mpx8ystqele9vm2jrjdjv4efay8js88dkt3uqt3pgef2hmrczyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96kjy6ax" />
    <content type="html">
      A little while ago I wondered: how many people are on this server?&lt;br/&gt;&lt;br/&gt;The answer was, of course, obvious.&lt;br/&gt;&lt;br/&gt;**42.**&lt;br/&gt;&lt;br/&gt;Douglas Adams was right all along.&lt;br/&gt;&lt;br/&gt;#littleOne&lt;br/&gt; &lt;img src=&#34;https://littleone.littlefedi.social/media/01a0352e-c58d-7334-8f0b-c145c5d2046a/image.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-08-24T19:10:52Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsxe3mw63uynvx2alwu0cd4nxcssw6v3w62h9nlzcaup24ggtamzvgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea967punvy</id>
    
      <title type="html">Do you want to chat about littleFedi on **Matrix**? We have a ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsxe3mw63uynvx2alwu0cd4nxcssw6v3w62h9nlzcaup24ggtamzvgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea967punvy" />
    <content type="html">
      Do you want to chat about littleFedi on **Matrix**?&lt;br/&gt;&lt;br/&gt;We have a space, we have a room!&lt;br/&gt;&lt;br/&gt;Join us at &lt;a href=&#34;https://matrix.to/#/!aAoNhGCROAnRqmlWCo:bsd.cafe?via=bsd.cafe&#34;&gt;https://matrix.to/#/!aAoNhGCROAnRqmlWCo:bsd.cafe?via=bsd.cafe&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;See you there!&lt;br/&gt;&lt;br/&gt;#littleFedi #littleOne #Matrix
    </content>
    <updated>2026-08-22T07:50:22Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsvg8cageer3d8krlf260rxuj9sa25ld9jzlkpj2xapjpjngnd3s0czyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea962nv2tx</id>
    
      <title type="html">not yet, but this is a good idea. I&amp;#39;ll create one later ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsvg8cageer3d8krlf260rxuj9sa25ld9jzlkpj2xapjpjngnd3s0czyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea962nv2tx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsq88me488nfl85a4v69rrjl49fvpu624l8yu4rkjhhxkz98uyqsmslyk2hj&#39;&gt;nevent1q…k2hj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;not yet, but this is a good idea. I&amp;#39;ll create one later today. Thanks for the idea!
    </content>
    <updated>2026-08-22T07:10:15Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsr5yrg42mqr4xz9zxs48cyh5eqtgz32kyrlx00ar085yy2s3zw0ggzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea968y0w7t</id>
    
      <title type="html"># littleFedi and your data Several people have asked me the same ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsr5yrg42mqr4xz9zxs48cyh5eqtgz32kyrlx00ar085yy2s3zw0ggzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea968y0w7t" />
    <content type="html">
      # littleFedi and your data&lt;br/&gt;&lt;br/&gt;Several people have asked me the same thing over the past few days, in different words but with the same question underneath: &amp;#34;if I set up a littleFedi instance, or open an account on one that is already running, what ends up stored somewhere?&amp;#34;.&lt;br/&gt;&lt;br/&gt;It is a fair question and it deserves a precise answer. So I went back and reread the code, the database schema and the default configuration, and what follows is what I found. Including the parts I do not like, and the parts no fediverse software can solve.&lt;br/&gt;&lt;br/&gt;One premise that applies to everything else: littleFedi is a binary running on a server. Whoever administers that server has access to the database. This is true for littleFedi, for Mastodon, for snac, for GoToSocial, for anything. The difference is how much that database holds, and how much of it leaves for the outside world without anyone asking.&lt;br/&gt;&lt;br/&gt;The database holds the obvious things: username, display name, bio, avatar, header image, the key pair that is the account&amp;#39;s ActivityPub identity, posts, favourites, follows, blocks, mutes, bookmarks, lists, filters.&lt;br/&gt;&lt;br/&gt;Then the preferences: theme, interface language, default post language, default visibility, which notifications you want by email, which by push. Functional stuff.&lt;br/&gt;&lt;br/&gt;Email is optional. `require_email` is `false` by default: on a single-user instance you can leave it out entirely, and on a multi-user one it is the operator who decides whether to require it. If you do provide it, it is used for verification, password reset and the notifications you chose. Nothing else.&lt;br/&gt;&lt;br/&gt;The password is hashed with bcrypt. The TOTP secret, if you enable the second factor, is encrypted at rest, not stored in the clear.&lt;br/&gt;&lt;br/&gt;And here is something I want to say because it was a deliberate choice: **every bearer token is stored as a SHA-256 hash, never in the clear.** Session tokens, OAuth access and refresh tokens, application client secrets, password reset tokens, email verification tokens. Anyone who walks off with a copy of the database does not walk off with reusable credentials.&lt;br/&gt;&lt;br/&gt;We did a cleanup on exactly this just yesterday. The sessions table had been carrying a legacy `token` compatibility column for a long time, inherited from an older schema. It held nothing dangerous, because the function that creates sessions was writing the hash into it rather than the browser token, and I checked that this is the only path that leads to an insert. But the guarantee lived in one line of Go, not in the schema. A line of Go can be removed by accident; a column that does not exist cannot. So I dropped the column with a migration, and now there is simply nowhere in the `sessions` table for a token in the clear to end up.&lt;br/&gt;&lt;br/&gt;*There is exactly one place where an IP address ends up*&lt;br/&gt;&lt;br/&gt;The `sessions` table. When you log in, littleFedi saves the session row with: hashed token, creation date, expiry, User-Agent and IP address.&lt;br/&gt;&lt;br/&gt;It serves one purpose: the **Settings &amp;gt; Sessions** page, where you can see your active logins and revoke them one at a time. It is your data, shown to you. There is no admin screen listing users&amp;#39; IP addresses, and we did not write one on purpose.&lt;br/&gt;&lt;br/&gt;Sessions last 30 days and are removed by automatic maintenance when they expire, along with the push subscriptions attached to them.&lt;br/&gt;&lt;br/&gt;What is **not** saved, and what other software does save:&lt;br/&gt;&lt;br/&gt;- **No registration IP.** Until yesterday the registration struct had a field for the IP and one for the User-Agent that nobody ever read: the data arrived inside the function and died there, without touching the database. We took them out. I did ask myself whether it was worth actually recording it, the way Mastodon does, and the answer I arrived at is no. There is really only one use case, the wave of fake accounts created in bulk, and in that case you already have the data: a freshly registered account that is spamming has an open session, and that session holds the IP and the User-Agent. Someone who registers and never logs in is not spamming. On top of that the IP is a weak signal in itself, between CGNAT, mobile carriers and VPNs, while invites, manual approval and email verification are real defences. And unlike the session, which expires in 30 days and disappears, a column like that would stay attached to the account forever: one more entry in the privacy policy, one more target in a breach, and one more thing someone can come asking for with a stamped piece of paper. On a single-user instance it would mean nothing at all.&lt;br/&gt;- **No last-login IP** on the account. Only the session, which expires.&lt;br/&gt;- **No IP history.** Close the session and that row is gone.&lt;br/&gt;- The per-IP rate limiter does exist, but it keeps its counters **in memory only** and cleans them up by itself. It never touches the disk.&lt;br/&gt;&lt;br/&gt;What about cookies?&lt;br/&gt;&lt;br/&gt;*Five*, all first-party, all functional:&lt;br/&gt;&lt;br/&gt;`session` (HttpOnly, SameSite=Lax, Secure when you are behind HTTPS, 30 days), `pwreset_token` (lives 15 minutes during a password reset), `locale`, `theme`, `appearance`.&lt;br/&gt;&lt;br/&gt;There is nothing else. There is no analytics cookie because there is no analytics.&lt;br/&gt;&lt;br/&gt;**Zero third parties**&lt;br/&gt;&lt;br/&gt;What the code does not contain: Google Analytics, Matomo, Plausible, Sentry, a CDN, a remote font, a third-party script, a pixel, a beacon. And, old-fashioned as it may sound, there is no AI listening in and offering suggestions.&lt;br/&gt;&lt;br/&gt;The default Content-Security-Policy is `default-src &amp;#39;self&amp;#39;` with a nonce for inline content. Pages load only what your own instance serves. If someone tried to slip an external resource in tomorrow, the browser would block it on its own.&lt;br/&gt;&lt;br/&gt;There is not even an update check phoning home. littleFedi does not know you exist and I have no way of finding out.&lt;br/&gt;&lt;br/&gt;The only connection to a server of mine is the commercial Big Tech domain list, still empty, (`&lt;a href=&#34;https://littlefedi.org/lists/commercial-bigtech.csv&#34;&gt;https://littlefedi.org/lists/commercial-bigtech.csv&lt;/a&gt;`), which is downloaded **only if you turn that block on**, and it is off by default. It is a download of a CSV of domain names: it sends nothing about you, and you can point the same option at your own list or at a mirror.&lt;br/&gt;&lt;br/&gt;The `/metrics` endpoint is disabled by default.&lt;br/&gt;&lt;br/&gt;What about logs?&lt;br/&gt;&lt;br/&gt;Here I owe you the whole truth. The access log is **on** by default and writes one line per request: method, path, status, bytes, duration and remote address.&lt;br/&gt;&lt;br/&gt;High-volume, low-value requests (static assets, proxied media, `/health`, `/metrics`, `/robots.txt`, the service worker) are logged at debug level only, so at the default `info` level they stay silent. But pages are logged.&lt;br/&gt;&lt;br/&gt;It goes away with one line:&lt;br/&gt;&lt;br/&gt;```&lt;br/&gt;[observability]&lt;br/&gt;access_log = false&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;And retention is not littleFedi&amp;#39;s call: those lines end up wherever your init system sends them, journald or syslog or anything else. It is the operator who decides how long they stay. In the policy template I ship I suggest 14 days as a starting point.&lt;br/&gt;&lt;br/&gt;As for media?&lt;br/&gt;&lt;br/&gt;EXIF metadata on uploaded images is **stripped by default** (`strip_exif = true`). Orientation is preserved because it is baked into the pixels before the rewrite, so the photo does not end up sideways.&lt;br/&gt;&lt;br/&gt;With one honest caveat: the rewrite only happens for JPEG and PNG. GIFs are deliberately left untouched, because rewriting them would flatten the animation, and WebP files are not rewritten because the library I use has no WebP encoder. In practice: if you upload a WebP with GPS coordinates inside, those coordinates stay. I am saying it plainly because it is better to know than to find out. We will look at it later on.&lt;br/&gt;&lt;br/&gt;File names are randomised (`rename_media = true`), so `IMG_20250812_my_coffee.jpg` does not become a public URL.&lt;br/&gt;&lt;br/&gt;And then there is the thing I am proudest of, which is on by default: **the remote media proxy.**&lt;br/&gt;&lt;br/&gt;`proxy_remote = true`. When an image, an avatar or an emoji living on another server shows up in your timeline, your browser does **not** contact that server. It contacts your instance, which streams it through. The result is that the remote instance does not see your IP address, does not see your User-Agent, does not see what time you read that post, and cannot use an image as a tracking pixel.&lt;br/&gt;&lt;br/&gt;Proxy URLs are HMAC-signed and regenerated on every response, never stored anywhere. And `cache_remote` is `off` by default: the stream is passed through and that is it, without keeping other people&amp;#39;s media on your disk. If you would rather keep them to cut down on traffic there are the `lazy` and `eager` modes, but that is your choice, not a default you find yourself saddled with.&lt;br/&gt;&lt;br/&gt;I will add the security headers, which are privacy too: `X-Frame-Options: DENY`, `X-Content-Type-Options: nosniff`, `Referrer-Policy: strict-origin-when-cross-origin` (meaning: when you click a link to the outside, the destination site does not see which exact page you came from), HSTS when you are behind TLS.&lt;br/&gt;&lt;br/&gt;But there is also the part no software can fix.&lt;br/&gt;&lt;br/&gt;Which is to say, it is time for the uncomfortable section, and it applies to littleFedi just as it does to any other ActivityPub implementation. If someone tells you otherwise, they are selling you something that does not exist.&lt;br/&gt;&lt;br/&gt;**Public posts are public.** When you publish, a copy is delivered to every server that has at least one of your followers, and to every relay your instance is connected to. Those copies are on machines you do not administer. There is no way to call them back.&lt;br/&gt;&lt;br/&gt;**Direct messages are not end-to-end encrypted.** In the fediverse a DM is a post with `direct` visibility. It sits in the clear in your instance&amp;#39;s database and in the clear in the recipient&amp;#39;s instance database. Whoever administers either server can read it. Do not use fediverse DMs for anything you would not put on a postcard. This applies to littleFedi, it applies to Mastodon, it applies to everyone. We are thinking about a way to encrypt DMs between littleFedi instances, but that could not apply with other software, and it risks giving a false sense of security.&lt;br/&gt;&lt;br/&gt;**Followers-only is a convention, not a lock.** You tell the remote server &amp;#34;this is for followers only&amp;#34;. The remote server, if it is honest, respects that. If it is not, no amount of encryption is going to stop it.&lt;br/&gt;&lt;br/&gt;**Deleting means asking to delete.** littleFedi sends `Delete` activities to peers and has a queue with retries. If a peer is offline, or uncooperative, that copy stays where it is. That is a limitation of the protocol, not a bug.&lt;br/&gt;&lt;br/&gt;And what if I delete my account?&lt;br/&gt;&lt;br/&gt;I wrote this part carefully, because it is where a lot of software pretends.&lt;br/&gt;&lt;br/&gt;When an account is deleted, a single transaction removes: posts and boosts, polls, options and votes, notifications (both received and generated), mentions, favourites, emoji reactions, bookmarks, link previews, home feed rows, attachments, filters and filter keywords, scheduled posts, push subscriptions, OAuth tokens, sessions, lists, followed tags, featured tags, blocks and mutes (in both directions), follows (in both directions), relays, read markers, personal domain blocks, password resets, email verifications, digest state, MFA recovery codes, exports, imports, reports, generated invites, and finally the account row itself. Counters on other accounts and other posts are recalculated, not left out of sync.&lt;br/&gt;&lt;br/&gt;The actual files, meaning media, export archives and import archives, are deleted from storage, whether that is a local disk or S3.&lt;br/&gt;&lt;br/&gt;What **stays**, and I am saying so explicitly:&lt;br/&gt;&lt;br/&gt;- **Tombstones.** A row with a URI, the original type and a date. They exist so that deleted content is not resurrected when a peer offers it back to us. The ones for posts have a configurable retention, 90 days by default. The one for a deleted actor stays indefinitely, but it holds nothing but URI, type and date.&lt;br/&gt;- **The moderation log.** Administrator actions stay, because an audit log you can delete is not an audit log. The template suggests 2 years.&lt;br/&gt;&lt;br/&gt;Deletion has a window: peers are notified first, then it is finalised. There is a deadline past which it is finalised anyway, because at that point the right to erasure of someone who is here outweighs an unreachable peer.&lt;br/&gt;&lt;br/&gt;But you can take your data with you.&lt;br/&gt;&lt;br/&gt;There is the account export: a ZIP with `account.json`, the media index and the media themselves. It is served with `private, no-store`, it has an expiry, and a cleanup job removes it from storage. The template suggests 24 hours and a single download.&lt;br/&gt;&lt;br/&gt;There is the import, which accepts the same format. And there is migration to another instance. The archive uploaded for an import is deleted as soon as the import succeeds.&lt;br/&gt;&lt;br/&gt;What if you use littleMesh?&lt;br/&gt;&lt;br/&gt;Anyone running an instance behind NAT with littleMesh has one more surface, and I want to be precise here too, because it is already written in the documentation.&lt;br/&gt;&lt;br/&gt;The **lighthouse** relays encrypted circuits. It does not read the contents, it cannot impersonate a node, and it has neither the mesh key nor the actor key. But it does see which node IDs open circuits to which, with what sizes and what timings. **littleMesh solves reachability, not anonymity.** If anonymity is what you need, an onion service is the right tool, not this one.&lt;br/&gt;&lt;br/&gt;The **HTTPS gateway** is a different matter: it is the one terminating TLS for non-mesh servers, so it sees the traffic. That is written in the trust table in the documentation, in plain terms, along with what it can and cannot do.&lt;br/&gt;&lt;br/&gt;The default exposure is `federation`: discovery, inboxes, objects, actors and public media get through. The web interface, the authentication pages, the Mastodon API and the media proxy do not.&lt;br/&gt;&lt;br/&gt;## Retention defaults, all in one place&lt;br/&gt;&lt;br/&gt;| What | Default |&lt;br/&gt;| --- | --- |&lt;br/&gt;| Sessions | 30 days, then removed |&lt;br/&gt;| Remote posts | 30 days (`prune_remote_statuses_after_days = 30`) |&lt;br/&gt;| Remote media cache | disabled; if enabled, 720 hours |&lt;br/&gt;| Terminal jobs | 24 hours |&lt;br/&gt;| Post tombstones | 90 days |&lt;br/&gt;| Your own posts | never, unless you ask |&lt;br/&gt;| Moderation log | indefinitely |&lt;br/&gt;| Access log | your system keeps them, not littleFedi |&lt;br/&gt;&lt;br/&gt;You can have your own posts pruned automatically, by age and with like and boost thresholds, if you want a timeline that forgets. And there are self-destructing posts with a per-post timer. But those are things you choose, not things I decide for you.&lt;br/&gt;&lt;br/&gt;There is something the software cannot do in your place, though&lt;br/&gt;&lt;br/&gt;If you open an instance to other people, the code cannot write your privacy policy for you. It cannot decide the lawful basis, the jurisdiction, the subprocessors, the policy on minors, the breach notification timelines.&lt;br/&gt;&lt;br/&gt;That is what `docs/instance-policy-template.md` is for: an operator checklist with a starting retention table and a list of what an honest privacy policy has to cover, namely federation of profiles and posts to independent servers, caching and proxying of remote content, email, push endpoints, logs, moderation records, backups, exports, imports, tombstones, where the data lives and how people exercise their rights. It is not legal advice and does not claim to be.&lt;br/&gt;&lt;br/&gt;Moderation, privacy and security contacts, the rules and the terms of service are published from the admin console without restarting anything, and they land on `/about`, on `/terms` and in the instance APIs.&lt;br/&gt;&lt;br/&gt;In two lines...&lt;br/&gt;&lt;br/&gt;...littleFedi collects what it needs to work and nothing more. One IP address per session, shown to you and revocable by you. No analytics, no telemetry, no third parties, no phoning home. We do not know how many of you there are or who you are, and we have no interest in finding out. EXIF stripped by default, remote media proxied by default, metrics off by default, secrets hashed at rest, deletion that actually deletes.&lt;br/&gt;&lt;br/&gt;And then there is the fediverse, which is a publishing protocol. What you put on it in public is public, DMs are not encrypted, and deleting is a polite request to other servers. littleFedi does not change that and neither does anyone else. Once you know it, you can live with it perfectly well.&lt;br/&gt;&lt;br/&gt;#littleFedi #littleOne #Fediverse #OwnYourData&lt;br/&gt; &lt;img src=&#34;https://littleone.littlefedi.social/media/01a02026-fed1-7b07-aea7-2605f07e16d0/image.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-08-20T17:10:21Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs9ayu54uqu7xpw8m9xpye7254yc0zlpehgltgdmkljx8tk56ep0nczyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea966vd3tx</id>
    
      <title type="html">The &amp;#34;roost&amp;#34; theme reminds me the early days of a famous ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs9ayu54uqu7xpw8m9xpye7254yc0zlpehgltgdmkljx8tk56ep0nczyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea966vd3tx" />
    <content type="html">
      The &amp;#34;roost&amp;#34; theme reminds me the early days of a famous social network.&lt;br/&gt;Unfortunately, its char limit has always been too low for me, and I haven&amp;#39;t been that active there.&lt;br/&gt;&lt;br/&gt;Still, I liked the interface.&lt;br/&gt;&lt;br/&gt;#littleFedi&lt;br/&gt; &lt;img src=&#34;https://littleone.littlefedi.social/media/01a01ff7-35f0-7e7d-8f60-72f787c2f33e/image.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-08-20T16:18:11Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsx2c9ndrqd49drxlz07kc9zq2ll076myne5lcxaw7zzt0ug2jhxkgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96j5w5ed</id>
    
      <title type="html">Here’s a small preview of the feature, straight from littleFedi ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsx2c9ndrqd49drxlz07kc9zq2ll076myne5lcxaw7zzt0ug2jhxkgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96j5w5ed" />
    <content type="html">
      Here’s a small preview of the feature, straight from littleFedi on my private test instance.&lt;br/&gt;&lt;br/&gt;#littleFedi #littleOne&lt;br/&gt; &lt;img src=&#34;https://littleone.littlefedi.social/media/01a01b90-1bac-74f2-9313-9ce644c58e81/image.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-08-19T19:47:04Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsgc4g48s0p7jappl9n0jg5yguk7lmsy23t6pwjjq45gpahhqgex9gzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96hfl3es</id>
    
      <title type="html"># Strangers I keep a terminal window open most evenings, more out ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsgc4g48s0p7jappl9n0jg5yguk7lmsy23t6pwjjq45gpahhqgex9gzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96hfl3es" />
    <content type="html">
      # Strangers&lt;br/&gt;&lt;br/&gt;I keep a terminal window open most evenings, more out of habit than need, tailing the access log of one of the littleFedi test instances while I think about something else entirely. That&amp;#39;s how I noticed it the first time: *a fetch from a Threads host*, correct in every way ActivityPub asks it to be, asking for someone&amp;#39;s outbox. &lt;br/&gt;&lt;br/&gt;Nothing wrong with it, technically. And yet I sat there for a while, thinking about the person behind that account, and whether they&amp;#39;d have wanted a company that size reading what they wrote, simply because the protocol says anyone can ask.&lt;br/&gt;&lt;br/&gt;**So we built a way to say no**, but only to strangers, not to friends.&lt;br/&gt;&lt;br/&gt;An instance still federates in the open *by default*, the way ActivityPub expects, because that&amp;#39;s what almost everyone wants and I wasn&amp;#39;t going to take it away from them. What changed is that an admin can now flip to an **exact-host allowlist**, from the console or from the command line, and it happens immediately, the switch is simply true the moment you set it. Once it&amp;#39;s true, reads on posts, on the followers list, on the outbox, all start asking for a signature, and only the hosts you&amp;#39;ve named get an answer back. Discovery stays open regardless, because a peer that doesn&amp;#39;t know you exist yet still needs a way to find out, before it can even be told no.&lt;br/&gt;&lt;br/&gt;I went back and forth for a long time on what should happen to a peer once you remove them, or once you switch the whole instance back to open. In the end nothing gets deleted, not the account, not the relationship, not a single post or piece of media or anything cached from them. Traffic stops, that&amp;#39;s all. I&amp;#39;ve never liked the idea that moderation means destroying what someone wrote, as if the words themselves were the problem and not who gets to see them.&lt;br/&gt;&lt;br/&gt;**There&amp;#39;s a list**, if you want it, **of the big commercial names**, the ones like Threads that started this whole conversation. It updates once a day over HTTPS, quietly, and if the update fails it just keeps yesterday&amp;#39;s copy instead of leaving your instance with nothing. **But whatever an admin decided on purpose always wins**. Allow someone by hand and the list can&amp;#39;t undo it. Suspend someone by hand and even an allow can&amp;#39;t undo that either.&lt;br/&gt;&lt;br/&gt;If you&amp;#39;re bringing a block list with you from somewhere else, plain text works, CSV works, and so does the Mastodon export with all its fields, severity and everything. Ten thousand rows at most, checked before a single one is written, and you get to look at what&amp;#39;s about to happen before it happens.&lt;br/&gt;&lt;br/&gt;One thing I&amp;#39;ll admit, since it will trip someone up eventually: matching is on the exact host. A peer that splits its actors and its inboxes across different addresses needs every one of them on the list, not just the one that looks like the main domain. It&amp;#39;s the kind of mistake that fails closed instead of open, which is the direction I&amp;#39;d rather be wrong in, but it&amp;#39;s still a mistake waiting to happen, so it&amp;#39;s the first thing in the documentation.&lt;br/&gt;&lt;br/&gt;I still think about that line in the log sometimes. A small server should get to say no to a stranger.&lt;br/&gt;&lt;br/&gt;**Now it can.**&lt;br/&gt;&lt;br/&gt;#littleFedi #littleOne #Fediverse
    </content>
    <updated>2026-08-19T19:13:59Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsvtesylrj3s47rmstkdwuc229rlnx0sehgl45y6e5dsappxtd740gzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea963df5wn</id>
    
      <title type="html">Anyone asked for **emoji reactions**? #littleFedi #littleOne</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsvtesylrj3s47rmstkdwuc229rlnx0sehgl45y6e5dsappxtd740gzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea963df5wn" />
    <content type="html">
      Anyone asked for **emoji reactions**?&lt;br/&gt;&lt;br/&gt;#littleFedi #littleOne
    </content>
    <updated>2026-08-19T12:47:11Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsqs8pwemnhwkclkdn98rctqzpcryn3h5lku8ydsshv378j8hkmptqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea962f6k42</id>
    
      <title type="html">A new build is up &amp;amp; running. Enjoy! #littleOne</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqs8pwemnhwkclkdn98rctqzpcryn3h5lku8ydsshv378j8hkmptqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea962f6k42" />
    <content type="html">
      A new build is up &amp;amp; running.&lt;br/&gt;Enjoy!&lt;br/&gt;&lt;br/&gt;#littleOne
    </content>
    <updated>2026-08-18T19:14:23Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs0y3myr7s70kyanyh5ys0mc3p33pdhzpuw072sdchq3qvwpcvzwcqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea967k32p9</id>
    
      <title type="html">Hello, friends of the #littleOne instance! I&amp;#39;ve had full ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs0y3myr7s70kyanyh5ys0mc3p33pdhzpuw072sdchq3qvwpcvzwcqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea967k32p9" />
    <content type="html">
      Hello, friends of the #littleOne instance!&lt;br/&gt;&lt;br/&gt;I&amp;#39;ve had full days, so couldn&amp;#39;t take care of this instance as much as I wanted to. But the devs kept working on your bug reports, so I&amp;#39;ll push a new build in the coming days.&lt;br/&gt;&lt;br/&gt;Stay tuned!
    </content>
    <updated>2026-08-17T19:20:21Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs23r4h6f7sr370q8k4r6cdwgesetys8m9pg7dalhr389hq0eems2qzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea968pjl42</id>
    
      <title type="html">**Currently back to the VPS** I&amp;#39;ll move back to the Orange PI ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs23r4h6f7sr370q8k4r6cdwgesetys8m9pg7dalhr389hq0eems2qzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea968pjl42" />
    <content type="html">
      **Currently back to the VPS**&lt;br/&gt;&lt;br/&gt;I&amp;#39;ll move back to the Orange PI when I&amp;#39;ll have more time to perform more tests. Meanwhile, &amp;#34;enjoy the powwwaaaaarrrr&amp;#34;&lt;br/&gt;&lt;br/&gt;#littleOne #littleFedi
    </content>
    <updated>2026-08-14T19:13:37Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsv7s27zmlszwxa78vqm3teqshrfc7rr5vfdtlvct0df0a4x2sdhsqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96wavepx</id>
    
      <title type="html">Dear #littleOne friends, **Current status**: I&amp;#39;ve carried out ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsv7s27zmlszwxa78vqm3teqshrfc7rr5vfdtlvct0df0a4x2sdhsqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96wavepx" />
    <content type="html">
      Dear #littleOne friends,&lt;br/&gt;&lt;br/&gt;**Current status**: I&amp;#39;ve carried out a few measurements and changes. I fixed the backup issue, which was causing deadlocks in the queue until manual intervention. This morning it was stuck for about an hour and a half, resulting in a backlog of 1,900 jobs, which were cleared in less than an hour.&lt;br/&gt;&lt;br/&gt;CPU load is very, very low, better than I expected. However, I occasionally notice some slowdowns that I suspect are due to the WASM driver currently used on NetBSD ARM (v6 and v7), which limits the number of database connections, even for read-only operations. I’m currently investigating this. But hey - do we really plan to host 40 users instances on such a low power device? (*Yes, we do!*)&lt;br/&gt;&lt;br/&gt;The instance will likely return to the VPS soon, as soon as I finish looking into it, while we roll out further changes.&lt;br/&gt;&lt;br/&gt;Stay tuned!&lt;br/&gt;&lt;br/&gt;#littleFedi
    </content>
    <updated>2026-08-14T13:08:26Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsxll442gz22rx2qcu7ynmx38nqhq52v57swanhnfcctd05mltlgeqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96qyvm5c</id>
    
      <title type="html"># How background workers work in littleFedi Every littleFedi ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsxll442gz22rx2qcu7ynmx38nqhq52v57swanhnfcctd05mltlgeqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96qyvm5c" />
    <content type="html">
      # How background workers work in littleFedi&lt;br/&gt;&lt;br/&gt;Every littleFedi instance runs a background job queue. Jobs are split by kind, but they all share one thing in common: they sit in a database table and are executed by the &amp;#34;main&amp;#34; worker pool, whose size you control with queue.workers (default min(8, GOMAXPROCS), 1 on the low\_power preset).&lt;br/&gt;&lt;br/&gt;The kinds fall into two groups:&lt;br/&gt;&lt;br/&gt;- **Heavy**, mostly CPU/DB-bound work - inbox (ActivityPub signature verification, actor fetches, home-feed fan-out) and media\_cache (image decoding). These block a worker synchronously while they run.&lt;br/&gt;&lt;br/&gt;- **Light**, mostly network-bound outbound work - delivery (one signed POST to one remote inbox), its delivery\_fanout expander, push\_notification, and send\_email. These are short and often latency-sensitive: a boost that hasn&amp;#39;t landed yet or a push that hasn&amp;#39;t arrived is visible to real people.&lt;br/&gt;&lt;br/&gt;By default every worker can pick up any kind of job. That is perfectly fine for most instances. The only caveat: job priority only orders queued rows, it cannot preempt a job that is already running. So if a slow inbox or media job is occupying the single (or few) workers, timely outbound delivery, push and email can end up waiting behind it.&lt;br/&gt;&lt;br/&gt;light\_workers (default 0, disabled) spins up a second, dedicated worker pool for exactly those four light outbound kinds. It is a strict either/or, not extra capacity: with light\_workers &amp;gt; 0, delivery, delivery\_fanout, push\_notification and send\_email run only on this pool. The main pool stops touching them, even when idle, and there is no overflow between the two. So workers=8 &#43; light\_workers=2 gives outbound federation exactly 2 workers, not 10.&lt;br/&gt;&lt;br/&gt;The light pool also yields to interactive requests like the main one does, but with a shorter wait (3s vs 10s) when both compete for the single foreground-recovery slot - so short, people-visible outbound jobs win that one job while every other worker keeps yielding to keep the web UI responsive.&lt;br/&gt;&lt;br/&gt;It&amp;#39;s totally optional.&lt;br/&gt;&lt;br/&gt;With 0 (the default) all four kinds stay on the main pool. The extra goroutine(s) cost is negligible even on constrained hardware.&lt;br/&gt;&lt;br/&gt;**It can be useful for:**&lt;br/&gt;&lt;br/&gt;- low\_power devices (e.g. Raspberry Pi or similar): keep workers=1 for the heavy inbox/media work and enable light\_workers=1 so outbound delivery, push and email keep flowing even while your single main worker is blocked on a slow inbox job. This is the recommended combination on a small box.&lt;br/&gt;&lt;br/&gt;- Instances where inbox/media loads spike: a burst of incoming activity (a big follower purge, backlog of signature-verification work) can stall time-sensitive outbound delivery on a shared pool; giving the light kinds their own pool decouples them.&lt;br/&gt;&lt;br/&gt;- Visibility matters: push notifications and federation delivery are things users notice immediately; if you care about their latency on a busy instance, the dedicated pool is a cheap way to protect it.&lt;br/&gt;&lt;br/&gt;Running a single pool is the right default for most instances. Also note both pools share the DB connection limiter (sized from MaxOpenConns): the database is the serial resource, so worker counts beyond the connection count buy nothing, extra workers just deepens the queue in front of it. Size light\_workers for your real outbound throughput.&lt;br/&gt;&lt;br/&gt;#littleFedi
    </content>
    <updated>2026-08-13T17:47:14Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs9vns5eywx9860jddgqen4glzlyy6xnytluvz2wmn4rlq7r6v3a7czyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96ngdr6r</id>
    
      <title type="html">*Hello from the other side!* Yes, it&amp;#39;s true. This instance is ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs9vns5eywx9860jddgqen4glzlyy6xnytluvz2wmn4rlq7r6v3a7czyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96ngdr6r" />
    <content type="html">
      *Hello from the other side!*&lt;br/&gt;&lt;br/&gt;Yes, it&amp;#39;s true. This instance is now running from the Orange PI PC (NetBSD, armv7). It&amp;#39;s currently using the SD Card. The performance is...you judge! And it&amp;#39;s not set to *low_power* mode!&lt;br/&gt;&lt;br/&gt;#littleOne #littleFedi #SBC #NetBSD&lt;br/&gt; &lt;img src=&#34;https://littleone.littlefedi.social/media/019ffabc-7dd5-71c0-a242-ec9c2e6283a6/image.jpg&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-08-13T10:48:06Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsr2vqrc0kvtzsqdu2t5e9lc5lladstc5yshyvr6juq4jp575q6c7czyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea962wkw4x</id>
    
      <title type="html">Nasty idea...what if I move this instance...here, for a while, to ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsr2vqrc0kvtzsqdu2t5e9lc5lladstc5yshyvr6juq4jp575q6c7czyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea962wkw4x" />
    <content type="html">
      Nasty idea...what if I move this instance...here, for a while, to test? 😉&lt;br/&gt;&lt;br/&gt;#littleOne&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/note1z8mcl32ya2axj5vrhxhz60jqfyrgrntf5vy2w7xtc22h6cglczcqn4vrls&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;note1z8m…vrls&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt; We need moooooarrr tests!!!&lt;br/&gt;&lt;br/&gt;#littleFedi&lt;br/&gt; &lt;img src=&#34;https://littleone.littlefedi.social/media/019ffa0f-c4fe-7641-8159-712968ed39c7/image.jpg&#34;&gt; &lt;br/&gt; &lt;/blockquote&gt;
    </content>
    <updated>2026-08-13T07:41:41Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsprau0c4zw4wnf2xpmnt3d8eqyjp5pe456xz980r9u99tavy0upvqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96dtyvqe</id>
    
      <title type="html">We need moooooarrr tests!!! #littleFedi ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsprau0c4zw4wnf2xpmnt3d8eqyjp5pe456xz980r9u99tavy0upvqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96dtyvqe" />
    <content type="html">
      We need moooooarrr tests!!!&lt;br/&gt;&lt;br/&gt;#littleFedi&lt;br/&gt; &lt;img src=&#34;https://littleone.littlefedi.social/media/019ffa0f-c4fe-7641-8159-712968ed39c7/image.jpg&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-08-13T07:39:25Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsree3dw0ah9dnk0u30anqn3tpuqqun5sclpgm8s2lvapcjlfxzlngzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96xnln5j</id>
    
      <title type="html">Last night, the VPS load monitoring for this instance showed a ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsree3dw0ah9dnk0u30anqn3tpuqqun5sclpgm8s2lvapcjlfxzlngzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96xnln5j" />
    <content type="html">
      Last night, the VPS load monitoring for this instance showed a progressive increase. On one hand, we were expecting it, as the instance grows. On the other, it was higher than anticipated. &lt;br/&gt;Upon investigating, we realised there was an inefficiency linked to two missing DB views, which was generating a mountain of queries whenever a federated activity arrived. Simply creating them was enough: the CPU load upon the arrival of each status dropped from 80% for two seconds to 0.50% for a fraction of a second.&lt;br/&gt;&lt;br/&gt;Enjoy the speed 😃 &lt;br/&gt;&lt;br/&gt;#littleFedi #littleOne
    </content>
    <updated>2026-08-13T07:18:35Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs2uds3j08vvcxpzefk55ard8swhfs9vv4hft4ypg8tyehjq66y4cgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96v40fat</id>
    
      <title type="html">Built-in backups of the database, the configuration and, ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs2uds3j08vvcxpzefk55ard8swhfs9vv4hft4ypg8tyehjq66y4cgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96v40fat" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrlhpzshm39a677ha5359035388az2svg89r9g96f9649v2nfj7qqgn82ma&#39;&gt;nevent1q…82ma&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Built-in backups of the database, the configuration and, optionally, local owned media, with a manifest and a restore command.&lt;br/&gt;&lt;br/&gt;You can fully export all your contents (including posts) and re-import them into another littleFedi instance. It&amp;#39;ll be another account with another handle, but you won&amp;#39;t lose any of your contents. Your data stays yours.&lt;br/&gt;&lt;br/&gt;#OwnYourData
    </content>
    <updated>2026-08-11T13:17:50Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs99d6cn852yp0ee9m990g29yhwqyjeph56m6h9ven576dtc000wqgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96sre56m</id>
    
      <title type="html">I&amp;#39;ve received quite a few questions about the use of AI in ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs99d6cn852yp0ee9m990g29yhwqyjeph56m6h9ven576dtc000wqgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96sre56m" />
    <content type="html">
      I&amp;#39;ve received quite a few questions about the use of AI in and around #littleFedi.&lt;br/&gt;&lt;br/&gt;So, after discussing it within the team, we&amp;#39;ve decided to update the FAQ and make our position clear.&lt;br/&gt;&lt;br/&gt;It probably won&amp;#39;t come as much of a surprise to those who already know me and the projects I work on. But littleFedi is reaching people who don&amp;#39;t know me, or us, and I think it&amp;#39;s fair to explain where we stand rather than assume they already know.&lt;br/&gt;&lt;br/&gt;The short version: littleFedi doesn&amp;#39;t use AI. No ranking models, no recommendation engines, no language models deciding what you see.&lt;br/&gt;&lt;br/&gt;The longer answer, including how I approach LLMs and code contributions, is now in the FAQ:&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://littlefedi.org/faq.html&#34;&gt;https://littlefedi.org/faq.html&lt;/a&gt;
    </content>
    <updated>2026-08-11T13:13:46Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsdhq4ywt24yzl8l9ptkxw0kn0xwef57qryudmqrvru02h9xtz533qzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96fu8kms</id>
    
      <title type="html">the backup procedure is already backing up the blogs, so we’re ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsdhq4ywt24yzl8l9ptkxw0kn0xwef57qryudmqrvru02h9xtz533qzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96fu8kms" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs90m758fsr07cf5xmm4s8f9pcf4law0flzdww2d75gs5wc2q7rqhc9snd8a&#39;&gt;nevent1q…nd8a&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;the backup procedure is already backing up the blogs, so we’re covered. And yes, that’s a good approach. I’ll try to put it into the todo list. Thanks!
    </content>
    <updated>2026-08-11T12:43:59Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs866yhaczt7ktj53m5u484y6mdqwqnyp4t76tuqytljy8vu27e7jqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96vzfzmd</id>
    
      <title type="html">another solution could be put the blog files into the s3 storage, ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs866yhaczt7ktj53m5u484y6mdqwqnyp4t76tuqytljy8vu27e7jqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96vzfzmd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0scgkw4c5fqv58fmw0llp5p7949szqc4d9tzvelhxk2ajp5s3mgcjhju9j&#39;&gt;nevent1q…ju9j&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;another solution could be put the blog files into the s3 storage, too (if configured) and serve them just proxying the files.
    </content>
    <updated>2026-08-11T10:42:25Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs0scgkw4c5fqv58fmw0llp5p7949szqc4d9tzvelhxk2ajp5s3mgczyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96a4jmkv</id>
    
      <title type="html">I don&amp;#39;t know 😃 Some local automated tests show that 100 ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs0scgkw4c5fqv58fmw0llp5p7949szqc4d9tzvelhxk2ajp5s3mgczyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96a4jmkv" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8dvjmluk5szx9ejzl923wylvmnnka3vsp2q5cacucvqy69zsuupgdapur2&#39;&gt;nevent1q…pur2&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t know 😃 Some local automated tests show that 100 users with sqlite are fine, as long as there&amp;#39;s not too much concurrency in writing stuff into the DB. For the public server....I don&amp;#39;t know as well. The limit will probably be the limit of the hardware I&amp;#39;ll be using. There&amp;#39;s something to be fixed: blog generation will only work on single process installations, not on clustered setups. I&amp;#39;ll probably easily adapt it to build blogs only on one specific machine (the one doing the housekeeping). Still, the blogs will finish into the local file system, so this needs to be sorted, too. But this will come later.
    </content>
    <updated>2026-08-11T10:40:22Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsyef3uwqtfyzgu9cgy5kdrufhkxu9xc0tshsxw0r25gazhxzj5wfszyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96rz4ylf</id>
    
      <title type="html">this server will be permanent. I&amp;#39;m planning to add a ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsyef3uwqtfyzgu9cgy5kdrufhkxu9xc0tshsxw0r25gazhxzj5wfszyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96rz4ylf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0y7s3mtl2f6y97fk44x2e9vlg53vulxfp0es6gt9dzyxygn89k8cmvu6s2&#39;&gt;nevent1q…u6s2&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;this server will be permanent. &lt;br/&gt;I&amp;#39;m planning to add a &amp;#34;public&amp;#34; server. I&amp;#39;m not sure if it will be this (using sqlite, we could hit some limits) or another one, using PostgreSQL, ready to scale.&lt;br/&gt;&lt;br/&gt;But yes, this is our littleOne and will stay.
    </content>
    <updated>2026-08-11T10:32:59Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsp4cwc0tj37959rjj5rldkr08z9h0tgk93rmnpqrjrh46fejy0u7gzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96x8keap</id>
    
      <title type="html">**Another step closer to release!** The official website is now ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsp4cwc0tj37959rjj5rldkr08z9h0tgk93rmnpqrjrh46fejy0u7gzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96x8keap" />
    <content type="html">
      **Another step closer to release!**&lt;br/&gt;&lt;br/&gt;The official website is now live at &lt;a href=&#34;https://littlefedi.org/&#34;&gt;https://littlefedi.org/&lt;/a&gt; with documentation and project details.&lt;br/&gt;&lt;br/&gt;Take a look and let me know what you think!&lt;br/&gt;&lt;br/&gt;#littleFedi #Fediverse
    </content>
    <updated>2026-08-11T09:12:22Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqspfggur4cnc9yfhqyht5u8jhmhwlwwre6423hrgmvntgtqh5j4g2czyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96ac7gua</id>
    
      <title type="html">welcome!</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqspfggur4cnc9yfhqyht5u8jhmhwlwwre6423hrgmvntgtqh5j4g2czyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96ac7gua" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfmdjm9knd5sj5p9hxvncvhg66kc8tyx3y9p66q49ru9q2ceqtyegp5rg97&#39;&gt;nevent1q…rg97&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;welcome!
    </content>
    <updated>2026-08-10T19:59:27Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsp7xcj04pm8fn04nd7patv8mf3nhqtprnx4k73806gpau6eg2t70qzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96te0w20</id>
    
      <title type="html">I tracked down a bug that caused some notifications to fail ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsp7xcj04pm8fn04nd7patv8mf3nhqtprnx4k73806gpau6eg2t70qzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96te0w20" />
    <content type="html">
      I tracked down a bug that caused some notifications to fail during a blog regeneration if all the workers were busy. If I haven&amp;#39;t replied to you, it&amp;#39;s because I might not have seen your messages. &lt;br/&gt;The latest build should have fixed the issue. Sorry about that!&lt;br/&gt;&lt;br/&gt;#littleFedi
    </content>
    <updated>2026-08-10T15:09:35Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsqrkswdwkjdw33qe7dc2zpslszgr6apm2xcl6uzw8xp848vm45sggzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea969sruz6</id>
    
      <title type="html"># Just a little reminder on littleFedi&amp;#39;s efficiency The ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqrkswdwkjdw33qe7dc2zpslszgr6apm2xcl6uzw8xp848vm45sggzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea969sruz6" />
    <content type="html">
      # Just a little reminder on littleFedi&amp;#39;s efficiency &lt;br/&gt;&lt;br/&gt;The instance [&lt;a href=&#34;https://rpi0w.stefanomarinelli.it&#34;&gt;https://rpi0w.stefanomarinelli.it&lt;/a&gt;](&lt;a href=&#34;https://rpi0w.stefanomarinelli.it&#34;&gt;https://rpi0w.stefanomarinelli.it&lt;/a&gt;) - with my user &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1a8mpglhtg5h2elcu6k8w80ghjvpan9wpla67swmphpp2v9nwkp4s7dcdsn&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Stefano on littleFedi&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1a8m…cdsn&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; - has been running for over a month on a Raspberry Pi Zero W powered by **NetBSD**.&lt;br/&gt;Under normal operation, it uses 58 MB of RAM, including caches. And it shows no signs of slowness!&lt;br/&gt;&lt;br/&gt;#littleFedi #NetBSD #RunBSD #OwnYourData&lt;br/&gt; &lt;img src=&#34;https://littleone.littlefedi.social/media/019feaf2-5de9-79de-b25f-3b1df532312a/image.jpg&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-08-10T09:13:00Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs2ar2d45sfup2z5w57sn570g4auzdw09s6nl8ewtdqpw720zve8fczyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96y3x875</id>
    
      <title type="html">Added the */blogs* route, with a list of all the published blogs. ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs2ar2d45sfup2z5w57sn570g4auzdw09s6nl8ewtdqpw720zve8fczyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96y3x875" />
    <content type="html">
      Added the */blogs* route, with a list of all the published blogs. It&amp;#39;s opt-out, so you can disable it in your settings page: [&lt;a href=&#34;https://littleone.littlefedi.social/blogs&#34;&gt;https://littleone.littlefedi.social/blogs&lt;/a&gt;](&lt;a href=&#34;https://littleone.littlefedi.social/blogs&#34;&gt;https://littleone.littlefedi.social/blogs&lt;/a&gt;)&lt;br/&gt;&lt;br/&gt;#littleFedi
    </content>
    <updated>2026-08-09T18:35:56Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqstktn9fgst6twv72un2dwqpwc9m6cxqyqasym894ae3d0hw9pkftgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea962xrp23</id>
    
      <title type="html">Everyone loves text formatting, but not everyone loves Markdown. ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqstktn9fgst6twv72un2dwqpwc9m6cxqyqasym894ae3d0hw9pkftgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea962xrp23" />
    <content type="html">
      Everyone loves text formatting, but not everyone loves Markdown. &lt;br/&gt;&lt;br/&gt;**We&amp;#39;ve got you covered.** &lt;br/&gt;&lt;br/&gt;I&amp;#39;m merging a branch that includes a *WYSIWYG* editor, which will translate the output directly into Markdown. &lt;br/&gt;No more tags to remember when writing your next post (or blog post), just a convenient, predictable editor.&lt;br/&gt;&lt;br/&gt;What do you think?&lt;br/&gt;&lt;br/&gt;#littleFedi #Fediverse&lt;br/&gt; &lt;img src=&#34;https://littleone.littlefedi.social/media/019fe6c9-8362-7f2f-9961-0f2547bf5cc0/image.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-08-09T13:49:54Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsywhys52ftwydxx7hgcvx8k4rpfya7vlzpqhrsg06ertlzz7l37cgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96xch0qq</id>
    
      <title type="html">The next branch I&amp;#39;m going to merge into main contains ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsywhys52ftwydxx7hgcvx8k4rpfya7vlzpqhrsg06ertlzz7l37cgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96xch0qq" />
    <content type="html">
      The next branch I&amp;#39;m going to merge into main contains something a lot of people will like. I won&amp;#39;t spoil anything, but it addresses one of the most frequent criticisms I&amp;#39;ve seen regarding similar solutions... stay tuned!&lt;br/&gt;&lt;br/&gt;#littleFedi
    </content>
    <updated>2026-08-09T11:16:18Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs0e57cfxhfa2glv309l4lpds8v8fdlszuy7tm09n4xl4t53y3w7mszyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96v3aava</id>
    
      <title type="html"># littleFedi media management Are you worried that your low-power ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs0e57cfxhfa2glv309l4lpds8v8fdlszuy7tm09n4xl4t53y3w7mszyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96v3aava" />
    <content type="html">
      # littleFedi media management&lt;br/&gt;&lt;br/&gt;Are you worried that your low-power device will be overwhelmed by external media caching? &lt;br/&gt;&lt;br/&gt;**Don&amp;#39;t worry, we&amp;#39;ve already thought of that!**&lt;br/&gt;&lt;br/&gt;littleFedi offers 4 media management options:&lt;br/&gt;* **&amp;#34;No caching, no proxying&amp;#34;:** Media is fetched directly by the user from the originating instance.&lt;br/&gt;* **&amp;#34;Proxy only mode&amp;#34;** (like this instance): The instance proxies requests so media is always served to the user through it. The originating instance will never see littleFedi users&amp;#39; requests.&lt;br/&gt;* **&amp;#34;Lazy caching mode&amp;#34;:** Requests are proxied and then cached locally, so subsequent requests are served directly from the local cache.&lt;br/&gt;* **&amp;#34;Full caching mode&amp;#34;:** Similar to Mastodon, it fetches and stores media locally as soon as it is processed by the instance.&lt;br/&gt;&lt;br/&gt;For both caching modes, you can store media locally or use an external S3-compatible service. Moving between storage types is supported natively, without needing external tools like rclone.&lt;br/&gt;&lt;br/&gt;#littleFedi #Fediverse
    </content>
    <updated>2026-08-09T11:00:38Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs0h7pkp0uzyljx8h3dfnp783wv4etggc50lhm5u3y3xa0ljlmkzhgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96suqtyd</id>
    
      <title type="html"># New littleFedi build on littleOne littleFedi **26.08.09** - the ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs0h7pkp0uzyljx8h3dfnp783wv4etggc50lhm5u3y3xa0ljlmkzhgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96suqtyd" />
    <content type="html">
      # New littleFedi build on littleOne&lt;br/&gt;&lt;br/&gt;littleFedi **26.08.09** - the changes in this build compared with the previous&lt;br/&gt;deployment.&lt;br/&gt;&lt;br/&gt;## Followed hashtags in the main navigation&lt;br/&gt;&lt;br/&gt;Your followed hashtags are now one click away: a **Hashtags** entry (with a&lt;br/&gt;hashtag icon) has been added to the desktop navigation bar and the mobile&lt;br/&gt;account menu, pointing at `/tags`. The label is translated in every supported&lt;br/&gt;language.&lt;br/&gt;&lt;br/&gt;## Blog posts show a link back to their permalink&lt;br/&gt;&lt;br/&gt;Posts that have been published to the blog now carry a small **Blog** chip in&lt;br/&gt;the status meta line. It links to the post&amp;#39;s readable permalink&lt;br/&gt;(`/@user/blog/&amp;lt;slug&amp;gt;/`) and works on timestamps and boosts, so readers can jump&lt;br/&gt;straight from the timeline to the polished blog version of a long post.&lt;br/&gt;&lt;br/&gt;## Status meta line reworked&lt;br/&gt;&lt;br/&gt;Every marker on a status - visibility, language, blog chip, expiry - is now&lt;br/&gt;rendered as the same uniform chip in a single wrapping flex row, instead of a&lt;br/&gt;mix of right-aligned inline boxes. Posts that carry several markers read as one&lt;br/&gt;neat line rather than a ragged stack. The Ink and Roost themes were adjusted to&lt;br/&gt;match.&lt;br/&gt;&lt;br/&gt;## Robustness: orphaned-account posts no longer break the page&lt;br/&gt;&lt;br/&gt;Previously a post whose author account no longer resolves (a purged account, or&lt;br/&gt;a partially hydrated cache entry) could fail the whole timeline render. Now any&lt;br/&gt;status - including the target of a boost - whose author is missing is silently&lt;br/&gt;skipped. Covered by a new test.&lt;br/&gt;&lt;br/&gt;## Icon updates&lt;br/&gt;&lt;br/&gt;- Catch-up view and its navigation entries now use a **VHS** icon instead of the&lt;br/&gt;  old sparkle (thank you for the suggestion, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1mlws82pq8s7c4sh28ce4n6qcm2gy8autqlpzd3mk3m4cxqe293qqh9p8fc&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;little shom&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1mlw…p8fc&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; ).&lt;br/&gt;- The &amp;#34;redraft&amp;#34; action gets a proper **undo** icon.&lt;br/&gt;- The **Appearance** and **Blog appearance** settings sections get a palette&lt;br/&gt;  icon.&lt;br/&gt;- New **hashtag** icon for the navigation.&lt;br/&gt;&lt;br/&gt;## Blog theming fixes&lt;br/&gt;&lt;br/&gt;- Proper spacing restored for non-paragraph content in the post body: headings,&lt;br/&gt;  bullet/numbered lists, horizontal rules and code blocks now breathe instead of&lt;br/&gt;  collapsing against each other.&lt;br/&gt;- A post with a single attachment now renders a full-width figure (the old&lt;br/&gt;  grid left a small thumbnail stranded at the left edge).&lt;br/&gt;- The &amp;#34;View or reply in the Fediverse&amp;#34; link is now consistently styled.&lt;br/&gt;- **Ledger** theme: long code lines scroll inside their block instead of&lt;br/&gt;  breaking out past the reading measure.&lt;br/&gt;- **Marginalia** theme: the thread link, replies and pager now align to the text&lt;br/&gt;  column on wide screens, and print output was cleaned up.&lt;br/&gt;&lt;br/&gt;If you publish a blog, regenerate it so the fixes apply: **Settings → Blog&lt;br/&gt;appearance → Rebuild blog now**. The blog&amp;#39;s `style.css` is assembled at build&lt;br/&gt;time, so it only picks up these changes when you rebuild.&lt;br/&gt;&lt;br/&gt;#littleFedi #littleOne #Fediverse
    </content>
    <updated>2026-08-09T09:11:42Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsq9glnccqc50t9jqhgk8kv559ncn2vyucpwrgqx9cc6jaf99ezedgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96uml535</id>
    
      <title type="html">no AI features here. Good old deterministic computing. It&amp;#39;s a ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsq9glnccqc50t9jqhgk8kv559ncn2vyucpwrgqx9cc6jaf99ezedgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96uml535" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs88e4562hqw9tgg84qds83p0rg6tppf2yn0lgvysst9c9telq0ayqw3fz7z&#39;&gt;nevent1q…fz7z&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;no AI features here. Good old deterministic computing.&lt;br/&gt;It&amp;#39;s a simple algo that will consider the people you follow.  At the end of the page, there&amp;#39;s a complete explanation:&lt;br/&gt;&lt;br/&gt;Why am I seeing these posts?&lt;br/&gt;Each post scores on signals this instance already holds, and the score halves as the post ages. Nothing is fetched from anywhere else, and nothing learns from what you open:&lt;br/&gt;&lt;br/&gt;&#43;2.5&lt;br/&gt;per account you follow who boosted it&lt;br/&gt;&#43;1.0&lt;br/&gt;× log of the favourites seen from here&lt;br/&gt;&#43;0.8&lt;br/&gt;× log of the boosts seen from here&lt;br/&gt;&#43;0.6&lt;br/&gt;× log of the replies seen from here&lt;br/&gt;&#43;1.2&lt;br/&gt;you favourited, boosted or replied to this author in the last month&lt;br/&gt;&#43;1.0&lt;br/&gt;carries a hashtag you follow&lt;br/&gt;&#43;0.8&lt;br/&gt;continues a conversation you took part in&lt;br/&gt;-1.0&lt;br/&gt;the post is a reply&lt;br/&gt;12h&lt;br/&gt;the score halves for every this many hours since the post reached your feed&lt;br/&gt;Your own posts, and anything you already favourited, bookmarked, boosted or replied to, are left out. At most two posts per author. Twenty entries, then the page ends: there is nothing more to scroll.&lt;br/&gt;&lt;br/&gt;Your blocks, mutes and filters apply exactly as on every other timeline.
    </content>
    <updated>2026-08-08T18:49:44Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqspc67yenz35gz6640d3y3q94rcpc8h2spqtdv79kqq4pufajl7wtszyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96tfg9wh</id>
    
      <title type="html">welcome!</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqspc67yenz35gz6640d3y3q94rcpc8h2spqtdv79kqq4pufajl7wtszyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96tfg9wh" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs99s4zxkm52duxjjt8y67j7q60letuq4sg8zutrv9auu36g4062yqnvgnxw&#39;&gt;nevent1q…gnxw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;welcome!
    </content>
    <updated>2026-08-08T15:13:36Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsfpdt68hj0zshgeqetdl7z2ccz8d6aw5plqa6jyqaf7jthjwynzjgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96cnh8n3</id>
    
      <title type="html">This is the blog that #littleFedi generates from my posts, when I ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsfpdt68hj0zshgeqetdl7z2ccz8d6aw5plqa6jyqaf7jthjwynzjgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96cnh8n3" />
    <content type="html">
      This is the blog that #littleFedi generates from my posts, when I enable the &amp;#34;Blog Post&amp;#34; toggle: &lt;a href=&#34;https://littleone.littlefedi.social/@stefano/blog&#34;&gt;https://littleone.littlefedi.social/@stefano/blog&lt;/a&gt;
    </content>
    <updated>2026-08-08T14:41:47Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsv3czltejx07w7zegahg4kpycsgwhuakt7tjegehj4vpzcjr02gfczyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96770far</id>
    
      <title type="html">I just built the merge with the branch that enables blog themes, ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsv3czltejx07w7zegahg4kpycsgwhuakt7tjegehj4vpzcjr02gfczyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96770far" />
    <content type="html">
      I just built the merge with the branch that enables blog themes, including a few default themes. So, I&amp;#39;ve enabled the blog for everyone. If you want to test it out... it&amp;#39;s live! 😃 &lt;br/&gt;&lt;br/&gt;#littleFedi #Blogging #Blog #OwnYourData
    </content>
    <updated>2026-08-08T14:02:53Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsyt3qv3cjzcjdsxhf3gnnpu3acq622yt349va2jyrwnqu0lhjzm8szyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96vs4kvf</id>
    
      <title type="html">Dear friend of the #littleOne instance, you can go to your ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsyt3qv3cjzcjdsxhf3gnnpu3acq622yt349va2jyrwnqu0lhjzm8szyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96vs4kvf" />
    <content type="html">
      Dear friend of the #littleOne instance,&lt;br/&gt;you can go to your settings page and...enjoy the themes!&lt;br/&gt;&lt;br/&gt;#littleOne #littleFedi #Fediverse
    </content>
    <updated>2026-08-08T10:02:35Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqszsede4uaql60fmurh5k9lax20fgdhfczqxv5ygfpjpq23a6jsedczyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96dazcdp</id>
    
      <title type="html">Some friends are joining the Fediverse from other social networks ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqszsede4uaql60fmurh5k9lax20fgdhfczqxv5ygfpjpq23a6jsedczyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96dazcdp" />
    <content type="html">
      Some friends are joining the Fediverse from other social networks and have fond memories of the old Twitter days. **We thought of you**, and we’re now merging the branch that brings theming support!&lt;br/&gt;&lt;br/&gt;Soon, on littleOne, you’ll be able to choose from a selection of predefined themes.&lt;br/&gt;&lt;br/&gt;**Stay tuned!**&lt;br/&gt;&lt;br/&gt;#littleOne #littleFedi #Fediverse&lt;br/&gt; &lt;img src=&#34;https://littleone.littlefedi.social/media/019fe06e-df74-7846-a0d3-a90fb5aa3b8e/image.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-08-08T08:13:10Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsg7uq3f8ppaww6dyjqgtywchvnwuecele7h2knxjey5ykyu5umhrgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96ke60z9</id>
    
      <title type="html">The discussion is going on late into the night, but the decision ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsg7uq3f8ppaww6dyjqgtywchvnwuecele7h2knxjey5ykyu5umhrgzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96ke60z9" />
    <content type="html">
      The discussion is going on late into the night, but the decision has already been made. Tomorrow we will try to merge a branch with a very particular change…&lt;br/&gt;&lt;br/&gt;#littleFedi
    </content>
    <updated>2026-08-07T21:55:34Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsg2u87w5r9w78ajcw6374rv2qgxmkmemtu6dmhlrj62080rf8f86czyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea9659wvcr</id>
    
      <title type="html"># littleFedi: a Fediverse Server That Doesn&amp;#39;t Need a Data ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsg2u87w5r9w78ajcw6374rv2qgxmkmemtu6dmhlrj62080rf8f86czyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea9659wvcr" />
    <content type="html">
      # littleFedi: a Fediverse Server That Doesn&amp;#39;t Need a Data Centre&lt;br/&gt;&lt;br/&gt;I was fifteen, and there were no BBSes in my city. So every call was long distance, once a day, sometimes twice. I&amp;#39;d start the dialer and wait for that sound - the handshake, the negotiation, the hiss settling into a carrier - and then I was connected to a computer sitting in somebody&amp;#39;s bedroom, a few hundred kilometres away. I was a co-sysop of a local board and a national moderator of a FidoNet area. None of my friends understood what I was doing, and they&amp;#39;d stopped asking to avoid an incomprehensible monologue. But I liked it, and that was enough for me.&lt;br/&gt;&lt;br/&gt;Here&amp;#39;s the thing about that computer in someone&amp;#39;s bedroom. There was no data centre. No domain, no certificate authority, no hosting provider, no cloud. Just a machine, a phone line, and a person who&amp;#39;d decided to run it. If you wanted to reach it, you called it.&lt;br/&gt;&lt;br/&gt;Now look at what it takes today to put a small server on the network so other people can talk to it. A public address, which most home connections no longer have. A domain, which you rent. A certificate, which somebody has to issue you. And, increasingly, a VPS somewhere, because the software won&amp;#39;t fit on the hardware you already own.&lt;br/&gt;&lt;br/&gt;We&amp;#39;ve added a lot of infrastructure between two people who just want to talk. That&amp;#39;s what littleFedi is about.&lt;br/&gt;&lt;br/&gt;## What it is&lt;br/&gt;&lt;br/&gt;A single Go binary. No Ruby, no Sidekiq, no Redis, no separate worker processes to babysit. You run `init`, answer a few questions, and you&amp;#39;ve got a working instance. It speaks ActivityPub, and it speaks the Mastodon client API well enough that existing apps just work.&lt;br/&gt;&lt;br/&gt;It also runs on hardware that would make Mastodon - or even Akkoma - struggle. Most software in this space assumes a VPS with a few gigabytes of RAM and a database server next to it. We assumed a Raspberry Pi Zero W behind a home router. There&amp;#39;s a `low_power` mode that tunes memory use, image decoding and thumbnail generation for exactly that kind of box, and it&amp;#39;s tested on that kind of box, not just on a fast dev machine.&lt;br/&gt;&lt;br/&gt;In spirit this puts littleFedi close to [snac](&lt;a href=&#34;https://codeberg.org/grunfink/snac2&#34;&gt;https://codeberg.org/grunfink/snac2&lt;/a&gt;), which I&amp;#39;ve always liked a lot. Same conviction: a personal server shouldn&amp;#39;t need a fleet of services behind it.&lt;br/&gt;&lt;br/&gt;## Federating without a public address&lt;br/&gt;&lt;br/&gt;littleMesh is the part I&amp;#39;m most attached to, and it&amp;#39;s the part that goes back to the modem.&lt;br/&gt;&lt;br/&gt;Your instance generates an Ed25519 key pair. That key is its identity - the node&amp;#39;s address is derived from the public key, so reaching that address means reaching the holder of that key and nobody else. No registrar, no certificate authority, nobody to ask permission from.&lt;br/&gt;&lt;br/&gt;A small set of public lighthouse nodes help two instances find each other. Once they&amp;#39;re introduced, the traffic runs over a second TLS session pinned to both node IDs. The lighthouse copies encrypted bytes back and forth. It never sees plaintext, and it can&amp;#39;t impersonate either side. And if the two nodes can reach each other directly, they drop the relay after the introduction and talk peer to peer.&lt;br/&gt;&lt;br/&gt;Which is, more or less, calling the BBS directly. Just without the phone bill.&lt;br/&gt;&lt;br/&gt;## The gateway into ordinary HTTPS&lt;br/&gt;&lt;br/&gt;Mastodon and other regular servers can&amp;#39;t resolve a mesh address on their own. There&amp;#39;s no domain and no certificate for them to find.&lt;br/&gt;&lt;br/&gt;That&amp;#39;s what the optional HTTPS gateway is for. A lighthouse operator can run one alongside the relay, and it bridges the mesh into ordinary HTTPS for the rest of the web. The gateway has to terminate TLS to do that, so it can technically see the traffic passing through it. Which is exactly why it&amp;#39;s a separate, opt-in piece and not something every node exposes by default.&lt;br/&gt;&lt;br/&gt;It has two independent settings: one controls what the gateway lets ordinary internet visitors reach at all, and a second one applies again at the destination node. Left at their defaults, both allow only federation traffic - ActivityPub delivery, discovery, public media. Web login, API and media proxy stay closed unless an operator deliberately opens them.&lt;br/&gt;&lt;br/&gt;Mesh peers talking to each other directly never touch the gateway at all. That exposure only applies to the bridge into the wider web. And all of this can be self-hosted.&lt;br/&gt;&lt;br/&gt;## Chronological timelines&lt;br/&gt;&lt;br/&gt;Timelines are chronological. Nothing gets reordered by an engagement model.&lt;br/&gt;&lt;br/&gt;If you want something closer to &amp;#34;what did I miss&amp;#34;, there&amp;#39;s a separate `/catchup` page you visit on purpose. It ranks posts using signals your own instance already has - how many people you follow boosted something, whether it continues a conversation you took part in. No external popularity score, no telemetry, nothing leaves the machine. You press &amp;#34;mark as read&amp;#34;, it moves a divider, and that&amp;#39;s the only thing it remembers.&lt;br/&gt;&lt;br/&gt;## Self-expiring posts&lt;br/&gt;&lt;br/&gt;You can set a post to expire, with its own timer, instead of a fixed instance-wide setting.&lt;br/&gt;&lt;br/&gt;This isn&amp;#39;t a client-side trick that hides the post from view. The expiry goes on the same durable job queue that runs the rest of littleFedi&amp;#39;s background work, so the deletion survives restarts and isn&amp;#39;t lost if the process happens to be down at the moment the timer fires. When it does fire, the post is deleted and a real Delete activity goes out to everyone who received it - so it actually disappears from remote instances too, not just locally. Editing the post before then can push the timer back or cancel it.&lt;br/&gt;&lt;br/&gt;## Static blogs, with real threaded replies&lt;br/&gt;&lt;br/&gt;littleFedi can take a Fediverse post and publish it as a page on a plain static blog, with its own Atom feed and permalinks that don&amp;#39;t move even if you edit the post later. No JavaScript, no database hit on page load.&lt;br/&gt;&lt;br/&gt;The part I find more interesting is that the replies aren&amp;#39;t left out. If the author turns the option on, littleFedi pulls the public replies that were actually federated to the post, threads them the same way the timeline does, and bakes the whole tree into the generated HTML at build time. So a blog post can show a real comment thread, in the same static file, with the same guarantee as the rest of the page - no JavaScript, no live queries. Only public and unlisted replies qualify, obviously. Anything followers-only or direct never enters the picture.&lt;br/&gt;&lt;br/&gt;## Why it looks like this&lt;br/&gt;&lt;br/&gt;This isn&amp;#39;t minimalism for its own sake. It&amp;#39;s about how many people simply can&amp;#39;t run their own server today, because the requirements are too steep. The hardware, the ops complexity, or just needing a domain and a public address before you can start. We&amp;#39;re trying to remove those barriers one at a time, while still shipping a real, federating, reasonably complete server: polls, quotes, scheduled posts, MFA, PostgreSQL and S3 if you want to scale up later.&lt;br/&gt;&lt;br/&gt;I&amp;#39;ve [written before](&lt;a href=&#34;https://my-notes.dragas.net/2025/06/23/taking-a-semi-truck-to-buy-salad-my-manifesto-for-simple-computing/&#34;&gt;https://my-notes.dragas.net/2025/06/23/taking-a-semi-truck-to-buy-salad-my-manifesto-for-simple-computing/&lt;/a&gt;) about taking a semi-truck to buy salad. Hardware keeps getting more expensive and the software running on it keeps asking for more of it every year. That&amp;#39;s backwards. If the machines cost more, the operational cost of what sits on them should go down, not up. Same with complexity: the default direction is to keep adding it, and we&amp;#39;d rather strip it out.&lt;br/&gt;&lt;br/&gt;And there&amp;#39;s the other half, which is closer to why any of us are doing this at all. It&amp;#39;s the same thing that drew me to snac and to the way [grunfink](&lt;a href=&#34;https://comam.es/snac/grunfink&#34;&gt;https://comam.es/snac/grunfink&lt;/a&gt;) works on it, and the same thing that had me dialing a stranger&amp;#39;s computer at fifteen. People building tools so that people can talk to each other. Nothing more dressed up than that. We&amp;#39;d rather show the servers running, talk about the Pi sitting in the corner, share a tiramisu photo if it comes up. The joy in this was never about the money it brings in. It&amp;#39;s about what we end up building, humanly, because of it.&lt;br/&gt;&lt;br/&gt;It&amp;#39;s beta software, still short of a first release, and I&amp;#39;d rather say that plainly than oversell it. But it runs, and it federates. That&amp;#39;s the part I wanted to write about.&lt;br/&gt;&lt;br/&gt;#littleFedi #Fediverse
    </content>
    <updated>2026-08-07T15:45:41Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsdxzcl88dtjg9phpy6xuhc0r6yltga7gay0dpqmwj0dj9yh3hjnaqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea9639wqnz</id>
    
      <title type="html"># Update since yesterday: **New** - Opt-in federated RSS feed for ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsdxzcl88dtjg9phpy6xuhc0r6yltga7gay0dpqmwj0dj9yh3hjnaqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea9639wqnz" />
    <content type="html">
      # Update since yesterday:&lt;br/&gt;&lt;br/&gt;**New**&lt;br/&gt;- Opt-in federated RSS feed for your account&lt;br/&gt;- Threaded federated replies now show up on static blog posts (merged from an experimental branch - works but not pretty yet, it&amp;#39;s a start, watching it closely)&lt;br/&gt;- New followers can require your approval before they&amp;#39;re accepted - it was there, just hidden&lt;br/&gt;- Default language, Markdown, and audience settings for new posts (replies/edits/redrafts keep original settings)&lt;br/&gt;- DM button and blog badge on profile pages&lt;br/&gt;&lt;br/&gt;**Fixed**&lt;br/&gt;- Follow/unfollow path&lt;br/&gt;- Video playback&lt;br/&gt;- Search now resolves pasted remote status URLs directly&lt;br/&gt;- RSS/blog reply preferences carry over on account export/import&lt;br/&gt;- Profile pane improvements&lt;br/&gt;&lt;br/&gt;All live now. Let us know if anything looks off!&lt;br/&gt;&lt;br/&gt;#littleFedi #Fediverse
    </content>
    <updated>2026-08-07T15:00:05Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsvkkphv34tmdgan5qqsrchh0el5dwene7ysu9az9n0kgwy0xvt7aqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96fdmc2c</id>
    
      <title type="html"># littleFedi works like a real app on your phone A few people ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsvkkphv34tmdgan5qqsrchh0el5dwene7ysu9az9n0kgwy0xvt7aqzyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96fdmc2c" />
    <content type="html">
      # littleFedi works like a real app on your phone&lt;br/&gt;&lt;br/&gt;A few people have asked me how to actually use littleFedi on mobile, so let&amp;#39;s clear this up.  I use MastoBlaster, for obvious reasons. But you don&amp;#39;t need to build anything native - littleFedi is a Progressive Web App (PWA), and that means it behaves like a proper installed app once you set it up.&lt;br/&gt;&lt;br/&gt;- You add littleFedi to your home screen like any other app&lt;br/&gt;- It opens full screen, no browser address bar, no tabs cluttering things up&lt;br/&gt;- It works offline for the shell of the app, so a dead connection doesn&amp;#39;t just throw a blank error page at you&lt;br/&gt;- You get real push notifications, even when the app isn&amp;#39;t open&lt;br/&gt;- Static assets load instantly on repeat visits because they&amp;#39;re cached on the device&lt;br/&gt;&lt;br/&gt;Just your browser doing what browsers are supposed to do.&lt;br/&gt;&lt;br/&gt;## Installing it&lt;br/&gt;&lt;br/&gt;On Android (Chrome or most Chromium-based browsers): open your instance, tap the menu, and choose &amp;#34;Add to Home screen&amp;#34; or &amp;#34;Install app&amp;#34;. On iOS (Safari): tap the Share button, then &amp;#34;Add to Home Screen&amp;#34;. That&amp;#39;s it - the icon lands on your home screen and from then on littleFedi launches like a native app, in its own window, with its own icon and theme color.&lt;br/&gt;&lt;br/&gt;## Notifications that actually work&lt;br/&gt;&lt;br/&gt;This is the part people are usually most surprised by. littleFedi uses Web Push, so once you enable notifications from the settings page, you get real-time alerts for mentions, boosts, favourites, quotes, follows, follow requests, polls ending, and a few other events - each with its own icon so you can tell at a glance what happened without opening the app. Tap a notification and it takes you straight to the right place, or focuses the app if it&amp;#39;s already open in another tab.&lt;br/&gt;&lt;br/&gt;This works the same whether the app is in the foreground, in the background, or fully closed. The browser&amp;#39;s service worker handles delivery even when littleFedi itself isn&amp;#39;t running.&lt;br/&gt;&lt;br/&gt;## Why it feels fast&lt;br/&gt;&lt;br/&gt;Static files - the JavaScript, the icons, the stylesheets - get cached on your device the first time you load the app. On every visit after that, they load instantly from local storage instead of going over the network again, and the cache quietly checks for updates in the background so you&amp;#39;re never stuck on stale code. Your actual content - posts, notifications, everything tied to your session - always comes fresh from the server, since that&amp;#39;s the stuff that has to be accurate and can&amp;#39;t be cached.&lt;br/&gt;&lt;br/&gt;If your connection drops entirely, you&amp;#39;ll see an offline page instead of a browser error, so it&amp;#39;s clear what&amp;#39;s going on rather than looking broken.&lt;br/&gt;&lt;br/&gt;## No extra app needed&lt;br/&gt;&lt;br/&gt;If you&amp;#39;re on mobile and haven&amp;#39;t installed littleFedi yet, this is really the way to use it day to day. It&amp;#39;s lighter than many native apps, updates itself automatically, and you&amp;#39;re not waiting on anyone to approve a release in an app store. Just add it to your home screen and it stays there, working like any other app on your phone.&lt;br/&gt;&lt;br/&gt;#littleFedi #PWA #OwnYourData #Fediverse
    </content>
    <updated>2026-08-06T12:46:38Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsrqcxql5rvytdmcjr56hyp4rs4njhcqd73kcym08gys20gdk2ez3czyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96vaw924</id>
    
      <title type="html">We’re currently preparing #littleFedi for release under the ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsrqcxql5rvytdmcjr56hyp4rs4njhcqd73kcym08gys20gdk2ez3czyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96vaw924" />
    <content type="html">
      We’re currently preparing #littleFedi for release under the #MIT license.&lt;br/&gt;&lt;br/&gt;As part of that work, the GPL-licensed code previously included in the project has been removed or replaced. We’re now reviewing the repository to make sure the licensing information is clear and consistent throughout.&lt;br/&gt;&lt;br/&gt;#StayTuned
    </content>
    <updated>2026-08-06T11:29:12Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqszqa35w9e5esv4ycjsxacc2uzhr44m7jjsrp007m3qk7fgtzxl62czyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96nmumjd</id>
    
      <title type="html">The first batch of invites has been sent. Here we go! #littleFedi ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqszqa35w9e5esv4ycjsxacc2uzhr44m7jjsrp007m3qk7fgtzxl62czyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96nmumjd" />
    <content type="html">
      The first batch of invites has been sent. Here we go!&lt;br/&gt;&lt;br/&gt;#littleFedi #littleOne
    </content>
    <updated>2026-08-05T13:09:55Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs22n4gvhwfatc6j29vnmf4fhgy569kdx5g3pvpvzn7z73l32gc0eszyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96xawn3y</id>
    
      <title type="html"># Hi everyone, I&amp;#39;m Stefano Also known as the *BSD Cafe* and ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs22n4gvhwfatc6j29vnmf4fhgy569kdx5g3pvpvzn7z73l32gc0eszyqxwjcylumrr43n8xpnu5sn58nj76egvwnnn6pyg52ayps6fmea96xawn3y" />
    <content type="html">
      # Hi everyone, I&amp;#39;m Stefano&lt;br/&gt;&lt;br/&gt;Also known as the *BSD Cafe* and *illumos Cafe* barista - &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1ef53dd26zz26wlxa70xrl238fywamsrfp24nxxysesczwv425r0q6tgcpc&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Stefano Marinelli&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1ef5…gcpc&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; and &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1gacwzw0pn3ynx4wh3lwvpkn6lp292y7pjsrqe2h3fzymtulfpkzs0d4w3w&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Stefano Marinelli&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1gac…4w3w&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;This is the first post from **littleOne** (`littleone.littlefedi.social`), the first **littleFedi** instance open to outside users.&lt;br/&gt;&lt;br/&gt;littleFedi is a new ActivityPub server, still in active development, written in Go and shipped as a single binary. It speaks standard ActivityPub, so it federates normally with Mastodon, snac, GoToSocial, Akkoma and the rest of the fediverse, and it exposes a Mastodon-compatible API, so most existing apps already work with it.&lt;br/&gt;&lt;br/&gt;A few things about it that aren&amp;#39;t the usual fediverse defaults:&lt;br/&gt;&lt;br/&gt;- **Catch-up instead of an algorithm.** Timelines stay chronological, full stop. There&amp;#39;s a separate `/catchup` page, visited on demand, that ranks what you missed using only signals this instance already has locally - who you follow boosted it, replies and favourites delivered here, hashtags you follow. No external popularity data comes in, nothing about what you read is tracked. It answers &amp;#34;what did I miss&amp;#34; without turning into a feed that decides for you.&lt;br/&gt;&lt;br/&gt;- **Static blogging built in.** Any post can be marked as a blog post and gets published as a plain static page under `/@username/blog/`, with its own permalink, Atom feed, and no JavaScript or database hit per view, while still being a normal federated post underneath. A proper home for longer writing that doesn&amp;#39;t need to compete with a timeline.&lt;br/&gt;&lt;br/&gt;- **Self-expiring posts.** Any post can be given a timer and auto-delete on its own.&lt;br/&gt;&lt;br/&gt;- **Bubble timeline.** A middle ground between local and federated: a timeline scoped to a set of instances you&amp;#39;ve chosen to group together, not just your own or everything.&lt;br/&gt;&lt;br/&gt;- **littleMesh.** A way to federate without a public domain, certificate, or open port at all - meant for something like a Raspberry Pi behind NAT. Instances get an address derived from an Ed25519 key pair and reach each other through pinned relays that never see plaintext.&lt;br/&gt;&lt;br/&gt;- **No trends, no suggestions.** These are intentionally left empty. Nothing here is trying to surface &amp;#34;popular&amp;#34; content or keep anyone scrolling longer.&lt;br/&gt;&lt;br/&gt;- **Security defaults taken seriously.** Signed federation (HTTP Signatures), optional Object Integrity Proofs, TOTP MFA, audit logs, and full account export, migration and deletion if you ever want your data to live somewhere else.&lt;br/&gt;&lt;br/&gt;This instance is here to test all of that with real accounts, not just a small group ones&amp;#39;. In the next few days I&amp;#39;ll be reaching out to everyone who already told me they were interested, to set the first accounts up - an invite is coming. If you&amp;#39;d rather just follow along and see how it goes, that works too.&lt;br/&gt;&lt;br/&gt;It&amp;#39;s a test instance, so expect the occasional rough edge. If something breaks or feels wrong, tell me - that&amp;#39;s exactly what this phase is for.&lt;br/&gt;&lt;br/&gt;#littleFedi #littleOne #Fediverse
    </content>
    <updated>2026-08-05T09:51:43Z</updated>
  </entry>

</feed>