<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Chris King</title>
    <description>The latest articles on Forem by Chris King (@chris_king_bcff3b9663e84a).</description>
    <link>https://forem.com/chris_king_bcff3b9663e84a</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3827826%2F53470932-a502-4c12-80e8-f855a488ce32.png</url>
      <title>Forem: Chris King</title>
      <link>https://forem.com/chris_king_bcff3b9663e84a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/chris_king_bcff3b9663e84a"/>
    <language>en</language>
    <item>
      <title>I Love Detailed Releases. I Hate Doing Them.</title>
      <dc:creator>Chris King</dc:creator>
      <pubDate>Mon, 06 Apr 2026 07:00:00 +0000</pubDate>
      <link>https://forem.com/chris_king_bcff3b9663e84a/i-love-detailed-releases-i-hate-doing-them-4kmk</link>
      <guid>https://forem.com/chris_king_bcff3b9663e84a/i-love-detailed-releases-i-hate-doing-them-4kmk</guid>
      <description>&lt;h2&gt;
  
  
  So I Made an AI Do It For Me.
&lt;/h2&gt;

&lt;p&gt;You know what's fun? Shipping code.&lt;/p&gt;

&lt;p&gt;You know what's not fun? The 47-step release ceremony afterwards where you squint at a diff, pretend you remember what you changed three days ago, write release notes that say "misc fixes," bump a version number wrong, forget to build, upload the wrong artifact, and then lie to your team about it in Slack.&lt;/p&gt;

&lt;p&gt;I got tired of it. So I built &lt;strong&gt;Rel-Ease&lt;/strong&gt; — a terminal release manager powered by &lt;a href="https://backboard.io" rel="noopener noreferrer"&gt;Backboard.io&lt;/a&gt; that reads your diff, proposes a SemVer bump, writes real release notes, and handles the build-and-publish dance. Python, Rust, Node — it detects your repo and adapts.&lt;/p&gt;

&lt;p&gt;The trick: the AI drives the &lt;em&gt;thinking&lt;/em&gt;, but every mutation runs through explicit CLI tools on your machine. It doesn't hallucinate that it published to PyPI. It actually publishes to PyPI. Revolutionary concept, I know.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow is obscenely simple
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;release-cli
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;BACKBOARD_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;sk-...
rel-ease release &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. It diffs, it thinks, it bumps, it notes, it commits, it builds, it ships. You approve or you don't.&lt;/p&gt;

&lt;p&gt;Want a dry run? &lt;code&gt;--dry-run&lt;/code&gt;. Want to steer it? &lt;code&gt;--hint "minor bump, new API"&lt;/code&gt;. Want to make sure your environment isn't cooked? &lt;code&gt;rel-ease doctor .&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this exists
&lt;/h2&gt;

&lt;p&gt;Because I wanted release notes I could actually &lt;em&gt;email to a human&lt;/em&gt; without shame. Because "bump version" shouldn't require 15 minutes of my finite life on this earth. Because every manual release is an invitation to be lazy, and I am absolutely going to accept that invitation every single time.&lt;/p&gt;

&lt;p&gt;Rel-Ease is me outsourcing the discipline I refuse to have.&lt;/p&gt;

&lt;h2&gt;
  
  
  It's open source
&lt;/h2&gt;

&lt;p&gt;Because suffering alone is stupid.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/chrisk60331/Rel-Ease" rel="noopener noreferrer"&gt;chrisk60331/Rel-Ease&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;PyPI:&lt;/strong&gt; &lt;code&gt;release-cli&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Go use it. Go break it. Go make your releases embarrassingly detailed for once.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>free</category>
      <category>developers</category>
    </item>
    <item>
      <title>I Open Sourced My AWS Fork of Uptime Kuma</title>
      <dc:creator>Chris King</dc:creator>
      <pubDate>Fri, 03 Apr 2026 12:05:00 +0000</pubDate>
      <link>https://forem.com/chris_king_bcff3b9663e84a/i-open-sourced-my-aws-fork-of-uptime-kuma-4p68</link>
      <guid>https://forem.com/chris_king_bcff3b9663e84a/i-open-sourced-my-aws-fork-of-uptime-kuma-4p68</guid>
      <description>&lt;h1&gt;
  
  
  I Got Tired of Paying Hundreds for a Status Page, So I Open Sourced My AWS Fork of Uptime Kuma
&lt;/h1&gt;

&lt;p&gt;There’s a point where “hosted convenience” stops being convenience and starts being rent.&lt;/p&gt;

&lt;p&gt;I hit that point with status page and uptime monitoring tools.&lt;/p&gt;

&lt;p&gt;So I built and open sourced &lt;strong&gt;Uptime Kuma (AWS)&lt;/strong&gt; — my AWS-focused fork of Uptime Kuma — to give myself a cleaner, cheaper, more ownable option.&lt;/p&gt;

&lt;p&gt;GitHub repo: &lt;a href="https://github.com/chrisk60331/uptime-kuma" rel="noopener noreferrer"&gt;https://github.com/chrisk60331/uptime-kuma&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;A lot of uptime/status page products start cheap, look simple, and then quietly turn into another monthly bill you don’t want.&lt;/p&gt;

&lt;p&gt;If all you need is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;uptime monitoring&lt;/li&gt;
&lt;li&gt;alerting&lt;/li&gt;
&lt;li&gt;clean status pages&lt;/li&gt;
&lt;li&gt;solid control over your own deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…paying hundreds a month starts to feel ridiculous.&lt;/p&gt;

&lt;p&gt;Especially when you already know how to run infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Uptime Kuma (AWS)&lt;/strong&gt; is an easy-to-use AWS-hosted monitoring tool based on Uptime Kuma.&lt;/p&gt;

&lt;p&gt;It gives you a practical way to monitor services, trigger notifications, and publish status pages without handing yet another core operational function to a pricey vendor.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;Core features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitoring for &lt;strong&gt;HTTP(s), TCP, keyword checks, JSON query checks, WebSocket, Ping, DNS records, push, Steam game servers, and Docker containers&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fast, reactive UI&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Notifications via &lt;strong&gt;Telegram, Discord, Slack, Gotify, Pushover, Email (SMTP)&lt;/strong&gt;, plus &lt;strong&gt;90+ notification services&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;20-second monitoring intervals&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multiple status pages&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Domain mapping for status pages&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ping charts&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Certificate info&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proxy support&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2FA support&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-language support&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why I open sourced it
&lt;/h2&gt;

&lt;p&gt;Because this is exactly the kind of software that should be easy to inspect, run, modify, and own.&lt;/p&gt;

&lt;p&gt;Infra tooling gets better when builders can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;deploy it themselves&lt;/li&gt;
&lt;li&gt;adapt it to their environment&lt;/li&gt;
&lt;li&gt;avoid getting trapped in recurring SaaS spend&lt;/li&gt;
&lt;li&gt;improve it in the open&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open source keeps the leverage where it belongs: with the operator.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it matters
&lt;/h2&gt;

&lt;p&gt;This isn’t just about saving money.&lt;/p&gt;

&lt;p&gt;It’s about control.&lt;/p&gt;

&lt;p&gt;If uptime monitoring and status communication are important to your business, you probably shouldn’t treat them like a black box subscription you barely control.&lt;/p&gt;

&lt;p&gt;You should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;run it where you want&lt;/li&gt;
&lt;li&gt;understand how it works&lt;/li&gt;
&lt;li&gt;customize it when needed&lt;/li&gt;
&lt;li&gt;keep your costs sane&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s the point of this project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built in the same spirit as what I’m doing with Backboard.io
&lt;/h2&gt;

&lt;p&gt;I’m building more tools in and around &lt;strong&gt;Backboard.io&lt;/strong&gt;, and the pattern is simple:&lt;/p&gt;

