<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
      <title>Jimi Leander — Hardware, Audio&#x2F;DSP &amp; Sovereign Infrastructure</title>
      <link>https://blog.leander.media</link>
      <description>Engineering portfolio and technical blog of Jimi Leander: Autonomous Hardware&#x2F;EDA pipelines, Real-Time Audio&#x2F;DSP tooling, and Sovereign Homelab Infrastructure.</description>
      <generator>Zola</generator>
      <language>en</language>
      <atom:link href="https://blog.leander.media/rss.xml" rel="self" type="application/rss+xml"/>
      <lastBuildDate>Sat, 24 Oct 2026 00:00:00 +0000</lastBuildDate>
      <item>
          <title>Designing a Two-Tier Sovereign Cloud, Mail &amp; Zero-JS Publishing Platform</title>
          <pubDate>Sat, 24 Oct 2026 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.leander.media/blog/2026-10-24-sovereign-homelab-architecture/</link>
          <guid>https://blog.leander.media/blog/2026-10-24-sovereign-homelab-architecture/</guid>
          <description xml:base="https://blog.leander.media/blog/2026-10-24-sovereign-homelab-architecture/">&lt;p&gt;Modern self-hosted infrastructure often falls into one of two traps: either exposing heavy management planes directly to the public internet, or locking everything behind a VPN so tightly that collaborating and sharing public work becomes a chore.&lt;&#x2F;p&gt;
