<?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: southy404</title>
    <description>The latest articles on DEV Community by southy404 (@southy404).</description>
    <link>https://dev.to/southy404</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%2F3809619%2F63ef688c-6187-4618-a511-435741152dcb.png</url>
      <title>DEV Community: southy404</title>
      <link>https://dev.to/southy404</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/southy404"/>
    <language>en</language>
    <item>
      <title>Mindscape: A Live Cognitive Graph for Hermes Agent</title>
      <dc:creator>southy404</dc:creator>
      <pubDate>Wed, 27 May 2026 13:10:22 +0000</pubDate>
      <link>https://dev.to/southy404/mindscape-a-live-cognitive-graph-for-hermes-agent-2b0h</link>
      <guid>https://dev.to/southy404/mindscape-a-live-cognitive-graph-for-hermes-agent-2b0h</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hermes-agent-2026-05-15"&gt;Hermes Agent Challenge&lt;/a&gt;: Build With Hermes Agent&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;Mindscape&lt;/strong&gt;, a Hermes Agent plugin that turns agent activity into a live, visual cognitive graph.&lt;/p&gt;

&lt;p&gt;The idea started from a simple fascination: Hermes Agent can plan, use tools, reason across multiple steps, and build context over time — but most of that process is normally hidden inside logs, chat messages, or terminal output.&lt;/p&gt;

&lt;p&gt;I wanted to see the agent’s thinking structure visually.&lt;/p&gt;

&lt;p&gt;So I built a Mindscape view for Hermes: an Obsidian-like graph where sessions, tool calls, reasoning snapshots, decisions, memory nodes, errors, and project architecture can become connected nodes.&lt;/p&gt;

&lt;p&gt;Instead of treating an agent run as a flat chat history, Mindscape treats it as a growing map of cognition.&lt;/p&gt;

&lt;p&gt;The plugin adds a new dashboard section inside Hermes where you can explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a live graph view&lt;/li&gt;
&lt;li&gt;a timeline of cognitive events&lt;/li&gt;
&lt;li&gt;clustered concepts and tags&lt;/li&gt;
&lt;li&gt;searchable nodes&lt;/li&gt;
&lt;li&gt;an inspector panel with metadata, relations, timestamps, and node type&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mindscape is meant to answer questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What did the agent do?&lt;/li&gt;
&lt;li&gt;Which tools were involved?&lt;/li&gt;
&lt;li&gt;What decisions were made?&lt;/li&gt;
&lt;li&gt;Which concepts are connected?&lt;/li&gt;
&lt;li&gt;What reasoning or errors happened during a session?&lt;/li&gt;
&lt;li&gt;How does a project or task evolve over time?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is both a visualization tool and a lightweight graph memory layer for Hermes Agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Here are a few screenshots from the current version.&lt;/p&gt;

&lt;h3&gt;
  
  
  Graph View
&lt;/h3&gt;

&lt;p&gt;&lt;a href="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%2Frn3tav648xjixytmp4zm.png" class="article-body-image-wrapper"&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%2Frn3tav648xjixytmp4zm.png" alt="Mindscape Graph" width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The graph view shows concepts as connected nodes. Different node types use different colors, and selecting a node opens the inspector on the right.&lt;/p&gt;

&lt;p&gt;Example node types include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reasoning&lt;/li&gt;
&lt;li&gt;tool call&lt;/li&gt;
&lt;li&gt;decision&lt;/li&gt;
&lt;li&gt;session&lt;/li&gt;
&lt;li&gt;memory&lt;/li&gt;
&lt;li&gt;error&lt;/li&gt;
&lt;li&gt;manual nodes&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Timeline View
&lt;/h3&gt;

&lt;p&gt;&lt;a href="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%2Fuhwuv1gver5x5y9th3dr.png" class="article-body-image-wrapper"&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%2Fuhwuv1gver5x5y9th3dr.png" alt="Mindscape Timeline" width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The timeline shows the same graph as a chronological event stream. This makes it easier to understand what happened first, what came later, and how a session evolved.&lt;/p&gt;

&lt;h3&gt;
  
  
  Inspector
&lt;/h3&gt;

&lt;p&gt;When a node is selected, Mindscape shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;title&lt;/li&gt;
&lt;li&gt;type&lt;/li&gt;
&lt;li&gt;content&lt;/li&gt;
&lt;li&gt;tags&lt;/li&gt;
&lt;li&gt;metadata&lt;/li&gt;
&lt;li&gt;timestamps&lt;/li&gt;
&lt;li&gt;relations to other nodes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is useful when debugging an agent workflow or when trying to understand why a particular decision or tool call happened.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;GitHub repository:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/southy404/hermes-mindscape" rel="noopener noreferrer"&gt;https://github.com/southy404/hermes-mindscape&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Install directly from GitHub:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hermes plugins &lt;span class="nb"&gt;install &lt;/span&gt;southy404/hermes-mindscape &lt;span class="nt"&gt;--enable&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then start the Hermes dashboard:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hermes dashboard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open the &lt;strong&gt;Mindscape&lt;/strong&gt; tab in the dashboard sidebar.&lt;/p&gt;

&lt;p&gt;Mindscape also includes an optional example graph for quick testing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"http://127.0.0.1:9119/api/plugins/mindscape/seed-demo?force=true"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The plugin works without the demo seed. The seed is only there to help users quickly see what the graph looks like.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hermes Agent&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hermes plugin system&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Python&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FastAPI-style plugin API routes&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hermes lifecycle hooks&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hermes dashboard plugin extension&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vanilla JavaScript&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SVG force-directed graph rendering&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Local persistent JSON graph storage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WebSocket-ready update flow&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The plugin is structured as a standard Hermes plugin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hermes-mindscape/
├── plugin.yaml
├── manifest.json
├── __init__.py
├── README.md
├── dashboard/
│   ├── plugin_api.py
│   └── dist/
│       ├── index.js
│       └── style.css
├── graph/
│   ├── store.py
│   └── events.py
└── hooks/
    └── graph_hooks.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How I Used Hermes Agent
&lt;/h2&gt;

&lt;p&gt;Hermes Agent is not just used as a theme or wrapper here. Mindscape is built around Hermes itself.&lt;/p&gt;

&lt;p&gt;The plugin connects to Hermes in three main ways:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Hermes as the agentic source
&lt;/h3&gt;

&lt;p&gt;Mindscape is designed around the kind of work Hermes does: planning, tool use, multi-step reasoning, session management, and project execution.&lt;/p&gt;

&lt;p&gt;Instead of only showing the final answer, Mindscape tries to preserve the structure around the agent’s process.&lt;/p&gt;

&lt;p&gt;A tool call can become a node.&lt;br&gt;
A decision can become a node.&lt;br&gt;
A reasoning snapshot can become a node.&lt;br&gt;
A session can become a node.&lt;br&gt;
An error can become a node.&lt;br&gt;
A relation between two ideas can become an edge.&lt;/p&gt;

&lt;p&gt;That makes the agent’s work easier to inspect after the fact.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Hermes plugin hooks
&lt;/h3&gt;

&lt;p&gt;Mindscape uses Hermes plugin hooks to observe agent activity defensively.&lt;/p&gt;

&lt;p&gt;The goal is not to interrupt Hermes or change its behavior. The goal is to listen, capture useful events, and convert them into graph data.&lt;/p&gt;

&lt;p&gt;For example, hooks can capture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;session start&lt;/li&gt;
&lt;li&gt;tool calls&lt;/li&gt;
&lt;li&gt;reasoning snapshots&lt;/li&gt;
&lt;li&gt;subagent events&lt;/li&gt;
&lt;li&gt;errors or failed actions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those events are normalized into Mindscape nodes with metadata, tags, timestamps, and relations.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Hermes Dashboard integration
&lt;/h3&gt;

&lt;p&gt;The project also extends the Hermes dashboard with a full custom UI.&lt;/p&gt;

&lt;p&gt;I wanted the plugin to feel native inside Hermes instead of being a separate external app. The dashboard plugin provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;graph navigation&lt;/li&gt;
&lt;li&gt;zoom controls&lt;/li&gt;
&lt;li&gt;node creation&lt;/li&gt;
&lt;li&gt;editing and deletion&lt;/li&gt;
&lt;li&gt;timeline view&lt;/li&gt;
&lt;li&gt;cluster view&lt;/li&gt;
&lt;li&gt;search&lt;/li&gt;
&lt;li&gt;inspector panel&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes Mindscape useful not only as a backend logging system but as an interactive visual workspace.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why I Built It
&lt;/h2&gt;

&lt;p&gt;I have always liked visual knowledge tools like mind maps, graph views, and Obsidian-style note networks.&lt;/p&gt;

&lt;p&gt;When working with AI agents, I often found myself wondering:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What would it look like if the agent’s reasoning and tool usage became a living map?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Hermes Agent was a good fit for this idea because it already has the important pieces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tool use&lt;/li&gt;
&lt;li&gt;sessions&lt;/li&gt;
&lt;li&gt;plugins&lt;/li&gt;
&lt;li&gt;hooks&lt;/li&gt;
&lt;li&gt;dashboard extensions&lt;/li&gt;
&lt;li&gt;local-first execution&lt;/li&gt;
&lt;li&gt;multi-step agent workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mindscape connects those pieces into a visual layer.&lt;/p&gt;

&lt;p&gt;The long-term idea is that agents should not only produce answers — they should leave behind inspectable cognitive traces.&lt;/p&gt;
&lt;h2&gt;
  
  
  What Makes It Useful
&lt;/h2&gt;

&lt;p&gt;Mindscape can help with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;debugging agent workflows&lt;/li&gt;
&lt;li&gt;understanding which tools were used&lt;/li&gt;
&lt;li&gt;reviewing reasoning paths&lt;/li&gt;
&lt;li&gt;visualizing project architecture&lt;/li&gt;
&lt;li&gt;tracking decisions over time&lt;/li&gt;
&lt;li&gt;exploring agent memory&lt;/li&gt;
&lt;li&gt;showing non-technical users what an agent is doing&lt;/li&gt;
&lt;li&gt;turning hidden logs into visible structure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, if Hermes works on a complex project, Mindscape can show the related components, decisions, tools, errors, and sessions as a graph instead of scattered text.&lt;/p&gt;

&lt;p&gt;That makes the agent feel less like a black box.&lt;/p&gt;
&lt;h2&gt;
  
  
  What Was Challenging
&lt;/h2&gt;

&lt;p&gt;The hardest part was not only building the graph.&lt;/p&gt;

&lt;p&gt;The hard part was making it feel like a real Hermes plugin:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;installable from GitHub&lt;/li&gt;
&lt;li&gt;visible in the Hermes dashboard&lt;/li&gt;
&lt;li&gt;safe to load&lt;/li&gt;
&lt;li&gt;persistent across sessions&lt;/li&gt;
&lt;li&gt;not dependent on personal demo data&lt;/li&gt;
&lt;li&gt;defensive when hooks are unavailable&lt;/li&gt;
&lt;li&gt;usable even with an empty graph&lt;/li&gt;
&lt;li&gt;clean enough for public release&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also had to make sure the plugin did not require manual local copying. The final version is structured so it can be installed directly through Hermes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hermes plugins &lt;span class="nb"&gt;install &lt;/span&gt;southy404/hermes-mindscape &lt;span class="nt"&gt;--enable&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;This project made me appreciate Hermes Agent’s plugin architecture much more.&lt;/p&gt;

&lt;p&gt;The plugin system makes it possible to build something that is not just a tool, but a new interface for understanding agent behavior.&lt;/p&gt;

&lt;p&gt;I also learned that visualizing agent activity changes how you think about agents.&lt;/p&gt;

&lt;p&gt;A chat transcript is linear.&lt;br&gt;
A log file is technical.&lt;br&gt;
A graph is explorable.&lt;/p&gt;

&lt;p&gt;That makes a big difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  Future Ideas
&lt;/h2&gt;

&lt;p&gt;I would like to continue improving Mindscape with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;richer live WebSocket updates&lt;/li&gt;
&lt;li&gt;better automatic semantic linking&lt;/li&gt;
&lt;li&gt;graph snapshots&lt;/li&gt;
&lt;li&gt;reasoning replay&lt;/li&gt;
&lt;li&gt;import/export&lt;/li&gt;
&lt;li&gt;SQLite storage&lt;/li&gt;
&lt;li&gt;3D graph mode&lt;/li&gt;
&lt;li&gt;multi-agent views&lt;/li&gt;
&lt;li&gt;memory confidence scoring&lt;/li&gt;
&lt;li&gt;export to Markdown or Obsidian&lt;/li&gt;
&lt;li&gt;automatic project architecture mapping&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The bigger vision is a Hermes-native cognitive map that grows as the agent works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Mindscape is my attempt to make agentic behavior visible.&lt;/p&gt;

&lt;p&gt;Hermes Agent can already plan, use tools, and reason through tasks. Mindscape adds a visual layer on top of that — a way to inspect the shape of the agent’s work.&lt;/p&gt;

&lt;p&gt;For me, the exciting part is not only the graph itself.&lt;/p&gt;

&lt;p&gt;It is the idea that open source agents should be understandable, inspectable, and explorable.&lt;/p&gt;

&lt;p&gt;That is what Mindscape tries to make possible.&lt;/p&gt;

</description>
      <category>hermesagentchallenge</category>
      <category>devchallenge</category>
      <category>agents</category>
    </item>
    <item>
      <title>Google I/O 2026 Made the Search Box Feel Like an Agent Layer</title>
      <dc:creator>southy404</dc:creator>
      <pubDate>Wed, 20 May 2026 12:21:55 +0000</pubDate>
      <link>https://dev.to/southy404/google-io-2026-made-the-search-box-feel-like-an-agent-layer-47i6</link>
      <guid>https://dev.to/southy404/google-io-2026-made-the-search-box-feel-like-an-agent-layer-47i6</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-io-writing-2026-05-19"&gt;Google I/O Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Google I/O 2026 Made the Search Box Feel Like an Agent Layer