&lt;p&gt;Build useful things.&lt;br&gt;
Solve real problems.&lt;br&gt;
Open source what should be open.&lt;br&gt;
Keep the stack practical.&lt;/p&gt;

&lt;p&gt;This project fits that exactly.&lt;/p&gt;
&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;Run locally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./start.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deploy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./build.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repo again:&lt;br&gt;
&lt;a href="https://github.com/chrisk60331/uptime-kuma" rel="noopener noreferrer"&gt;https://github.com/chrisk60331/uptime-kuma&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final word
&lt;/h2&gt;

&lt;p&gt;If you’re paying too much for uptime monitoring or status page software, this may be the shove you need to just run your own.&lt;/p&gt;

&lt;p&gt;No pitch deck.&lt;br&gt;
No “contact sales.”&lt;br&gt;
No nonsense.&lt;/p&gt;

&lt;p&gt;Just a solid open source AWS-hosted option.&lt;/p&gt;

&lt;p&gt;If you check it out, fork it, improve it, or deploy it, I’d love to see what you do with it.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>backboardio</category>
      <category>python</category>
      <category>web</category>
    </item>
    <item>
      <title>I forked Cluely and pushed it further.</title>
      <dc:creator>Chris King</dc:creator>
      <pubDate>Thu, 02 Apr 2026 12:41:00 +0000</pubDate>
      <link>https://forem.com/chris_king_bcff3b9663e84a/i-forked-cluely-and-pushed-it-further-25o5</link>
      <guid>https://forem.com/chris_king_bcff3b9663e84a/i-forked-cluely-and-pushed-it-further-25o5</guid>
      <description>&lt;h1&gt;
  
  
  I Open Sourced Caddy: An Invisible Desktop AI Assistant Built on Backboard.io
&lt;/h1&gt;

&lt;p&gt;It’s called &lt;strong&gt;Caddy&lt;/strong&gt;:&lt;br&gt;
an invisible desktop AI assistant that lives on your machine, watches context, transcribes audio locally for speed, and lets you chat against what’s happening on your screen.&lt;/p&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/chrisk60331/caddy" rel="noopener noreferrer"&gt;https://github.com/chrisk60331/caddy&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is
&lt;/h2&gt;

&lt;p&gt;Caddy is a desktop overlay built on &lt;strong&gt;Backboard.io&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;capture screenshots&lt;/li&gt;
&lt;li&gt;run OCR on what’s on screen&lt;/li&gt;
&lt;li&gt;transcribe live audio locally&lt;/li&gt;
&lt;li&gt;send context into Backboard&lt;/li&gt;
&lt;li&gt;let you chat with that context using &lt;strong&gt;17,000+ models&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;keep the thread alive with persistent memory&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So instead of copy-pasting between tabs like an animal, you just ask questions in context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;A lot of “desktop AI” tools still feel slow, fake, or weirdly disconnected from the actual workflow.&lt;/p&gt;

&lt;p&gt;I wanted something that felt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fast&lt;/li&gt;
&lt;li&gt;local where it matters&lt;/li&gt;
&lt;li&gt;model-flexible&lt;/li&gt;
&lt;li&gt;memory-native&lt;/li&gt;
&lt;li&gt;actually useful while you work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I forked Cluely, added &lt;strong&gt;local transcription&lt;/strong&gt;, wired it into &lt;strong&gt;Backboard’s memory&lt;/strong&gt;, and made it easy to use as a real-time desktop assistant.&lt;/p&gt;

&lt;p&gt;That changed the feel of the product immediately.&lt;/p&gt;

&lt;p&gt;Less lag.&lt;br&gt;
More context.&lt;br&gt;
Way better experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why local transcription matters
&lt;/h2&gt;

&lt;p&gt;If audio has to take a field trip before becoming usable context, the experience dies.&lt;/p&gt;

&lt;p&gt;Caddy uses local transcription so it stays quick and responsive.&lt;/p&gt;

&lt;p&gt;That means better support for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;meetings&lt;/li&gt;
&lt;li&gt;calls&lt;/li&gt;
&lt;li&gt;live research&lt;/li&gt;
&lt;li&gt;screen-based workflows&lt;/li&gt;
&lt;li&gt;follow-up questions while context is still fresh&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fast input makes the assistant actually feel intelligent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Backboard.io
&lt;/h2&gt;

&lt;p&gt;Backboard gives this thing real leverage.&lt;/p&gt;

&lt;p&gt;Caddy uses Backboard for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LLM routing&lt;/li&gt;
&lt;li&gt;memory&lt;/li&gt;
&lt;li&gt;contextual chat&lt;/li&gt;
&lt;li&gt;access to &lt;strong&gt;17,000+ models&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That means you’re not trapped in one provider or one brittle workflow.&lt;/p&gt;

&lt;p&gt;You get a desktop-native interface on top of a massive model layer with memory baked in.&lt;/p&gt;

&lt;p&gt;That combo is nasty.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack
&lt;/h2&gt;

&lt;p&gt;A quick look under the hood:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Electron&lt;/strong&gt; for the invisible desktop overlay&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React&lt;/strong&gt; frontend&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flask&lt;/strong&gt; backend&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Whisper&lt;/strong&gt; for transcription&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tesseract OCR&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backboard SDK&lt;/strong&gt; for LLMs + memory&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Core features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Invisible overlay&lt;/strong&gt; — translucent, always-on-top, low-friction&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screenshot analysis&lt;/strong&gt; — capture anything on screen and get answers fast&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audio intelligence&lt;/strong&gt; — live transcription and analysis&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contextual chat&lt;/strong&gt; — ask follow-ups with memory intact&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model selector&lt;/strong&gt; — switch across providers via Backboard&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screen watch&lt;/strong&gt; — periodic OCR + analysis of what’s on screen&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-platform&lt;/strong&gt; — macOS, Windows, Linux&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Who it’s for
&lt;/h2&gt;

&lt;p&gt;Caddy is for people who live on their computers and want AI that works in the flow of actual work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;developers&lt;/li&gt;
&lt;li&gt;researchers&lt;/li&gt;
&lt;li&gt;operators&lt;/li&gt;
&lt;li&gt;founders&lt;/li&gt;
&lt;li&gt;power users&lt;/li&gt;
&lt;li&gt;anyone tired of tab-hopping into prompt boxes all day&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why I open sourced it
&lt;/h2&gt;

&lt;p&gt;Because desktop AI is still early, and a lot of the interesting stuff should be inspectable, hackable, and remixable.&lt;/p&gt;

&lt;p&gt;Also because open source is still the cleanest way to pressure the market.&lt;/p&gt;

&lt;p&gt;If someone wants to build on this, improve it, fork it, or weaponize the idea in a better direction — good.&lt;/p&gt;

&lt;p&gt;That’s the point.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Repo:&lt;br&gt;
&lt;a href="https://github.com/chrisk60331/caddy" rel="noopener noreferrer"&gt;https://github.com/chrisk60331/caddy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re building with &lt;strong&gt;Backboard.io&lt;/strong&gt;, or just want a fast open source desktop AI assistant with local transcription and memory, give it a spin.&lt;/p&gt;

&lt;p&gt;If you improve it, I’d love to see where you take it.&lt;/p&gt;

</description>
      <category>backboardio</category>
      <category>opensource</category>
      <category>python</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Open-Sourced Nash</title>
      <dc:creator>Chris King</dc:creator>
      <pubDate>Wed, 01 Apr 2026 12:04:00 +0000</pubDate>
      <link>https://forem.com/chris_king_bcff3b9663e84a/i-open-sourced-nash-4ih</link>
      <guid>https://forem.com/chris_king_bcff3b9663e84a/i-open-sourced-nash-4ih</guid>
      <description>&lt;h2&gt;
  
  
  17,000 Models, Ridiculous Memory, and a Cleaner Way to Build AI Apps
&lt;/h2&gt;