&lt;p&gt;In &lt;strong&gt;&lt;a href=&quot;&#x2F;projects&#x2F;project-smorgasbord&#x2F;&quot;&gt;Project Smörgåsbord&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;, we solved this by splitting our infrastructure into a &lt;strong&gt;Zero-Trust Public Edge Tier&lt;&#x2F;strong&gt; and an &lt;strong&gt;Encrypted Compute &amp;amp; Storage Core&lt;&#x2F;strong&gt;, paired with a &lt;strong&gt;zero-JavaScript static publishing pipeline&lt;&#x2F;strong&gt; driven directly from Obsidian.&lt;&#x2F;p&gt;
&lt;figure class=&quot;media-figure svg-figure&quot;&gt;&lt;div class=&quot;svg-inline-wrap&quot;&gt;&lt;svg xmlns=&quot;http:&#x2F;&#x2F;www.w3.org&#x2F;2000&#x2F;svg&quot; viewBox=&quot;0 0 1200 640&quot; width=&quot;100%&quot; height=&quot;auto&quot; role=&quot;img&quot; aria-label=&quot;Leander.Media Sovereign Cloud &amp;amp; Zero-JS Publishing Architecture&quot;&gt;
  &lt;defs&gt;
    &lt;style&gt;
      .bg { fill: #0b0f17; }
      .grid { stroke: #141c2b; stroke-width: 1; }
      .card { fill: #111827; stroke-width: 2; rx: 14; ry: 14; }
      .divider { stroke: #1f2937; stroke-width: 1.5; }
      .conn { fill: none; stroke-width: 2.5; stroke-dasharray: 6 4; }
      .title { fill: #f8fafc; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 18.5px; font-weight: 700; letter-spacing: 0.2px; }
      .hdr { font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif; font-size: 14.2px; font-weight: 700; letter-spacing: 0px; }
      .item { fill: #e2e8f0; font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif; font-size: 14.5px; }
      .badge { fill: #94a3b8; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 13.5px; }
    &lt;&#x2F;style&gt;
    &lt;marker id=&quot;arrow-cyan&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;8&quot; refY=&quot;5&quot; markerWidth=&quot;6&quot; markerHeight=&quot;6&quot; orient=&quot;auto-start-reverse&quot;&gt;
      &lt;path d=&quot;M 0 1 L 10 5 L 0 9 z&quot; fill=&quot;#38bdf8&quot;&#x2F;&gt;
    &lt;&#x2F;marker&gt;
    &lt;marker id=&quot;arrow-purple&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;8&quot; refY=&quot;5&quot; markerWidth=&quot;6&quot; markerHeight=&quot;6&quot; orient=&quot;auto-start-reverse&quot;&gt;
      &lt;path d=&quot;M 0 1 L 10 5 L 0 9 z&quot; fill=&quot;#a855f7&quot;&#x2F;&gt;
    &lt;&#x2F;marker&gt;
  &lt;&#x2F;defs&gt;
  &lt;rect class=&quot;bg&quot; width=&quot;1200&quot; height=&quot;640&quot; rx=&quot;16&quot;&#x2F;&gt;
  &lt;!-- Subtle background grid --&gt;
  &lt;g class=&quot;grid&quot;&gt;
    &lt;line x1=&quot;0&quot; y1=&quot;80&quot; x2=&quot;1200&quot; y2=&quot;80&quot;&#x2F;&gt;&lt;line x1=&quot;0&quot; y1=&quot;160&quot; x2=&quot;1200&quot; y2=&quot;160&quot;&#x2F;&gt;
    &lt;line x1=&quot;0&quot; y1=&quot;240&quot; x2=&quot;1200&quot; y2=&quot;240&quot;&#x2F;&gt;&lt;line x1=&quot;0&quot; y1=&quot;320&quot; x2=&quot;1200&quot; y2=&quot;320&quot;&#x2F;&gt;
    &lt;line x1=&quot;0&quot; y1=&quot;400&quot; x2=&quot;1200&quot; y2=&quot;400&quot;&#x2F;&gt;&lt;line x1=&quot;0&quot; y1=&quot;480&quot; x2=&quot;1200&quot; y2=&quot;480&quot;&#x2F;&gt;
    &lt;line x1=&quot;0&quot; y1=&quot;560&quot; x2=&quot;1200&quot; y2=&quot;560&quot;&#x2F;&gt;
    &lt;line x1=&quot;200&quot; y1=&quot;0&quot; x2=&quot;200&quot; y2=&quot;640&quot;&#x2F;&gt;&lt;line x1=&quot;400&quot; y1=&quot;0&quot; x2=&quot;400&quot; y2=&quot;640&quot;&#x2F;&gt;
    &lt;line x1=&quot;600&quot; y1=&quot;0&quot; x2=&quot;600&quot; y2=&quot;640&quot;&#x2F;&gt;&lt;line x1=&quot;800&quot; y1=&quot;0&quot; x2=&quot;800&quot; y2=&quot;640&quot;&#x2F;&gt;
    &lt;line x1=&quot;1000&quot; y1=&quot;0&quot; x2=&quot;1000&quot; y2=&quot;640&quot;&#x2F;&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Header Banner --&gt;
  &lt;rect class=&quot;card&quot; x=&quot;36&quot; y=&quot;24&quot; width=&quot;1128&quot; height=&quot;54&quot; stroke=&quot;#38bdf8&quot;&#x2F;&gt;
  &lt;text class=&quot;title&quot; x=&quot;60&quot; y=&quot;57&quot;&gt;LEANDER.MEDIA &#x2F;&#x2F; SOVEREIGN CLOUD &amp;amp; ZERO-JS PUBLISHING ARCHITECTURE&lt;&#x2F;text&gt;
  &lt;text class=&quot;badge&quot; x=&quot;1140&quot; y=&quot;56&quot; text-anchor=&quot;end&quot;&gt;VECTOR SVG &#x2F;&#x2F; 0 KB JS&lt;&#x2F;text&gt;
  &lt;!-- Connectors --&gt;
  &lt;path class=&quot;conn&quot; d=&quot;M 376 235 L 424 235&quot; stroke=&quot;#38bdf8&quot; marker-end=&quot;url(#arrow-cyan)&quot;&#x2F;&gt;
  &lt;path class=&quot;conn&quot; d=&quot;M 776 235 L 824 235&quot; stroke=&quot;#a855f7&quot; marker-end=&quot;url(#arrow-purple)&quot;&#x2F;&gt;
  &lt;!-- Box 1: Authoring --&gt;
  &lt;g transform=&quot;translate(36, 108)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;340&quot; height=&quot;254&quot; stroke=&quot;#38bdf8&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#38bdf8&quot;&gt;1. AUTHORING &amp;amp; LOCAL WORKFLOW&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;318&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• Obsidian Mobile &amp;amp; Desktop Vaults&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• Encrypted Peer-to-Peer Syncthing&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• Camera Photos, Video &amp;amp; Audio Clips&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• Versioned via Obsidian Git to GitLab CE&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;204&quot;&gt;• Zero Browser CMS Attack Surface&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Box 2: Compute &amp; Storage Core --&gt;
  &lt;g transform=&quot;translate(430, 108)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;340&quot; height=&quot;254&quot; stroke=&quot;#a855f7&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#a855f7&quot;&gt;2. SOVEREIGN COMPUTE &amp;amp; STORAGE CORE&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;318&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• Obsidian-to-Zola Media Preprocessor&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• Automated EXIF &amp;amp; GPS Metadata Scrubber&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• GitLab CE 19.5 (PostgreSQL 17) + CI&#x2F;CD&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• Stalwart Mail + DMARC Telemetry Exporter&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;204&quot;&gt;• Stoat Chat Backend + Zitadel OIDC Bridge&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Box 3: Edge &amp; Relay Tier --&gt;
  &lt;g transform=&quot;translate(824, 108)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;340&quot; height=&quot;254&quot; stroke=&quot;#34d399&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#34d399&quot;&gt;3. ZERO-TRUST EDGE &amp;amp; RELAY TIER&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;318&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• Zola SSG (&amp;lt;50ms Build, 0 KB Client JS)&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• Strict CSP: script-src &#x27;none&#x27; on Static&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• Dedicated Cloudflare Zero Trust Tunnels&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• Nordic WireGuard WebRTC &amp;amp; SMTP Relay&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;204&quot;&gt;• Outbound TLS Mail Deliverability Relay&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Box 4: Public Services --&gt;
  &lt;g transform=&quot;translate(36, 394)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;546&quot; height=&quot;218&quot; stroke=&quot;#fbbf24&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#fbbf24&quot;&gt;PUBLIC SOVEREIGN SERVICES (leander.media)&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;524&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• blog.leander.media &amp;amp; www.leander.media — Zero-JS Portfolio &amp;amp; Blog&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• chat.leander.media — Stoat Real-Time Messaging, Voice &amp;amp; Video&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• gitlab.leander.media — Self-Hosted GitLab CE 19.5 Code Forge&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• mail.leander.media &amp;amp; info.leander.media — Mail &amp;amp; Bilingual Legal Hub&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Box 5: Identity, Observability &amp; R&amp;D --&gt;
  &lt;g transform=&quot;translate(618, 394)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;546&quot; height=&quot;218&quot; stroke=&quot;#f472b6&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#f472b6&quot;&gt;IDENTITY, OBSERVABILITY &amp;amp; R&amp;amp;D PIPELINES&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;524&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• auth.leander.media — Zitadel OIDC PKCE Single Sign-On &amp;amp; Passkeys&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• VictoriaMetrics + Loki + Grafana DMARC Security Dashboards&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• Autonomous KiCad ERC&#x2F;DRC &amp;amp; 3D CAD Hardware Workbench&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• RekordRescue &amp;amp; Real-Time REAPER JSFX Audio DSP Tooling&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
&lt;&#x2F;svg&gt;&lt;&#x2F;div&gt;&lt;figcaption&gt;Leander.Media Sovereign Cloud &amp;amp; Zero-JS Publishing Architecture (Vector SVG)&lt;&#x2F;figcaption&gt;&lt;&#x2F;figure&gt;
&lt;h2 id=&quot;1-two-tier-split-horizon-architecture&quot;&gt;1. Two-Tier Split-Horizon Architecture&lt;&#x2F;h2&gt;
&lt;p&gt;Rather than treating every workload the same, we enforce a strict boundary between public edge ingress and local stateful storage:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Zero-Trust Public Edge (Cloudflare Tunnels + Dual Nordic WireGuard Relays):&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;HTTP&#x2F;HTTPS services—including this blog (&lt;code&gt;blog.leander.media&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;leander.media&lt;&#x2F;code&gt;), our real-time communication suite (&lt;strong&gt;&lt;a href=&quot;&#x2F;blog&#x2F;2026-10-24-stoat-chat-launch-and-getting-started&#x2F;&quot;&gt;Stoat Chat (&lt;code&gt;chat.leander.media&lt;&#x2F;code&gt;)&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;), our bilingual compliance portal (&lt;a href=&quot;https:&#x2F;&#x2F;info.leander.media&quot;&gt;&lt;code&gt;info.leander.media&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;), webmail (&lt;a href=&quot;https:&#x2F;&#x2F;mail.leander.media&quot;&gt;&lt;code&gt;mail.leander.media&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;), and GitLab HTTPS&#x2F;Registry (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.leander.media&quot;&gt;&lt;code&gt;gitlab.leander.media&lt;&#x2F;code&gt;&lt;&#x2F;a&gt; &#x2F; &lt;a href=&quot;https:&#x2F;&#x2F;registry.leander.media&quot;&gt;&lt;code&gt;registry.leander.media&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;)—are routed through isolated container networks and dedicated Cloudflare Zero Trust HTTP&#x2F;2 Tunnels.&lt;&#x2F;li&gt;
&lt;li&gt;Latency-sensitive UDP WebRTC voice&#x2F;video media, Matrix federation (&lt;code&gt;matrix.leander.media&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;turn.leander.media&lt;&#x2F;code&gt;), Git SSH (&lt;code&gt;ssh.gitlab.leander.media&lt;&#x2F;code&gt;), multiplayer game traffic (&lt;code&gt;mc&lt;&#x2F;code&gt;, &lt;code&gt;swamp&lt;&#x2F;code&gt;, &lt;code&gt;ftb&lt;&#x2F;code&gt;, &lt;code&gt;vh.leander.media&lt;&#x2F;code&gt;), and inbound&#x2F;outbound mail protocols traverse dedicated &lt;strong&gt;Nordic cloud relays in Helsinki (&lt;code&gt;hel1.leander.media&lt;&#x2F;code&gt;) and Stockholm (&lt;code&gt;mx.leander.media&lt;&#x2F;code&gt;) over kernel WireGuard&lt;&#x2F;strong&gt;, keeping origin hardware completely unexposed to public port scanners.&lt;&#x2F;li&gt;
&lt;li&gt;Static properties are compiled ahead-of-time into pure HTML5 and CSS with fluid responsive typography (&lt;code&gt;clamp(96%, 46% + 0.45vw, 126%)&lt;&#x2F;code&gt;) and &lt;strong&gt;0 KB of third-party JavaScript&lt;&#x2F;strong&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sovereign Compute &amp;amp; Storage Core:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;All stateful databases, Git repositories, object stores, Syncthing vaults, hardware EDA verification runners (see &lt;strong&gt;&lt;a href=&quot;&#x2F;projects&#x2F;hardware-eda-automation&#x2F;&quot;&gt;Automated Hardware &amp;amp; KiCad EDA Verification Pipeline&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;), and audio DSP workstations (see &lt;strong&gt;&lt;a href=&quot;&#x2F;projects&#x2F;rekordrescue-audio-dsp&#x2F;&quot;&gt;RekordRescue &amp;amp; Real-Time Audio&#x2F;DSP Tooling&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;) run on local hardware under our physical control.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;aside class=&quot;callout callout-tip&quot;&gt;&lt;div class=&quot;callout-title&quot;&gt;Why Publish Directly from Obsidian via Syncthing?&lt;&#x2F;div&gt;&lt;div class=&quot;callout-body&quot;&gt;
&lt;p&gt;Writing technical documentation in a browser CMS breaks flow. By syncing our Obsidian vault peer-to-peer over Syncthing to our build server, any Markdown note saved in &lt;code&gt;05 Blog&#x2F;&lt;&#x2F;code&gt; or &lt;code&gt;06 Portfolio&#x2F;&lt;&#x2F;code&gt; with &lt;code&gt;draft: false&lt;&#x2F;code&gt; is preprocessed, scrubbed of EXIF metadata, and compiled by &lt;strong&gt;Zola&lt;&#x2F;strong&gt; in under 50 milliseconds.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;&lt;&#x2F;aside&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;2-core-platform-pillars-leander-media&quot;&gt;2. Core Platform Pillars (&lt;code&gt;leander.media&lt;&#x2F;code&gt;)&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;a-self-hosted-gitlab-ce-19-5-gitlab-leander-media&quot;&gt;A. Self-Hosted GitLab CE 19.5 (&lt;code&gt;gitlab.leander.media&lt;&#x2F;code&gt;)&lt;&#x2F;h3&gt;
&lt;p&gt;Our self-hosted code forge runs &lt;strong&gt;GitLab Community Edition 19.5&lt;&#x2F;strong&gt; backed by PostgreSQL 17. It hosts:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Public Open-Source Mirrors &amp;amp; Releases:&lt;&#x2F;strong&gt; Including the complete client&#x2F;server mirrors and pre-configured binary builds for &lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;chat&quot;&gt;Stoat Chat (&lt;code&gt;gitlab.leander.media&#x2F;services&#x2F;chat&lt;&#x2F;code&gt;)&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; and the source code for our &lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;info-portal&quot;&gt;Legal &amp;amp; Info Hub (&lt;code&gt;gitlab.leander.media&#x2F;services&#x2F;info-portal&lt;&#x2F;code&gt;)&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Private Infrastructure &amp;amp; R&amp;amp;D Repositories:&lt;&#x2F;strong&gt; Versioned Docker Compose stacks, autonomous KiCad ERC&#x2F;DRC hardware verification pipelines, and automated backups of the Obsidian knowledge vault itself.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;b-sovereign-mail-mail-leander-media-real-time-dmarc-telemetry&quot;&gt;B. Sovereign Mail (&lt;code&gt;mail.leander.media&lt;&#x2F;code&gt;) &amp;amp; Real-Time DMARC Telemetry&lt;&#x2F;h3&gt;
&lt;p&gt;Running a reliable self-hosted mail stack requires careful attention to IP reputation and cryptographic authentication:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stalwart Mail Server + SnappyMail:&lt;&#x2F;strong&gt; Handles IMAP4&#x2F;SMTP with dual &lt;strong&gt;2048-bit RSA and Ed25519 DKIM signing&lt;&#x2F;strong&gt;, strict SPF, and DMARC policy enforcement, paired with a clean webmail interface at &lt;a href=&quot;https:&#x2F;&#x2F;mail.leander.media&quot;&gt;&lt;code&gt;mail.leander.media&lt;&#x2F;code&gt;&lt;&#x2F;a&gt; where role addresses (&lt;code&gt;admin@&lt;&#x2F;code&gt;, &lt;code&gt;contact@&lt;&#x2F;code&gt;, &lt;code&gt;abuse@&lt;&#x2F;code&gt;, &lt;code&gt;dmarc@&lt;&#x2F;code&gt;) automatically sync into dedicated folders and Send-As identities.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Authenticated Outbound TLS Relay:&lt;&#x2F;strong&gt; Outbound external delivery routes through an authenticated European SMTP TLS relay so residential or cloud subnet blocks never impact deliverability.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Automated DMARC-to-Grafana Pipeline:&lt;&#x2F;strong&gt; A custom Python telemetry daemon parses incoming XML&#x2F;ZIP aggregate DMARC reports (&lt;code&gt;rua&lt;&#x2F;code&gt;) in real time and exports Prometheus metrics (&lt;code&gt;dmarc_messages_total&lt;&#x2F;code&gt;, &lt;code&gt;dmarc_dkim_pass_total&lt;&#x2F;code&gt;, &lt;code&gt;dmarc_spf_pass_total&lt;&#x2F;code&gt;) into &lt;strong&gt;VictoriaMetrics&lt;&#x2F;strong&gt; and &lt;strong&gt;Grafana&lt;&#x2F;strong&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;c-centralized-identity-auth-leander-media-bilingual-legal-hub-info-leander-media&quot;&gt;C. Centralized Identity (&lt;code&gt;auth.leander.media&lt;&#x2F;code&gt;) &amp;amp; Bilingual Legal Hub (&lt;code&gt;info.leander.media&lt;&#x2F;code&gt;)&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Zitadel OIDC Single Sign-On:&lt;&#x2F;strong&gt; Provides passwordless WebAuthn&#x2F;Passkey and OAuth 2.0 PKCE authentication across internal and public services.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Bilingual (&lt;code&gt;FI&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;EN&lt;&#x2F;code&gt;) Compliance Portal:&lt;&#x2F;strong&gt; &lt;a href=&quot;https:&#x2F;&#x2F;info.leander.media&quot;&gt;&lt;code&gt;info.leander.media&lt;&#x2F;code&gt;&lt;&#x2F;a&gt; serves our GDPR Privacy Policy, Terms of Service, EULA, Open-Source Licensing attributions, and EU Digital Services Act (DSA) contact points with automatic Finnish&#x2F;English browser language detection.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;3-automatic-exif-scrubbing-media-optimization&quot;&gt;3. Automatic EXIF Scrubbing &amp;amp; Media Optimization&lt;&#x2F;h2&gt;
&lt;p&gt;When blogging from a phone in the workshop—taking photos of a custom PCB or a 16kW mountainboard battery spine—raw camera JPEGs contain sensitive EXIF metadata including GPS coordinates and device serial numbers.&lt;&#x2F;p&gt;
&lt;p&gt;Our watcher daemon intercepts every &lt;code&gt;![[photo.jpg|Caption]]&lt;&#x2F;code&gt; embed and runs &lt;code&gt;exiftool -all=&lt;&#x2F;code&gt; plus responsive WebP generation before Zola builds the static site:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;python&quot; style=&quot;background-color:#0f1419;color:#bfbab0;&quot; class=&quot;language-python &quot;&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span style=&quot;color:#ff7733;&quot;&gt;def &lt;&#x2F;span&gt;&lt;span style=&quot;color:#ffb454;&quot;&gt;scrub_and_optimize_image&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29718;&quot;&gt;src_path&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;: &lt;&#x2F;span&gt;&lt;span&gt;Path&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29718;&quot;&gt;dst_clean&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;: &lt;&#x2F;span&gt;&lt;span&gt;Path&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29718;&quot;&gt;dst_webp&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;: &lt;&#x2F;span&gt;&lt;span&gt;Path) &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;-&amp;gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29718;&quot;&gt;None&lt;&#x2F;span&gt;&lt;span&gt;:
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;font-style:italic;color:#5c6773;&quot;&gt;&amp;quot;&amp;quot;&amp;quot;Strip all EXIF metadata (GPS, serials) and generate a responsive 1600px WebP.&amp;quot;&amp;quot;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#ff7733;&quot;&gt;with &lt;&#x2F;span&gt;&lt;span&gt;Image&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#ffb454;&quot;&gt;open&lt;&#x2F;span&gt;&lt;span&gt;(src_path) &lt;&#x2F;span&gt;&lt;span style=&quot;color:#ff7733;&quot;&gt;as &lt;&#x2F;span&gt;&lt;span&gt;img:
&lt;&#x2F;span&gt;&lt;span&gt;        img_rgb &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;= &lt;&#x2F;span&gt;&lt;span&gt;ImageOps&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#ffb454;&quot;&gt;exif_transpose&lt;&#x2F;span&gt;&lt;span&gt;(img)
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;font-style:italic;color:#5c6773;&quot;&gt;# Creating a fresh Image copy without passing info&#x2F;exif strips all EXIF tags
&lt;&#x2F;span&gt;&lt;span&gt;        clean &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;= &lt;&#x2F;span&gt;&lt;span&gt;Image&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#ffb454;&quot;&gt;new&lt;&#x2F;span&gt;&lt;span&gt;(img_rgb&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;mode&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;, &lt;&#x2F;span&gt;&lt;span&gt;img_rgb&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;size)
&lt;&#x2F;span&gt;&lt;span&gt;        clean&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#ffb454;&quot;&gt;putdata&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;font-style:italic;color:#39bae6;&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt;(img_rgb&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#ffb454;&quot;&gt;getdata&lt;&#x2F;span&gt;&lt;span&gt;()))
&lt;&#x2F;span&gt;&lt;span&gt;        clean&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#ffb454;&quot;&gt;save&lt;&#x2F;span&gt;&lt;span&gt;(dst_clean&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29718;&quot;&gt;optimize&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29718;&quot;&gt;True&lt;&#x2F;span&gt;&lt;span&gt;)
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;font-style:italic;color:#5c6773;&quot;&gt;# Generate fast-loading WebP (max 1600px width)
&lt;&#x2F;span&gt;&lt;span&gt;        clean&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#ffb454;&quot;&gt;thumbnail&lt;&#x2F;span&gt;&lt;span&gt;((&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29718;&quot;&gt;1600&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29718;&quot;&gt;1600&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;, &lt;&#x2F;span&gt;&lt;span&gt;Image&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;Resampling&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;LANCZOS)
&lt;&#x2F;span&gt;&lt;span&gt;        clean&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#ffb454;&quot;&gt;save&lt;&#x2F;span&gt;&lt;span&gt;(dst_webp&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29718;&quot;&gt;format&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color:#c2d94c;&quot;&gt;&amp;quot;WEBP&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29718;&quot;&gt;quality&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29718;&quot;&gt;85&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29718;&quot;&gt;method&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29718;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;figure class=&quot;media-figure&quot;&gt;&lt;a href=&quot;gps-exif-test.jpg&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img src=&quot;gps-exif-test.webp&quot; alt=&quot;Live EXIF Scrubbing Verification — Source JPEG contained GPS coordinates; published JPEG &amp;amp; WebP contain 0 EXIF tags&quot; loading=&quot;lazy&quot;&gt;&lt;&#x2F;a&gt;&lt;figcaption&gt;Live EXIF Scrubbing Verification — Source JPEG contained GPS coordinates; published JPEG &amp;amp; WebP contain 0 EXIF tags&lt;&#x2F;figcaption&gt;&lt;&#x2F;figure&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;4-what-s-next&quot;&gt;4. What’s Next&lt;&#x2F;h2&gt;
&lt;p&gt;Check out our companion guide—&lt;strong&gt;&lt;a href=&quot;&#x2F;blog&#x2F;2026-10-24-stoat-chat-launch-and-getting-started&#x2F;&quot;&gt;Stoat Chat on Leander.Media: Sovereign Real-Time Messaging, Voice &amp;amp; How to Get Started&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;—to hop onto our chat and voice platform, or subscribe via the &lt;a href=&quot;&#x2F;rss.xml&quot;&gt;RSS feed&lt;&#x2F;a&gt; &#x2F; &lt;a href=&quot;&#x2F;atom.xml&quot;&gt;Atom feed&lt;&#x2F;a&gt; for upcoming deep dives into our &lt;strong&gt;&lt;a href=&quot;&#x2F;projects&#x2F;hardware-eda-automation&#x2F;&quot;&gt;autonomous KiCad EDA verification pipeline&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; and &lt;strong&gt;&lt;a href=&quot;&#x2F;projects&#x2F;rekordrescue-audio-dsp&#x2F;&quot;&gt;real-time audio DSP tooling&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Stoat Chat on Leander.Media: Sovereign Real-Time Messaging, Voice &amp; Getting Started Guide</title>
          <pubDate>Sat, 24 Oct 2026 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.leander.media/blog/2026-10-24-stoat-chat-launch-and-getting-started/</link>
          <guid>https://blog.leander.media/blog/2026-10-24-stoat-chat-launch-and-getting-started/</guid>
          <description xml:base="https://blog.leander.media/blog/2026-10-24-stoat-chat-launch-and-getting-started/">&lt;p&gt;As part of the &lt;strong&gt;&lt;a href=&quot;&#x2F;blog&#x2F;2026-10-24-sovereign-homelab-architecture&#x2F;&quot;&gt;Leander.Media Sovereign Cloud Platform&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;, we wanted a fast, modern real-time messaging, voice, and screen-sharing platform for friends and collaborators—without handing our conversations, voice streams, or social graph over to third-party ad-tech platforms.&lt;&#x2F;p&gt;
&lt;p&gt;Today, &lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;chat.leander.media&quot;&gt;&lt;code&gt;chat.leander.media&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; is live, powered by &lt;strong&gt;Stoat Chat (&lt;code&gt;v0.15&lt;&#x2F;code&gt;)&lt;&#x2F;strong&gt;, integrated with &lt;strong&gt;Zitadel OIDC Single Sign-On (&lt;code&gt;auth.leander.media&lt;&#x2F;code&gt;)&lt;&#x2F;strong&gt;, backed by a &lt;strong&gt;Nordic LiveKit WebRTC voice&#x2F;video edge relay&lt;&#x2F;strong&gt;, and paired with pre-configured desktop and mobile apps hosted on our public GitLab forge.&lt;&#x2F;p&gt;
&lt;figure class=&quot;media-figure svg-figure&quot;&gt;&lt;div class=&quot;svg-inline-wrap&quot;&gt;&lt;svg xmlns=&quot;http:&#x2F;&#x2F;www.w3.org&#x2F;2000&#x2F;svg&quot; viewBox=&quot;0 0 1200 640&quot; width=&quot;100%&quot; height=&quot;auto&quot; role=&quot;img&quot; aria-label=&quot;Stoat Chat (chat.leander.media) OIDC SSO, WebRTC Voice &amp;amp; Client Ecosystem&quot;&gt;
  &lt;defs&gt;
    &lt;style&gt;
      .bg { fill: #0b0f17; }
      .grid { stroke: #141c2b; stroke-width: 1; }
      .card { fill: #111827; stroke-width: 2; rx: 14; ry: 14; }
      .divider { stroke: #1f2937; stroke-width: 1.5; }
      .conn { fill: none; stroke-width: 2.5; stroke-dasharray: 6 4; }
      .title { fill: #f8fafc; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 18.5px; font-weight: 700; letter-spacing: 0.2px; }
      .hdr { font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif; font-size: 14.2px; font-weight: 700; letter-spacing: 0px; }
      .item { fill: #e2e8f0; font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif; font-size: 14.5px; }
      .badge { fill: #94a3b8; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 13.5px; }
    &lt;&#x2F;style&gt;
    &lt;marker id=&quot;arrow-cyan&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;8&quot; refY=&quot;5&quot; markerWidth=&quot;6&quot; markerHeight=&quot;6&quot; orient=&quot;auto-start-reverse&quot;&gt;
      &lt;path d=&quot;M 0 1 L 10 5 L 0 9 z&quot; fill=&quot;#38bdf8&quot;&#x2F;&gt;
    &lt;&#x2F;marker&gt;
    &lt;marker id=&quot;arrow-purple&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;8&quot; refY=&quot;5&quot; markerWidth=&quot;6&quot; markerHeight=&quot;6&quot; orient=&quot;auto-start-reverse&quot;&gt;
      &lt;path d=&quot;M 0 1 L 10 5 L 0 9 z&quot; fill=&quot;#a855f7&quot;&#x2F;&gt;
    &lt;&#x2F;marker&gt;
  &lt;&#x2F;defs&gt;
  &lt;rect class=&quot;bg&quot; width=&quot;1200&quot; height=&quot;640&quot; rx=&quot;16&quot;&#x2F;&gt;
  &lt;!-- Subtle background grid --&gt;
  &lt;g class=&quot;grid&quot;&gt;
    &lt;line x1=&quot;0&quot; y1=&quot;80&quot; x2=&quot;1200&quot; y2=&quot;80&quot;&#x2F;&gt;&lt;line x1=&quot;0&quot; y1=&quot;160&quot; x2=&quot;1200&quot; y2=&quot;160&quot;&#x2F;&gt;
    &lt;line x1=&quot;0&quot; y1=&quot;240&quot; x2=&quot;1200&quot; y2=&quot;240&quot;&#x2F;&gt;&lt;line x1=&quot;0&quot; y1=&quot;320&quot; x2=&quot;1200&quot; y2=&quot;320&quot;&#x2F;&gt;
    &lt;line x1=&quot;0&quot; y1=&quot;400&quot; x2=&quot;1200&quot; y2=&quot;400&quot;&#x2F;&gt;&lt;line x1=&quot;0&quot; y1=&quot;480&quot; x2=&quot;1200&quot; y2=&quot;480&quot;&#x2F;&gt;
    &lt;line x1=&quot;0&quot; y1=&quot;560&quot; x2=&quot;1200&quot; y2=&quot;560&quot;&#x2F;&gt;
    &lt;line x1=&quot;200&quot; y1=&quot;0&quot; x2=&quot;200&quot; y2=&quot;640&quot;&#x2F;&gt;&lt;line x1=&quot;400&quot; y1=&quot;0&quot; x2=&quot;400&quot; y2=&quot;640&quot;&#x2F;&gt;
    &lt;line x1=&quot;600&quot; y1=&quot;0&quot; x2=&quot;600&quot; y2=&quot;640&quot;&#x2F;&gt;&lt;line x1=&quot;800&quot; y1=&quot;0&quot; x2=&quot;800&quot; y2=&quot;640&quot;&#x2F;&gt;
    &lt;line x1=&quot;1000&quot; y1=&quot;0&quot; x2=&quot;1000&quot; y2=&quot;640&quot;&#x2F;&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Header Banner --&gt;
  &lt;rect class=&quot;card&quot; x=&quot;36&quot; y=&quot;24&quot; width=&quot;1128&quot; height=&quot;54&quot; stroke=&quot;#38bdf8&quot;&#x2F;&gt;
  &lt;text class=&quot;title&quot; x=&quot;60&quot; y=&quot;57&quot;&gt;CHAT.LEANDER.MEDIA &#x2F;&#x2F; STOAT REAL-TIME CHAT, OIDC SSO &amp;amp; WEBRTC VOICE&lt;&#x2F;text&gt;
  &lt;text class=&quot;badge&quot; x=&quot;1140&quot; y=&quot;56&quot; text-anchor=&quot;end&quot;&gt;VECTOR SVG &#x2F;&#x2F; v1.0.0-leander&lt;&#x2F;text&gt;
  &lt;!-- Connectors --&gt;
  &lt;path class=&quot;conn&quot; d=&quot;M 376 235 L 424 235&quot; stroke=&quot;#38bdf8&quot; marker-end=&quot;url(#arrow-cyan)&quot;&#x2F;&gt;
  &lt;path class=&quot;conn&quot; d=&quot;M 776 235 L 824 235&quot; stroke=&quot;#a855f7&quot; marker-end=&quot;url(#arrow-purple)&quot;&#x2F;&gt;
  &lt;!-- Box 1: Identity &amp; Invite Gateway --&gt;
  &lt;g transform=&quot;translate(36, 108)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;340&quot; height=&quot;254&quot; stroke=&quot;#38bdf8&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#38bdf8&quot;&gt;1. IDENTITY &amp;amp; INVITE GATEWAY&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;318&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• auth.leander.media (Zitadel OIDC IdP)&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• OAuth 2.0 Authorization Code + PKCE&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• Role-Gated Access (stoat-user &#x2F; admin)&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• Time &amp;amp; Use-Limited Invite Links&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;204&quot;&gt;• Zero Separate Chat Password Required&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Box 2: Stoat Chat Core --&gt;
  &lt;g transform=&quot;translate(430, 108)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;340&quot; height=&quot;254&quot; stroke=&quot;#a855f7&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#a855f7&quot;&gt;2. STOAT CHAT CORE (chat.leander.media)&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;318&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• Stoat v0.15 API &amp;amp; Bonfire WebSocket&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• Custom OIDC SSO Auto-Provision Bridge&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• Autumn Encrypted Attachment Storage&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• January Privacy-Preserving Media Proxy&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;204&quot;&gt;• Bilingual GDPR &amp;amp; ToS (info.leander.media)&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Box 3: Nordic WebRTC Voice &amp; Video --&gt;
  &lt;g transform=&quot;translate(824, 108)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;340&quot; height=&quot;254&quot; stroke=&quot;#34d399&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#34d399&quot;&gt;3. NORDIC WEBRTC VOICE &amp;amp; VIDEO&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;318&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• LiveKit SFU Low-Latency Media Engine&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• Nordic Cloud Edge Relay via WireGuard&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• Direct UDP&#x2F;TCP ICE Candidate Routing&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• Origin Network 100% Shielded&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;204&quot;&gt;• HD Screen Sharing &amp;amp; Voice Channels&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Box 4: Instant Web &amp; Native Clients --&gt;
  &lt;g transform=&quot;translate(36, 394)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;546&quot; height=&quot;218&quot; stroke=&quot;#fbbf24&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#fbbf24&quot;&gt;4. INSTANT WEB &amp;amp; PRE-CONFIGURED NATIVE CLIENTS&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;524&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• Web App: https:&#x2F;&#x2F;chat.leander.media (One-Click Browser Login)&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• Windows x64: Setup Installer (.exe) &amp;amp; Single-File Portable (.exe)&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• Linux x86_64: Debian&#x2F;Ubuntu (.deb) &amp;amp; Portable (.AppImage)&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• Android ARM64: Signed Native Release (.apk)&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Box 5: Open-Source Mirrors &amp; Releases --&gt;
  &lt;g transform=&quot;translate(618, 394)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;546&quot; height=&quot;218&quot; stroke=&quot;#f472b6&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#f472b6&quot;&gt;5. OPEN-SOURCE MIRRORS &amp;amp; RELEASES (v1.0.0-leander)&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;524&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• Release Hub: gitlab.leander.media&#x2F;services&#x2F;chat&#x2F;stoat&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• Pre-Patched Default Server: https:&#x2F;&#x2F;chat.leander.media&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• Full Source Mirrors: for-desktop, for-android, for-web, stoatchat&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• Sanitized Self-Hosted Compose &amp;amp; OIDC Bridge Repository&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
&lt;&#x2F;svg&gt;&lt;&#x2F;div&gt;&lt;figcaption&gt;Stoat Chat (chat.leander.media) — OIDC Single Sign-On, LiveKit WebRTC Relay &amp;amp; Native Client Ecosystem (Vector SVG)&lt;&#x2F;figcaption&gt;&lt;&#x2F;figure&gt;
&lt;figure class=&quot;media-figure flow-diagram&quot;&gt;&lt;div class=&quot;flow-track&quot;&gt;&lt;div class=&quot;flow-step&quot;&gt;&lt;strong&gt;1. Click Invite or Visit&lt;&#x2F;strong&gt;&lt;span&gt;chat.leander.media&lt;&#x2F;span&gt;&lt;&#x2F;div&gt;&lt;div class=&quot;flow-arrow&quot; aria-hidden=&quot;true&quot;&gt;&lt;svg viewBox=&quot;0 0 28 24&quot; width=&quot;28&quot; height=&quot;24&quot;&gt;&lt;path d=&quot;M2 12h20M16 6l6 6-6 6&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&#x2F;&gt;&lt;&#x2F;svg&gt;&lt;&#x2F;div&gt;&lt;div class=&quot;flow-step&quot;&gt;&lt;strong&gt;2. Authenticate via Zitadel SSO&lt;&#x2F;strong&gt;&lt;span&gt;(auth.leander.media)&lt;&#x2F;span&gt;&lt;&#x2F;div&gt;&lt;div class=&quot;flow-arrow&quot; aria-hidden=&quot;true&quot;&gt;&lt;svg viewBox=&quot;0 0 28 24&quot; width=&quot;28&quot; height=&quot;24&quot;&gt;&lt;path d=&quot;M2 12h20M16 6l6 6-6 6&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&#x2F;&gt;&lt;&#x2F;svg&gt;&lt;&#x2F;div&gt;&lt;div class=&quot;flow-step&quot;&gt;&lt;strong&gt;3. Auto-Provisioned Session&lt;&#x2F;strong&gt;&lt;span&gt;(stoat-user &#x2F; stoat-admin)&lt;&#x2F;span&gt;&lt;&#x2F;div&gt;&lt;div class=&quot;flow-arrow&quot; aria-hidden=&quot;true&quot;&gt;&lt;svg viewBox=&quot;0 0 28 24&quot; width=&quot;28&quot; height=&quot;24&quot;&gt;&lt;path d=&quot;M2 12h20M16 6l6 6-6 6&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&#x2F;&gt;&lt;&#x2F;svg&gt;&lt;&#x2F;div&gt;&lt;div class=&quot;flow-step&quot;&gt;&lt;strong&gt;4. Chat, Voice &amp;amp; Screen Share&lt;&#x2F;strong&gt;&lt;span&gt;(Web, Windows, Linux, Android)&lt;&#x2F;span&gt;&lt;&#x2F;div&gt;&lt;&#x2F;div&gt;&lt;&#x2F;figure&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;1-how-to-get-started-chat-leander-media&quot;&gt;1. How to Get Started (&lt;code&gt;chat.leander.media&lt;&#x2F;code&gt;)&lt;&#x2F;h2&gt;
&lt;p&gt;Joining takes less than a minute and works immediately in your browser, on your desktop, or on your phone.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;step-1-open-your-invite-link-or-sign-in-with-sso&quot;&gt;Step 1: Open Your Invite Link or Sign In with SSO&lt;&#x2F;h3&gt;
&lt;p&gt;Access to &lt;code&gt;chat.leander.media&lt;&#x2F;code&gt; is invite-only and protected by &lt;strong&gt;Leander.Media Single Sign-On (Zitadel)&lt;&#x2F;strong&gt;:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;If you received an Invite Link (&lt;code&gt;https:&#x2F;&#x2F;chat.leander.media&#x2F;invite&#x2F;&amp;lt;code&amp;gt;&lt;&#x2F;code&gt; or &lt;code&gt;&#x2F;sso&#x2F;register&#x2F;&amp;lt;code&amp;gt;&lt;&#x2F;code&gt;):&lt;&#x2F;strong&gt;
&lt;ul&gt;
&lt;li&gt;Click the invite link in your browser.&lt;&#x2F;li&gt;
&lt;li&gt;It automatically validates your invite token and redirects you to &lt;strong&gt;&lt;code&gt;https:&#x2F;&#x2F;auth.leander.media&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; to log in or complete your account setup.&lt;&#x2F;li&gt;
&lt;li&gt;Once authenticated, our OIDC bridge automatically grants your account access, provisions your Stoat profile, and logs you straight into the chat!&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;If you already have a &lt;code&gt;leander.media&lt;&#x2F;code&gt; SSO account:&lt;&#x2F;strong&gt;
&lt;ul&gt;
&lt;li&gt;Visit &lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;chat.leander.media&quot;&gt;&lt;code&gt;https:&#x2F;&#x2F;chat.leander.media&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; and click &lt;strong&gt;Sign in with Leander.Media SSO (Zitadel)&lt;&#x2F;strong&gt; (or go directly to &lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;chat.leander.media&#x2F;sso&#x2F;login&quot;&gt;&lt;code&gt;https:&#x2F;&#x2F;chat.leander.media&#x2F;sso&#x2F;login&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;aside class=&quot;callout callout-tip&quot;&gt;&lt;div class=&quot;callout-title&quot;&gt;Zero Separate Chat Password Needed in the Browser&lt;&#x2F;div&gt;&lt;div class=&quot;callout-body&quot;&gt;
&lt;p&gt;When signing in via &lt;strong&gt;Leander.Media SSO&lt;&#x2F;strong&gt;, our OIDC PKCE bridge authenticates your Zitadel identity, mints an active Stoat session directly into your browser storage, and takes you straight into your channels with a single click.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;&lt;&#x2F;aside&gt;
&lt;hr &#x2F;&gt;
&lt;h3 id=&quot;step-2-download-the-pre-configured-desktop-mobile-apps-v1-0-0-leander&quot;&gt;Step 2: Download the Pre-Configured Desktop &amp;amp; Mobile Apps (&lt;code&gt;v1.0.0-leander&lt;&#x2F;code&gt;)&lt;&#x2F;h3&gt;
&lt;p&gt;While the &lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;chat.leander.media&quot;&gt;Web App (&lt;code&gt;https:&#x2F;&#x2F;chat.leander.media&lt;&#x2F;code&gt;)&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; works out of the box in any browser, we also maintain and build native desktop and mobile clients pre-configured to connect directly to &lt;strong&gt;&lt;code&gt;https:&#x2F;&#x2F;chat.leander.media&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt; by default—no manual custom server URL typing required.&lt;&#x2F;p&gt;
&lt;p&gt;All runnable single-file binaries and full source code are available on our public GitLab release page:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Release Hub:&lt;&#x2F;strong&gt; &lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;chat&#x2F;stoat&#x2F;-&#x2F;releases&#x2F;v1.0.0-leander&quot;&gt;&lt;code&gt;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;chat&#x2F;stoat&#x2F;-&#x2F;releases&#x2F;v1.0.0-leander&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Platform&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Package Type&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Direct Download Link&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Notes&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Windows (x64)&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Setup Installer (&lt;code&gt;.exe&lt;&#x2F;code&gt;)&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;chat&#x2F;stoat&#x2F;-&#x2F;releases&#x2F;v1.0.0-leander&#x2F;downloads&#x2F;Stoat-Desktop-Windows-Setup.exe&quot;&gt;Stoat-Desktop-Windows-Setup.exe&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Standard Windows desktop installer with tray &amp;amp; notifications.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Windows (x64)&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Portable Binary (&lt;code&gt;.exe&lt;&#x2F;code&gt;)&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;chat&#x2F;stoat&#x2F;-&#x2F;releases&#x2F;v1.0.0-leander&#x2F;downloads&#x2F;Stoat-Desktop-Windows-Portable.exe&quot;&gt;Stoat-Desktop-Windows-Portable.exe&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Single-file executable — run from anywhere with zero install.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Linux (x86_64)&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Debian &#x2F; Ubuntu (&lt;code&gt;.deb&lt;&#x2F;code&gt;)&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;chat&#x2F;stoat&#x2F;-&#x2F;releases&#x2F;v1.0.0-leander&#x2F;downloads&#x2F;Stoat-Desktop-Linux-amd64.deb&quot;&gt;Stoat-Desktop-Linux-amd64.deb&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Install via &lt;code&gt;sudo apt install .&#x2F;Stoat-Desktop-Linux-amd64.deb&lt;&#x2F;code&gt;.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Linux (x86_64)&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Portable (&lt;code&gt;.AppImage&lt;&#x2F;code&gt;)&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;chat&#x2F;stoat&#x2F;-&#x2F;releases&#x2F;v1.0.0-leander&#x2F;downloads&#x2F;Stoat-Desktop-Linux-x86_64.AppImage&quot;&gt;Stoat-Desktop-Linux-x86_64.AppImage&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;chmod +x Stoat-Desktop-Linux-x86_64.AppImage &amp;amp;&amp;amp; .&#x2F;Stoat-Desktop-Linux-x86_64.AppImage&lt;&#x2F;code&gt;.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Android (ARM64)&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Signed Release (&lt;code&gt;.apk&lt;&#x2F;code&gt;)&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;chat&#x2F;stoat&#x2F;-&#x2F;releases&#x2F;v1.0.0-leander&#x2F;downloads&#x2F;Stoat-Android-arm64-v8a-release.apk&quot;&gt;Stoat-Android-arm64-v8a-release.apk&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Native Kotlin&#x2F;Compose Android app pre-pointed at &lt;code&gt;chat.leander.media&lt;&#x2F;code&gt;.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Web Bundle&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Self-Hosted Static (&lt;code&gt;.zip&lt;&#x2F;code&gt;)&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;chat&#x2F;stoat&#x2F;-&#x2F;releases&#x2F;v1.0.0-leander&#x2F;downloads&#x2F;Stoat-Web-SelfHosted-Dist.zip&quot;&gt;Stoat-Web-SelfHosted-Dist.zip&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Pre-built static web bundle for offline auditing or local hosting.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;2-under-the-hood-architecture-privacy&quot;&gt;2. Under the Hood: Architecture &amp;amp; Privacy&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;a-zitadel-oidc-bridge-invite-portal&quot;&gt;A. Zitadel OIDC Bridge &amp;amp; Invite Portal&lt;&#x2F;h3&gt;
&lt;p&gt;Upstream Stoat&#x2F;Revolt uses standalone email&#x2F;password authentication via Shield. To unify identity across &lt;code&gt;leander.media&lt;&#x2F;code&gt; without forking the core Rust database schema, we built a lightweight &lt;strong&gt;OIDC PKCE Bridge (&lt;code&gt;sso-bridge&lt;&#x2F;code&gt;)&lt;&#x2F;strong&gt; sitting alongside the API behind Caddy:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Validates &lt;strong&gt;OAuth 2.0 Authorization Code + PKCE&lt;&#x2F;strong&gt; flows against &lt;code&gt;https:&#x2F;&#x2F;auth.leander.media&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Enforces Zitadel role assertions (&lt;code&gt;stoat-user&lt;&#x2F;code&gt; and &lt;code&gt;stoat-admin&lt;&#x2F;code&gt;) before provisioning or issuing sessions.&lt;&#x2F;li&gt;
&lt;li&gt;Includes a built-in &lt;strong&gt;Admin Invite Portal (&lt;code&gt;&#x2F;sso&#x2F;invites&lt;&#x2F;code&gt;)&lt;&#x2F;strong&gt; allowing &lt;code&gt;stoat-admin&lt;&#x2F;code&gt; members to generate single-use or time-limited onboarding links on the fly.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;b-low-latency-nordic-livekit-webrtc-voice-video&quot;&gt;B. Low-Latency Nordic LiveKit WebRTC Voice &amp;amp; Video&lt;&#x2F;h3&gt;
&lt;p&gt;WebRTC voice and screen sharing require direct UDP&#x2F;TCP media streams (&lt;code&gt;LiveKit SFU&lt;&#x2F;code&gt;), which cannot pass through standard HTTP-only reverse proxies without adding latency:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Voice and video traffic routes through a dedicated &lt;strong&gt;Nordic cloud relay over a kernel WireGuard tunnel&lt;&#x2F;strong&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Clients establish WebRTC media streams with sub-15ms regional latency while the underlying homelab origin IP remains 100% shielded.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;c-open-source-transparency&quot;&gt;C. Open Source &amp;amp; Transparency&lt;&#x2F;h3&gt;
&lt;p&gt;In keeping with our open-source licensing commitments, every line of client and deployment code is published under &lt;strong&gt;&lt;code&gt;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;chat&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt;:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;chat&#x2F;stoat&quot;&gt;&lt;code&gt;services&#x2F;chat&#x2F;stoat&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; — Master hub &amp;amp; release deliverables (&lt;code&gt;v1.0.0-leander&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;chat&#x2F;for-desktop&quot;&gt;&lt;code&gt;services&#x2F;chat&#x2F;for-desktop&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; — Electron desktop client source&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;chat&#x2F;for-android&quot;&gt;&lt;code&gt;services&#x2F;chat&#x2F;for-android&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; — Android native client source&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;chat&#x2F;for-web&quot;&gt;&lt;code&gt;services&#x2F;chat&#x2F;for-web&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; — SolidJS web client source&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;chat&#x2F;stoatchat&quot;&gt;&lt;code&gt;services&#x2F;chat&#x2F;stoatchat&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; — Rust backend services (Delta API, Bonfire WebSocket, Autumn, January)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;chat&#x2F;self-hosted&quot;&gt;&lt;code&gt;services&#x2F;chat&#x2F;self-hosted&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; — Sanitized Docker Compose stack &amp;amp; Zitadel OIDC bridge&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;For full details on data handling, GDPR privacy rights, and open-source licenses, visit &lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;info.leander.media&quot;&gt;&lt;code&gt;https:&#x2F;&#x2F;info.leander.media&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Project Smörgåsbord: Two-Tier Sovereign Cloud &amp; Zero-Trust Mesh</title>
          <pubDate>Sat, 24 Oct 2026 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.leander.media/projects/project-smorgasbord/</link>
          <guid>https://blog.leander.media/projects/project-smorgasbord/</guid>
          <description xml:base="https://blog.leander.media/projects/project-smorgasbord/">&lt;h2 id=&quot;overview&quot;&gt;Overview&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Project Smörgåsbord&lt;&#x2F;strong&gt; is the sovereign, self-hosted infrastructure platform powering &lt;code&gt;leander.media&lt;&#x2F;code&gt;—combining local Proxmox virtualization and high-capacity storage with stateless Cloudflare Zero Trust tunnels and a Nordic WireGuard edge relay.&lt;&#x2F;p&gt;
&lt;figure class=&quot;media-figure svg-figure&quot;&gt;&lt;div class=&quot;svg-inline-wrap&quot;&gt;&lt;svg xmlns=&quot;http:&#x2F;&#x2F;www.w3.org&#x2F;2000&#x2F;svg&quot; viewBox=&quot;0 0 1200 640&quot; width=&quot;100%&quot; height=&quot;auto&quot; role=&quot;img&quot; aria-label=&quot;Leander.Media Sovereign Cloud &amp;amp; Zero-JS Publishing Architecture&quot;&gt;
  &lt;defs&gt;
    &lt;style&gt;
      .bg { fill: #0b0f17; }
      .grid { stroke: #141c2b; stroke-width: 1; }
      .card { fill: #111827; stroke-width: 2; rx: 14; ry: 14; }
      .divider { stroke: #1f2937; stroke-width: 1.5; }
      .conn { fill: none; stroke-width: 2.5; stroke-dasharray: 6 4; }
      .title { fill: #f8fafc; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 18.5px; font-weight: 700; letter-spacing: 0.2px; }
      .hdr { font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif; font-size: 14.2px; font-weight: 700; letter-spacing: 0px; }
      .item { fill: #e2e8f0; font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif; font-size: 14.5px; }
      .badge { fill: #94a3b8; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 13.5px; }
    &lt;&#x2F;style&gt;
    &lt;marker id=&quot;arrow-cyan&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;8&quot; refY=&quot;5&quot; markerWidth=&quot;6&quot; markerHeight=&quot;6&quot; orient=&quot;auto-start-reverse&quot;&gt;
      &lt;path d=&quot;M 0 1 L 10 5 L 0 9 z&quot; fill=&quot;#38bdf8&quot;&#x2F;&gt;
    &lt;&#x2F;marker&gt;
    &lt;marker id=&quot;arrow-purple&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;8&quot; refY=&quot;5&quot; markerWidth=&quot;6&quot; markerHeight=&quot;6&quot; orient=&quot;auto-start-reverse&quot;&gt;
      &lt;path d=&quot;M 0 1 L 10 5 L 0 9 z&quot; fill=&quot;#a855f7&quot;&#x2F;&gt;
    &lt;&#x2F;marker&gt;
  &lt;&#x2F;defs&gt;
  &lt;rect class=&quot;bg&quot; width=&quot;1200&quot; height=&quot;640&quot; rx=&quot;16&quot;&#x2F;&gt;
  &lt;!-- Subtle background grid --&gt;
  &lt;g class=&quot;grid&quot;&gt;
    &lt;line x1=&quot;0&quot; y1=&quot;80&quot; x2=&quot;1200&quot; y2=&quot;80&quot;&#x2F;&gt;&lt;line x1=&quot;0&quot; y1=&quot;160&quot; x2=&quot;1200&quot; y2=&quot;160&quot;&#x2F;&gt;
    &lt;line x1=&quot;0&quot; y1=&quot;240&quot; x2=&quot;1200&quot; y2=&quot;240&quot;&#x2F;&gt;&lt;line x1=&quot;0&quot; y1=&quot;320&quot; x2=&quot;1200&quot; y2=&quot;320&quot;&#x2F;&gt;
    &lt;line x1=&quot;0&quot; y1=&quot;400&quot; x2=&quot;1200&quot; y2=&quot;400&quot;&#x2F;&gt;&lt;line x1=&quot;0&quot; y1=&quot;480&quot; x2=&quot;1200&quot; y2=&quot;480&quot;&#x2F;&gt;
    &lt;line x1=&quot;0&quot; y1=&quot;560&quot; x2=&quot;1200&quot; y2=&quot;560&quot;&#x2F;&gt;
    &lt;line x1=&quot;200&quot; y1=&quot;0&quot; x2=&quot;200&quot; y2=&quot;640&quot;&#x2F;&gt;&lt;line x1=&quot;400&quot; y1=&quot;0&quot; x2=&quot;400&quot; y2=&quot;640&quot;&#x2F;&gt;
    &lt;line x1=&quot;600&quot; y1=&quot;0&quot; x2=&quot;600&quot; y2=&quot;640&quot;&#x2F;&gt;&lt;line x1=&quot;800&quot; y1=&quot;0&quot; x2=&quot;800&quot; y2=&quot;640&quot;&#x2F;&gt;
    &lt;line x1=&quot;1000&quot; y1=&quot;0&quot; x2=&quot;1000&quot; y2=&quot;640&quot;&#x2F;&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Header Banner --&gt;
  &lt;rect class=&quot;card&quot; x=&quot;36&quot; y=&quot;24&quot; width=&quot;1128&quot; height=&quot;54&quot; stroke=&quot;#38bdf8&quot;&#x2F;&gt;
  &lt;text class=&quot;title&quot; x=&quot;60&quot; y=&quot;57&quot;&gt;LEANDER.MEDIA &#x2F;&#x2F; SOVEREIGN CLOUD &amp;amp; ZERO-JS PUBLISHING ARCHITECTURE&lt;&#x2F;text&gt;
  &lt;text class=&quot;badge&quot; x=&quot;1140&quot; y=&quot;56&quot; text-anchor=&quot;end&quot;&gt;VECTOR SVG &#x2F;&#x2F; 0 KB JS&lt;&#x2F;text&gt;
  &lt;!-- Connectors --&gt;
  &lt;path class=&quot;conn&quot; d=&quot;M 376 235 L 424 235&quot; stroke=&quot;#38bdf8&quot; marker-end=&quot;url(#arrow-cyan)&quot;&#x2F;&gt;
  &lt;path class=&quot;conn&quot; d=&quot;M 776 235 L 824 235&quot; stroke=&quot;#a855f7&quot; marker-end=&quot;url(#arrow-purple)&quot;&#x2F;&gt;
  &lt;!-- Box 1: Authoring --&gt;
  &lt;g transform=&quot;translate(36, 108)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;340&quot; height=&quot;254&quot; stroke=&quot;#38bdf8&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#38bdf8&quot;&gt;1. AUTHORING &amp;amp; LOCAL WORKFLOW&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;318&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• Obsidian Mobile &amp;amp; Desktop Vaults&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• Encrypted Peer-to-Peer Syncthing&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• Camera Photos, Video &amp;amp; Audio Clips&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• Versioned via Obsidian Git to GitLab CE&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;204&quot;&gt;• Zero Browser CMS Attack Surface&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Box 2: Compute &amp; Storage Core --&gt;
  &lt;g transform=&quot;translate(430, 108)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;340&quot; height=&quot;254&quot; stroke=&quot;#a855f7&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#a855f7&quot;&gt;2. SOVEREIGN COMPUTE &amp;amp; STORAGE CORE&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;318&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• Obsidian-to-Zola Media Preprocessor&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• Automated EXIF &amp;amp; GPS Metadata Scrubber&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• GitLab CE 19.5 (PostgreSQL 17) + CI&#x2F;CD&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• Stalwart Mail + DMARC Telemetry Exporter&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;204&quot;&gt;• Stoat Chat Backend + Zitadel OIDC Bridge&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Box 3: Edge &amp; Relay Tier --&gt;
  &lt;g transform=&quot;translate(824, 108)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;340&quot; height=&quot;254&quot; stroke=&quot;#34d399&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#34d399&quot;&gt;3. ZERO-TRUST EDGE &amp;amp; RELAY TIER&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;318&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• Zola SSG (&amp;lt;50ms Build, 0 KB Client JS)&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• Strict CSP: script-src &#x27;none&#x27; on Static&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• Dedicated Cloudflare Zero Trust Tunnels&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• Nordic WireGuard WebRTC &amp;amp; SMTP Relay&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;204&quot;&gt;• Outbound TLS Mail Deliverability Relay&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Box 4: Public Services --&gt;
  &lt;g transform=&quot;translate(36, 394)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;546&quot; height=&quot;218&quot; stroke=&quot;#fbbf24&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#fbbf24&quot;&gt;PUBLIC SOVEREIGN SERVICES (leander.media)&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;524&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• blog.leander.media &amp;amp; www.leander.media — Zero-JS Portfolio &amp;amp; Blog&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• chat.leander.media — Stoat Real-Time Messaging, Voice &amp;amp; Video&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• gitlab.leander.media — Self-Hosted GitLab CE 19.5 Code Forge&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• mail.leander.media &amp;amp; info.leander.media — Mail &amp;amp; Bilingual Legal Hub&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Box 5: Identity, Observability &amp; R&amp;D --&gt;
  &lt;g transform=&quot;translate(618, 394)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;546&quot; height=&quot;218&quot; stroke=&quot;#f472b6&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#f472b6&quot;&gt;IDENTITY, OBSERVABILITY &amp;amp; R&amp;amp;D PIPELINES&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;524&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• auth.leander.media — Zitadel OIDC PKCE Single Sign-On &amp;amp; Passkeys&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• VictoriaMetrics + Loki + Grafana DMARC Security Dashboards&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• Autonomous KiCad ERC&#x2F;DRC &amp;amp; 3D CAD Hardware Workbench&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• RekordRescue &amp;amp; Real-Time REAPER JSFX Audio DSP Tooling&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
&lt;&#x2F;svg&gt;&lt;&#x2F;div&gt;&lt;figcaption&gt;Project Smörgåsbord Two-Tier Sovereign Cloud Topology (Vector SVG)&lt;&#x2F;figcaption&gt;&lt;&#x2F;figure&gt;
&lt;aside class=&quot;callout callout-note&quot;&gt;&lt;div class=&quot;callout-title&quot;&gt;Design Philosophy&lt;&#x2F;div&gt;&lt;div class=&quot;callout-body&quot;&gt;
&lt;p&gt;Keep stateful data, Git repositories, Syncthing vaults, mail storage, and high-compute workloads on local hardware you physically control, while using stateless encrypted tunnels and cloud edge relays for zero-trust public ingress, WebRTC media routing, and high-deliverability mail transport.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;&lt;&#x2F;aside&gt;
&lt;h2 id=&quot;key-subsystems&quot;&gt;Key Subsystems&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-split-horizon-wireguard-edge-zero-trust-ingress&quot;&gt;1. Split-Horizon WireGuard Edge &amp;amp; Zero-Trust Ingress&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;HTTP&#x2F;HTTPS workloads are isolated per stack behind dedicated &lt;strong&gt;Cloudflare Zero Trust Tunnels&lt;&#x2F;strong&gt; (&lt;code&gt;leander.media&lt;&#x2F;code&gt;, &lt;code&gt;blog.leander.media&lt;&#x2F;code&gt;, &lt;code&gt;chat.leander.media&lt;&#x2F;code&gt;, &lt;code&gt;info.leander.media&lt;&#x2F;code&gt;, &lt;code&gt;mail.leander.media&lt;&#x2F;code&gt;, &lt;code&gt;biohacking.leander.media&lt;&#x2F;code&gt;, &lt;code&gt;djtools.leander.media&lt;&#x2F;code&gt;, &lt;code&gt;gitlab.leander.media&lt;&#x2F;code&gt;, &lt;code&gt;registry.leander.media&lt;&#x2F;code&gt;).&lt;&#x2F;li&gt;
&lt;li&gt;Latency-sensitive UDP WebRTC voice&#x2F;video streams (&lt;code&gt;chat.leander.media&lt;&#x2F;code&gt;, &lt;code&gt;turn.leander.media&lt;&#x2F;code&gt;), Matrix S2S federation (&lt;code&gt;matrix.leander.media&lt;&#x2F;code&gt;), Git SSH (&lt;code&gt;ssh.gitlab.leander.media&lt;&#x2F;code&gt;), dedicated game servers (&lt;code&gt;mc&lt;&#x2F;code&gt;, &lt;code&gt;swamp&lt;&#x2F;code&gt;, &lt;code&gt;ftb&lt;&#x2F;code&gt;, &lt;code&gt;vh.leander.media&lt;&#x2F;code&gt;), and inbound&#x2F;outbound SMTP&#x2F;IMAPS mail connections traverse dedicated kernel &lt;strong&gt;WireGuard tunnels&lt;&#x2F;strong&gt; to Nordic cloud edge relays in Helsinki (&lt;code&gt;hel1.leander.media&lt;&#x2F;code&gt;) and Stockholm (&lt;code&gt;mx.leander.media&lt;&#x2F;code&gt;), keeping the home origin network completely unexposed (&lt;code&gt;0&lt;&#x2F;code&gt; residential WAN IP records in public DNS).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;2-self-hosted-gitlab-ce-19-5-gitlab-leander-media-ssh-gitlab-leander-media-registry-leander-media&quot;&gt;2. Self-Hosted GitLab CE 19.5 (&lt;code&gt;gitlab.leander.media&lt;&#x2F;code&gt;, &lt;code&gt;ssh.gitlab.leander.media&lt;&#x2F;code&gt; &amp;amp; &lt;code&gt;registry.leander.media&lt;&#x2F;code&gt;)&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Self-hosted &lt;strong&gt;GitLab Community Edition 19.5&lt;&#x2F;strong&gt; and &lt;strong&gt;GitLab Container Registry (&lt;code&gt;registry.leander.media&lt;&#x2F;code&gt;)&lt;&#x2F;strong&gt; hosting public open-source mirrors&#x2F;releases, OCI container images, and private engineering repositories behind a dedicated Cloudflare HTTP&#x2F;2 Tunnel and a 2 ms Helsinki WireGuard SSH relay (&lt;code&gt;ssh.gitlab.leander.media&lt;&#x2F;code&gt;).&lt;&#x2F;li&gt;
&lt;li&gt;Powers automated CI&#x2F;CD verification for hardware EDA designs, container builds, and versioned backups of our Obsidian knowledge base.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;3-sovereign-mail-mail-leander-media-dmarc-security-pipeline&quot;&gt;3. Sovereign Mail (&lt;code&gt;mail.leander.media&lt;&#x2F;code&gt;) &amp;amp; DMARC Security Pipeline&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stalwart Mail Server + SnappyMail Webmail&lt;&#x2F;strong&gt; configured with dual RSA-2048 &amp;amp; Ed25519 DKIM signing, strict SPF, and DMARC enforcement, paired with an authenticated European outbound TLS relay.&lt;&#x2F;li&gt;
&lt;li&gt;Custom &lt;strong&gt;DMARC Prometheus Exporter&lt;&#x2F;strong&gt; parses aggregate XML&#x2F;ZIP reports in real time and feeds &lt;strong&gt;VictoriaMetrics&lt;&#x2F;strong&gt; and &lt;strong&gt;Grafana&lt;&#x2F;strong&gt; security dashboards.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;4-zitadel-oidc-identity-auth-leander-media-bilingual-info-hub-info-leander-media&quot;&gt;4. Zitadel OIDC Identity (&lt;code&gt;auth.leander.media&lt;&#x2F;code&gt;) &amp;amp; Bilingual Info Hub (&lt;code&gt;info.leander.media&lt;&#x2F;code&gt;)&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Centralized &lt;strong&gt;Zitadel OIDC&lt;&#x2F;strong&gt; identity provider supporting Passkeys&#x2F;WebAuthn and OAuth 2.0 PKCE across internal and external portals.&lt;&#x2F;li&gt;
&lt;li&gt;Standalone bilingual (&lt;code&gt;FI&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;EN&lt;&#x2F;code&gt;) compliance portal at &lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;info.leander.media&quot;&gt;&lt;code&gt;info.leander.media&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;info-portal&quot;&gt;public source repo&lt;&#x2F;a&gt;) serving GDPR privacy documentation, Terms of Service, EULA, and open-source attributions.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;5-zero-js-obsidian-to-zola-publishing-engine&quot;&gt;5. Zero-JS Obsidian-to-Zola Publishing Engine&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Real-time &lt;strong&gt;Syncthing&lt;&#x2F;strong&gt; replication from desktop and mobile Obsidian vaults directly to our build pipeline.&lt;&#x2F;li&gt;
&lt;li&gt;Automated &lt;code&gt;exiftool&lt;&#x2F;code&gt; + Pillow preprocessor strips EXIF&#x2F;GPS metadata from camera photos, converts Obsidian callouts and wikilinks, and triggers sub-50ms &lt;strong&gt;Zola&lt;&#x2F;strong&gt; static builds with &lt;code&gt;0 KB&lt;&#x2F;code&gt; of client-side JavaScript.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre data-lang=&quot;toml&quot; style=&quot;background-color:#0f1419;color:#bfbab0;&quot; class=&quot;language-toml &quot;&gt;&lt;code class=&quot;language-toml&quot; data-lang=&quot;toml&quot;&gt;&lt;span style=&quot;font-style:italic;color:#5c6773;&quot;&gt;# Compile-time syntax highlighting &amp;amp; zero client-side JavaScript
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#59c2ff;&quot;&gt;base_url &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#c2d94c;&quot;&gt;&amp;quot;https:&#x2F;&#x2F;blog.leander.media&amp;quot;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#59c2ff;&quot;&gt;compile_sass &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29718;&quot;&gt;false
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#59c2ff;&quot;&gt;generate_feeds &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29718;&quot;&gt;true
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#59c2ff;&quot;&gt;feed_filenames &lt;&#x2F;span&gt;&lt;span&gt;= [&lt;&#x2F;span&gt;&lt;span style=&quot;color:#c2d94c;&quot;&gt;&amp;quot;atom.xml&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#c2d94c;&quot;&gt;&amp;quot;rss.xml&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;]
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color:#59c2ff;&quot;&gt;markdown&lt;&#x2F;span&gt;&lt;span&gt;]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#59c2ff;&quot;&gt;highlight_code &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29718;&quot;&gt;true
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#59c2ff;&quot;&gt;highlight_theme &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#c2d94c;&quot;&gt;&amp;quot;ayu-dark&amp;quot;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;related-writeups&quot;&gt;Related Writeups&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Read the architecture deep dive: &lt;strong&gt;&lt;a href=&quot;&#x2F;blog&#x2F;2026-10-24-sovereign-homelab-architecture&#x2F;&quot;&gt;Designing a Two-Tier Sovereign Cloud, Mail &amp;amp; Zero-JS Publishing Platform&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Join the chat platform: &lt;strong&gt;&lt;a href=&quot;&#x2F;blog&#x2F;2026-10-24-stoat-chat-launch-and-getting-started&#x2F;&quot;&gt;Stoat Chat on Leander.Media: Sovereign Real-Time Messaging, Voice &amp;amp; Getting Started Guide&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Explore the hardware CI&#x2F;CD stack: &lt;strong&gt;&lt;a href=&quot;&#x2F;projects&#x2F;hardware-eda-automation&#x2F;&quot;&gt;Automated Hardware &amp;amp; KiCad EDA Verification Pipeline&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
      </item>
      <item>
          <title>Stoat Chat (chat.leander.media): Sovereign Real-Time Messaging, OIDC SSO &amp; WebRTC Voice</title>
          <pubDate>Sat, 24 Oct 2026 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.leander.media/projects/stoat-chat-platform/</link>
          <guid>https://blog.leander.media/projects/stoat-chat-platform/</guid>
          <description xml:base="https://blog.leander.media/projects/stoat-chat-platform/">&lt;h2 id=&quot;overview&quot;&gt;Overview&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;chat.leander.media&quot;&gt;Stoat Chat (&lt;code&gt;chat.leander.media&lt;&#x2F;code&gt;)&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; is our sovereign real-time messaging, voice, and screen-sharing platform—built on the open-source Stoat (&lt;code&gt;v0.15&lt;&#x2F;code&gt;) stack, integrated with &lt;strong&gt;Zitadel OIDC Single Sign-On (&lt;code&gt;auth.leander.media&lt;&#x2F;code&gt;)&lt;&#x2F;strong&gt;, and distributed with pre-configured desktop and mobile applications.&lt;&#x2F;p&gt;
&lt;figure class=&quot;media-figure svg-figure&quot;&gt;&lt;div class=&quot;svg-inline-wrap&quot;&gt;&lt;svg xmlns=&quot;http:&#x2F;&#x2F;www.w3.org&#x2F;2000&#x2F;svg&quot; viewBox=&quot;0 0 1200 640&quot; width=&quot;100%&quot; height=&quot;auto&quot; role=&quot;img&quot; aria-label=&quot;Stoat Chat (chat.leander.media) OIDC SSO, WebRTC Voice &amp;amp; Client Ecosystem&quot;&gt;
  &lt;defs&gt;
    &lt;style&gt;
      .bg { fill: #0b0f17; }
      .grid { stroke: #141c2b; stroke-width: 1; }
      .card { fill: #111827; stroke-width: 2; rx: 14; ry: 14; }
      .divider { stroke: #1f2937; stroke-width: 1.5; }
      .conn { fill: none; stroke-width: 2.5; stroke-dasharray: 6 4; }
      .title { fill: #f8fafc; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 18.5px; font-weight: 700; letter-spacing: 0.2px; }
      .hdr { font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif; font-size: 14.2px; font-weight: 700; letter-spacing: 0px; }
      .item { fill: #e2e8f0; font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif; font-size: 14.5px; }
      .badge { fill: #94a3b8; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 13.5px; }
    &lt;&#x2F;style&gt;
    &lt;marker id=&quot;arrow-cyan&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;8&quot; refY=&quot;5&quot; markerWidth=&quot;6&quot; markerHeight=&quot;6&quot; orient=&quot;auto-start-reverse&quot;&gt;
      &lt;path d=&quot;M 0 1 L 10 5 L 0 9 z&quot; fill=&quot;#38bdf8&quot;&#x2F;&gt;
    &lt;&#x2F;marker&gt;
    &lt;marker id=&quot;arrow-purple&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;8&quot; refY=&quot;5&quot; markerWidth=&quot;6&quot; markerHeight=&quot;6&quot; orient=&quot;auto-start-reverse&quot;&gt;
      &lt;path d=&quot;M 0 1 L 10 5 L 0 9 z&quot; fill=&quot;#a855f7&quot;&#x2F;&gt;
    &lt;&#x2F;marker&gt;
  &lt;&#x2F;defs&gt;
  &lt;rect class=&quot;bg&quot; width=&quot;1200&quot; height=&quot;640&quot; rx=&quot;16&quot;&#x2F;&gt;
  &lt;!-- Subtle background grid --&gt;
  &lt;g class=&quot;grid&quot;&gt;
    &lt;line x1=&quot;0&quot; y1=&quot;80&quot; x2=&quot;1200&quot; y2=&quot;80&quot;&#x2F;&gt;&lt;line x1=&quot;0&quot; y1=&quot;160&quot; x2=&quot;1200&quot; y2=&quot;160&quot;&#x2F;&gt;
    &lt;line x1=&quot;0&quot; y1=&quot;240&quot; x2=&quot;1200&quot; y2=&quot;240&quot;&#x2F;&gt;&lt;line x1=&quot;0&quot; y1=&quot;320&quot; x2=&quot;1200&quot; y2=&quot;320&quot;&#x2F;&gt;
    &lt;line x1=&quot;0&quot; y1=&quot;400&quot; x2=&quot;1200&quot; y2=&quot;400&quot;&#x2F;&gt;&lt;line x1=&quot;0&quot; y1=&quot;480&quot; x2=&quot;1200&quot; y2=&quot;480&quot;&#x2F;&gt;
    &lt;line x1=&quot;0&quot; y1=&quot;560&quot; x2=&quot;1200&quot; y2=&quot;560&quot;&#x2F;&gt;
    &lt;line x1=&quot;200&quot; y1=&quot;0&quot; x2=&quot;200&quot; y2=&quot;640&quot;&#x2F;&gt;&lt;line x1=&quot;400&quot; y1=&quot;0&quot; x2=&quot;400&quot; y2=&quot;640&quot;&#x2F;&gt;
    &lt;line x1=&quot;600&quot; y1=&quot;0&quot; x2=&quot;600&quot; y2=&quot;640&quot;&#x2F;&gt;&lt;line x1=&quot;800&quot; y1=&quot;0&quot; x2=&quot;800&quot; y2=&quot;640&quot;&#x2F;&gt;
    &lt;line x1=&quot;1000&quot; y1=&quot;0&quot; x2=&quot;1000&quot; y2=&quot;640&quot;&#x2F;&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Header Banner --&gt;
  &lt;rect class=&quot;card&quot; x=&quot;36&quot; y=&quot;24&quot; width=&quot;1128&quot; height=&quot;54&quot; stroke=&quot;#38bdf8&quot;&#x2F;&gt;
  &lt;text class=&quot;title&quot; x=&quot;60&quot; y=&quot;57&quot;&gt;CHAT.LEANDER.MEDIA &#x2F;&#x2F; STOAT REAL-TIME CHAT, OIDC SSO &amp;amp; WEBRTC VOICE&lt;&#x2F;text&gt;
  &lt;text class=&quot;badge&quot; x=&quot;1140&quot; y=&quot;56&quot; text-anchor=&quot;end&quot;&gt;VECTOR SVG &#x2F;&#x2F; v1.0.0-leander&lt;&#x2F;text&gt;
  &lt;!-- Connectors --&gt;
  &lt;path class=&quot;conn&quot; d=&quot;M 376 235 L 424 235&quot; stroke=&quot;#38bdf8&quot; marker-end=&quot;url(#arrow-cyan)&quot;&#x2F;&gt;
  &lt;path class=&quot;conn&quot; d=&quot;M 776 235 L 824 235&quot; stroke=&quot;#a855f7&quot; marker-end=&quot;url(#arrow-purple)&quot;&#x2F;&gt;
  &lt;!-- Box 1: Identity &amp; Invite Gateway --&gt;
  &lt;g transform=&quot;translate(36, 108)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;340&quot; height=&quot;254&quot; stroke=&quot;#38bdf8&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#38bdf8&quot;&gt;1. IDENTITY &amp;amp; INVITE GATEWAY&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;318&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• auth.leander.media (Zitadel OIDC IdP)&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• OAuth 2.0 Authorization Code + PKCE&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• Role-Gated Access (stoat-user &#x2F; admin)&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• Time &amp;amp; Use-Limited Invite Links&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;204&quot;&gt;• Zero Separate Chat Password Required&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Box 2: Stoat Chat Core --&gt;
  &lt;g transform=&quot;translate(430, 108)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;340&quot; height=&quot;254&quot; stroke=&quot;#a855f7&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#a855f7&quot;&gt;2. STOAT CHAT CORE (chat.leander.media)&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;318&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• Stoat v0.15 API &amp;amp; Bonfire WebSocket&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• Custom OIDC SSO Auto-Provision Bridge&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• Autumn Encrypted Attachment Storage&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• January Privacy-Preserving Media Proxy&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;204&quot;&gt;• Bilingual GDPR &amp;amp; ToS (info.leander.media)&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Box 3: Nordic WebRTC Voice &amp; Video --&gt;
  &lt;g transform=&quot;translate(824, 108)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;340&quot; height=&quot;254&quot; stroke=&quot;#34d399&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#34d399&quot;&gt;3. NORDIC WEBRTC VOICE &amp;amp; VIDEO&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;318&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• LiveKit SFU Low-Latency Media Engine&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• Nordic Cloud Edge Relay via WireGuard&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• Direct UDP&#x2F;TCP ICE Candidate Routing&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• Origin Network 100% Shielded&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;204&quot;&gt;• HD Screen Sharing &amp;amp; Voice Channels&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Box 4: Instant Web &amp; Native Clients --&gt;
  &lt;g transform=&quot;translate(36, 394)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;546&quot; height=&quot;218&quot; stroke=&quot;#fbbf24&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#fbbf24&quot;&gt;4. INSTANT WEB &amp;amp; PRE-CONFIGURED NATIVE CLIENTS&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;524&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• Web App: https:&#x2F;&#x2F;chat.leander.media (One-Click Browser Login)&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• Windows x64: Setup Installer (.exe) &amp;amp; Single-File Portable (.exe)&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• Linux x86_64: Debian&#x2F;Ubuntu (.deb) &amp;amp; Portable (.AppImage)&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• Android ARM64: Signed Native Release (.apk)&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
  &lt;!-- Box 5: Open-Source Mirrors &amp; Releases --&gt;
  &lt;g transform=&quot;translate(618, 394)&quot;&gt;
    &lt;rect class=&quot;card&quot; width=&quot;546&quot; height=&quot;218&quot; stroke=&quot;#f472b6&quot;&#x2F;&gt;
    &lt;text class=&quot;hdr&quot; x=&quot;22&quot; y=&quot;32&quot; fill=&quot;#f472b6&quot;&gt;5. OPEN-SOURCE MIRRORS &amp;amp; RELEASES (v1.0.0-leander)&lt;&#x2F;text&gt;
    &lt;line class=&quot;divider&quot; x1=&quot;22&quot; y1=&quot;46&quot; x2=&quot;524&quot; y2=&quot;46&quot;&#x2F;&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;76&quot;&gt;• Release Hub: gitlab.leander.media&#x2F;services&#x2F;chat&#x2F;stoat&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;108&quot;&gt;• Pre-Patched Default Server: https:&#x2F;&#x2F;chat.leander.media&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;140&quot;&gt;• Full Source Mirrors: for-desktop, for-android, for-web, stoatchat&lt;&#x2F;text&gt;
    &lt;text class=&quot;item&quot; x=&quot;22&quot; y=&quot;172&quot;&gt;• Sanitized Self-Hosted Compose &amp;amp; OIDC Bridge Repository&lt;&#x2F;text&gt;
  &lt;&#x2F;g&gt;
&lt;&#x2F;svg&gt;&lt;&#x2F;div&gt;&lt;figcaption&gt;Stoat Chat Architecture — Zitadel OIDC SSO Bridge, LiveKit WebRTC Edge Relay &amp;amp; Client Ecosystem (Vector SVG)&lt;&#x2F;figcaption&gt;&lt;&#x2F;figure&gt;
&lt;h2 id=&quot;key-engineering-highlights&quot;&gt;Key Engineering Highlights&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-custom-zitadel-oidc-pkce-bridge-invite-manager-sso-sso-invites&quot;&gt;1. Custom Zitadel OIDC PKCE Bridge &amp;amp; Invite Manager (&lt;code&gt;&#x2F;sso&lt;&#x2F;code&gt; &amp;amp; &lt;code&gt;&#x2F;sso&#x2F;invites&lt;&#x2F;code&gt;)&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Implements &lt;strong&gt;OAuth 2.0 Authorization Code + PKCE&lt;&#x2F;strong&gt; authentication against &lt;code&gt;https:&#x2F;&#x2F;auth.leander.media&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Enforces Zitadel project role assertions (&lt;code&gt;stoat-user&lt;&#x2F;code&gt; and &lt;code&gt;stoat-admin&lt;&#x2F;code&gt;) and automatically provisions Stoat user accounts and active browser sessions on login.&lt;&#x2F;li&gt;
&lt;li&gt;Provides a built-in &lt;strong&gt;Invite Management Portal (&lt;code&gt;&#x2F;sso&#x2F;invites&lt;&#x2F;code&gt;)&lt;&#x2F;strong&gt; for minting time- and use-limited invite links (&lt;code&gt;https:&#x2F;&#x2F;chat.leander.media&#x2F;invite&#x2F;&amp;lt;code&amp;gt;&lt;&#x2F;code&gt;).&lt;&#x2F;li&gt;
&lt;li&gt;Supports long-form engineering logs and code snippets natively with a patched &lt;strong&gt;40,000-character message limit&lt;&#x2F;strong&gt; across the Rust API and all clients.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;2-nordic-wireguard-livekit-webrtc-voice-video-relay&quot;&gt;2. Nordic WireGuard LiveKit WebRTC Voice &amp;amp; Video Relay&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Routes &lt;strong&gt;LiveKit SFU&lt;&#x2F;strong&gt; WebRTC UDP&#x2F;TCP media streams through a dedicated Nordic cloud edge node over a kernel WireGuard tunnel.&lt;&#x2F;li&gt;
&lt;li&gt;Delivers low-latency voice channels and HD screen sharing while keeping the home origin network completely hidden from public ICE candidates.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;3-pre-configured-multi-platform-client-deliverables-v1-0-0-leander&quot;&gt;3. Pre-Configured Multi-Platform Client Deliverables (&lt;code&gt;v1.0.0-leander&lt;&#x2F;code&gt;)&lt;&#x2F;h3&gt;
&lt;p&gt;All client repositories are mirrored and built under &lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;chat&quot;&gt;&lt;code&gt;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;chat&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; with &lt;code&gt;https:&#x2F;&#x2F;chat.leander.media&lt;&#x2F;code&gt; baked in as the default server endpoint:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Release Downloads:&lt;&#x2F;strong&gt; &lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.leander.media&#x2F;services&#x2F;chat&#x2F;stoat&#x2F;-&#x2F;releases&#x2F;v1.0.0-leander&quot;&gt;&lt;code&gt;v1.0.0-leander&lt;&#x2F;code&gt; Release Page&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; (Windows &lt;code&gt;.exe&lt;&#x2F;code&gt; Installer &amp;amp; Portable, Linux &lt;code&gt;.deb&lt;&#x2F;code&gt; &amp;amp; &lt;code&gt;.AppImage&lt;&#x2F;code&gt;, Android signed &lt;code&gt;.apk&lt;&#x2F;code&gt;, and Web &lt;code&gt;.zip&lt;&#x2F;code&gt;).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Getting Started Guide:&lt;&#x2F;strong&gt; Read &lt;strong&gt;&lt;a href=&quot;&#x2F;blog&#x2F;2026-10-24-stoat-chat-launch-and-getting-started&#x2F;&quot;&gt;Stoat Chat on Leander.Media: Sovereign Real-Time Messaging, Voice &amp;amp; Getting Started Guide&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
      </item>
      <item>
          <title>Automated Hardware &amp; KiCad EDA Verification Pipeline</title>
          <pubDate>Tue, 20 Oct 2026 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.leander.media/projects/hardware-eda-automation/</link>
          <guid>https://blog.leander.media/projects/hardware-eda-automation/</guid>
          <description xml:base="https://blog.leander.media/projects/hardware-eda-automation/">&lt;h2 id=&quot;overview&quot;&gt;Overview&lt;&#x2F;h2&gt;
&lt;p&gt;Designing custom electronics—from &lt;strong&gt;16kW electric mountainboard power distribution spines (14S4P)&lt;&#x2F;strong&gt; to &lt;strong&gt;modular mini line-array DSP amplifiers&lt;&#x2F;strong&gt;—traditionally suffers from manual ERC&#x2F;DRC checks, fragmented CAD files, and slow design-for-manufacturing (DFM) feedback loops.&lt;&#x2F;p&gt;
&lt;p&gt;The &lt;strong&gt;Automated Hardware &amp;amp; KiCad EDA Verification Pipeline&lt;&#x2F;strong&gt; brings modern software CI&#x2F;CD rigor to physical hardware engineering.&lt;&#x2F;p&gt;
&lt;aside class=&quot;callout callout-important&quot;&gt;&lt;div class=&quot;callout-title&quot;&gt;Deterministic Hardware Revisions&lt;&#x2F;div&gt;&lt;div class=&quot;callout-body&quot;&gt;
&lt;p&gt;Every schematic, PCB layout, and 3D enclosure iteration is tracked in a Git timeline with automated Design Rule Checks (DRC), interactive 3D STEP&#x2F;GLB model diffing, and one-click owner approval gates before fabrication files (Gerbers, BOM, PnP, 3MF) are emitted.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;&lt;&#x2F;aside&gt;
&lt;h2 id=&quot;architecture-capabilities&quot;&gt;Architecture &amp;amp; Capabilities&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-programmatic-kicad-erc-drc-fab-artifact-generation&quot;&gt;1. Programmatic KiCad ERC&#x2F;DRC &amp;amp; Fab Artifact Generation&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Headless verification runners execute electrical and physical rule checks on every commit.&lt;&#x2F;li&gt;
&lt;li&gt;Automated generation of fabrication-ready Gerber archives, interactive HTML BOMs, and pick-and-place centroids.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;2-merged-3d-cad-workbench-git-timeline-viewer&quot;&gt;2. Merged 3D CAD Workbench &amp;amp; Git Timeline Viewer&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Unified browser workbench featuring an interactive 3D model viewer alongside revision history timelines.&lt;&#x2F;li&gt;
&lt;li&gt;Supports rapid mechanical iteration with pre-configured &lt;strong&gt;Creality&lt;&#x2F;strong&gt; slicing presets for functional enclosure prototyping before committing to CNC aluminum or injection molding.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre data-lang=&quot;python&quot; style=&quot;background-color:#0f1419;color:#bfbab0;&quot; class=&quot;language-python &quot;&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span style=&quot;font-style:italic;color:#5c6773;&quot;&gt;# Example: Headless pipeline stage contract for hardware revision verification
&lt;&#x2F;span&gt;&lt;span&gt;pipeline_stages &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;= &lt;&#x2F;span&gt;&lt;span&gt;[
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#c2d94c;&quot;&gt;&amp;quot;spec_guided_synthesis&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#c2d94c;&quot;&gt;&amp;quot;kicad_erc_drc_verify&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#c2d94c;&quot;&gt;&amp;quot;cad_3d_mesh_export&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#c2d94c;&quot;&gt;&amp;quot;creality_slice_validation&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#c2d94c;&quot;&gt;&amp;quot;owner_approval_gate&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;]
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h3 id=&quot;3-hardware-projects-built-with-the-pipeline&quot;&gt;3. Hardware Projects Built with the Pipeline&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;16kW Esk8 Mountainboard Power System:&lt;&#x2F;strong&gt; 14S4P high-discharge copper-spine battery pack engineering and VESC telemetry integration.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Modular Mini Line Array PoC:&lt;&#x2F;strong&gt; Compact acoustic array enclosures paired with multi-channel Class-D amplification and DSP crossover networks (see &lt;strong&gt;&lt;a href=&quot;&#x2F;projects&#x2F;rekordrescue-audio-dsp&#x2F;&quot;&gt;RekordRescue &amp;amp; Real-Time Audio&#x2F;DSP Tooling&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
      </item>
      <item>
          <title>RekordRescue &amp; Real-Time Audio&#x2F;DSP Tooling</title>
          <pubDate>Sun, 18 Oct 2026 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.leander.media/projects/rekordrescue-audio-dsp/</link>
          <guid>https://blog.leander.media/projects/rekordrescue-audio-dsp/</guid>
          <description xml:base="https://blog.leander.media/projects/rekordrescue-audio-dsp/">&lt;h2 id=&quot;overview&quot;&gt;Overview&lt;&#x2F;h2&gt;
&lt;p&gt;Spanning studio production in &lt;strong&gt;REAPER&lt;&#x2F;strong&gt;, live hard-dance &#x2F; electronic DJ performance, and our browser-based &lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;djtools.leander.media&quot;&gt;DJTools Audio Studio (&lt;code&gt;djtools.leander.media&lt;&#x2F;code&gt;)&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;, &lt;strong&gt;RekordRescue &amp;amp; Real-Time Audio&#x2F;DSP Tooling&lt;&#x2F;strong&gt; is a suite of custom audio tools built for reliability, surgical low-end control, stem separation, and automated library management.&lt;&#x2F;p&gt;
&lt;aside class=&quot;callout callout-tip&quot;&gt;&lt;div class=&quot;callout-title&quot;&gt;Zero-Latency Live &amp;amp; Studio Workflows&lt;&#x2F;div&gt;&lt;div class=&quot;callout-body&quot;&gt;
&lt;p&gt;By combining sample-accurate &lt;strong&gt;JSFX&lt;&#x2F;strong&gt; DSP scripts inside REAPER with Python-based library and stem automation, complex bass synthesis and stem separation tasks run deterministically on local hardware.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;&lt;&#x2F;aside&gt;
&lt;h2 id=&quot;core-tools-modules&quot;&gt;Core Tools &amp;amp; Modules&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;1-custom-jsfx-sub-bass-reverse-bass-dsp-engine&quot;&gt;1. Custom JSFX Sub-Bass &amp;amp; Reverse-Bass DSP Engine&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Real-time &lt;strong&gt;REAPER JSFX&lt;&#x2F;strong&gt; synthesis and dynamics processors tailored for reverse-bass tail sculpting, phase-coherent sub-bass reinforcement, and transient shaping.&lt;&#x2F;li&gt;
&lt;li&gt;Live hot-patching and parameter telemetry integration via REAPER’s HTTP&#x2F;OSC control surface APIs.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre data-lang=&quot;c&quot; style=&quot;background-color:#0f1419;color:#bfbab0;&quot; class=&quot;language-c &quot;&gt;&lt;code class=&quot;language-c&quot; data-lang=&quot;c&quot;&gt;&lt;span style=&quot;font-style:italic;color:#5c6773;&quot;&gt;&#x2F;&#x2F; JSFX sample-accurate one-pole envelope follower &amp;amp; soft-clipping saturator
&lt;&#x2F;span&gt;&lt;span&gt;@sample
&lt;&#x2F;span&gt;&lt;span&gt;env &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#ffb454;&quot;&gt;max&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f07178;&quot;&gt;abs&lt;&#x2F;span&gt;&lt;span&gt;(spl0)&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; env &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt; release_coeff)&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;drive_spl0 &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; spl0 &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt; pre_gain&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;spl0 &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; drive_spl0 &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;&#x2F; &lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29718;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29718;&quot;&gt;0 &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;+ &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f07178;&quot;&gt;abs&lt;&#x2F;span&gt;&lt;span&gt;(drive_spl0))&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;spl1 &lt;&#x2F;span&gt;&lt;span style=&quot;color:#f29668;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; spl0&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bfbab0cc;&quot;&gt;;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h3 id=&quot;2-automated-reaper-stem-extractor&quot;&gt;2. Automated REAPER Stem Extractor&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;High-throughput stem separation pipeline integrating neural source separation models directly into REAPER project timelines.&lt;&#x2F;li&gt;
&lt;li&gt;Automatically splits full masters into isolated vocal, drum, bass, and synth stems with phase-aligned routing and tempo-synced markers for remixing and live DJ sets.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;3-rekordrescue-library-setlist-tooling&quot;&gt;3. RekordRescue Library &amp;amp; Setlist Tooling&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Python utilities for inspecting, repairing, and migrating DJ metadata, cue points, beatgrids, and relocated audio files across storage volumes without losing performance preparation work.&lt;&#x2F;li&gt;
&lt;li&gt;Connects with our broader homelab storage infrastructure (&lt;strong&gt;&lt;a href=&quot;&#x2F;projects&#x2F;project-smorgasbord&#x2F;&quot;&gt;Project Smörgåsbord&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;) so studio renders and DJ libraries stay backed up via Syncthing.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
      </item>
    </channel>
</rss>