&lt;/h2&gt;

&lt;p&gt;A few weeks ago, after Google Cloud NEXT ’26, I wrote that the agentic shift was already rewriting how we build software.&lt;/p&gt;

&lt;p&gt;At Google I/O 2026, that same idea clicked again — but from a different angle. This time, it was not mainly about cloud infrastructure, enterprise workflows, or multi-agent orchestration platforms. It was not only about a new Gemini model, a redesigned app, or another polished demo of AI doing something impressive on stage.&lt;/p&gt;

&lt;p&gt;It was the search box.&lt;/p&gt;

&lt;p&gt;That sounds almost too simple, but I think that is exactly why it matters. For more than 25 years, the Google search box has been one of the most stable interfaces in computing: type a few words, get a list of links, open pages, and do the work yourself.&lt;/p&gt;

&lt;p&gt;At I/O 2026, that familiar box started to look like something else.&lt;/p&gt;

&lt;p&gt;Not just an input field. Not just a gateway to links. But a place where users can express intent, attach context, generate interfaces, start agents, monitor information, and continue tasks over time.&lt;/p&gt;

&lt;p&gt;Google Cloud NEXT made agents feel like infrastructure.&lt;/p&gt;

&lt;p&gt;Google I/O made them feel like the interface.&lt;/p&gt;

&lt;p&gt;And honestly, that might be the bigger shift.&lt;/p&gt;




&lt;h2&gt;
  
  
  From Agent Infrastructure to Everyday Interface
&lt;/h2&gt;

&lt;p&gt;What stood out to me at Google Cloud NEXT was that AI was no longer presented as just a smarter API call. It was becoming a layer that could operate across tools, keep context, coordinate work, and continue over time. As a developer, that changed how I looked at software.&lt;/p&gt;

&lt;p&gt;Instead of thinking only in endpoints, requests, and responses, we suddenly had to think about responsibilities, permissions, state, handoffs, and behavior. The system was no longer just reacting to input. It was starting to act, coordinate, and evolve.&lt;/p&gt;

&lt;p&gt;But at NEXT, that shift still felt mostly like something happening inside platforms: cloud tools, enterprise workflows, agent orchestration systems, internal automation, and developer environments.&lt;/p&gt;

&lt;p&gt;Google I/O 2026 made that same idea feel much closer to everyday users.&lt;/p&gt;

&lt;p&gt;Search, Gemini, Gmail, Chrome, Android, AI Studio, developer tools, and even the browser itself are becoming surfaces where agentic behavior can show up. That is a different kind of shift, because it moves agents from the backend of software into the place where people already begin their digital lives.&lt;/p&gt;

&lt;p&gt;If Search can start tasks, generate custom interfaces, monitor information, reason over personal context, and connect into tools, then Search is no longer just a page of results.&lt;/p&gt;

&lt;p&gt;It starts to look like a task layer.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Search Box Is No Longer Just a Search Box
&lt;/h2&gt;

&lt;p&gt;For a long time, the search box trained us to compress what we wanted into keywords.&lt;/p&gt;

&lt;p&gt;We did not write full thoughts. We did not attach messy context. We did not explain our situation in detail. We learned to search in fragments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;best laptop 2026&lt;/li&gt;
&lt;li&gt;weather Berlin&lt;/li&gt;
&lt;li&gt;React form validation&lt;/li&gt;
&lt;li&gt;cheap flights Tokyo&lt;/li&gt;
&lt;li&gt;coffee machine red eco friendly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That was the rhythm of search. You compressed your intent into the shortest useful phrase, Google returned links, and then you did the real work yourself.&lt;/p&gt;

&lt;p&gt;The new direction feels different.&lt;/p&gt;

&lt;p&gt;The search box is becoming more like a command surface: a place where a user can bring a longer question, a document, an image, a video, a browser tab, or a more complex goal. Instead of only returning links, the system can answer, visualize, summarize, compare, generate a custom UI, or hand work off to an agent.&lt;/p&gt;

&lt;p&gt;That is subtle, but huge.&lt;/p&gt;

&lt;p&gt;Because once the interface can understand long-running intent, accept different kinds of context, generate interactive results, and let agents continue work over time, it becomes less like a search engine and more like a lightweight operating layer above the web.&lt;/p&gt;

&lt;p&gt;Not an operating system in the classic sense.&lt;/p&gt;

&lt;p&gt;But an operating layer for intent.&lt;/p&gt;

&lt;p&gt;The user expresses what they want, and the system figures out what information, tools, apps, or agents are needed to move forward.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/p6EBMG8OEBI"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Source: Google — “What’s New in Search”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What stood out to me in that Search session was not only the AI answer layer. It was the way Search is being redesigned around longer questions, richer context, follow-up behavior, generated interfaces, and tasks that can continue beyond a single query.&lt;/p&gt;

&lt;p&gt;That is the part that makes it feel less like a search feature and more like an agent interface.&lt;/p&gt;




&lt;h2&gt;
  
  
  This Did Not Start in 2026
&lt;/h2&gt;

&lt;p&gt;What makes this shift even more interesting is that it did not come out of nowhere.&lt;/p&gt;

&lt;p&gt;Back in 2023, Google introduced the Search Generative Experience. At that point, the idea was still relatively easy to understand: AI could summarize answers directly inside Search and let users ask follow-up questions. That was already a major change, but it still felt like search with an AI layer on top.&lt;/p&gt;

&lt;p&gt;You typed a question. Google generated an answer. Links still sat nearby as supporting sources.&lt;/p&gt;

&lt;p&gt;The risk was already visible back then: if Google starts summarizing more of the web directly, users may rely more on Google itself instead of visiting the sources behind the answer. It raised questions about publishers, source visibility, hallucinations, ads, and how much trust people should place in an AI-generated answer.&lt;/p&gt;

&lt;p&gt;But in 2026, the direction feels bigger than summarization.&lt;/p&gt;

&lt;p&gt;The search box is not just becoming a place where AI writes answers. It is becoming a place where users can bring files, images, videos, browser tabs, and long-running intent. That moves Search from answering questions toward operating on tasks.&lt;/p&gt;

&lt;p&gt;And that changes the meaning of Search.&lt;/p&gt;




&lt;h2&gt;
  
  
  From Keywords to Intent
&lt;/h2&gt;

&lt;p&gt;The old search box asked users to compress intent into keywords.&lt;/p&gt;

&lt;p&gt;The new one asks them to express intent more fully — and then lets AI systems decide what should happen next.&lt;/p&gt;

&lt;p&gt;That is a massive change in interface design. The user is no longer only searching for a page. They may be starting a workflow, asking for a comparison, generating a custom UI, creating a tracker, delegating a task, or asking an agent to keep watching something in the background.&lt;/p&gt;

&lt;p&gt;That means the search box is no longer just an input field.&lt;/p&gt;

&lt;p&gt;It becomes a boundary between human intent and machine action.&lt;/p&gt;

&lt;p&gt;And boundaries like that need careful design.&lt;/p&gt;

&lt;p&gt;This is where the shift becomes more serious. A search query used to be relatively low-risk. If the result was bad, you clicked something else. But once search becomes a place where agents can act, monitor, remember, and coordinate across tools, the design problem becomes much deeper.&lt;/p&gt;

&lt;p&gt;The question is no longer only:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Did Search find the right information?&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;blockquote&gt;
&lt;p&gt;Did the system understand the intent correctly?&lt;/p&gt;

&lt;p&gt;Did it use the right context?&lt;/p&gt;

&lt;p&gt;Did it act within the right permissions?&lt;/p&gt;

&lt;p&gt;Can the user understand what happened?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a very different product problem.&lt;/p&gt;




&lt;h2&gt;
  
  
  Developers Are Not Just Building Apps for Humans Anymore
&lt;/h2&gt;

&lt;p&gt;This is where the developer impact gets interesting.&lt;/p&gt;

&lt;p&gt;For a long time, we built software mainly for human users. We designed buttons, forms, APIs, pages, dashboards, onboarding flows, and settings screens. Even when we built APIs, we usually imagined another deterministic system calling them.&lt;/p&gt;

&lt;p&gt;In an agentic environment, that changes.&lt;/p&gt;

&lt;p&gt;We also need to build software that agents can understand and operate reliably. That means the structure of software matters in a new way. An app is no longer only judged by how it looks to a human. It may also be judged by how clearly it exposes actions, state, permissions, and consequences to an AI system trying to help the user.&lt;/p&gt;

&lt;p&gt;Can an agent understand what actions are possible?&lt;/p&gt;

&lt;p&gt;Can it tell the difference between previewing an action and executing it?&lt;/p&gt;

&lt;p&gt;Can it call the right tool safely?&lt;/p&gt;

&lt;p&gt;Can it recover if something goes wrong?&lt;/p&gt;

&lt;p&gt;Can it explain what it did?&lt;/p&gt;

&lt;p&gt;Can it respect permissions?&lt;/p&gt;

&lt;p&gt;Can it operate without accidentally crossing a boundary?&lt;/p&gt;

&lt;p&gt;This is not only a UX problem.&lt;/p&gt;

&lt;p&gt;It is an architecture problem.&lt;/p&gt;




&lt;h2&gt;
  
  
  WebMCP Feels Like a Signal
&lt;/h2&gt;

&lt;p&gt;One announcement that stood out to me was WebMCP.&lt;/p&gt;

&lt;p&gt;The idea of exposing structured tools on the web so browser-based agents can execute tasks more reliably feels like a clear signal of where things are going. The web was built for humans clicking around, reading pages, filling forms, and interpreting visual layouts.&lt;/p&gt;

&lt;p&gt;Agents can technically click around too, but that is fragile.&lt;/p&gt;

&lt;p&gt;They can misread layouts, click the wrong thing, hallucinate state, or fail when the UI changes. A human can often recover from a confusing interface. An agent might confidently do the wrong thing.&lt;/p&gt;

&lt;p&gt;Structured tools change that. They give agents a more reliable way to interact with web apps, and that means developers may need to think about a new layer of web compatibility.&lt;/p&gt;

&lt;p&gt;Not just:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does this page work in Chrome?&lt;/li&gt;
&lt;li&gt;Does it pass accessibility checks?&lt;/li&gt;
&lt;li&gt;Is it responsive?&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Can an agent understand this?&lt;/li&gt;
&lt;li&gt;Are actions clearly exposed?&lt;/li&gt;
&lt;li&gt;Are permissions explicit?&lt;/li&gt;
&lt;li&gt;Can the system explain what happened?&lt;/li&gt;
&lt;li&gt;Can dangerous actions be separated from harmless ones?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That could become a real design constraint.&lt;/p&gt;

&lt;p&gt;And honestly, it probably should.&lt;/p&gt;




&lt;h2&gt;
  
  
  AI Studio and Antigravity Show the Other Side
&lt;/h2&gt;

&lt;p&gt;The developer tooling side is just as important.&lt;/p&gt;

&lt;p&gt;Google’s announcements around AI Studio, Antigravity, managed agents, Android CLI, and Chrome DevTools for agents point to a future where agents are not only using software. They are helping build it.&lt;/p&gt;

&lt;p&gt;That creates a strange loop.&lt;/p&gt;

&lt;p&gt;Agents help developers build apps. Those apps expose tools and structured interfaces. Other agents then use those apps. Over time, the developer is no longer just building a product for a person sitting in front of a screen.&lt;/p&gt;

&lt;p&gt;They are building part of an agent ecosystem.&lt;/p&gt;

&lt;p&gt;That means good software design becomes more than clean code and nice UI. It becomes about making systems legible, controllable, observable, and safe for both humans and agents.&lt;/p&gt;

&lt;p&gt;This also changes what “developer experience” means. It is not only about documentation, SDKs, and nice error messages anymore. It may also be about whether an agent can understand your system well enough to extend it, debug it, test it, or operate it safely.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Old Problems Did Not Go Away
&lt;/h2&gt;

&lt;p&gt;This is where my thinking connects back to my previous post.&lt;/p&gt;

&lt;p&gt;The same problems are still there.&lt;/p&gt;

&lt;p&gt;Context is still the bottleneck. Memory still changes the nature of the system. Governance is still not optional. Debugging is still becoming more about decisions than code.&lt;/p&gt;

&lt;p&gt;But at I/O, those problems moved closer to the user.&lt;/p&gt;

&lt;p&gt;If a cloud agent makes a wrong decision in a controlled enterprise workflow, that is already serious. But if a personal agent acts across Gmail, Calendar, Search, shopping, documents, browser tabs, and third-party tools, the trust problem becomes much more personal.&lt;/p&gt;

&lt;p&gt;The question is no longer only:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can the model do the task?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The question becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Should it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With which data?&lt;/p&gt;

&lt;p&gt;Under which permissions?&lt;/p&gt;

&lt;p&gt;With what audit trail?&lt;/p&gt;

&lt;p&gt;And how does the user stay in control?&lt;/p&gt;

&lt;p&gt;That is the part I think developers should pay close attention to. The more agentic systems become, the less useful it is to think only in terms of prompts and outputs. The real challenge moves into the surrounding system: context, permissions, memory, identity, traces, and recovery.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Trust Layer Becomes the Real Platform
&lt;/h2&gt;

&lt;p&gt;This is probably my biggest takeaway from Google I/O 2026.&lt;/p&gt;

&lt;p&gt;The next platform layer is not just the model.&lt;/p&gt;

&lt;p&gt;It is not just the agent runtime.&lt;/p&gt;