&lt;p&gt;Most AI apps have one move.&lt;/p&gt;

&lt;p&gt;A chat box.&lt;br&gt;&lt;br&gt;
A model picker.&lt;br&gt;&lt;br&gt;
A little retrieval.&lt;br&gt;&lt;br&gt;
Maybe a tool call if you’re lucky.&lt;/p&gt;

&lt;p&gt;That’s not enough.&lt;/p&gt;

&lt;p&gt;So I open-sourced &lt;strong&gt;Nash&lt;/strong&gt; — an AI assistant app built on &lt;strong&gt;Backboard.io&lt;/strong&gt; with &lt;strong&gt;17,000 models&lt;/strong&gt;, &lt;strong&gt;Stripe subscriptions + overages&lt;/strong&gt;, and what I’d argue is the &lt;strong&gt;smartest memory system in the game&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not a toy.&lt;br&gt;&lt;br&gt;
Not a wrapper.&lt;br&gt;&lt;br&gt;
A real foundation for building serious AI products.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;A lot of AI app demos look good for five minutes.&lt;/p&gt;

&lt;p&gt;Then the cracks show:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;memory is shallow&lt;/li&gt;
&lt;li&gt;model support is narrow&lt;/li&gt;
&lt;li&gt;billing is bolted on&lt;/li&gt;
&lt;li&gt;orchestration gets messy&lt;/li&gt;
&lt;li&gt;the product feels like a prototype wearing a blazer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result: lots of flash, not much flow.&lt;/p&gt;

&lt;p&gt;If you want to build something users actually come back to, the app needs more than a prompt box. It needs context, continuity, flexibility, and a business model that doesn’t collapse the second people start using it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Nash does
&lt;/h2&gt;

&lt;p&gt;Nash is an open-source AI assistant app that gives builders a serious starting point.&lt;/p&gt;

&lt;p&gt;It includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;access to 17,000 models&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;subscription billing with Stripe&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;usage overages&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;deep memory&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tool-friendly AI app architecture&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;a polished product foundation built on Backboard.io&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The focus is simple: give developers a system that sees the floor well, moves fast, and makes the whole offense better.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I open sourced it
&lt;/h2&gt;

&lt;p&gt;Because too many AI starter apps are either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;too shallow to matter&lt;/li&gt;
&lt;li&gt;too rigid to extend&lt;/li&gt;
&lt;li&gt;too demo-first to ship&lt;/li&gt;
&lt;li&gt;too disconnected from real product needs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted to release something more complete — an OSS app that shows how to build an AI product with actual range:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;flexible model access&lt;/li&gt;
&lt;li&gt;persistent user context&lt;/li&gt;
&lt;li&gt;monetization&lt;/li&gt;
&lt;li&gt;product-ready UX&lt;/li&gt;
&lt;li&gt;architecture that can support real usage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Something that doesn’t dribble the air out of the ball every time you try to add a feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the memory matters
&lt;/h2&gt;

&lt;p&gt;The biggest gap in most AI apps isn’t raw model quality.&lt;/p&gt;

&lt;p&gt;It’s continuity.&lt;/p&gt;

&lt;p&gt;People don’t just want an answer. They want software that remembers what matters, adapts over time, and gets better with use. That’s where Nash is strongest.&lt;/p&gt;

&lt;p&gt;A good assistant shouldn’t reset every possession. It should carry context forward, make better decisions, and keep the interaction smooth.&lt;/p&gt;

&lt;p&gt;That’s the difference between a neat demo and a product people actually trust.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built on Backboard.io
&lt;/h2&gt;

&lt;p&gt;Nash is one of three apps I’m open-sourcing, all built on &lt;strong&gt;Backboard.io&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The point isn’t just to release code.&lt;/p&gt;

&lt;p&gt;It’s to show what a stronger foundation for AI apps can look like when you combine orchestration, memory, billing, and product design in one system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Repo
&lt;/h2&gt;

&lt;p&gt;If you want to fork it, study it, or build on top of it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Backboard-io/Nash" rel="noopener noreferrer"&gt;https://github.com/Backboard-io/Nash&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re building AI apps and you’re tired of the usual iso-heavy demo stack, Nash might be a better starting lineup.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>backboardio</category>
      <category>chat</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Open-Sourced CloserNotes</title>
      <dc:creator>Chris King</dc:creator>
      <pubDate>Tue, 31 Mar 2026 12:03:00 +0000</pubDate>
      <link>https://forem.com/chris_king_bcff3b9663e84a/i-open-sourced-closernotes-4dof</link>
      <guid>https://forem.com/chris_king_bcff3b9663e84a/i-open-sourced-closernotes-4dof</guid>
      <description>&lt;h2&gt;
  
  
  I Open-Sourced CloserNotes: ABC — Always Be Closing, Never Be Typing
&lt;/h2&gt;

&lt;p&gt;Coffee is for closers.&lt;/p&gt;

&lt;p&gt;And CRMs?&lt;br&gt;&lt;br&gt;
Too many of them feel like punishment.&lt;/p&gt;

&lt;p&gt;So I built and open-sourced &lt;strong&gt;CloserNotes&lt;/strong&gt; — a voice-first CRM for people who live in conversations, not forms.&lt;/p&gt;

&lt;p&gt;Built on &lt;strong&gt;Backboard.io&lt;/strong&gt;, CloserNotes uses &lt;strong&gt;local Whisper + Twilio&lt;/strong&gt; to turn calls, notes, and follow-ups into something actually usable, without making you spend half your life updating fields like a data entry intern.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Every sales tool says it helps you sell.&lt;/p&gt;

&lt;p&gt;Then it makes your reps do this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;log the call&lt;/li&gt;
&lt;li&gt;write the summary&lt;/li&gt;
&lt;li&gt;update the contact&lt;/li&gt;
&lt;li&gt;add the follow-up&lt;/li&gt;
&lt;li&gt;remember what mattered&lt;/li&gt;
&lt;li&gt;pretend this is a good use of human life&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s nonsense.&lt;/p&gt;

&lt;p&gt;The best salespeople want to talk, listen, move, close.&lt;/p&gt;

&lt;p&gt;Not babysit a CRM.&lt;/p&gt;

&lt;h2&gt;
  
  
  What CloserNotes does
&lt;/h2&gt;

&lt;p&gt;CloserNotes is built for a simpler flow:&lt;/p&gt;

&lt;p&gt;You talk.&lt;br&gt;&lt;br&gt;
It captures.&lt;br&gt;&lt;br&gt;
It organizes.&lt;br&gt;&lt;br&gt;
You move.&lt;/p&gt;

&lt;p&gt;It combines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;local Whisper transcription&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Twilio-powered calling&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;voice-first notes&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;clean CRM workflows&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI-assisted conversation capture&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The idea is simple: reduce friction between the conversation and the system of record.&lt;/p&gt;

&lt;p&gt;Less typing.&lt;br&gt;&lt;br&gt;
More selling.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I open sourced it
&lt;/h2&gt;

&lt;p&gt;Because most “AI CRM” products are either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;hand-wavy&lt;/li&gt;
&lt;li&gt;closed off&lt;/li&gt;
&lt;li&gt;overdesigned&lt;/li&gt;
&lt;li&gt;stuffed with features nobody asked for&lt;/li&gt;
&lt;li&gt;missing the one thing that matters: speed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted a real OSS example of a voice-first CRM workflow that feels sharp, simple, and extensible.&lt;/p&gt;

&lt;p&gt;Not “enterprise theater.”&lt;br&gt;&lt;br&gt;
An actual build.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who it’s for
&lt;/h2&gt;

&lt;p&gt;CloserNotes is for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sales teams&lt;/li&gt;
&lt;li&gt;founders doing outbound&lt;/li&gt;
&lt;li&gt;operators handling calls&lt;/li&gt;
&lt;li&gt;anyone who wants CRM updates to happen with less pain&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your workflow starts with conversations, your software shouldn’t act like the keyboard is the product.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built on Backboard.io
&lt;/h2&gt;

