<?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>DEV Community: Chris King</title>
    <description>The latest articles on DEV Community by Chris King (@chris_king_bcff3b9663e84a).</description>
    <link>https://dev.to/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>DEV Community: Chris King</title>
      <link>https://dev.to/chris_king_bcff3b9663e84a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chris_king_bcff3b9663e84a"/>
    <language>en</language>
    <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://dev.to/chris_king_bcff3b9663e84a/i-open-sourced-my-aws-fork-of-uptime-kuma-4p68</link>
      <guid>https://dev.to/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://dev.to/chris_king_bcff3b9663e84a/i-forked-cluely-and-pushed-it-further-25o5</link>
      <guid>https://dev.to/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://dev.to/chris_king_bcff3b9663e84a/i-open-sourced-nash-4ih</link>
      <guid>https://dev.to/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://dev.to/chris_king_bcff3b9663e84a/i-open-sourced-closernotes-4dof</link>
      <guid>https://dev.to/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://dev.to/chris_king_bcff3b9663e84a/i-open-sourced-topicminer-4nnd</link>
      <guid>https://dev.to/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://dev.to/chris_king_bcff3b9663e84a/meet-onni-6ok</link>
      <guid>https://dev.to/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://dev.to/chris_king_bcff3b9663e84a/backboardio-continues-to-astound-me-what-a-journey-memory-tiers-customizable-memory-10go</link>
      <guid>https://dev.to/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://dev.to/chris_king_bcff3b9663e84a/openokara-3da1</link>
      <guid>https://dev.to/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://dev.to/chris_king_bcff3b9663e84a/open-sourcing-trustos-20o6</link>
      <guid>https://dev.to/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://dev.to/chris_king_bcff3b9663e84a/i-built-a-hosted-sqlite-saas-thats-free-to-use-17al</link>
      <guid>https://dev.to/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://dev.to/chris_king_bcff3b9663e84a/why-i-built-a-distributed-sqlite-on-s3-and-why-you-might-care-3h9h</link>
      <guid>https://dev.to/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>
    <item>
      <title>I Open-Sourced VideoAnalyzer: Turn Raw Video Into Structured AI Context</title>
      <dc:creator>Chris King</dc:creator>
      <pubDate>Fri, 20 Mar 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/chris_king_bcff3b9663e84a/i-open-sourced-videoanalyzer-turn-raw-video-into-structured-ai-context-4l9i</link>
      <guid>https://dev.to/chris_king_bcff3b9663e84a/i-open-sourced-videoanalyzer-turn-raw-video-into-structured-ai-context-4l9i</guid>
      <description>&lt;p&gt;Most “video AI” demos stop at transcription.&lt;/p&gt;

&lt;p&gt;That’s useful, but it leaves a lot of signal on the table.&lt;/p&gt;

&lt;p&gt;I wanted a pipeline that could take a video upload and automatically extract &lt;strong&gt;multi-modal context&lt;/strong&gt;: transcript, scenes, objects, audio segments, OCR text, and technical metadata — then merge it into one structured output that another AI system can actually use.&lt;/p&gt;

&lt;p&gt;So I open-sourced &lt;strong&gt;VideoAnalyzer&lt;/strong&gt;:&lt;/p&gt;

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

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

&lt;p&gt;Upload a video → everything below runs automatically in the background:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;What happens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Metadata probe&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Duration, resolution, FPS via ffprobe&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Whisper transcription&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Full VTT transcript with timestamps using faster-whisper&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;YOLO object detection&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Frame-by-frame detection at 1 FPS with YOLOv8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Scene segmentation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cut detection + per-scene brightness, motion, color palette&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Audio classification&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Speech / silence / music+noise segmentation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OCR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;On-screen text extracted from scene keyframes using EasyOCR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Context assembly&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Everything merged into a structured document for the AI&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

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

&lt;p&gt;If you want LLMs or downstream systems to work well with video, a transcript alone usually isn’t enough.&lt;/p&gt;

&lt;p&gt;A better representation includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;What was said&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What appeared on screen&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What text was visible&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When scenes changed&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What the audio environment was doing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What the source video technically looked like&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That richer context opens the door for better:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;video search&lt;/li&gt;
&lt;li&gt;summarization&lt;/li&gt;
&lt;li&gt;highlight extraction&lt;/li&gt;
&lt;li&gt;compliance review&lt;/li&gt;
&lt;li&gt;media intelligence&lt;/li&gt;
&lt;li&gt;RAG pipelines over video&lt;/li&gt;
&lt;li&gt;agent workflows that need grounded visual/audio evidence&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pipeline overview
&lt;/h2&gt;

&lt;p&gt;The basic idea is simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A user uploads a video&lt;/li&gt;
&lt;li&gt;Background jobs process it automatically&lt;/li&gt;
&lt;li&gt;Each stage extracts a different layer of signal&lt;/li&gt;
&lt;li&gt;The results are merged into a structured AI-friendly representation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Instead of treating video as just text, VideoAnalyzer treats it as a &lt;strong&gt;multi-modal document&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;Current pipeline includes tools like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ffprobe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;faster-whisper&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;YOLOv8&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;EasyOCR&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And additional processing for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;scene detection&lt;/li&gt;
&lt;li&gt;brightness/motion analysis&lt;/li&gt;
&lt;li&gt;color palette extraction&lt;/li&gt;
&lt;li&gt;audio segmentation&lt;/li&gt;
&lt;li&gt;structured context generation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Example use cases
&lt;/h2&gt;

&lt;p&gt;A few obvious ones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Searchable video archives&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI agents that answer questions about video&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatic tagging/indexing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Detecting visual entities across time&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extracting on-screen text for knowledge pipelines&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Building structured context for summarization and QA&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 kind of tooling is useful beyond one project.&lt;/p&gt;

&lt;p&gt;There’s a growing need for systems that can convert unstructured media into something AI can reason over reliably. I’d rather put the foundation out in the open so other builders can use it, improve it, or adapt it to their own stack.&lt;/p&gt;

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

&lt;p&gt;If you want to check it out, here it is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/chrisk60331/VideoAnalyzer" rel="noopener noreferrer"&gt;https://github.com/chrisk60331/VideoAnalyzer&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If it’s useful, feel free to star it, open issues, or contribute.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>python</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