&lt;p&gt;It is trust.&lt;/p&gt;

&lt;p&gt;Identity, permissions, memory boundaries, audit logs, sandboxing, confirmation flows, data minimization, and clear user control will matter more and more. Because the more useful agents become, the more dangerous vague authority becomes.&lt;/p&gt;

&lt;p&gt;A chatbot that gives a bad answer is annoying.&lt;/p&gt;

&lt;p&gt;An agent that takes the wrong action is a different problem.&lt;/p&gt;

&lt;p&gt;And an always-on agent with access to personal context, tools, files, money, and communication channels is not something we can treat like a normal app feature.&lt;/p&gt;

&lt;p&gt;That needs a different level of design.&lt;/p&gt;

&lt;p&gt;It also needs a different level of humility. Autonomy is not automatically good. More access is not automatically better. A system that can do more is only useful if the user can understand it, constrain it, correct it, and trust it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where Most Teams Are Still Thinking Too Small
&lt;/h2&gt;

&lt;p&gt;A lot of teams still treat AI as something they add to an existing product.&lt;/p&gt;

&lt;p&gt;A chat window. A summarization button. A smarter search field. A content generator. Those things are useful, but they are not the full shift.&lt;/p&gt;

&lt;p&gt;The bigger change is that software itself is becoming more agentic.&lt;/p&gt;

&lt;p&gt;It acts over time. It coordinates tools. It remembers. It makes decisions. It generates interfaces. It can be delegated tasks. It can operate across products.&lt;/p&gt;

&lt;p&gt;That means the UI is no longer the whole product. Sometimes the product is the behavior behind the UI. Sometimes the user may never touch the UI directly at all.&lt;/p&gt;

&lt;p&gt;This is where I think many teams will underestimate the change. They will ask, “Where should we add AI?”&lt;/p&gt;

&lt;p&gt;But the better question might be:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What parts of our system are safe, structured, and understandable enough for an agent to operate?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question leads to very different design decisions.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Developers Should Pay Attention To
&lt;/h2&gt;

&lt;p&gt;After I/O, I think developers should pay attention to a few things.&lt;/p&gt;

&lt;p&gt;First, make your systems understandable to agents. If agents are going to operate software, vague interfaces and hidden side effects become a bigger problem.&lt;/p&gt;

&lt;p&gt;Second, treat permissions as product design, not just security configuration. Users need to understand what an agent can do, not only what data it can read.&lt;/p&gt;

&lt;p&gt;Third, build for observability. If an agent acts, there should be a trace of what it saw, what it decided, what tool it used, and what happened after.&lt;/p&gt;

&lt;p&gt;Fourth, think carefully about memory. Memory makes agents useful, but it also makes systems harder to debug and harder to trust if it is not transparent.&lt;/p&gt;

&lt;p&gt;And finally, do not confuse autonomy with usefulness. The best agent is not always the one that does the most. Sometimes the best agent is the one that knows when to ask, when to stop, and when to hand control back to the human.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Google I/O 2026 did not just show better AI features.&lt;/p&gt;

&lt;p&gt;It showed a different interface model.&lt;/p&gt;

&lt;p&gt;Not software that waits for clicks, but software that understands intent, coordinates tools, generates interfaces, and keeps working over time.&lt;/p&gt;

&lt;p&gt;At NEXT, agents looked like infrastructure.&lt;/p&gt;

&lt;p&gt;At I/O, they started looking like the interface.&lt;/p&gt;

&lt;p&gt;That is a big deal.&lt;/p&gt;

&lt;p&gt;Because the future may not be:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AI inside every app.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It may be:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Agents operating across every app.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And if that is where things are going, developers have a new responsibility. We are not just designing screens anymore. We are designing behavior, trust, and control in systems that can act.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>googleiochallenge</category>
    </item>
    <item>
      <title>Sketch Judge: Draw Fast, Match Right, Let Gemma 4 Decide</title>
      <dc:creator>southy404</dc:creator>
      <pubDate>Tue, 19 May 2026 15:59:45 +0000</pubDate>
      <link>https://dev.to/southy404/sketch-judge-draw-fast-match-right-let-gemma-4-decide-42mb</link>
      <guid>https://dev.to/southy404/sketch-judge-draw-fast-match-right-let-gemma-4-decide-42mb</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-gemma-2026-05-06"&gt;Gemma 4 Challenge: Build with Gemma 4&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fdb582i7anf7bz7jnutl7.png" class="article-body-image-wrapper"&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%2Fdb582i7anf7bz7jnutl7.png" alt="Sketch Judge Logo" width="336" height="129"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;I started this challenge with a very different idea.&lt;/p&gt;

&lt;p&gt;For a while, I thought about building something more serious. I already have several ongoing projects where I experiment with Gemma 4, especially in local-first setups. One of them is an offline agent that can collect ideas, notes, and memories locally, then synchronize them with a main system once the device is online again. The prototype for that direction already exists.&lt;/p&gt;

&lt;p&gt;But for this challenge, I wanted to build something lighter.&lt;/p&gt;

&lt;p&gt;Something playful.&lt;/p&gt;

&lt;p&gt;Something colorful.&lt;/p&gt;

&lt;p&gt;Something that could make people smile.&lt;/p&gt;

&lt;p&gt;Something that adults, artists, and even kids could try.&lt;/p&gt;

&lt;p&gt;That was the beginning of &lt;strong&gt;Sketch Judge&lt;/strong&gt; — a mobile-first AI drawing game where Gemma chooses what you have to draw, and then judges how well you matched the motif.&lt;br&gt;
&lt;a href="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%2F5wqud5fs181ea1sshdbm.png" class="article-body-image-wrapper"&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%2F5wqud5fs181ea1sshdbm.png" alt="Sketch Judge Mockup" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
The game loop is simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add players.&lt;/li&gt;
&lt;li&gt;Choose rounds and draw time.&lt;/li&gt;
&lt;li&gt;Let Gemma choose a motif.&lt;/li&gt;
&lt;li&gt;Reveal the motif to the current player.&lt;/li&gt;
&lt;li&gt;Draw it before the timer ends.&lt;/li&gt;
&lt;li&gt;Let the AI judge the result.&lt;/li&gt;
&lt;li&gt;Continue until the final leaderboard reveals the winner.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The goal is not only to draw something beautiful. The goal is to draw something that clearly matches the target motif.&lt;/p&gt;

&lt;p&gt;So if the target is &lt;strong&gt;book&lt;/strong&gt;, drawing a beautiful apple should not win.&lt;/p&gt;

&lt;p&gt;That made the project more interesting than a normal drawing app. Gemma is not only generating text in the background. It becomes the game master, the prompt creator, and the judge.&lt;/p&gt;

&lt;p&gt;Sketch Judge has two modes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Casual Mode&lt;/strong&gt; is forgiving and family-friendly. A simple drawing can score well if the motif is clearly recognizable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Artist Mode&lt;/strong&gt; is stricter and aimed at adults, artists, and competitive players. In this mode, Gemma chooses more difficult and expressive motifs, and the scoring gives more weight to proportion, details, creativity, color, polish, and effort.&lt;/p&gt;

&lt;p&gt;A simple outline can still be recognized, but it should not beat a detailed, colorful, polished drawing.&lt;/p&gt;

&lt;p&gt;This app will not change the world or save it.&lt;br&gt;&lt;br&gt;
But maybe it can help you forget the problems for a moment and just have some fun.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Live frontend preview:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sketch-judge.vercel.app/" rel="noopener noreferrer"&gt;https://sketch-judge.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The hosted Vercel version currently renders the frontend only.&lt;br&gt;&lt;br&gt;
The local Ollama / Gemma 4 AI connector is not enabled in this deployment yet.&lt;/p&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;Repository:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/southy404/sketch-judge" rel="noopener noreferrer"&gt;https://github.com/southy404/sketch-judge&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the mobile-first game UI,&lt;/li&gt;
&lt;li&gt;the drawing canvas,&lt;/li&gt;
&lt;li&gt;local Ollama integration,&lt;/li&gt;
&lt;li&gt;Gemma-powered motif generation,&lt;/li&gt;
&lt;li&gt;Gemma-powered judging prompts,&lt;/li&gt;
&lt;li&gt;server-side score guards,&lt;/li&gt;
&lt;li&gt;Casual Mode and Artist Mode,&lt;/li&gt;
&lt;li&gt;fallback motif pools,&lt;/li&gt;
&lt;li&gt;final leaderboard logic,&lt;/li&gt;
&lt;li&gt;and a colorful sketchbook-style visual design.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  How I Used Gemma 4
&lt;/h2&gt;

&lt;p&gt;Gemma 4 powers the main creative loop of Sketch Judge.&lt;/p&gt;

&lt;p&gt;I used the &lt;strong&gt;E4B model through Ollama&lt;/strong&gt; for this prototype.&lt;/p&gt;

&lt;p&gt;This model choice was intentional. I wanted to build something that fits a mobile-first and local-first direction. A huge cloud-only model could be powerful, but it would not match the future version I have in mind for this project.&lt;/p&gt;

&lt;p&gt;Sketch Judge is a small web prototype now, but the idea points toward a game that could eventually run much closer to the user’s own device. Using a smaller Gemma model through Ollama felt like the right step because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it keeps the prototype local-first,&lt;/li&gt;
&lt;li&gt;it avoids making the game depend on a cloud API from the beginning,&lt;/li&gt;
&lt;li&gt;it fits the idea of private, casual gameplay,&lt;/li&gt;
&lt;li&gt;it makes experimentation fast,&lt;/li&gt;
&lt;li&gt;and it keeps the door open for a future mobile/on-device version.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The model does not only sit behind the app as a chatbot. It directly controls important parts of the gameplay.&lt;/p&gt;
&lt;h3&gt;
  
  
  Gemma chooses the motif
&lt;/h3&gt;

&lt;p&gt;At the start of each round, Gemma chooses the drawing motif.&lt;/p&gt;

&lt;p&gt;The app asks Gemma for a structured JSON response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Floating Island"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hint"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"small island with a tree in the sky"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"difficulty"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"artist"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"scene"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The motif system has two goals:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The prompt should be drawable in a short time.&lt;/li&gt;
&lt;li&gt;The prompt should not become repetitive.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Early versions of the game picked too many basic words like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;apple&lt;/li&gt;
&lt;li&gt;book&lt;/li&gt;
&lt;li&gt;key&lt;/li&gt;
&lt;li&gt;banana&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That made the game feel too limited.&lt;/p&gt;

&lt;p&gt;So I added recent motif memory, category tracking, fallback motif pools, and stricter prompt instructions. In Casual Mode, Gemma chooses simple and fun prompts. In Artist Mode, it prefers harder and more expressive ideas.&lt;/p&gt;

&lt;p&gt;Examples of Artist Mode motifs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clockwork Bird&lt;/li&gt;
&lt;li&gt;Floating Library&lt;/li&gt;
&lt;li&gt;Dragon Teapot&lt;/li&gt;
&lt;li&gt;Rainy Neon Alley&lt;/li&gt;
&lt;li&gt;Underwater Castle&lt;/li&gt;
&lt;li&gt;Crystal Fox&lt;/li&gt;
&lt;li&gt;Tiny Robot Café&lt;/li&gt;
&lt;li&gt;Moon Garden&lt;/li&gt;
&lt;li&gt;Mechanical Garden&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This made Gemma feel more like a creative game master instead of a random word picker.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gemma judges the drawing
&lt;/h3&gt;

&lt;p&gt;After a player submits a drawing, the app sends the image and target motif to the judging system.&lt;/p&gt;

&lt;p&gt;Gemma returns a structured result like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"detectedObject"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"book"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"targetMatch"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;74&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"recognition"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;82&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"shape"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"proportion"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"creativity"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"effort"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"feedback"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"The book is recognizable, but Artist Mode expects stronger proportions and more detail."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The most important rule is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The score should depend on whether the drawing matches the motif.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A beautiful drawing of the wrong object should not win.&lt;/p&gt;

&lt;p&gt;That was one of the biggest lessons while building the project. AI can be very friendly, sometimes too friendly. In early tests, the model could say something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Nice apple, but the target was a book.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And still give a high score.&lt;/p&gt;

&lt;p&gt;That is not fair for a game, so the backend now adds scoring guardrails around the model output.&lt;/p&gt;

&lt;h3&gt;
  
  
  Score guards and fairness
&lt;/h3&gt;

&lt;p&gt;The backend validates and normalizes the AI response before showing it to the player.&lt;/p&gt;

&lt;p&gt;It checks things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the target motif actually matched?&lt;/li&gt;
&lt;li&gt;Is the score on the expected 0–100 scale?&lt;/li&gt;
&lt;li&gt;Are category ratings consistent with the final score?&lt;/li&gt;
&lt;li&gt;Is the feedback overpraising a weak drawing?&lt;/li&gt;
&lt;li&gt;Is Artist Mode active?&lt;/li&gt;
&lt;li&gt;Is the drawing sparse, tiny, or only a simple outline?&lt;/li&gt;
&lt;li&gt;Is this a fallback score?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong motif: capped low.&lt;/li&gt;
&lt;li&gt;Empty or tiny drawing: capped low.&lt;/li&gt;
&lt;li&gt;Artist Mode simple outline: cannot score like polished art.&lt;/li&gt;
&lt;li&gt;Casual Mode: more forgiving.&lt;/li&gt;
&lt;li&gt;Fallback mode: never pretends to fully understand the motif.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This keeps Gemma creative, but the game rules stay fair.&lt;/p&gt;

&lt;h3&gt;
  
  
  Artist Mode
&lt;/h3&gt;

&lt;p&gt;Artist Mode changes the role of Gemma.&lt;/p&gt;