&lt;p&gt;CloserNotes is one of three apps I’m open-sourcing, all built on &lt;strong&gt;Backboard.io&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The point is to show what happens when you build practical, AI-native apps around real workflows instead of toy demos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Repo
&lt;/h2&gt;

&lt;p&gt;Take a look, fork it, improve it, ship it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Backboard-io/closernotes" rel="noopener noreferrer"&gt;https://github.com/Backboard-io/closernotes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A lead comes in.&lt;br&gt;&lt;br&gt;
You call.&lt;br&gt;&lt;br&gt;
You talk.&lt;br&gt;&lt;br&gt;
The system keeps up.&lt;/p&gt;

&lt;p&gt;That’s the pitch.&lt;/p&gt;

</description>
      <category>backboardio</category>
      <category>python</category>
      <category>opensource</category>
      <category>voice</category>
    </item>
    <item>
      <title>I Open-Sourced TopicMiner</title>
      <dc:creator>Chris King</dc:creator>
      <pubDate>Mon, 30 Mar 2026 07:00:00 +0000</pubDate>
      <link>https://forem.com/chris_king_bcff3b9663e84a/i-open-sourced-topicminer-4nnd</link>
      <guid>https://forem.com/chris_king_bcff3b9663e84a/i-open-sourced-topicminer-4nnd</guid>
      <description>&lt;h1&gt;
  
  
  I Open-Sourced TopicMiner
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Turn One Long Video Into Dozens of Branded Shorts
&lt;/h2&gt;

&lt;p&gt;Most video repurposing tools are either too shallow, too closed, or too annoying to customize.&lt;/p&gt;

&lt;p&gt;So I open-sourced &lt;strong&gt;TopicMiner&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;TopicMiner is built for a simple but painful workflow: you have a podcast, webinar, interview, or long-form video, and you want to turn it into short, branded, vertical clips without manually chopping everything up for hours.&lt;/p&gt;

&lt;p&gt;It handles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;local transcription&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VTT caption generation&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;agentic video editing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;branded short-form clip creation&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stripe payments&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s built on &lt;strong&gt;Backboard.io&lt;/strong&gt;, which means it’s not just a one-off toy project — it’s part of a bigger architecture for building serious AI-native apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  What TopicMiner does
&lt;/h2&gt;

&lt;p&gt;TopicMiner helps turn long-form content into short-form assets that are actually usable for distribution.&lt;/p&gt;

&lt;p&gt;Think:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;podcast to TikTok clips&lt;/li&gt;
&lt;li&gt;webinar to YouTube Shorts&lt;/li&gt;
&lt;li&gt;interview to branded social snippets&lt;/li&gt;
&lt;li&gt;long videos to multiple cutdowns with captions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal wasn’t “AI for the sake of AI.”&lt;/p&gt;

&lt;p&gt;The goal was to make content repurposing feel less like punishment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I open sourced it
&lt;/h2&gt;

&lt;p&gt;Because a lot of people want to build AI video workflows, but most examples out there are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;thin wrappers&lt;/li&gt;
&lt;li&gt;black boxes&lt;/li&gt;
&lt;li&gt;impossible to self-host&lt;/li&gt;
&lt;li&gt;hard to extend&lt;/li&gt;
&lt;li&gt;not wired for real product flows like billing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted to put out something more real.&lt;/p&gt;

&lt;p&gt;TopicMiner shows how to build an actual app around AI workflows — not just a demo, but a product-shaped system with media processing, transcription, editing logic, and payments.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s under the hood
&lt;/h2&gt;

&lt;p&gt;At a high level, TopicMiner includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;local-first transcription workflows&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;caption generation with VTT&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;agent-driven editing flow&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;branding-oriented short clip pipeline&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stripe integration for payments&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re building in the intersection of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI agents&lt;/li&gt;
&lt;li&gt;creator tools&lt;/li&gt;
&lt;li&gt;media workflows&lt;/li&gt;
&lt;li&gt;transcription pipelines&lt;/li&gt;
&lt;li&gt;OSS SaaS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…this repo should be useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;Short-form distribution is one of the biggest leverage points in content right now.&lt;/p&gt;

&lt;p&gt;But the workflow is still painfully manual.&lt;/p&gt;

&lt;p&gt;A lot of creators and teams are sitting on hours of valuable long-form content that never gets repackaged because the process is too slow. TopicMiner is my take on closing that gap with an open-source stack you can actually inspect and build on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built on Backboard.io
&lt;/h2&gt;

&lt;p&gt;TopicMiner is one example of what that stack can support: AI-assisted workflows, product logic, and real app infrastructure in the same system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Repo
&lt;/h2&gt;

&lt;p&gt;If you want to check it out, fork it, or break it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Backboard-io/TopicMiner" rel="noopener noreferrer"&gt;https://github.com/Backboard-io/TopicMiner&lt;/a&gt;&lt;/p&gt;

</description>
      <category>videoediting</category>
      <category>opensource</category>
      <category>python</category>
      <category>backboardio</category>
    </item>
    <item>
      <title>Meet Onni!</title>
      <dc:creator>Chris King</dc:creator>
      <pubDate>Fri, 27 Mar 2026 07:00:00 +0000</pubDate>
      <link>https://forem.com/chris_king_bcff3b9663e84a/meet-onni-6ok</link>
      <guid>https://forem.com/chris_king_bcff3b9663e84a/meet-onni-6ok</guid>
      <description>&lt;h2&gt;
  
  
  I turned my open source AI marketing agent into a real product: meet Onni at cmo.dog
&lt;/h2&gt;

&lt;p&gt;A little while ago, I built &lt;strong&gt;OpenOkara&lt;/strong&gt;, an open source AI marketing agent that takes a URL and generates a marketing brief.&lt;/p&gt;

&lt;p&gt;That project became the foundation for something more polished and deployed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.cmo.dog" rel="noopener noreferrer"&gt;https://www.cmo.dog&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The face of it is &lt;strong&gt;Onni&lt;/strong&gt; — a good Finnish dog who fetches your Chief Marketing Officer.&lt;/p&gt;

&lt;p&gt;And yes, that sentence is ridiculous.&lt;/p&gt;

&lt;p&gt;But the product is real.&lt;/p&gt;

&lt;p&gt;You drop in a URL, and Onni returns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a website audit&lt;/li&gt;
&lt;li&gt;a competitor map&lt;/li&gt;
&lt;li&gt;a brand voice profile&lt;/li&gt;
&lt;li&gt;a ranked SEO fix queue&lt;/li&gt;
&lt;li&gt;and an AI chat interface for follow-up questions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All in about a minute.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built on OpenOkara, but meant to be a product
&lt;/h2&gt;

&lt;p&gt;OpenOkara was the open source starting point:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;multi-agent orchestration&lt;/li&gt;
&lt;li&gt;website analysis&lt;/li&gt;
&lt;li&gt;competitor research&lt;/li&gt;
&lt;li&gt;brand voice extraction&lt;/li&gt;
&lt;li&gt;SEO recommendations&lt;/li&gt;
&lt;li&gt;live streaming progress in the UI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That gave me the core workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CMO.dog&lt;/strong&gt; is the more productized version of that idea:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;better branding&lt;/li&gt;
&lt;li&gt;clearer UX&lt;/li&gt;
&lt;li&gt;a stronger character layer&lt;/li&gt;
&lt;li&gt;a tighter user journey&lt;/li&gt;
&lt;li&gt;and a domain nobody forgets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;

&lt;p&gt;A lot of projects work as demos but not as products.&lt;/p&gt;

&lt;p&gt;The gap is usually not the model.&lt;/p&gt;