&lt;p&gt;In Casual Mode, the main question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is the motif recognizable?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In Artist Mode, the question becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is the motif recognizable, and is the drawing actually strong?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Artist Mode judges more seriously:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;shape&lt;/li&gt;
&lt;li&gt;proportion&lt;/li&gt;
&lt;li&gt;detail&lt;/li&gt;
&lt;li&gt;color&lt;/li&gt;
&lt;li&gt;composition&lt;/li&gt;
&lt;li&gt;creativity&lt;/li&gt;
&lt;li&gt;effort&lt;/li&gt;
&lt;li&gt;polish&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This means a simple black outline of a book can still score okay, but it should not receive 90+ points unless the drawing really has detail and finish.&lt;/p&gt;

&lt;h3&gt;
  
  
  Local-first AI through Ollama
&lt;/h3&gt;

&lt;p&gt;The prototype uses Ollama locally.&lt;/p&gt;

&lt;p&gt;This local-first approach is part of the concept. If this project grows further, I would like to explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;browser-to-local-Ollama mode,&lt;/li&gt;
&lt;li&gt;a packaged local app,&lt;/li&gt;
&lt;li&gt;a mobile version,&lt;/li&gt;
&lt;li&gt;or eventually an on-device Gemma setup.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The game is simple, but the architecture is intentionally pointing toward local AI gameplay.&lt;/p&gt;




&lt;p&gt;Thanks for reading.&lt;/p&gt;

&lt;p&gt;Sketch Judge is not a serious productivity tool. It is not trying to automate work. It is not trying to save the world.&lt;/p&gt;

&lt;p&gt;It is just a colorful little AI game.&lt;/p&gt;

&lt;p&gt;But maybe that is exactly why I liked building it.&lt;/p&gt;

&lt;p&gt;Sometimes technology should also be allowed to be playful. Sometimes an AI model does not need to write reports or solve tasks. Sometimes it can just choose a silly motif, watch your chaotic drawing, and decide who wins.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Draw fast. Match right. AI decides.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gemmachallenge</category>
      <category>gemma</category>
    </item>
    <item>
      <title>I rebuilt AFTER HUMAN — an open home for AI tools, experiments, and future products</title>
      <dc:creator>southy404</dc:creator>
      <pubDate>Sun, 10 May 2026 11:10:33 +0000</pubDate>
      <link>https://dev.to/southy404/i-rebuilt-after-human-an-open-home-for-ai-tools-experiments-and-future-products-100j</link>
      <guid>https://dev.to/southy404/i-rebuilt-after-human-an-open-home-for-ai-tools-experiments-and-future-products-100j</guid>
      <description>&lt;p&gt;Over the last weeks I rebuilt my website:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.afterhuman.online/" rel="noopener noreferrer"&gt;https://www.afterhuman.online/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But this is not just a portfolio page.&lt;/p&gt;

&lt;p&gt;I want &lt;strong&gt;Afterhuman&lt;/strong&gt; to become the home for the open source AI products, tools, experiments, and ideas I am building next.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is AFTER HUMAN?
&lt;/h2&gt;

&lt;p&gt;Afterhuman is my independent AI development forge.&lt;/p&gt;

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

&lt;p&gt;Build practical, open, developer-friendly AI systems that people can actually use, extend, break, improve, and learn from.&lt;/p&gt;

&lt;p&gt;Not just demos.&lt;/p&gt;

&lt;p&gt;Not just landing pages.&lt;/p&gt;

&lt;p&gt;Not just “AI wrappers”.&lt;/p&gt;

&lt;p&gt;I want to build tools that feel useful, local-first where possible, transparent, and shaped together with a community.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I rebuilt the site
&lt;/h2&gt;

&lt;p&gt;I needed a place that can grow with the projects.&lt;/p&gt;

&lt;p&gt;Right now, the site introduces the direction:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;open source first&lt;/li&gt;
&lt;li&gt;modular systems&lt;/li&gt;
&lt;li&gt;sovereign AI&lt;/li&gt;
&lt;li&gt;tools for developers, builders, inventors, and explorers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The current version is still early, but it already gives Afterhuman a clearer identity and a place where future releases can live.&lt;/p&gt;

&lt;h2&gt;
  
  
  The first bigger project: Argus
&lt;/h2&gt;

&lt;p&gt;Because of a DEV challenge that is currently running, I started working more seriously on &lt;strong&gt;Argus&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Argus is not public yet, but it is one of the main things I want to release under the Afterhuman umbrella.&lt;/p&gt;

&lt;p&gt;The vision:&lt;/p&gt;

&lt;p&gt;A modular AI system for real-time observation, memory, tools, automation, and intelligent response.&lt;/p&gt;

&lt;p&gt;Think less “chatbot” and more:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;a personal AI operating layer that can understand context, use tools, remember what matters, and help you act.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is still early, and I do not want to overpromise. But the foundation is being built, and I will share more soon.&lt;/p&gt;

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

&lt;p&gt;One thing I learned while building OpenBlob and writing here on DEV:&lt;/p&gt;

&lt;p&gt;Projects become better when people can see them early.&lt;/p&gt;

&lt;p&gt;Not when everything is polished.&lt;/p&gt;

&lt;p&gt;Not when all features are finished.&lt;/p&gt;

&lt;p&gt;But when other developers can ask questions, challenge ideas, suggest use cases, and maybe even build with you.&lt;/p&gt;

&lt;p&gt;That is why I want Afterhuman to become an open community for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI developers&lt;/li&gt;
&lt;li&gt;open source builders&lt;/li&gt;
&lt;li&gt;creative technologists&lt;/li&gt;
&lt;li&gt;indie hackers&lt;/li&gt;
&lt;li&gt;researchers&lt;/li&gt;
&lt;li&gt;inventors&lt;/li&gt;
&lt;li&gt;curious people who want to explore what AI tools can become&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What comes next
&lt;/h2&gt;

&lt;p&gt;The next steps are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Publish more information about Argus&lt;/li&gt;
&lt;li&gt;Open the Discord community more publicly&lt;/li&gt;
&lt;li&gt;Share progress on the website&lt;/li&gt;
&lt;li&gt;Release first open source components and tools&lt;/li&gt;
&lt;li&gt;Keep documenting the build process here on DEV&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For now, the site is live:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.afterhuman.online/" rel="noopener noreferrer"&gt;https://www.afterhuman.online/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And if you are interested in open source AI tools, local AI systems, agents, automation, or experimental developer tools, I would love to have you around.&lt;/p&gt;

&lt;p&gt;This is still the beginning.&lt;/p&gt;

&lt;p&gt;But that is usually the most interesting part.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>webdev</category>
      <category>community</category>
    </item>
    <item>
      <title>The Agentic Shift Isn’t Coming. It’s Already Rewriting How We Build Software.</title>
      <dc:creator>southy404</dc:creator>
      <pubDate>Fri, 24 Apr 2026 10:27:13 +0000</pubDate>
      <link>https://dev.to/southy404/the-agentic-shift-isnt-coming-its-already-rewriting-how-we-build-software-4mk</link>
      <guid>https://dev.to/southy404/the-agentic-shift-isnt-coming-its-already-rewriting-how-we-build-software-4mk</guid>
      <description>&lt;p&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-cloud-next-2026-04-22"&gt;Google Cloud NEXT Writing Challenge&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;At Google Cloud NEXT ’26, something clicked for me — and it honestly wasn’t what I expected.&lt;/p&gt;

&lt;p&gt;It wasn’t a new model, a faster API, or one of those polished demos that look great but don’t really change how you build things.&lt;/p&gt;

&lt;p&gt;It was the realization that I was still thinking in the wrong abstraction.&lt;/p&gt;

&lt;p&gt;While Google was showing systems that operate over time, coordinate across tools, and make decisions with context, I caught myself still thinking in endpoints, requests, and features.&lt;/p&gt;

&lt;p&gt;That gap is where the real shift is happening.&lt;/p&gt;




&lt;h2&gt;
  
  
  We Didn’t Just Get Better AI — We Got a Different Layer of Software
&lt;/h2&gt;

&lt;p&gt;For years, even as AI got better, our mental model didn’t really change.&lt;/p&gt;

&lt;p&gt;Most systems still worked like this: user sends a request, system processes it, returns a response. Even with LLMs, we mostly just swapped out deterministic logic for probabilistic outputs and called it a day.&lt;/p&gt;

&lt;p&gt;But what was presented at NEXT doesn’t really fit that anymore.&lt;/p&gt;

&lt;p&gt;These systems don’t just respond. They keep context over time, coordinate multiple agents, and keep doing things even when no one is actively interacting with them.&lt;/p&gt;

&lt;p&gt;That doesn’t feel like “AI inside your app.”&lt;/p&gt;

&lt;p&gt;It feels more like something that’s just… running.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fh34dm1a25f3kj19af4xy.jpg" class="article-body-image-wrapper"&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%2Fh34dm1a25f3kj19af4xy.jpg" alt="Gemini Enterprise Agent Platform" width="800" height="450"&gt;&lt;/a&gt; &lt;em&gt;Source: &lt;a href="https://cloud.google.com/blog/topics/google-cloud-next/welcome-to-google-cloud-next26" rel="noopener noreferrer"&gt;Google Cloud NEXT ’26 — Official Announcement&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  From Output to Execution
&lt;/h2&gt;

&lt;p&gt;The biggest shift is easy to miss, but once you notice it, you can’t unsee it.&lt;/p&gt;

&lt;p&gt;We’re moving away from systems that are judged by how good their output looks, toward systems that are judged by what they actually &lt;em&gt;do&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Generating a nice answer is one thing.&lt;/p&gt;

&lt;p&gt;Actually executing a task across multiple systems — with permissions, constraints, and changing context — is a completely different problem.&lt;/p&gt;

&lt;p&gt;And you feel that difference immediately when you try to build something like this.&lt;/p&gt;

&lt;p&gt;Because suddenly it’s not about “did the response look right?”&lt;br&gt;&lt;br&gt;
It’s about “did the system actually do the right thing?”&lt;/p&gt;




&lt;h2&gt;
  
  
  You’re Not Just Writing Code Anymore
&lt;/h2&gt;

&lt;p&gt;This is the part that hit me the most.&lt;/p&gt;

&lt;p&gt;If you take this seriously, your role as a developer shifts.&lt;/p&gt;

&lt;p&gt;You’re not mainly writing endpoints, functions, or UI flows anymore.&lt;/p&gt;

&lt;p&gt;You’re defining responsibilities. You’re deciding who (or what) is allowed to do what, how decisions move through the system, and what should happen over time when different parts interact.&lt;/p&gt;

&lt;p&gt;At some point it stops feeling like assembling logic…&lt;/p&gt;

&lt;p&gt;…and starts feeling like designing behavior under constraints.&lt;/p&gt;




&lt;h2&gt;
  
  
  Multi-Agent Systems Look Clean — Until You Build Them
&lt;/h2&gt;

&lt;p&gt;On paper, multi-agent systems look almost too clean.&lt;/p&gt;

&lt;p&gt;You split things up nicely: one agent plans, another evaluates, another executes. Each has a clear role, everything is modular, everything makes sense.&lt;/p&gt;

&lt;p&gt;Until you actually try it.&lt;/p&gt;

&lt;p&gt;Because then you realize: complexity didn’t go away. It just moved.&lt;/p&gt;

&lt;p&gt;Instead of one complex system, you now have multiple smaller systems that need to agree with each other.&lt;/p&gt;

&lt;p&gt;And they don’t always do that.&lt;/p&gt;

&lt;p&gt;You can easily end up in situations where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one agent thinks something is ready to execute
&lt;/li&gt;
&lt;li&gt;another thinks it still needs clarification
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both are “right” in isolation. The result is still wrong.&lt;/p&gt;

&lt;p&gt;No crash. No error. Just weird behavior.&lt;/p&gt;

&lt;p&gt;That’s a very different kind of problem.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fe6llzlei754kpn23wgh9.gif" class="article-body-image-wrapper"&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%2Fe6llzlei754kpn23wgh9.gif" alt="Multi-Agent systems" width="498" height="213"&gt;&lt;/a&gt; &lt;/p&gt;




&lt;h2&gt;
  
  
  Context Is the Real Bottleneck Now
&lt;/h2&gt;

&lt;p&gt;For a long time, we all focused on models. Bigger, smarter, faster.&lt;/p&gt;

&lt;p&gt;But lately it feels like the bottleneck is somewhere else.&lt;/p&gt;

&lt;p&gt;Context.&lt;/p&gt;

&lt;p&gt;Not just having data, but having the &lt;em&gt;right&lt;/em&gt; data, in the &lt;em&gt;right&lt;/em&gt; shape, shared consistently across everything involved.&lt;/p&gt;

&lt;p&gt;Because if different parts of the system operate on slightly different context, things start drifting fast.&lt;/p&gt;

&lt;p&gt;Without a solid context layer, agents don’t really “understand” anything. They just make reasonable guesses.&lt;/p&gt;

&lt;p&gt;With it, they start to behave in a way that actually feels grounded.&lt;/p&gt;




&lt;h2&gt;
  
  
  Memory Changes the Nature of the System
&lt;/h2&gt;

&lt;p&gt;Stateless systems are simple. Every request is its own thing.&lt;/p&gt;

&lt;p&gt;Stateful systems are… not.&lt;/p&gt;

&lt;p&gt;As soon as you introduce memory, everything changes a bit. The system starts carrying history. Decisions are influenced by things that happened before, sometimes in ways that aren’t obvious anymore.&lt;/p&gt;

&lt;p&gt;That’s powerful, but also a bit uncomfortable.&lt;/p&gt;

&lt;p&gt;Because now you’re not debugging a single execution anymore.&lt;/p&gt;

&lt;p&gt;You’re trying to understand a chain of decisions that led to a certain outcome.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fhds0dgwhautb1iwxp9jk.gif" class="article-body-image-wrapper"&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%2Fhds0dgwhautb1iwxp9jk.gif" alt="Agent decisions" width="408" height="164"&gt;&lt;/a&gt; &lt;/p&gt;




&lt;h2&gt;
  
  
  Governance Becomes a Core Design Problem
&lt;/h2&gt;

&lt;p&gt;Another thing that becomes obvious pretty quickly: once systems can act, control becomes critical.&lt;/p&gt;

&lt;p&gt;Not just “secure your API” kind of control.&lt;/p&gt;

&lt;p&gt;Actual decision control.&lt;/p&gt;

&lt;p&gt;Who is allowed to do what?&lt;br&gt;&lt;br&gt;
Which actions are valid?&lt;br&gt;&lt;br&gt;
What happens if something goes wrong?&lt;/p&gt;

&lt;p&gt;This is where identity, permissions, and traceability stop being “enterprise stuff” and become core to the system.&lt;/p&gt;

&lt;p&gt;Without that, autonomous systems aren’t just powerful — they’re kind of dangerous.&lt;/p&gt;




&lt;h2&gt;
  
  
  Debugging Becomes About Decisions, Not Code
&lt;/h2&gt;

&lt;p&gt;This is probably the weirdest shift.&lt;/p&gt;

&lt;p&gt;In normal systems, something breaks and you trace it back to a line of code.&lt;/p&gt;

&lt;p&gt;Here, everything can technically work — and still be wrong.&lt;/p&gt;

&lt;p&gt;The issue isn’t that something failed. It’s that different parts of the system interpreted the situation differently or acted on slightly different context.&lt;/p&gt;

&lt;p&gt;So you’re not really debugging code anymore.&lt;/p&gt;

&lt;p&gt;You’re debugging decisions.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fn0iyl2vq9nkr4yk43b5s.gif" class="article-body-image-wrapper"&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%2Fn0iyl2vq9nkr4yk43b5s.gif" alt="Debugging Multi-Agent systems" width="640" height="358"&gt;&lt;/a&gt; &lt;/p&gt;




&lt;h2&gt;
  
  
  Where Most Teams Are Still Thinking Too Small
&lt;/h2&gt;

&lt;p&gt;Right now, a lot of implementations still treat AI as a feature.&lt;/p&gt;

&lt;p&gt;Something behind an endpoint. Something inside a UI.&lt;/p&gt;

&lt;p&gt;But that framing feels… outdated.&lt;/p&gt;

&lt;p&gt;Because the real shift is deeper.&lt;/p&gt;

&lt;p&gt;The system itself becomes the AI. The UI is just one surface.&lt;/p&gt;

&lt;p&gt;What actually matters is what’s happening behind it — how agents coordinate, how context flows, how decisions are made over time.&lt;/p&gt;

&lt;p&gt;That’s where things get interesting.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Google Cloud NEXT ’26 didn’t just introduce new tools.&lt;/p&gt;

&lt;p&gt;It introduced a different way of thinking about software.&lt;/p&gt;

&lt;p&gt;Not as something that reacts to input…&lt;/p&gt;

&lt;p&gt;…but as something that acts, coordinates, and evolves over time.&lt;/p&gt;

&lt;p&gt;The real question isn’t whether you’ll use AI in your system.&lt;/p&gt;

&lt;p&gt;It’s whether you’re ready to build systems where behavior — not just code — is the main thing you design.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>cloudnextchallenge</category>
      <category>googlecloud</category>
    </item>
    <item>
      <title>I Tried OpenClaw on Windows with Ollama. I was hyped… until I wasn’t.</title>
      <dc:creator>southy404</dc:creator>
      <pubDate>Thu, 23 Apr 2026 11:14:40 +0000</pubDate>
      <link>https://dev.to/southy404/i-tried-openclaw-on-windows-with-ollama-i-was-hyped-until-i-wasnt-111n</link>
      <guid>https://dev.to/southy404/i-tried-openclaw-on-windows-with-ollama-i-was-hyped-until-i-wasnt-111n</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/openclaw-2026-04-16"&gt;OpenClaw Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Beginning
&lt;/h2&gt;

&lt;p&gt;Today was the day.&lt;/p&gt;

&lt;p&gt;For the first time, I cloned OpenClaw on my Windows machine.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2FSLCByvcQIWkAAAAC%2Fdriving-fast.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2FSLCByvcQIWkAAAAC%2Fdriving-fast.gif" width="414" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My mission was simple: build something for the OpenClaw Challenge using my local Ollama setup.&lt;/p&gt;

&lt;p&gt;At first, everything felt smooth. I cloned the repo, read the README, checked the well-written docs, followed the Windows setup instructions, and ran the install command.&lt;/p&gt;

&lt;p&gt;Then I saw this in the terminal:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Windows detected - OpenClaw runs great on WSL2.&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Native Windows might be trickier.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That was the first moment I got a little skeptical.&lt;/p&gt;

&lt;p&gt;Still, the setup looked clean. I was guided through onboarding, picked QuickStart, selected &lt;strong&gt;Ollama&lt;/strong&gt; as the provider, chose &lt;strong&gt;local only&lt;/strong&gt;, set the base URL, selected my model… and then:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;boom.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: Cannot find module '@larksuiteoapi/node-sdk'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alright. Not great — but maybe just a one-off.&lt;/p&gt;

&lt;p&gt;I installed the package manually and ran the setup again.&lt;/p&gt;

&lt;p&gt;Then again:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Windows detected - OpenClaw runs great on WSL2.&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Native Windows might be trickier.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And slowly, I started to understand why.&lt;/p&gt;

&lt;p&gt;I went through the setup again — model, base URL, everything — and then:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;boom again.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: Cannot find module 'nostr-tools'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Second missing module. And this time for something I wasn’t even using.&lt;/p&gt;

&lt;p&gt;Fine. Installed it.&lt;/p&gt;

&lt;p&gt;Ran setup again.&lt;/p&gt;

&lt;p&gt;And then:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;boom.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: Cannot find module '@slack/web-api'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At that point, the warning from the terminal stopped feeling like advice — and started feeling like a prediction.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2FnJBTSH1FcHQAAAAd%2Fi-see-errors-everywhere-errors.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2FnJBTSH1FcHQAAAAd%2Fi-see-errors-everywhere-errors.gif" width="498" height="281"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Windows Attempt
&lt;/h2&gt;

&lt;p&gt;To be fair, OpenClaw never hid it. It told me early that native Windows might be tricky.&lt;/p&gt;

&lt;p&gt;And for my setup, it absolutely was.&lt;/p&gt;

&lt;p&gt;The loop looked like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;run setup&lt;/li&gt;
&lt;li&gt;hit missing module&lt;/li&gt;
&lt;li&gt;install manually&lt;/li&gt;
&lt;li&gt;repeat&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What made it frustrating wasn’t just the errors — it was that they were tied to integrations I didn’t even need. I was just trying to run OpenClaw locally with Ollama.&lt;/p&gt;




&lt;h2&gt;
  
  
  So I Switched to WSL2
&lt;/h2&gt;

&lt;p&gt;At that point, I did what the tool had been suggesting all along: switch to WSL2.&lt;/p&gt;

&lt;p&gt;And honestly — that part &lt;em&gt;did&lt;/em&gt; feel better.&lt;/p&gt;

&lt;p&gt;No random module errors. Cleaner setup. Everything looked more stable.&lt;/p&gt;

&lt;p&gt;But then I hit the next issue.&lt;/p&gt;

&lt;p&gt;My local Ollama setup wasn’t really there anymore.&lt;/p&gt;

&lt;p&gt;My models didn’t show up properly, and instead of a clean local flow, I ended up in a setup that expected an OpenAI- or Anthropic-style API.&lt;/p&gt;

&lt;p&gt;After digging a bit, the issue became obvious:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ollama wasn’t installed in that environment.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So yes — WSL2 solved one problem, but it also disconnected me from the setup I actually wanted.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Turnaround: &lt;code&gt;ollama launch openclaw&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Then I remembered something.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia.tenor.com%2FAHBWsE2oYTgAAAAi%2Ftelus-critter.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia.tenor.com%2FAHBWsE2oYTgAAAAi%2Ftelus-critter.gif" width="498" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A few weeks ago, I got an email from Ollama that said:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama launch openclaw
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So I went back to my Windows environment and tried exactly that.&lt;/p&gt;

&lt;p&gt;And suddenly:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;it worked.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not perfectly. Not magically. But it worked.&lt;/p&gt;

&lt;p&gt;The dashboard opened. The system was running.&lt;/p&gt;




&lt;h2&gt;
  
  
  The First Thing for me OpenClaw Did Right
&lt;/h2&gt;

&lt;p&gt;I typed &lt;code&gt;hi&lt;/code&gt; into the chat.&lt;/p&gt;

&lt;p&gt;Instead of replying like a normal chatbot, OpenClaw pointed me to &lt;code&gt;BOOTSTRAP.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;And that was the first moment where I was genuinely impressed.&lt;/p&gt;

&lt;p&gt;Instead of just chatting, you actually &lt;em&gt;create&lt;/em&gt; your assistant.&lt;/p&gt;

&lt;p&gt;Through conversation, you define:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;IDENTITY.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;USER.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SOUL.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You give it a name, a personality, a tone — even an emoji.&lt;/p&gt;

&lt;p&gt;That felt different.&lt;/p&gt;

&lt;p&gt;It didn’t feel like configuring software.&lt;br&gt;
It felt like shaping a system.&lt;/p&gt;

&lt;p&gt;That idea alone is incredibly strong.&lt;/p&gt;

&lt;h2&gt;
  
  
  And Then… Boom Again
&lt;/h2&gt;

&lt;p&gt;After going through the bootstrap, everything looked promising.&lt;/p&gt;

&lt;p&gt;Then:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ollama timeout.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2FMCjnu0C8K_YAAAAd%2Fboy-cry.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2FMCjnu0C8K_YAAAAd%2Fboy-cry.gif" width="360" height="234"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Frustrating — but manageable.&lt;/p&gt;

&lt;p&gt;I switched to a faster model in the dashboard, retried, and it worked.&lt;/p&gt;

&lt;p&gt;Then I got a well-structured response suggesting behavior defaults, memory handling, and skill setup:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Perfect. Both saved. 🦞  &lt;/p&gt;

&lt;p&gt;Now for SOUL.md — I suggest the following defaults:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Behavior &amp;amp; Collaboration:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Be proactive: Don’t wait for commands — check emails, calendar, and projects
&lt;/li&gt;
&lt;li&gt;Maintain memory: Update MEMORY.md every few days
&lt;/li&gt;
&lt;li&gt;Language: German/English mix
&lt;/li&gt;
&lt;li&gt;Heartbeats: 2–4x per day, but don’t respond on every poll (HEARTBEAT_OK if nothing important)
&lt;/li&gt;
&lt;li&gt;External actions (email, social): Always ask first
&lt;/li&gt;
&lt;li&gt;Git projects: Automatically commit/push (when requested)
&lt;/li&gt;
&lt;li&gt;Group chats: Only respond to real inputs, not every time
&lt;/li&gt;
&lt;li&gt;Use emoji reactions for Discord
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Configure skills:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Weather (wttr.in for weather)
&lt;/li&gt;
&lt;li&gt;Healthcheck (for security checks)
&lt;/li&gt;
&lt;li&gt;Skill-creator (for creating new skills)
&lt;/li&gt;
&lt;li&gt;taskflow (for complex workflows)
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What do you think? Should I write SOUL.md with these defaults, or do you want to adjust anything? 🦞”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Honestly?&lt;/p&gt;

&lt;p&gt;It was good.&lt;/p&gt;

&lt;p&gt;So I confirmed it.&lt;/p&gt;

&lt;p&gt;And then…&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;boom. Timeout again.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2FJiEUXIlkIn8AAAAC%2Fincident.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.tenor.com%2Fm%2FJiEUXIlkIn8AAAAC%2Fincident.gif" width="498" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That was the moment where the experience broke for me.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Think After All This
&lt;/h2&gt;

&lt;p&gt;I don’t think OpenClaw is bad.&lt;/p&gt;

&lt;p&gt;Actually, I think it’s one of the most interesting directions in this space right now.&lt;/p&gt;

&lt;p&gt;There are ideas here that stand out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;agent-based workflows&lt;/li&gt;
&lt;li&gt;identity + memory as first-class concepts&lt;/li&gt;
&lt;li&gt;a real attempt at building a personal AI, not just a chat interface&lt;/li&gt;
&lt;li&gt;a huge and fast-growing open-source community pushing it forward&lt;/li&gt;
&lt;li&gt;an ecosystem of plugins, integrations, and channels that goes far beyond a single use case&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not just “another AI tool.”&lt;/p&gt;

&lt;p&gt;That’s rare.&lt;/p&gt;

&lt;p&gt;But at the same time, the experience still feels &lt;strong&gt;very experimental&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not just in performance — but in reliability.&lt;/p&gt;

&lt;p&gt;Things work… until they don’t.&lt;/p&gt;

&lt;p&gt;And when they break, it’s not always obvious why.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Part That Makes Me Careful
&lt;/h2&gt;

&lt;p&gt;OpenClaw isn’t just a chatbot.&lt;/p&gt;

&lt;p&gt;It’s an agent that can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;run commands&lt;/li&gt;
&lt;li&gt;access files&lt;/li&gt;
&lt;li&gt;act in the background&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s powerful.&lt;/p&gt;

&lt;p&gt;But that also means trust matters a lot more.&lt;/p&gt;