&lt;p&gt;It’s:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;framing&lt;/li&gt;
&lt;li&gt;trust&lt;/li&gt;
&lt;li&gt;flow&lt;/li&gt;
&lt;li&gt;clarity&lt;/li&gt;
&lt;li&gt;and whether normal people instantly understand what they’re supposed to do&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why I made Onni
&lt;/h2&gt;

&lt;p&gt;Because “AI marketing” as a category is full of tools that are either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;too expensive&lt;/li&gt;
&lt;li&gt;too vague&lt;/li&gt;
&lt;li&gt;too generic&lt;/li&gt;
&lt;li&gt;or too magical in a bad way&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You upload something, wait, and get a glossy blob of text that sounds strategic but doesn’t actually help you decide what to do next.&lt;/p&gt;

&lt;p&gt;I wanted the opposite.&lt;/p&gt;

&lt;p&gt;I wanted something that feels direct:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;put in URL&lt;br&gt;&lt;br&gt;
get marketing answers&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No prompt gymnastics.&lt;br&gt;&lt;br&gt;
No huge onboarding flow.&lt;br&gt;&lt;br&gt;
No pretending a founder wants to become a part-time prompt engineer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Onni actually does
&lt;/h2&gt;

&lt;p&gt;When you enter a site, four agents run in parallel.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Content agent
&lt;/h3&gt;

&lt;p&gt;Reads the site and summarizes the company, offer, and available context.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Competitor agent
&lt;/h3&gt;

&lt;p&gt;Searches the web for comparable companies, adjacent players, pricing signals, and positioning patterns.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Brand agent
&lt;/h3&gt;

&lt;p&gt;Figures out how the company sounds — tone, voice, style, and positioning cues.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Audit agent
&lt;/h3&gt;

&lt;p&gt;Builds the website audit, scores the site, and ranks the SEO fixes by priority.&lt;/p&gt;

&lt;p&gt;That gets assembled into a single brief the user can actually act on.&lt;/p&gt;

&lt;p&gt;Then the chat interface lets them keep going:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Which issue should I fix first?”&lt;/li&gt;
&lt;li&gt;“How do we position against competitor X?”&lt;/li&gt;
&lt;li&gt;“Rewrite our homepage headline in our brand voice”&lt;/li&gt;
&lt;li&gt;“What should we test next?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That follow-up loop is where a lot of the product value shows up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the dog matters more than you think
&lt;/h2&gt;

&lt;p&gt;Onni started as a branding decision.&lt;/p&gt;

&lt;p&gt;But I think mascots do something useful for AI products.&lt;/p&gt;

&lt;p&gt;A lot of AI apps feel interchangeable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;same layout&lt;/li&gt;
&lt;li&gt;same promises&lt;/li&gt;
&lt;li&gt;same abstract gradients&lt;/li&gt;
&lt;li&gt;same “copilot/cofounder/genius assistant” energy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Giving the product a character made it easier to define the tone.&lt;/p&gt;

&lt;p&gt;Onni is helpful, fast, and a little playful — but the output still needs to be sharp.&lt;/p&gt;

&lt;p&gt;That’s a better UX constraint than “make it futuristic.”&lt;/p&gt;

&lt;p&gt;Also, &lt;strong&gt;cmo.dog&lt;/strong&gt; is objectively funny, which I consider a strategic advantage.&lt;/p&gt;

&lt;h2&gt;
  
  
  The architecture is boring on purpose
&lt;/h2&gt;

&lt;p&gt;The stack is straightforward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;FastAPI&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Next.js 15&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pydantic&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tailwind&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;shadcn/ui&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backboard&lt;/strong&gt; for agent infrastructure&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSE&lt;/strong&gt; for live terminal streaming&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agents are orchestrated through a backend pipeline, and the frontend streams progress in real time.&lt;/p&gt;

&lt;p&gt;I like the live terminal because it replaces the worst UI element in AI products: the dead-eyed loading spinner.&lt;/p&gt;

&lt;p&gt;If the system is doing work, let users see it doing work.&lt;/p&gt;

&lt;p&gt;That single choice makes the app feel more trustworthy.&lt;/p&gt;

&lt;h2&gt;
  
  
  A product lesson I keep relearning
&lt;/h2&gt;

&lt;p&gt;Open source gets you attention from builders.&lt;/p&gt;

&lt;p&gt;A product has to work for everyone else.&lt;/p&gt;

&lt;p&gt;That means the hard part isn’t just getting useful output from agents.&lt;/p&gt;

&lt;p&gt;The hard part is packaging the experience so a user instantly understands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what this does&lt;/li&gt;
&lt;li&gt;why it matters&lt;/li&gt;
&lt;li&gt;whether they trust it&lt;/li&gt;
&lt;li&gt;and what they should do after the result appears&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s the part I wanted to explore with CMO.dog.&lt;/p&gt;

&lt;p&gt;Not just “can I make the workflow work?”&lt;/p&gt;

&lt;p&gt;But:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;can I make the workflow feel like a product people want to use?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why I think this category is vulnerable
&lt;/h2&gt;

&lt;p&gt;A lot of premium AI SaaS products are charging serious money for workflows that are becoming easier to reproduce.&lt;/p&gt;

&lt;p&gt;Not trivial.&lt;br&gt;
But reproducible.&lt;/p&gt;

&lt;p&gt;Especially when the product is fundamentally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;URL in&lt;/li&gt;
&lt;li&gt;analysis happens&lt;/li&gt;
&lt;li&gt;report out&lt;/li&gt;
&lt;li&gt;follow-up chat&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your moat is just “we arranged the prompts nicely,” you should be nervous.&lt;/p&gt;

&lt;p&gt;The defensible stuff is elsewhere:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;distribution&lt;/li&gt;
&lt;li&gt;trust&lt;/li&gt;
&lt;li&gt;UX&lt;/li&gt;
&lt;li&gt;speed&lt;/li&gt;
&lt;li&gt;reliability&lt;/li&gt;
&lt;li&gt;workflow depth&lt;/li&gt;
&lt;li&gt;integrations&lt;/li&gt;
&lt;li&gt;historical data&lt;/li&gt;
&lt;li&gt;and product taste&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s another reason I like building both open source and productized versions of ideas.&lt;/p&gt;

&lt;p&gt;It reveals what’s actually valuable.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you want to look at the code
&lt;/h2&gt;

&lt;p&gt;The deployed product is here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.cmo.dog" rel="noopener noreferrer"&gt;https://www.cmo.dog&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The repo is here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/Backboard-io/cmo.dog" rel="noopener noreferrer"&gt;https://github.com/Backboard-io/cmo.dog&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And the open source foundation it grew out of is here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/Backboard-io/openokara" rel="noopener noreferrer"&gt;https://github.com/Backboard-io/openokara&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;Sometimes the interesting part of a project isn’t the first build.&lt;/p&gt;

&lt;p&gt;It’s the second one.&lt;/p&gt;

&lt;p&gt;The version where you take the raw capability, add character, tighten the UX, sharpen the promise, and turn it into something people can immediately understand.&lt;/p&gt;

&lt;p&gt;That’s what Onni is.&lt;/p&gt;