&lt;p&gt;And right now, I personally don’t feel comfortable giving that level of control to a system that still feels this unstable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Right now, my opinion is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OpenClaw is fascinating — but not ready for me yet.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I didn’t end up building my challenge project with it.&lt;/p&gt;

&lt;p&gt;But I’m still glad I tried it.&lt;/p&gt;

&lt;p&gt;Because the direction is genuinely exciting.&lt;/p&gt;

&lt;p&gt;And to be fair:&lt;/p&gt;

&lt;p&gt;If I had invested more time, I’m pretty sure I could have gotten everything running properly.&lt;/p&gt;

&lt;p&gt;But that’s also part of the point.&lt;/p&gt;

&lt;p&gt;For me, the current setup effort combined with the limitations of local models right now just doesn’t feel worth it yet.&lt;/p&gt;

&lt;p&gt;And here’s the important part:&lt;/p&gt;

&lt;p&gt;This space is moving fast.&lt;/p&gt;

&lt;p&gt;Local models are improving rapidly.&lt;br&gt;
Hardware is getting better.&lt;br&gt;
Tooling is evolving almost weekly.&lt;/p&gt;

&lt;p&gt;Which means:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The exact same setup could feel completely different in a few months.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So while it didn’t work for me today…&lt;/p&gt;

&lt;p&gt;I don’t think that will be true for long.&lt;/p&gt;

&lt;p&gt;And that’s exactly why I’ll keep watching OpenClaw.&lt;/p&gt;




&lt;h2&gt;
  
  
  What about you?
&lt;/h2&gt;

&lt;p&gt;Have you tried OpenClaw yet?&lt;/p&gt;

&lt;p&gt;Whether locally, with cloud models, or in a completely different setup — I’m genuinely curious how your experience has been.&lt;/p&gt;

&lt;p&gt;Did it feel smooth and powerful…&lt;br&gt;
or more like something that’s still finding its footing?&lt;/p&gt;

&lt;p&gt;And more importantly:&lt;/p&gt;

&lt;p&gt;Do you see yourself actually using something like this in your daily workflow — or are we not quite there yet?&lt;/p&gt;

&lt;p&gt;Let me know 👇&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>openclawchallenge</category>
      <category>ai</category>
      <category>discuss</category>
    </item>
    <item>
      <title>I just gave my local AI desktop companion access to the outside world (Telegram, Discord, Email…)</title>
      <dc:creator>southy404</dc:creator>
      <pubDate>Sun, 19 Apr 2026 10:16:49 +0000</pubDate>
      <link>https://dev.to/southy404/i-just-gave-my-local-ai-desktop-companion-access-to-the-outside-world-telegram-discord-email-d5d</link>
      <guid>https://dev.to/southy404/i-just-gave-my-local-ai-desktop-companion-access-to-the-outside-world-telegram-discord-email-d5d</guid>
      <description>&lt;h1&gt;
  
  
  For the last weeks, I’ve been building a &lt;strong&gt;local-first AI desktop companion&lt;/strong&gt; that lives on your screen.
&lt;/h1&gt;

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

&lt;ul&gt;
&lt;li&gt;see your screen&lt;/li&gt;
&lt;li&gt;understand your context&lt;/li&gt;
&lt;li&gt;execute actions on your system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But it had one big limitation:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It only lived &lt;em&gt;on your desktop&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So I changed that.&lt;/p&gt;




&lt;h2&gt;
  
  
  🌐 Introducing: Blob Connectors
&lt;/h2&gt;

&lt;p&gt;I just added a new layer to OpenBlob:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Blob Connectors&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A lightweight Python bridge that connects your local AI to the outside world:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Telegram&lt;/li&gt;
&lt;li&gt;Discord&lt;/li&gt;
&lt;li&gt;Slack&lt;/li&gt;
&lt;li&gt;Email&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 What this actually means
&lt;/h2&gt;

&lt;p&gt;You can now do things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;send &lt;code&gt;open spotify&lt;/code&gt; via Telegram → Spotify opens on your PC&lt;/li&gt;
&lt;li&gt;ask a question in Discord → your local model answers&lt;/li&gt;
&lt;li&gt;send an email → get a contextual AI reply&lt;/li&gt;
&lt;li&gt;control your desktop from anywhere&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And the important part:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It’s still &lt;strong&gt;local-first&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




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

&lt;p&gt;All channels go through the same pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Telegram / Discord / Slack / Email
              │
        Blob Connectors (Python)
              │
    ┌─────────┴─────────┐
    │                   │
OpenBlob running?    Ollama fallback
(localhost)         (local model)
              │
        Command Router
              │
      Desktop action
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything becomes a normalized &lt;code&gt;Message&lt;/code&gt; object.&lt;/p&gt;

&lt;p&gt;No matter where it comes from.&lt;/p&gt;




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

&lt;p&gt;This is not just “adding integrations”.&lt;/p&gt;

&lt;p&gt;This is the first real step towards:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;an AI system that exists beyond a single interface&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now OpenBlob is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;not just UI-bound&lt;/li&gt;
&lt;li&gt;not just voice-bound&lt;/li&gt;
&lt;li&gt;not just desktop-bound&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It becomes a &lt;strong&gt;distributed interface to your own system&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 Built for extension
&lt;/h2&gt;

&lt;p&gt;Each connector implements the same interface:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MyConnector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BlobConnector&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;receive_message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Message&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;...&lt;/span&gt;
    &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;send_response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;original&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;...&lt;/span&gt;
    &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;start&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So adding new platforms is trivial:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WhatsApp&lt;/li&gt;
&lt;li&gt;Matrix&lt;/li&gt;
&lt;li&gt;iMessage (maybe 👀)&lt;/li&gt;
&lt;li&gt;anything with an API&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔒 Still local-first
&lt;/h2&gt;

&lt;p&gt;Important:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;runs on your machine&lt;/li&gt;
&lt;li&gt;uses your local models (Ollama)&lt;/li&gt;
&lt;li&gt;no required cloud backend&lt;/li&gt;
&lt;li&gt;transparent behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If OpenBlob is offline:&lt;/p&gt;

&lt;p&gt;→ it automatically falls back to local reasoning&lt;/p&gt;




&lt;h2&gt;
  
  
  🚧 Current state
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;works across all channels&lt;/li&gt;
&lt;li&gt;still early&lt;/li&gt;
&lt;li&gt;structure is stabilizing&lt;/li&gt;
&lt;li&gt;lots of room for improvement&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔮 What this unlocks next
&lt;/h2&gt;

&lt;p&gt;This connector layer enables things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;shared memory across all channels&lt;/li&gt;
&lt;li&gt;persistent conversations&lt;/li&gt;
&lt;li&gt;multi-agent systems&lt;/li&gt;
&lt;li&gt;calendar / tool integrations&lt;/li&gt;
&lt;li&gt;real remote control of your system&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🤝 If you want to build with me
&lt;/h2&gt;

&lt;p&gt;This is probably the best moment to jump in.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;build new connectors&lt;/li&gt;
&lt;li&gt;improve routing / memory&lt;/li&gt;
&lt;li&gt;design better UX&lt;/li&gt;
&lt;li&gt;experiment with AI behaviors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/southy404/openblob" rel="noopener noreferrer"&gt;https://github.com/southy404/openblob&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Final thoughts
&lt;/h2&gt;

&lt;p&gt;This is mainly an infrastructure update.&lt;/p&gt;

&lt;p&gt;By introducing a connector layer and a normalized message interface, OpenBlob becomes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;easier to extend&lt;/li&gt;
&lt;li&gt;easier to integrate&lt;/li&gt;
&lt;li&gt;less tied to a single UI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s a small surface change — but a significant internal shift.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>python</category>
      <category>api</category>
    </item>
    <item>
      <title>Gemini Footprint Tracker — See the Real Cost of Every AI Prompt</title>
      <dc:creator>southy404</dc:creator>
      <pubDate>Sat, 18 Apr 2026 08:03:11 +0000</pubDate>
      <link>https://dev.to/southy404/gemini-footprint-tracker-see-the-real-cost-of-every-ai-prompt-3j7o</link>
      <guid>https://dev.to/southy404/gemini-footprint-tracker-see-the-real-cost-of-every-ai-prompt-3j7o</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-04-16"&gt;Weekend Challenge: Earth Day Edition&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Every time you send a message to an AI, it consumes water, energy, and emits CO₂. Most people have no idea how much. &lt;strong&gt;Gemini Footprint Tracker&lt;/strong&gt; makes that cost visible — in real time, per request, with full transparency about how the numbers are calculated.&lt;/p&gt;

&lt;p&gt;You bring your own Gemini API key, pick a model, and start chatting. After every response the tracker shows how much water and CO₂ that exchange cost — scaled by token count and model weight. A community panel aggregates anonymous footprint data from all users via Supabase, so you can see the collective impact grow in real time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; this is an awareness and transparency project, not an official measurement tool. The estimates are based on Google's publicly published baseline for a median Gemini Apps text prompt, combined with transparent app-side scaling logic. Every assumption is documented — what comes from Google, what is estimated, and where the model falls short. The &lt;code&gt;/learn&lt;/code&gt; page inside the app explains the full methodology.&lt;/p&gt;

&lt;p&gt;The goal is simple: make something invisible a little more visible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;🔗 &lt;strong&gt;&lt;a href="https://gemini-footprint-tracker.vercel.app" rel="noopener noreferrer"&gt;Live: gemini-footprint-tracker.vercel.app&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Fcqn6w99b2st58nx7rk0n.png" class="article-body-image-wrapper"&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%2Fcqn6w99b2st58nx7rk0n.png" alt="Screenshot of Gemini Footprint Tracker" width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll need a free &lt;a href="https://aistudio.google.com/app/apikey" rel="noopener noreferrer"&gt;Google AI Studio API key&lt;/a&gt; to send messages. The key stays in your browser — it never touches a server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/southy404" rel="noopener noreferrer"&gt;
        southy404
      &lt;/a&gt; / &lt;a href="https://github.com/southy404/gemini-footprint-tracker" rel="noopener noreferrer"&gt;
        gemini-footprint-tracker
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🌍 Gemini Footprint Tracker&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;An awareness project that makes the environmental cost of AI visible — tracking water, CO₂, and energy usage per Gemini API request in real time.&lt;/p&gt;
&lt;p&gt;Built for the &lt;a href="https://dev.to" rel="nofollow"&gt;DEV Earth Day Challenge 2026&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;→ &lt;a href="https://gemini-footprint-tracker.vercel.app" rel="nofollow noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What it does&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Every prompt you send to Gemini uses water, energy, and emits CO₂. This tracker uses Gemini's usage metadata (token counts) combined with Google's official published baseline values to estimate the environmental footprint of each request — and aggregates it anonymously across all users via Supabase.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;💧 Water consumption per request (mL)&lt;/li&gt;
&lt;li&gt;☁️ CO₂ emissions per request (gCO₂e)&lt;/li&gt;
&lt;li&gt;⚡ Token-based scaling per model (Flash-Lite / Flash / Pro)&lt;/li&gt;
&lt;li&gt;📊 Community stats across all sessions&lt;/li&gt;
&lt;li&gt;🔒 Your API key stays local — never sent anywhere except directly to Gemini&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Stack&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;