&lt;p&gt;A good Finnish dog built on top of an open source AI marketing agent — now fetching CMOs at:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.cmo.dog" rel="noopener noreferrer"&gt;https://www.cmo.dog&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cmo</category>
      <category>opensource</category>
      <category>backboardio</category>
    </item>
    <item>
      <title>Backboard.io continues to astound me! What a journey! Memory tiers, Customizable Memory Orchestration? Like it works great out of the box but now its suuuuper configurable!</title>
      <dc:creator>Chris King</dc:creator>
      <pubDate>Thu, 26 Mar 2026 19:01:32 +0000</pubDate>
      <link>https://forem.com/chris_king_bcff3b9663e84a/backboardio-continues-to-astound-me-what-a-journey-memory-tiers-customizable-memory-10go</link>
      <guid>https://forem.com/chris_king_bcff3b9663e84a/backboardio-continues-to-astound-me-what-a-journey-memory-tiers-customizable-memory-10go</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/jon_at_backboardio/we-just-shipped-what-openai-google-and-anthropic-have-not-here-are-6-updates-2fj8" class="crayons-story__hidden-navigation-link"&gt;We Just Shipped What OpenAI, Google, and Anthropic Have Not. Here Are 6 Updates.&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/jon_at_backboardio" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3824580%2Fcbf3ef23-2d0b-4576-90ff-0d46b2119ea8.png" alt="jon_at_backboardio profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/jon_at_backboardio" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Jonathan Murray
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Jonathan Murray
                
              
              &lt;div id="story-author-preview-content-3410120" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/jon_at_backboardio" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3824580%2Fcbf3ef23-2d0b-4576-90ff-0d46b2119ea8.png" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Jonathan Murray&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/jon_at_backboardio/we-just-shipped-what-openai-google-and-anthropic-have-not-here-are-6-updates-2fj8" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 26&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/jon_at_backboardio/we-just-shipped-what-openai-google-and-anthropic-have-not-here-are-6-updates-2fj8" id="article-link-3410120"&gt;
          We Just Shipped What OpenAI, Google, and Anthropic Have Not. Here Are 6 Updates.
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devops"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devops&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tooling"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tooling&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/jon_at_backboardio/we-just-shipped-what-openai-google-and-anthropic-have-not-here-are-6-updates-2fj8" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;16&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/jon_at_backboardio/we-just-shipped-what-openai-google-and-anthropic-have-not-here-are-6-updates-2fj8#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>programming</category>
      <category>devops</category>
      <category>tooling</category>
    </item>
    <item>
      <title>OpenOkara</title>
      <dc:creator>Chris King</dc:creator>
      <pubDate>Thu, 26 Mar 2026 07:00:00 +0000</pubDate>
      <link>https://forem.com/chris_king_bcff3b9663e84a/openokara-3da1</link>
      <guid>https://forem.com/chris_king_bcff3b9663e84a/openokara-3da1</guid>
      <description>&lt;h2&gt;
  
  
  Opensourcing AI CMO, Built on Backboard.io
&lt;/h2&gt;

&lt;h3&gt;
  
  
  I built an open source AI CMO that audits your site, maps competitors, and finds your brand voice in 60 seconds
&lt;/h3&gt;

&lt;p&gt;Hiring a CMO is expensive.&lt;/p&gt;

&lt;p&gt;Hiring a good one is &lt;em&gt;really&lt;/em&gt; expensive.&lt;/p&gt;

&lt;p&gt;And if all you need is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a site audit&lt;/li&gt;
&lt;li&gt;competitor intel&lt;/li&gt;
&lt;li&gt;brand voice extraction&lt;/li&gt;
&lt;li&gt;SEO fixes&lt;/li&gt;
&lt;li&gt;and a way to ask follow-up questions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…you probably don’t need a $200k/year exec and a 3-month ramp.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;OpenOkara&lt;/strong&gt;: an open source AI CMO that turns a URL into a marketing brief in about a minute.&lt;/p&gt;

&lt;p&gt;Drop in a website. It spins up multiple AI agents in parallel and gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Website audit&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Performance, SEO, accessibility, and best-practice checks&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Competitor analysis&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Direct and adjacent competitors, positioning, and pricing signals&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Brand voice profile&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
A usable summary of how your company actually sounds&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SEO fix queue&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Ranked issues with step-by-step remediation guidance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI chat&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Ask follow-up questions without starting over&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No prompt engineering. No mystery workflow. Just a URL.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I built it
&lt;/h3&gt;

&lt;p&gt;A lot of “AI for marketing” products are just:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;expensive wrappers&lt;/li&gt;
&lt;li&gt;vague outputs&lt;/li&gt;
&lt;li&gt;pretty dashboards hiding weak execution&lt;/li&gt;
&lt;li&gt;and black-box workflows you can’t inspect or customize&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted the opposite:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;open source&lt;/li&gt;
&lt;li&gt;fast&lt;/li&gt;
&lt;li&gt;inspectable&lt;/li&gt;
&lt;li&gt;hackable&lt;/li&gt;
&lt;li&gt;and actually useful&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So OpenOkara shows its work while it runs.&lt;/p&gt;

&lt;p&gt;Instead of a spinner, you see a live terminal stream as agents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;summarize the site&lt;/li&gt;
&lt;li&gt;search for competitors&lt;/li&gt;
&lt;li&gt;infer brand voice&lt;/li&gt;
&lt;li&gt;run the audit&lt;/li&gt;
&lt;li&gt;and assemble the final brief&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That visibility matters. It makes the system feel less like magic and more like software.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it works
&lt;/h3&gt;

&lt;p&gt;The app uses a simple orchestrator pipeline:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Content agent&lt;/strong&gt; → reads the website and summarizes content&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Competitor agent&lt;/strong&gt; → searches the web for rivals and pricing context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Brand agent&lt;/strong&gt; → extracts voice, tone, and positioning cues&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit agent&lt;/strong&gt; → scores the site and generates prioritized fixes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Backend is &lt;strong&gt;FastAPI&lt;/strong&gt;, frontend is &lt;strong&gt;Next.js&lt;/strong&gt;, and the agents run on &lt;strong&gt;Backboard&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Python 3.11+&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FastAPI&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Next.js 15&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pydantic v2&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tailwind CSS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backboard.io&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSE streaming&lt;/strong&gt; for live run output&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What I like most about it
&lt;/h3&gt;

&lt;p&gt;The best part is that it’s not trying to be “AI magic.”&lt;/p&gt;

&lt;p&gt;It’s trying to be &lt;strong&gt;useful&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You type in a URL and get something a founder, marketer, or agency can actually use today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what’s broken&lt;/li&gt;
&lt;li&gt;who you’re up against&lt;/li&gt;
&lt;li&gt;how your brand sounds&lt;/li&gt;
&lt;li&gt;what to fix first&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s a lot more valuable than a chatbot saying “your website should be more engaging.”&lt;/p&gt;

&lt;h3&gt;
  
  
  Open source because the category needs pressure
&lt;/h3&gt;

&lt;p&gt;There are already paid tools aiming at this space.&lt;/p&gt;

&lt;p&gt;Some are good.&lt;/p&gt;

&lt;p&gt;Some are wildly overpriced.&lt;/p&gt;

&lt;p&gt;And honestly, this category needs a little open source pressure.&lt;/p&gt;

&lt;p&gt;If a product is charging serious money for “paste URL, get marketing insights,” then the output needs to be &lt;em&gt;really&lt;/em&gt; good, the workflow needs to be &lt;em&gt;really&lt;/em&gt; polished, and the time savings need to be obvious.&lt;/p&gt;

&lt;p&gt;Otherwise, OSS is coming for that margin.&lt;/p&gt;

&lt;h3&gt;
  
  
  Repo
&lt;/h3&gt;

&lt;p&gt;If you want to try it, fork it, or improve it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Backboard-io/openokara" rel="noopener noreferrer"&gt;https://github.com/Backboard-io/openokara&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you build on top of it, I’d love to see what you make.&lt;/p&gt;

&lt;h3&gt;
  
  
  Final thought
&lt;/h3&gt;

&lt;p&gt;Open source isn’t just catching up on developer tools anymore.&lt;/p&gt;

&lt;p&gt;It’s starting to put real pressure on expensive AI SaaS in categories that used to feel safely premium.&lt;/p&gt;

&lt;p&gt;This is one of those categories.&lt;/p&gt;

&lt;p&gt;And that makes it fun.&lt;/p&gt;

</description>
      <category>cmo</category>
      <category>ai</category>
      <category>agents</category>
      <category>backboardio</category>
    </item>
    <item>
      <title>Open Sourcing TrustOS</title>
      <dc:creator>Chris King</dc:creator>
      <pubDate>Wed, 25 Mar 2026 07:00:00 +0000</pubDate>
      <link>https://forem.com/chris_king_bcff3b9663e84a/open-sourcing-trustos-20o6</link>
      <guid>https://forem.com/chris_king_bcff3b9663e84a/open-sourcing-trustos-20o6</guid>
      <description>&lt;h2&gt;
  
  
  Your One Stop Shop for Compliance: SOC2 and HIPAA, Built on Backboard.io
&lt;/h2&gt;

&lt;h3&gt;
  
  
  We Got Tired of Paying for Compliance Theater, So We Built Our Own
&lt;/h3&gt;

&lt;p&gt;Security compliance is supposed to make your company more trustworthy.&lt;/p&gt;

&lt;p&gt;Too often, it turns into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;screenshot farming&lt;/li&gt;
&lt;li&gt;spreadsheet archaeology&lt;/li&gt;
&lt;li&gt;chasing policy acknowledgements&lt;/li&gt;
&lt;li&gt;manually proving the same control 14 different ways&lt;/li&gt;
&lt;li&gt;paying a premium for a dashboard sitting on top of APIs you already own&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So we decided to stop renting the illusion and build the system we actually wanted.&lt;/p&gt;

&lt;h3&gt;
  
  
  What we built
&lt;/h3&gt;

&lt;p&gt;We built &lt;strong&gt;TrustOS&lt;/strong&gt; — a compliance partner and trust center for continuous audit readiness.&lt;/p&gt;

&lt;p&gt;Instead of treating compliance like a once-a-year panic attack, TrustOS makes it operational:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;automated evidence collection&lt;/li&gt;
&lt;li&gt;continuous control monitoring&lt;/li&gt;
&lt;li&gt;audit-ready evidence snapshots&lt;/li&gt;
&lt;li&gt;policy and training workflows&lt;/li&gt;
&lt;li&gt;vendor and BAA tracking&lt;/li&gt;
&lt;li&gt;access reviews&lt;/li&gt;
&lt;li&gt;auditor workspaces&lt;/li&gt;
&lt;li&gt;customer trust sharing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It supports &lt;strong&gt;SOC 2 readiness&lt;/strong&gt; today and extends cleanly into &lt;strong&gt;HIPAA Security Rule readiness&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The architecture
&lt;/h2&gt;

&lt;p&gt;We didn’t reinvent everything.&lt;/p&gt;

&lt;p&gt;We stitched together solid OSS building blocks and built the workflow layer ourselves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OSCAL&lt;/strong&gt; for canonical control modeling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance Masonry&lt;/strong&gt; for control mappings&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CloudQuery&lt;/strong&gt; for asset/config ingestion&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Steampipe&lt;/strong&gt; for fast compliance queries&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prowler&lt;/strong&gt; for AWS posture checks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OPA/Rego&lt;/strong&gt; for custom control evaluation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Checkov&lt;/strong&gt; for IaC scanning&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trivy&lt;/strong&gt; for vuln/config evidence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Temporal&lt;/strong&gt; for recurring workflow orchestration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Postgres + S3&lt;/strong&gt; for metadata and evidence storage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The real value wasn’t in scanning cloud configs.&lt;br&gt;
The real value was building the missing system around it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;evidence graph&lt;/li&gt;
&lt;li&gt;point-in-time audit history&lt;/li&gt;
&lt;li&gt;remediation workflows&lt;/li&gt;
&lt;li&gt;policy acknowledgement tracking&lt;/li&gt;
&lt;li&gt;vendor workflows&lt;/li&gt;
&lt;li&gt;auditor-facing exports&lt;/li&gt;
&lt;li&gt;trust center operations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why we built it
&lt;/h2&gt;

&lt;p&gt;Because most teams don’t need more compliance theater.&lt;br&gt;
They need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fewer manual tasks&lt;/li&gt;
&lt;li&gt;better evidence provenance&lt;/li&gt;
&lt;li&gt;less duplicated work&lt;/li&gt;
&lt;li&gt;cleaner audit prep&lt;/li&gt;
&lt;li&gt;a faster way to answer customer security reviews&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We wanted something that felt like &lt;strong&gt;an engineering system&lt;/strong&gt;, not a bloated admin tax.&lt;/p&gt;

&lt;h2&gt;
  
  
  What surprised us
&lt;/h2&gt;

&lt;p&gt;The hardest part was not pulling data from APIs.&lt;/p&gt;

&lt;p&gt;The hardest part was making compliance outputs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;defensible&lt;/li&gt;
&lt;li&gt;repeatable&lt;/li&gt;
&lt;li&gt;understandable&lt;/li&gt;
&lt;li&gt;useful to humans who aren’t security engineers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The scanners are the easy part.&lt;br&gt;
The workflow and audit trail are the product.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to get started
&lt;/h2&gt;

&lt;p&gt;Getting started with &lt;strong&gt;TrustOS&lt;/strong&gt; is simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Clone the repo
&lt;code&gt;git clone https://github.com/Backboard-io/TrustOS.git&lt;/code&gt;
copy .env.example to .env and fill in your backboard API key (see my other post about how frictionless it is to sign up for backboard.io)&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Start the app&lt;br&gt;&lt;br&gt;
&lt;code&gt;./start.sh&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open TrustOS&lt;br&gt;&lt;br&gt;
Navigate to &lt;code&gt;http://localhost:8000&lt;/code&gt;&lt;br&gt;&lt;br&gt;
Or deploy the container/image anywhere you want.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create your project&lt;br&gt;&lt;br&gt;
Set up a new compliance project and select the control frameworks you want to manage.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Upload your evidence&lt;br&gt;&lt;br&gt;
Load policies, reports, screenshots, training records, vendor documents, and other audit artifacts into the platform.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create an auditor workspace&lt;br&gt;&lt;br&gt;
Generate a dedicated workspace for your auditor so they can review controls, evidence, and audit-ready materials in one place.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;A lot of modern compliance software is really just:&lt;br&gt;
&lt;strong&gt;connectors + rules + evidence storage + workflow glue&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That doesn’t mean it’s trivial.&lt;br&gt;
It does mean you might not need to keep paying forever for something your own stack can increasingly handle.&lt;/p&gt;

&lt;p&gt;Sometimes the best way to cut compliance cost is to stop buying compliance theater and start building compliance infrastructure.&lt;/p&gt;

</description>
      <category>hipaa</category>
      <category>python</category>
      <category>node</category>
      <category>backboardio</category>
    </item>
    <item>
      <title>I Built a Hosted SQLite SaaS That's Free to Use 🚀</title>
      <dc:creator>Chris King</dc:creator>
      <pubDate>Tue, 24 Mar 2026 07:00:00 +0000</pubDate>
      <link>https://forem.com/chris_king_bcff3b9663e84a/i-built-a-hosted-sqlite-saas-thats-free-to-use-17al</link>
      <guid>https://forem.com/chris_king_bcff3b9663e84a/i-built-a-hosted-sqlite-saas-thats-free-to-use-17al</guid>
      <description>&lt;h2&gt;
  
  
  Now Open to Free Signups
&lt;/h2&gt;

&lt;p&gt;SQLite is magical. S3 is cheap. I combined them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LiteLoft&lt;/strong&gt; is a hosted database service built on &lt;br&gt;
&lt;a href="https://github.com/chrisk60331/distributed-sqlite" rel="noopener noreferrer"&gt;distributed-sqlite&lt;/a&gt; &lt;br&gt;
— SQLite backed by S3, with a full provisioning layer, &lt;br&gt;
auth, and monetization baked in.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why this exists
&lt;/h2&gt;