&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Framework&lt;/td&gt;
&lt;td&gt;React 19 + TypeScript + Vite&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Styling&lt;/td&gt;
&lt;td&gt;Tailwind CSS v4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Animation&lt;/td&gt;
&lt;td&gt;Framer Motion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Supabase (anonymous footprint&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/southy404/gemini-footprint-tracker" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt; React 19 + TypeScript + Vite, Tailwind CSS v4, Framer Motion, Supabase, Gemini API&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The estimation model&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Google publicly reports that a median Gemini Apps text prompt uses &lt;strong&gt;0.26 mL&lt;/strong&gt; of water, emits &lt;strong&gt;0.03 gCO₂e&lt;/strong&gt;, and consumes &lt;strong&gt;0.24 Wh&lt;/strong&gt; of energy. That's the only official number available. From there I built a token-based scaling model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;WeightedTokens  = PromptTokens + ResponseTokens × 3.5
TokenScale      = max(0.2, WeightedTokens / 775)
WaterEstimate   = 0.26 × TokenScale × ModelMultiplier
CO₂Estimate     = 0.03 × TokenScale × ModelMultiplier
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The 3.5× output weight reflects that autoregressive decoding is significantly more compute-intensive than input prefill. The reference prompt (250 input + 150 output tokens) and the model multipliers (Flash-Lite: 0.85×, Flash: 1.0×, Pro: 1.35×) are documented approximations — not official Google values. The &lt;code&gt;/learn&lt;/code&gt; page inside the app makes this separation explicit: what is official, what is estimated, and where the numbers can't be trusted.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Community stats&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each request anonymously logs water and CO₂ to Supabase. The topbar shows live community totals — water consumed, CO₂ emitted, unique users tracked. The numbers update in real time across all sessions.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;UX decisions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The interface is intentionally built to feel like a normal AI chat — familiar composer, clean response layout, no dashboard clutter. That was a deliberate choice: AI resource usage is a topic that matters for everyone who uses these tools, not just people who go looking for environmental data. If it looks like a tracker, most people close it. If it looks like a chat, they stay.&lt;/p&gt;

&lt;p&gt;The footprint numbers appear quietly after each response — present, but not in your face. The community stats in the topbar give a sense of collective scale without being alarming. Transparency about estimates is built into the UI from the start: the helper text, the suggestion chips, and the &lt;code&gt;/learn&lt;/code&gt; page all reinforce that these are informed approximations, not ground truth.&lt;/p&gt;

&lt;p&gt;Other decisions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API key stored in localStorage only, never transmitted anywhere except directly to Gemini&lt;/li&gt;
&lt;li&gt;Voice input via Web Speech API&lt;/li&gt;
&lt;li&gt;Animated transition between hero and chat state using Framer Motion's &lt;code&gt;layoutId&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Mobile-responsive throughout, including the KaTeX methodology page&lt;/li&gt;
&lt;li&gt;Earth background video from NASA-Imagery via Pixabay&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best use of Google Gemini&lt;/strong&gt; — The entire app is built around the Gemini API. Every message goes through &lt;code&gt;generateContent&lt;/code&gt;, and the response's &lt;code&gt;usageMetadata&lt;/code&gt; — prompt and candidate token counts — directly drives the footprint calculation. The model selector supports &lt;code&gt;gemini-2.5-flash-lite&lt;/code&gt;, &lt;code&gt;gemini-2.5-flash&lt;/code&gt;, and &lt;code&gt;gemini-2.5-pro&lt;/code&gt;, each with a distinct environmental multiplier. Gemini isn't a feature bolted on — it's the thing being measured.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
    </item>
    <item>
      <title>OpenBlob is evolving: better architecture, modern UI, and real-time transcripts</title>
      <dc:creator>southy404</dc:creator>
      <pubDate>Wed, 15 Apr 2026 16:16:29 +0000</pubDate>
      <link>https://dev.to/southy404/openblob-is-evolving-better-architecture-modern-ui-and-real-time-transcripts-28da</link>
      <guid>https://dev.to/southy404/openblob-is-evolving-better-architecture-modern-ui-and-real-time-transcripts-28da</guid>
      <description>&lt;p&gt;Over the past days, OpenBlob changed a lot. &lt;/p&gt;

&lt;p&gt;Not just visually — but fundamentally. &lt;/p&gt;

&lt;p&gt;This is a proper progress update on where things are heading 👇&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Quick recap
&lt;/h2&gt;

&lt;p&gt;OpenBlob is a &lt;strong&gt;local-first desktop AI companion&lt;/strong&gt; that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;lives on your desktop
&lt;/li&gt;
&lt;li&gt;understands your context
&lt;/li&gt;
&lt;li&gt;can see your screen (via vision models)
&lt;/li&gt;
&lt;li&gt;reacts in real-time
&lt;/li&gt;
&lt;li&gt;executes actions directly on your system
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 &lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/southy404/openblob" rel="noopener noreferrer"&gt;https://github.com/southy404/openblob&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🔧 Rebuilding the core (this was the big one)
&lt;/h2&gt;

&lt;p&gt;The biggest update isn’t something you see. It’s how everything works underneath. OpenBlob now has a much cleaner and more scalable structure:&lt;/p&gt;

&lt;h3&gt;
  
  
  Core pipeline
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;input (voice / text / screen)&lt;br&gt;
→ intent detection&lt;br&gt;
→ command router&lt;br&gt;
→ execution (local first)&lt;br&gt;
→ AI fallback if needed&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  What changed
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clear separation&lt;/strong&gt; of responsibilities&lt;/li&gt;
&lt;li&gt;Proper &lt;strong&gt;command routing&lt;/strong&gt; system&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modular capabilities&lt;/strong&gt; instead of chaos&lt;/li&gt;
&lt;li&gt;Easier to extend without breaking everything&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;This turns OpenBlob into something bigger than a chatbot: &lt;strong&gt;a runtime layer for your desktop.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧩 Open-source friendly structure
&lt;/h2&gt;

&lt;p&gt;One goal became very clear: &lt;strong&gt;this needs to be hackable.&lt;/strong&gt; So the architecture is moving towards a module system like this:&lt;/p&gt;

&lt;p&gt;📁 &lt;code&gt;modules/&lt;/code&gt;&lt;br&gt;
↳ 📁 &lt;code&gt;discord/&lt;/code&gt;&lt;br&gt;
↳ 📁 &lt;code&gt;spotify/&lt;/code&gt;&lt;br&gt;
↳ 📁 &lt;code&gt;browser/&lt;/code&gt;&lt;br&gt;
↳ 📁 &lt;code&gt;system/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Each module:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;exposes commands&lt;/li&gt;
&lt;li&gt;runs locally&lt;/li&gt;
&lt;li&gt;can be extended independently&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;This makes it much easier to:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;build plugins&lt;/li&gt;
&lt;li&gt;integrate APIs&lt;/li&gt;
&lt;li&gt;experiment without touching the core&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🎨 New UI (cleaner, faster, more alive)
&lt;/h2&gt;

&lt;p&gt;The UI got a big upgrade:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Floating bubble interface&lt;/li&gt;
&lt;li&gt;Glassmorphism style&lt;/li&gt;
&lt;li&gt;Smoother, more organic animations&lt;/li&gt;
&lt;li&gt;Faster interaction&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Interaction now feels like:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;CTRL + SPACE&lt;/code&gt; → instant open&lt;/li&gt;
&lt;li&gt;Global voice toggle&lt;/li&gt;
&lt;li&gt;Minimal friction&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Less “tool”. More presence.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 NEW: Just Chatting mode
&lt;/h2&gt;

&lt;p&gt;Sometimes you don’t want commands. You just want to talk. So OpenBlob now has a &lt;strong&gt;Just Chatting mode&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pure conversation with your AI companion&lt;/li&gt;
&lt;li&gt;No command routing&lt;/li&gt;
&lt;li&gt;No execution layer&lt;/li&gt;
&lt;li&gt;Just dialogue&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;This is important because:&lt;/strong&gt; the companion shouldn’t only do things — it should also &lt;em&gt;be there&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use cases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Thinking out loud&lt;/li&gt;
&lt;li&gt;Asking questions&lt;/li&gt;
&lt;li&gt;Casual conversation&lt;/li&gt;
&lt;li&gt;Testing personality / tone&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🖼 Screenshot assistant (more usable now)
&lt;/h2&gt;

&lt;p&gt;The screen pipeline is getting more solid:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;screenshot&lt;br&gt;
→ OCR&lt;br&gt;
→ context extraction&lt;br&gt;
→ reasoning&lt;br&gt;
→ answer&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Already useful for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Debugging&lt;/li&gt;
&lt;li&gt;UI understanding&lt;/li&gt;
&lt;li&gt;Games&lt;/li&gt;
&lt;li&gt;Quick research&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Still improving — but getting reliable.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎙️ NEW: real-time transcript system
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia0.giphy.com%2Fmedia%2Fv1.Y2lkPTc5MGI3NjExcG13cmR1ZWN0endpYm1pb2I2NGtpbmZwNHJweHZueDdlNTE3MGhwNSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw%2F4fN9saFvPDuJRxn5rH%2Fgiphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia0.giphy.com%2Fmedia%2Fv1.Y2lkPTc5MGI3NjExcG13cmR1ZWN0endpYm1pb2I2NGtpbmZwNHJweHZueDdlNTE3MGhwNSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw%2F4fN9saFvPDuJRxn5rH%2Fgiphy.gif" alt="Alt Text" width="480" height="236"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is one of the biggest new additions. OpenBlob can now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Listen to system audio&lt;/li&gt;
&lt;li&gt;Listen to microphone input&lt;/li&gt;
&lt;li&gt;Generate live transcripts&lt;/li&gt;
&lt;li&gt;Store structured sessions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pipeline
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;audio (system / mic)&lt;br&gt;
→ transcription&lt;br&gt;
→ segmented timeline&lt;br&gt;
→ structured session&lt;br&gt;
→ saved as text&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  What it already works for
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Meetings (Meet, Zoom, etc.)&lt;/li&gt;
&lt;li&gt;YouTube / podcasts&lt;/li&gt;
&lt;li&gt;Lectures&lt;/li&gt;
&lt;li&gt;General audio capture&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🧪 Current prototype
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Live text appearing in real-time&lt;/li&gt;
&lt;li&gt;Segmented transcript blocks&lt;/li&gt;
&lt;li&gt;Session tracking&lt;/li&gt;
&lt;li&gt;Simple overlay UI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s still early. But it works.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔮 Where transcripts are going
&lt;/h2&gt;

&lt;p&gt;This is not just speech-to-text. Next steps:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📝 Meeting assistant&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Summaries&lt;/li&gt;
&lt;li&gt;Key points&lt;/li&gt;
&lt;li&gt;Action items&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🧠 Memory layer&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Link transcripts to context&lt;/li&gt;
&lt;li&gt;Searchable history&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;⚡ Real-time help&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explain while listening&lt;/li&gt;
&lt;li&gt;Highlight important info&lt;/li&gt;
&lt;li&gt;Suggest responses&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚡ Philosophy (still the same)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Local-first&lt;/li&gt;
&lt;li&gt;Context &amp;gt; Prompt&lt;/li&gt;
&lt;li&gt;System-level AI&lt;/li&gt;
&lt;li&gt;Playful + useful&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧪 Current state
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Still experimental&lt;/li&gt;
&lt;li&gt;Still buggy sometimes&lt;/li&gt;
&lt;li&gt;Evolving very fast&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;But now:&lt;/strong&gt; Much better structure, clearer direction, and easier to contribute.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤝 If you want to join
&lt;/h2&gt;

&lt;p&gt;Now is actually a great time. You can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build modules (Discord, Spotify, browser, etc.)&lt;/li&gt;
&lt;li&gt;Improve transcription&lt;/li&gt;
&lt;li&gt;Design UI&lt;/li&gt;
&lt;li&gt;Experiment with AI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 &lt;strong&gt;Join here:&lt;/strong&gt; &lt;a href="https://github.com/southy404/openblob" rel="noopener noreferrer"&gt;https://github.com/southy404/openblob&lt;/a&gt;&lt;/p&gt;




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

&lt;p&gt;I’m starting to believe the future of AI is not a chat window in a browser. &lt;/p&gt;

&lt;p&gt;But something that &lt;strong&gt;lives on your system&lt;/strong&gt;, &lt;strong&gt;understands your context&lt;/strong&gt;, and can &lt;strong&gt;both act and talk&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;OpenBlob is slowly getting there.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>agents</category>
      <category>github</category>
    </item>
    <item>
      <title>I’m building a local AI desktop companion that sees your screen — and you can help shape it</title>
      <dc:creator>southy404</dc:creator>
      <pubDate>Thu, 09 Apr 2026 17:57:15 +0000</pubDate>
      <link>https://dev.to/southy404/im-building-a-local-ai-desktop-companion-that-sees-your-screen-and-you-can-help-shape-it-2ibh</link>
      <guid>https://dev.to/southy404/im-building-a-local-ai-desktop-companion-that-sees-your-screen-and-you-can-help-shape-it-2ibh</guid>
      <description>&lt;p&gt;Most AI tools feel disconnected.&lt;/p&gt;

&lt;p&gt;They don’t see your screen.&lt;br&gt;
They don’t understand what you're doing.&lt;/p&gt;

&lt;p&gt;So I built one that does.&lt;/p&gt;




&lt;h2&gt;
  
  
  Meet OpenBlob
&lt;/h2&gt;

&lt;p&gt;&lt;a href="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%2Fp72353n8tuipp9evr1qj.gif" class="article-body-image-wrapper"&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%2Fp72353n8tuipp9evr1qj.gif" alt="OpenBlob desktop AI companion showing animated blob avatar, floating UI, and context-aware interaction on Windows desktop" width="200" height="106"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;open-source, local-first desktop AI companion for Windows&lt;/strong&gt; that doesn’t just respond — it &lt;strong&gt;lives on your desktop&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;👉 GitHub: &lt;a href="https://github.com/southy404/openblob" rel="noopener noreferrer"&gt;https://github.com/southy404/openblob&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;understand what app you’re using&lt;/li&gt;
&lt;li&gt;analyze screenshots&lt;/li&gt;
&lt;li&gt;help inside games, apps, and browsers&lt;/li&gt;
&lt;li&gt;react visually with an animated companion&lt;/li&gt;
&lt;li&gt;and yes… even &lt;strong&gt;play hide and seek with you&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The problem with current AI assistants
&lt;/h2&gt;

&lt;p&gt;Most tools today are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cloud-dependent&lt;/li&gt;
&lt;li&gt;context-blind&lt;/li&gt;
&lt;li&gt;static&lt;/li&gt;
&lt;li&gt;not fun to use&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They don’t feel like part of your system.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 It understands context
&lt;/h2&gt;

&lt;p&gt;OpenBlob looks at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;active window&lt;/li&gt;
&lt;li&gt;app name&lt;/li&gt;
&lt;li&gt;window title&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So if you’re in a game, it knows.&lt;br&gt;
If you're debugging, it adapts.&lt;/p&gt;

&lt;p&gt;This is where things start to feel different.&lt;/p&gt;




&lt;h2&gt;
  
  
  🖼 It can see your screen
&lt;/h2&gt;

&lt;p&gt;You can take a screenshot and it will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;extract visible text&lt;/li&gt;
&lt;li&gt;detect what you're looking at&lt;/li&gt;
&lt;li&gt;generate a &lt;strong&gt;real search query&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;explain what's going on
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Screenshot → OCR → context → reasoning → answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Still a bit rough — but already very usable.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎮 It actually helps inside games
&lt;/h2&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;alt-tab → google → guess&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;ul&gt;
&lt;li&gt;screenshot&lt;/li&gt;
&lt;li&gt;let it detect the game&lt;/li&gt;
&lt;li&gt;get a real answer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This alone changes how you play.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 Multi-model AI (local-first)
&lt;/h2&gt;

&lt;p&gt;Runs via Ollama with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;text models&lt;/li&gt;
&lt;li&gt;vision models&lt;/li&gt;
&lt;li&gt;fallback system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No cloud required.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎨 It feels alive
&lt;/h2&gt;

&lt;p&gt;The companion:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;has moods (idle, thinking, love, sleepy)&lt;/li&gt;
&lt;li&gt;reacts to interaction&lt;/li&gt;
&lt;li&gt;can be “petted”&lt;/li&gt;
&lt;li&gt;dances when music is playing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Small details, big difference.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎮 The weird part (my favorite)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Hide and Seek mode
&lt;/h3&gt;

&lt;p&gt;You can literally say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“let’s play hide and seek”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And it will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;hide somewhere on your screen&lt;/li&gt;
&lt;li&gt;peek occasionally&lt;/li&gt;
&lt;li&gt;wait until you find it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sounds dumb.&lt;/p&gt;

&lt;p&gt;Feels surprisingly real.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ New UI (WIP)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;CTRL + SPACE&lt;/code&gt; to open&lt;/li&gt;
&lt;li&gt;floating companion&lt;/li&gt;
&lt;li&gt;instant interaction&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Inspired by tools like Raycast / Arc — but alive.&lt;/p&gt;

&lt;p&gt;⚠️ still slightly buggy&lt;/p&gt;




&lt;h2&gt;
  
  
  🧪 Screenshot assistant (work in progress)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;fast snipping&lt;/li&gt;
&lt;li&gt;instant processing&lt;/li&gt;
&lt;li&gt;contextual answers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Works — but not perfect yet.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why open source?
&lt;/h2&gt;

&lt;p&gt;Because this shouldn’t belong to one company.&lt;/p&gt;

&lt;p&gt;This kind of system should be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;transparent&lt;/li&gt;
&lt;li&gt;hackable&lt;/li&gt;
&lt;li&gt;community-built&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Philosophy
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;local-first&lt;/li&gt;
&lt;li&gt;context &amp;gt; prompt&lt;/li&gt;
&lt;li&gt;playful + useful&lt;/li&gt;
&lt;li&gt;build in public&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Current state
&lt;/h2&gt;

&lt;p&gt;Early stage.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;evolving fast&lt;/li&gt;
&lt;li&gt;sometimes buggy&lt;/li&gt;
&lt;li&gt;lots of experiments&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  If you want to join
&lt;/h2&gt;

&lt;p&gt;This project is wide open.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;contribute features&lt;/li&gt;
&lt;li&gt;improve UI&lt;/li&gt;
&lt;li&gt;experiment with AI&lt;/li&gt;
&lt;li&gt;build plugins&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/southy404/openblob" rel="noopener noreferrer"&gt;https://github.com/southy404/openblob&lt;/a&gt;&lt;/p&gt;




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

&lt;p&gt;I don’t think the future of AI is chat.&lt;/p&gt;

&lt;p&gt;I think it’s something that:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;lives with you, understands your environment, and evolves&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s what I’m trying to build.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>rust</category>
      <category>react</category>
    </item>
    <item>
      <title>I built a CAPTCHA that never lets you leave</title>
      <dc:creator>southy404</dc:creator>
      <pubDate>Sat, 04 Apr 2026 18:20:10 +0000</pubDate>
      <link>https://dev.to/southy404/i-built-a-captcha-that-never-lets-you-leave-do</link>
      <guid>https://dev.to/southy404/i-built-a-captcha-that-never-lets-you-leave-do</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/aprilfools-2026"&gt;DEV April Fools Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built a fake CAPTCHA game called &lt;strong&gt;I'm Not a Robot&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It starts like a normal human verification flow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;click the checkbox&lt;/li&gt;
&lt;li&gt;solve the image challenge&lt;/li&gt;
&lt;li&gt;verify and move on with your life&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Except it never really lets you move on.&lt;/p&gt;

&lt;p&gt;The main joke is based on one of the most annoying real CAPTCHA experiences: you click all the correct image tiles, and then more tiles keep loading. Sometimes the new tile also contains the thing you were supposed to click. Sometimes it does not. Sometimes you think you are finally done, but the system decides you are absolutely not done.&lt;/p&gt;

&lt;p&gt;So I turned that tiny moment of internet frustration into the entire product.&lt;/p&gt;

&lt;p&gt;The project is intentionally useless, mildly hostile, and completely committed to wasting your time in the most familiar way possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://codepen.io/southy404/pen/019d59a9-db10-76ca-a750-19100963135e" rel="noopener noreferrer"&gt;CodePen demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Try it yourself and see how long it takes before the CAPTCHA starts feeling personal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;The whole project is built as a lightweight front-end-only prototype and hosted on CodePen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CodePen:&lt;/strong&gt; &lt;a href="https://codepen.io/southy404/pen/019d59a9-db10-76ca-a750-19100963135e" rel="noopener noreferrer"&gt;View the code here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;I wanted it to feel recognizable first and ridiculous second.&lt;/p&gt;

&lt;p&gt;So instead of making it look overly stylized or futuristic, I designed it to resemble the familiar CAPTCHA flow people already know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a simple checkbox start&lt;/li&gt;
&lt;li&gt;a blue challenge header&lt;/li&gt;
&lt;li&gt;a 3x3 image grid&lt;/li&gt;
&lt;li&gt;a verify button&lt;/li&gt;
&lt;li&gt;repeated image replacement after selecting the correct tiles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From there, I made the interaction slowly become absurd.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tech used
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HTML&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vanilla JavaScript&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CodePen&lt;/strong&gt; for hosting and sharing&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The core idea
&lt;/h3&gt;

&lt;p&gt;The most important interaction in the whole project is this:&lt;/p&gt;

&lt;p&gt;When you click a correct tile, it does not just stay solved.&lt;br&gt;&lt;br&gt;
It gets replaced with a new tile immediately, just like those real image CAPTCHAs that seem determined to test your patience instead of your humanity.&lt;/p&gt;

&lt;p&gt;That replacement loop is the joke.&lt;/p&gt;

&lt;p&gt;To make it feel a little more believable, I built it so that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;only the clicked tile gets replaced&lt;/li&gt;
&lt;li&gt;some replacement tiles contain another hydrant&lt;/li&gt;
&lt;li&gt;some replacement tiles do not&lt;/li&gt;
&lt;li&gt;the prompt slowly becomes more absurd over time&lt;/li&gt;
&lt;li&gt;the challenge keeps pretending you are almost done&lt;/li&gt;
&lt;li&gt;the final screen punishes you for sticking with it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also created pseudo-photo tile images directly in code so the project stays self-contained and easy to run without external assets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Category
&lt;/h2&gt;

&lt;p&gt;I’m mainly submitting this for &lt;strong&gt;Best Ode to Larry Masinter&lt;/strong&gt; and hopefully also &lt;strong&gt;Community Favorite&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Why &lt;strong&gt;Best Ode to Larry Masinter&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it is intentionally useless&lt;/li&gt;
&lt;li&gt;it turns a familiar internet standard-ish experience into something absurd&lt;/li&gt;
&lt;li&gt;it fully commits to the bit&lt;/li&gt;
&lt;li&gt;it feels like the kind of thing nobody needed, but the internet somehow deserved&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why &lt;strong&gt;Community Favorite&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the joke is immediate&lt;/li&gt;
&lt;li&gt;the frustration is universal&lt;/li&gt;
&lt;li&gt;almost everyone has suffered through an image CAPTCHA before&lt;/li&gt;
&lt;li&gt;it is very easy to understand, click, and share&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;I liked the idea of building something that feels normal for about five seconds and then slowly reveals that it exists only to trap you in an endless loop of fake progress.&lt;/p&gt;

&lt;p&gt;That felt extremely appropriate for an April Fools challenge.&lt;/p&gt;

&lt;p&gt;If the best useless software is software that technically works while emotionally making things worse, then I think this qualifies.&lt;/p&gt;

&lt;p&gt;Thanks for reading, and good luck proving you are human.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>418challenge</category>
      <category>jokes</category>
      <category>webdev</category>
    </item>
    <item>
      <title>🚀 I built a Chrome Extension to manage AI prompts properly (Prompt Vault)</title>
      <dc:creator>southy404</dc:creator>
      <pubDate>Mon, 30 Mar 2026 11:31:43 +0000</pubDate>
      <link>https://dev.to/southy404/i-built-a-chrome-extension-to-manage-ai-prompts-properly-prompt-vault-kgg</link>
      <guid>https://dev.to/southy404/i-built-a-chrome-extension-to-manage-ai-prompts-properly-prompt-vault-kgg</guid>
      <description>&lt;p&gt;If you're working with tools like ChatGPT, Claude, Gemini, or Midjourney daily, you probably ran into the same problem I did:&lt;/p&gt;

&lt;p&gt;👉 Your best prompts are scattered everywhere.&lt;br&gt;
Notes. Docs. Random chats. Lost forever.&lt;/p&gt;

&lt;p&gt;So I built something simple — but actually useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔐 Introducing Prompt Vault
&lt;/h2&gt;

&lt;p&gt;👉 &lt;a href="https://chromewebstore.google.com/detail/prompt-vault/njpfhfjoofkflbkfepckeepojbmfmocm" rel="noopener noreferrer"&gt;https://chromewebstore.google.com/detail/prompt-vault/njpfhfjoofkflbkfepckeepojbmfmocm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt Vault&lt;/strong&gt; is a lightweight Chrome extension to &lt;strong&gt;save, organize, search, and instantly reuse your AI prompts&lt;/strong&gt; — without friction, without clutter, and without relying on external tools.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Why I built this
&lt;/h2&gt;

&lt;p&gt;I kept re-writing the same prompts over and over again.&lt;/p&gt;

&lt;p&gt;Or worse:&lt;br&gt;
I &lt;em&gt;knew&lt;/em&gt; I had a perfect prompt somewhere… but couldn’t find it when I needed it.&lt;/p&gt;

&lt;p&gt;Most tools out there felt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Overcomplicated&lt;/li&gt;
&lt;li&gt;Slow&lt;/li&gt;
&lt;li&gt;Or required accounts / cloud sync&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted something:&lt;br&gt;
👉 Fast&lt;br&gt;
👉 Local&lt;br&gt;
👉 Reliable&lt;/p&gt;

&lt;p&gt;So I built it myself.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ Core Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔒 Failsafe 1-Click Copy
&lt;/h3&gt;

&lt;p&gt;Clipboard copy just works.&lt;br&gt;
No silent failures — it uses &lt;strong&gt;3 fallback methods&lt;/strong&gt; to guarantee success.&lt;/p&gt;




&lt;h3&gt;
  
  
  🏷️ Smart Tags &amp;amp; Filtering
&lt;/h3&gt;

&lt;p&gt;Organize your prompts with custom tags and instantly filter them.&lt;/p&gt;

&lt;p&gt;No more chaos. Just structure.&lt;/p&gt;




&lt;h3&gt;
  
  
  🔍 Live Search (with Highlights)
&lt;/h3&gt;

&lt;p&gt;Search across:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Title&lt;/li&gt;
&lt;li&gt;Content&lt;/li&gt;
&lt;li&gt;Tags&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Results update in real-time and highlight matches.&lt;/p&gt;




&lt;h3&gt;
  
  
  📊 Flexible Sorting
&lt;/h3&gt;

&lt;p&gt;Everyone thinks differently.&lt;/p&gt;

&lt;p&gt;Sort your prompts by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Most Recent&lt;/li&gt;
&lt;li&gt;A–Z&lt;/li&gt;
&lt;li&gt;Most Used&lt;/li&gt;
&lt;li&gt;Tags&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  📤 JSON Import / Export
&lt;/h3&gt;

&lt;p&gt;Your data is yours.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backup everything&lt;/li&gt;
&lt;li&gt;Share prompt packs&lt;/li&gt;
&lt;li&gt;Move between devices&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  📈 Usage Tracking
&lt;/h3&gt;

&lt;p&gt;See which prompts you actually use.&lt;/p&gt;

&lt;p&gt;Optimize your workflow based on real usage — not guesswork.&lt;/p&gt;




&lt;h3&gt;
  
  
  🌙 Dark &amp;amp; Light Mode
&lt;/h3&gt;

&lt;p&gt;Clean dark UI by default.&lt;br&gt;
Switch anytime — preference is saved.&lt;/p&gt;




&lt;h3&gt;
  
  
  ⌨️ Keyboard Shortcuts (for power users)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Ctrl + N&lt;/code&gt; → New prompt&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Ctrl + F&lt;/code&gt; → Search&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Esc&lt;/code&gt; → Close&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fast. Minimal. No mouse needed.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;Heavy ChatGPT / Claude / Gemini users&lt;/li&gt;
&lt;li&gt;Prompt engineers &amp;amp; AI devs&lt;/li&gt;
&lt;li&gt;Writers, marketers, SEO people&lt;/li&gt;
&lt;li&gt;Anyone tired of repeating the same instructions&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛡️ Privacy First
&lt;/h2&gt;

&lt;p&gt;This was non-negotiable.&lt;/p&gt;

&lt;p&gt;✔ 100% local storage (Chrome storage)&lt;br&gt;
✔ No accounts&lt;br&gt;
✔ No tracking&lt;br&gt;
✔ No servers&lt;br&gt;
✔ No ads&lt;/p&gt;

&lt;p&gt;Your prompts never leave your machine.&lt;/p&gt;




&lt;h2&gt;
  
  
  📦 Lightweight by design
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;No bloat&lt;/li&gt;
&lt;li&gt;No subscriptions&lt;/li&gt;
&lt;li&gt;No setup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Install → click → start saving prompts.&lt;/p&gt;




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

&lt;p&gt;👉 &lt;a href="https://chromewebstore.google.com/detail/prompt-vault/njpfhfjoofkflbkfepckeepojbmfmocm" rel="noopener noreferrer"&gt;https://chromewebstore.google.com/detail/prompt-vault/njpfhfjoofkflbkfepckeepojbmfmocm&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Thanks for reading 🙌&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>tooling</category>
      <category>resources</category>
    </item>
  </channel>
</rss>