&lt;p&gt;I was already running SQLite on S3 with Litestream for a &lt;br&gt;
production app. Then I built &lt;code&gt;distributed-sqlite&lt;/code&gt; — a &lt;br&gt;
SQLAlchemy dialect that treats S3 as the storage layer &lt;br&gt;
with concurrent write support. &lt;/p&gt;

&lt;p&gt;The next logical step? Host it.&lt;/p&gt;
&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Your DB lives in S3 as SQLite files + manifests&lt;/li&gt;
&lt;li&gt;We issue short-lived STS credentials scoped to your 
tenant prefix — zero standing IAM access, ever&lt;/li&gt;
&lt;li&gt;Connect with one line of Python via our client SDK
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;api_base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;BASE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;engine&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;engine&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;begin&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="nf"&gt;text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CREATE TABLE IF NOT EXISTS hello (id INTEGER PRIMARY KEY, msg TEXT)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  The Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;distributed-sqlite&lt;/code&gt; — S3-backed SQLAlchemy dialect&lt;/li&gt;
&lt;li&gt;AWS STS AssumeRole — per-tenant isolated creds&lt;/li&gt;
&lt;li&gt;App Runner — lightweight provisioning layer&lt;/li&gt;
&lt;li&gt;S3 — the actual database storage&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Two Ways to Use It
&lt;/h2&gt;
&lt;h3&gt;
  
  
  ☁️ Use Our Cloud (Free Tier Available)
&lt;/h3&gt;

&lt;p&gt;Sign up → get a DB → connect. Done.&lt;/p&gt;

&lt;p&gt;👉 liteloft.dev&lt;/p&gt;
&lt;h3&gt;
  
  
  🛠️ BYO Bucket — Self Host in Your AWS Account
&lt;/h3&gt;

&lt;p&gt;One-click CloudFormation deploy. Your data never &lt;br&gt;
leaves your account.&lt;/p&gt;

&lt;p&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr2ghcs7c9kfqqlnbap7j.png" alt="Launch Stack" width="144" height="27"&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Server (self-host):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;db-host-api
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 &lt;a href="https://pypi.org/project/db-host-api" rel="noopener noreferrer"&gt;pypi.org/project/db-host-api&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Client:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;db-host-client
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 &lt;a href="https://pypi.org/project/db-host-client" rel="noopener noreferrer"&gt;pypi.org/project/db-host-client&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Open Source
&lt;/h2&gt;

&lt;p&gt;MIT licensed. Contributions welcome.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/chrisk60331/distributed-sqlite-host/" rel="noopener noreferrer"&gt;github.com/chrisk60331/distributed-sqlite-host&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🆓 &lt;strong&gt;Free signups open now.&lt;/strong&gt; No credit card. No infra. &lt;br&gt;
Just a DB that lives in the cloud and costs almost &lt;br&gt;
nothing to run.&lt;/p&gt;

&lt;p&gt;Drop a comment if you have questions or want to &lt;br&gt;
collaborate. Building in public — follow along. 🔷&lt;/p&gt;

&lt;h1&gt;
  
  
  opensource #sqlite #aws #database #python #buildinpublic
&lt;/h1&gt;

&lt;h1&gt;
  
  
  webdev #cloudcomputing
&lt;/h1&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Why I Built a Distributed SQLite on S3 (And Why You Might Care)</title>
      <dc:creator>Chris King</dc:creator>
      <pubDate>Mon, 23 Mar 2026 07:00:00 +0000</pubDate>
      <link>https://forem.com/chris_king_bcff3b9663e84a/why-i-built-a-distributed-sqlite-on-s3-and-why-you-might-care-3h9h</link>
      <guid>https://forem.com/chris_king_bcff3b9663e84a/why-i-built-a-distributed-sqlite-on-s3-and-why-you-might-care-3h9h</guid>
      <description>&lt;p&gt;If you've ever deployed on AWS Lambda or App Runner, you know the pain:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You need backend storage, but RDS is overkill.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;RDS is great. It's also $30–$100/month minimum before you write a single query. For small apps, side projects, or cost-sensitive workloads, that's a hard pill to swallow.&lt;/p&gt;

&lt;p&gt;So you look at the alternatives.&lt;/p&gt;

&lt;h2&gt;
  
  
  The obvious candidates
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;DynamoDB?&lt;/strong&gt; Great, until your access patterns don't fit and you're fighting it constantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SQLite?&lt;/strong&gt; Perfect size. Except Lambda and App Runner are ephemeral. No persistent local disk. Dead on arrival.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mount S3 directly?&lt;/strong&gt; Tools like Mountpoint-S3 exist, but SQLite on a mounted S3 bucket only supports a single writer. The moment you have more than one container, you're in trouble.&lt;/p&gt;

&lt;p&gt;So what do you do?&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;I wanted SQLite. I wanted S3. I wanted multiple App Runner instances or Lambda functions to be able to write concurrently without corrupting each other.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;&lt;code&gt;distributed-sqlite&lt;/code&gt;&lt;/strong&gt;: a Python library that lets multiple ephemeral compute instances read and write a SQLite database stored on S3, with conflict detection and automatic retry for safe concurrent writes.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;The core idea is optimistic concurrency over S3 object versioning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;each writer reads the current database state from S3&lt;/li&gt;
&lt;li&gt;writes are attempted locally&lt;/li&gt;
&lt;li&gt;before committing back to S3, the writer checks whether the state changed underneath it&lt;/li&gt;
&lt;li&gt;if it did, the conflict is detected and handled&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For &lt;strong&gt;INSERT-only overlaps&lt;/strong&gt; — the most common case in typical web app workloads — instead of raising a &lt;code&gt;ConflictError&lt;/code&gt;, the writer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;rebases on the latest state&lt;/li&gt;
&lt;li&gt;retries the transaction&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Both workers converge to identical final state. No data loss. No conflict errors surfaced to your app.&lt;/p&gt;

&lt;h2&gt;
  
  
  I tested it
&lt;/h2&gt;

&lt;p&gt;Two frontend web servers. Concurrent writes. Both converged to identical state every time.&lt;/p&gt;

&lt;p&gt;That was the moment it stopped feeling like a hack and started feeling like a real primitive.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest tradeoffs
&lt;/h2&gt;

&lt;p&gt;This is not a Postgres replacement. Let's be clear about what it is and isn't:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It is:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;great for append-heavy workloads&lt;/li&gt;
&lt;li&gt;great for low-to-medium write frequency&lt;/li&gt;
&lt;li&gt;great for Lambda/App Runner/any ephemeral compute&lt;/li&gt;
&lt;li&gt;operationally near-zero — just S3&lt;/li&gt;
&lt;li&gt;cheap. Like, &lt;em&gt;really&lt;/em&gt; cheap.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;It is not:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;globally serializable distributed SQL&lt;/li&gt;
&lt;li&gt;safe for arbitrary concurrent UPDATE/DELETE without care&lt;/li&gt;
&lt;li&gt;a replacement for RDS on high-write, complex-transaction workloads&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Who this is for
&lt;/h2&gt;

&lt;p&gt;If you're building:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a side project or indie app on Lambda/App Runner&lt;/li&gt;
&lt;li&gt;an internal tool that doesn't justify RDS costs&lt;/li&gt;
&lt;li&gt;an edge service with append-heavy writes&lt;/li&gt;
&lt;li&gt;anything where "just use Postgres" is financially absurd&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;...this might be exactly what you need.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;distributed-sqlite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PyPI: &lt;a href="https://pypi.org/project/distributed-sqlite/" rel="noopener noreferrer"&gt;https://pypi.org/project/distributed-sqlite/&lt;/a&gt;&lt;br&gt;
Github: &lt;a href="https://github.com/chrisk60331/distributed-sqllite" rel="noopener noreferrer"&gt;https://github.com/chrisk60331/distributed-sqllite&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>opensource</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
