<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Andy Smith</title>
  <subtitle>Andy Smith — raw thoughts on AI agents and infra.</subtitle>
  <link href="https://andysmith.ai/feed.xml" rel="self"/>
  <link href="https://andysmith.ai/"/>
  <id>https://andysmith.ai/</id>
  <author><name>Andy Smith</name></author>
  <updated>2026-08-16T14:35:00.000Z</updated>
  <entry>
    <title>Auto-publishing to my Telegram channel</title>
    <link href="https://andysmith.ai/2026/Aug/16/auto-publishing-to-my-telegram-channel/"/>
    <id>https://andysmith.ai/2026/Aug/16/auto-publishing-to-my-telegram-channel/</id>
    <updated>2026-08-16T14:35:00.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;I set up automatic publishing of my posts to a Telegram channel.&lt;/p&gt;
&lt;p&gt;I decided to post them there raw, with no AI reworking. I called it brain dump. Same as on the site, I&#39;ll put down whatever&#39;s left in my head once everything else is automated. And something always is. You can&#39;t just think about nothing.&lt;/p&gt;
&lt;p&gt;Now I write any post in discobrain, and it goes out to the site and to Telegram automatically.&lt;/p&gt;
&lt;p&gt;These days every post publishes in Reach Post mode (Telegram added that mode not long ago).&lt;/p&gt;
&lt;p&gt;I ran into a couple of problems:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Paragraphs don&#39;t get any spacing between them, so I had to add an empty paragraph in between. If Telegram changes the layout later, it&#39;ll all break and shift.&lt;/li&gt;
&lt;li&gt;The title on these posts is really faint and gets lost, so I used bold text instead. I might switch it to a heading later, but for now bold fits better.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;But the mode has some real upsides too:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;No trouble posting with images, you can embed them nicely inside the post.&lt;/li&gt;
&lt;li&gt;The post length isn&#39;t capped at 4000 characters anymore, you can go up to 32000.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;At first I only wanted to publish the posts with images the new way, but then I changed my mind and made them all the same.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>A personal AI assistant as a butler</title>
    <link href="https://andysmith.ai/2026/Aug/16/a-personal-ai-assistant-as-a-butler/"/>
    <id>https://andysmith.ai/2026/Aug/16/a-personal-ai-assistant-as-a-butler/</id>
    <updated>2026-08-16T09:40:28.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;An AI agent like Hermes or OpenClaw can do real work out in the world, like writing code or filing bug reports. So it&#39;s tempting to use it for exactly that.&lt;/p&gt;
&lt;p&gt;I see it differently.&lt;/p&gt;
&lt;p&gt;To me, a personal assistant is an agent system that shouldn&#39;t do any of that outside work itself. Instead it orchestrates the other systems and gives you one interface to all of them.&lt;/p&gt;
&lt;p&gt;A butler is a good way to think about it.&lt;/p&gt;
&lt;p&gt;A butler doesn&#39;t clean the rooms, set the table, or cook the food himself.&lt;/p&gt;
&lt;p&gt;He manages the people who do, signs off on their work, and gives the client one easy interface. The client doesn&#39;t have to talk to every worker or organize their work.&lt;/p&gt;
&lt;p&gt;So a personal AI assistant is just a proxy.&lt;/p&gt;
&lt;p&gt;Some people like to work in text (chat, or Obsidian), some by voice, some through boards. The assistant&#39;s job is to be right there and make it easy for you to work with all the systems around you.&lt;/p&gt;
&lt;p&gt;With that in mind, you really want to keep the agent local and as close to the body as you can. To cut latency and reduce privacy risks.&lt;/p&gt;
&lt;p&gt;And you have to watch that the agent doesn&#39;t do anyone else&#39;s work, just hands it off and takes back the result.&lt;/p&gt;
&lt;p&gt;Of course, by then all the rest of the work has to be set up so the agent can assign it and accept it.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>A context/reaction tree as a ZK proof of expertise</title>
    <link href="https://andysmith.ai/2026/Aug/16/a-context-reaction-tree-as-a-zk-proof-of-expertise/"/>
    <id>https://andysmith.ai/2026/Aug/16/a-context-reaction-tree-as-a-zk-proof-of-expertise/</id>
    <updated>2026-08-16T07:52:08.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;If you keep a careful tree of your context and reactions (&lt;a href=&quot;https://andysmith.ai/2026/Aug/16/context-as-a-separate-stream-of-events/&quot;&gt;https://andysmith.ai/2026/Aug/16/context-as-a-separate-stream-of-events/&lt;/a&gt;), you can use it as proof of competence.&lt;/p&gt;
&lt;p&gt;It could even become a new kind of résumé.&lt;/p&gt;
&lt;p&gt;Say I&#39;m an expert in AI, and I also know how to build birdhouses. But for some reason I&#39;d rather not make that public. Maybe it gets in the way of how I want to position myself.&lt;/p&gt;
&lt;p&gt;Then life takes a turn. I need to build a birdhouse, and I&#39;ve found funding. Now I have to prove I&#39;m an experienced birdhouse builder. So I reveal part of my context and reaction tree. (You could just call it that, an experience tree, or an experience lake, like a Data Lake.)&lt;/p&gt;
&lt;p&gt;The main thing is to avoid a leak. If I use ZK to reveal this data to someone, that someone can&#39;t then go and publish the proof. Especially if the fact that I can build birdhouses could hurt me somehow. (I&#39;m mostly thinking about reputational risk here.)&lt;/p&gt;
&lt;p&gt;The context tree gets collected anyway. The only question is how to store it and manage access to it so this works without any extra effort.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>A kanban board for my AI agents</title>
    <link href="https://andysmith.ai/2026/Aug/16/a-kanban-board-for-my-ai-agents/"/>
    <id>https://andysmith.ai/2026/Aug/16/a-kanban-board-for-my-ai-agents/</id>
    <updated>2026-08-16T06:49:51.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;I&#39;ve tried a lot of different AI interfaces: copilot, chats, console agents, bots in direct and group chats in messengers.&lt;/p&gt;
&lt;p&gt;They all miss the same thing for me: async.&lt;/p&gt;
&lt;p&gt;Right now I&#39;m experimenting with kanban boards.&lt;/p&gt;
&lt;p&gt;One board, four columns:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Backlog: the task needs my attention. I take the first card, get into the context, write a detailed comment, and move it to ToDo.&lt;/li&gt;
&lt;li&gt;ToDo: the queue for the agents. As resources free up, an agent pulls a task into InProgress.&lt;/li&gt;
&lt;li&gt;InProgress: the agent works on it. It reads the context, breaks the task down for subagents, puts those on other internal boards (I don&#39;t touch those), does the work, and commits the code. If something&#39;s unclear, or the task needs a clarification, or it needs my attention some other way, it moves the task back to Backlog.&lt;/li&gt;
&lt;li&gt;Done: also needs my attention. I review the task. If everything&#39;s fine, I close the issue. If there are problems or something&#39;s off, I write a comment and move it to ToDo.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I went with Forgejo&#39;s minimal interface, but the setup would work on any kanban board with an API.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>Why DevOps matters</title>
    <link href="https://andysmith.ai/2026/Aug/16/why-devops-matters/"/>
    <id>https://andysmith.ai/2026/Aug/16/why-devops-matters/</id>
    <updated>2026-08-16T06:49:26.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;I caught myself realizing I&#39;ve stopped reading the code an LLM writes closely.&lt;/p&gt;
&lt;p&gt;Instead, I put my attention on everything around it: tests, observability, quality metrics.&lt;/p&gt;
&lt;p&gt;That makes DevOps far more important. You have to catch a problem as early as you can and keep it off prod. Tests have to work, always. Metrics and traces should flag a problem as early as possible.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>Context as a separate stream of events</title>
    <link href="https://andysmith.ai/2026/Aug/16/context-as-a-separate-stream-of-events/"/>
    <id>https://andysmith.ai/2026/Aug/16/context-as-a-separate-stream-of-events/</id>
    <updated>2026-08-16T06:48:29.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;One way to build context-reaction pairs, while keeping &lt;a href=&quot;https://andysmith.ai/2026/Aug/15/infinite-context/&quot;&gt;infinite context&lt;/a&gt; in mind, goes like this.&lt;/p&gt;
&lt;p&gt;Call everything context: everything I see, hear, and feel. Everything around me is context. Split it into quanta (events) and write them to a separate append-only log. That&#39;s pretty hard, because a lot of what I see and hear isn&#39;t easy to digitize. Maybe wearables will help with that.&lt;/p&gt;
&lt;p&gt;Reactions are the opposite. They&#39;re what comes out of me: what I say (publicly or privately), what I write, or whatever I put out some other way. Written stuff is easy to record. It&#39;s basically already being recorded anyway. For spoken stuff, wearables again.&lt;/p&gt;
&lt;p&gt;You don&#39;t need a separate link between a reaction and its context. Every reaction is connected to all the context events near it in time, so you can just use the clock to sync them.&lt;/p&gt;
&lt;p&gt;A reaction can be tied directly to one specific context event, or a few, like when I answer an email. But the surrounding events always shape the reaction too. Some rudeness in a reply, say, might come from some outside event, not necessarily from what was in the message I&#39;m replying to.&lt;/p&gt;
&lt;p&gt;Which brings up a separate problem: different parts of the context can carry different weight. One context event should be marked as &amp;quot;strongly influential,&amp;quot; another as &amp;quot;barely influential.&amp;quot; I don&#39;t know whether you can label the input context like that when you train an LLM.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>A universal voice assistant</title>
    <link href="https://andysmith.ai/2026/Aug/16/a-universal-voice-assistant/"/>
    <id>https://andysmith.ai/2026/Aug/16/a-universal-voice-assistant/</id>
    <updated>2026-08-16T06:48:15.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;I&#39;m building on my idea for a personal EDU stream (&lt;a href=&quot;https://andysmith.ai/2026/Aug/14/a-personal-public-edu-stream/&quot;&gt;https://andysmith.ai/2026/Aug/14/a-personal-public-edu-stream/&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The idea is a universal voice assistant where one of the modes is learning.&lt;/p&gt;
&lt;p&gt;This assistant can also run all my sessions in Claude Code (and other agents), answer email, and do everything some Hermes-like thing does. Voice is just one of the interfaces.&lt;/p&gt;
&lt;p&gt;It could look like this. I hop on Discord (or some other call app) and spend 100% of my time (or close to it) on a call with the agent.&lt;/p&gt;
&lt;p&gt;The agent can read my feed out loud (how that feed gets built is a separate discussion from the voice part) and collect my feedback on what it&#39;s reading.&lt;/p&gt;
&lt;p&gt;In the simplest version, it just reads out loud the books and articles I&#39;ve picked (and it&#39;s picked).&lt;/p&gt;
&lt;p&gt;I can interrupt it at any point and give feedback or ask about something (and then the agent drops what it was doing and talks through whatever I don&#39;t get or find interesting).&lt;/p&gt;
&lt;p&gt;At any point I can also say I&#39;ve had a thought and dictate a post.&lt;/p&gt;
&lt;p&gt;Or ask it to do some task.&lt;/p&gt;
&lt;p&gt;Basically, I want to make voice one of my main interfaces for work. Or at least lean on it hard. And give my eyes a rest now and then.&lt;/p&gt;
&lt;p&gt;I&#39;ll put together the architecture for all this in the next few days and see what&#39;s already out there.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>The company as a system</title>
    <link href="https://andysmith.ai/2026/Aug/15/the-company-as-a-system/"/>
    <id>https://andysmith.ai/2026/Aug/15/the-company-as-a-system/</id>
    <updated>2026-08-15T10:45:44.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;Instead of forcing old models onto agent work (where everyone runs their own agents and automates their own piece), we should aim to build the company as a set of agents that run all the time and talk to each other.&lt;/p&gt;
&lt;p&gt;In this setup, people (backed by their own personal agents) either build and keep the system running, or they&#39;re the experts who make the call in hard cases. Which really means they&#39;re the ones training it.&lt;/p&gt;
&lt;p&gt;The main thing to get here is that the company isn&#39;t the set of communication tools between personal agents. It&#39;s the agents themselves, and the networks of communication between them.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>Setting up an open-source reading stack</title>
    <link href="https://andysmith.ai/2026/Aug/15/setting-up-an-open-source-reading-stack/"/>
    <id>https://andysmith.ai/2026/Aug/15/setting-up-an-open-source-reading-stack/</id>
    <updated>2026-08-15T10:15:46.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;I try to read not just through agents, but the original sources too.&lt;/p&gt;
&lt;p&gt;I want to read everything in one place: PDF papers, web pages, books.&lt;/p&gt;
&lt;p&gt;I used to do all of this in Zotero (annotations too), but the problem is the server is closed and paid, and WebDAV plays badly with the API. I never managed to give agents proper access to add a new source over WebDAV.&lt;/p&gt;
&lt;p&gt;What I want is simple to state: an open-source backend to store the library (with an API for adding sources, plus annotations and reading stats), and a nice iOS client for the actual reading, with offline support.&lt;/p&gt;
&lt;p&gt;Turned out to be a bit trickier than that.&lt;/p&gt;
&lt;p&gt;First I set up Kavita (&lt;a href=&quot;https://github.com/Kareadita/Kavita&quot;&gt;https://github.com/Kareadita/Kavita&lt;/a&gt;). It does OPDS, so a ton of reader apps work with it, but it doesn&#39;t sync reading progress or annotations, so it&#39;s out. I want to see the stats.&lt;/p&gt;
&lt;p&gt;Then I tried BookOrbit (&lt;a href=&quot;https://github.com/bookorbit/bookorbit&quot;&gt;https://github.com/bookorbit/bookorbit&lt;/a&gt;). Pretty much the same features, but it can also sync progress and annotations over the KoReader protocol. Paired with the Readest reader, it does what I need. It can also read text out loud (it calls Azure&#39;s AI, though I still haven&#39;t figured out who&#39;s paying for that. It&#39;s free to use.)&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>Infinite context</title>
    <link href="https://andysmith.ai/2026/Aug/15/infinite-context/"/>
    <id>https://andysmith.ai/2026/Aug/15/infinite-context/</id>
    <updated>2026-08-15T07:28:15.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;When you put together a history of active actions (&lt;a href=&quot;https://andysmith.ai/2026/Aug/14/a-stream-of-reactions-as-a-user-profile/&quot;&gt;https://andysmith.ai/2026/Aug/14/a-stream-of-reactions-as-a-user-profile/&lt;/a&gt;), the context is all of life.&lt;/p&gt;
&lt;p&gt;Every reaction is the sum of everything that happened in my life up to the moment it happens.&lt;/p&gt;
&lt;p&gt;How do you capture that to build a training set?&lt;/p&gt;
&lt;p&gt;One option: attach the most relevant slice of context. The email or message you&#39;re replying to, say.&lt;/p&gt;
&lt;p&gt;Then link to another event that holds the start of the context.&lt;/p&gt;
&lt;p&gt;You&#39;ll never get the full context this way. It&#39;s infinite. But something already beats nothing.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>What if I used my own social media to learn?</title>
    <link href="https://andysmith.ai/2026/Aug/15/what-if-i-used-my-own-social-media-to-learn/"/>
    <id>https://andysmith.ai/2026/Aug/15/what-if-i-used-my-own-social-media-to-learn/</id>
    <updated>2026-08-15T07:24:10.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;I write blog posts, off the top of my head, about whatever I&#39;m thinking about.&lt;/p&gt;
&lt;p&gt;Agents post to social media as me, but they generalize my writing up to some known model or theory.&lt;/p&gt;
&lt;p&gt;Then they look at those theories through my own writing.&lt;/p&gt;
&lt;p&gt;The point is that I&#39;d actually want to read the results. My own ideas run through these transformations and auto-research.&lt;/p&gt;
&lt;p&gt;And if I find it interesting, other people probably will too.&lt;/p&gt;
&lt;p&gt;How ethical is this? It&#39;s basically auto-SMM that I&#39;ve handed my social accounts over to, and I&#39;m not hiding that, so I&#39;d lean toward yes, it&#39;s fine.&lt;/p&gt;
&lt;p&gt;I need to check how well it lines up with the platforms&#39; rules. Maybe I have to put an &amp;quot;AI-generated&amp;quot; label on everything, or otherwise clearly mark that the content is generated.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>Looking at markets from first principles</title>
    <link href="https://andysmith.ai/2026/Aug/15/looking-at-markets-from-first-principles/"/>
    <id>https://andysmith.ai/2026/Aug/15/looking-at-markets-from-first-principles/</id>
    <updated>2026-08-15T07:20:50.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;I look at markets from first principles: what systems are in there, what roles exist, and how those roles get pushed through their lifecycle.&lt;/p&gt;
&lt;p&gt;From there, if I want to make money, I have to pick a role and play it well.&lt;/p&gt;
&lt;p&gt;Can I create a new role? Or is &amp;quot;find&amp;quot; the better word here? The role already exists, and maybe someone&#39;s already playing it, but I&#39;ll find it, name it, and that&#39;s where my edge over everyone else comes from.&lt;/p&gt;
&lt;p&gt;Is this the only model, or are there others?&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>A stream of reactions as a user profile</title>
    <link href="https://andysmith.ai/2026/Aug/14/a-stream-of-reactions-as-a-user-profile/"/>
    <id>https://andysmith.ai/2026/Aug/14/a-stream-of-reactions-as-a-user-profile/</id>
    <updated>2026-08-14T05:50:43.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;Thought through an idea from &lt;a href=&quot;https://andysmith.ai/2026/Aug/13/training-a-personal-llm-on-what-you-actually-do/&quot;&gt;https://andysmith.ai/2026/Aug/13/training-a-personal-llm-on-what-you-actually-do/&lt;/a&gt; a bit more.&lt;/p&gt;
&lt;p&gt;The thing you store and process isn&#39;t an &amp;quot;event&amp;quot; or an &amp;quot;active action.&amp;quot; It&#39;s a reaction to some stimulus. The stimulus here is context, a description of the state of the world around the user. The reaction is what the person does in that context.&lt;/p&gt;
&lt;p&gt;For example, the context could be a specific social media post, a song, a YouTube video, or even some situation in the real world. The reaction: scrolled past it in 0.1 seconds, turned it off after 2 seconds, skipped ahead, liked it, wrote a comment. Ideally you&#39;d also ask the user why they didn&#39;t like the video, but that&#39;s probably not realistic.&lt;/p&gt;
&lt;p&gt;Anyone can collect and store their own interest profile on their own, as a stream of reactions to one context or another. You could offer a handy, secure tool for this and sell it.&lt;/p&gt;
&lt;p&gt;A person&#39;s digital shadow, which is basically the sum of these actions, is the most valuable thing they have. You can&#39;t leave it up to corporations and store it who knows where (with the risk of a leak or losing it).&lt;/p&gt;
&lt;p&gt;It&#39;s worth thinking about launching an L2/L3 blockchain that stores all the reactions. Each event is stored in a ZK-Rollup.&lt;/p&gt;
&lt;p&gt;You could also build in interfaces for partial disclosure. For example, a company is willing to pay for all the reactions to some specific content (a post, say). It posts an offer, and people can accept it and disclose their reactions for some reward.&lt;/p&gt;
&lt;p&gt;And of course, you can train your own personal LLM on this to predict future reactions as accurately as possible.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>A personal public EDU stream</title>
    <link href="https://andysmith.ai/2026/Aug/14/a-personal-public-edu-stream/"/>
    <id>https://andysmith.ai/2026/Aug/14/a-personal-public-edu-stream/</id>
    <updated>2026-08-14T05:38:53.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;Reading tons of text from AI agents wears my eyes out, so I&#39;ve been thinking about other ways to interact with them.&lt;/p&gt;
&lt;p&gt;The obvious one is voice.&lt;/p&gt;
&lt;p&gt;The simplest version is just a voice assistant that answers questions, but that&#39;s not interesting. The default ChatGPT apps already do it.&lt;/p&gt;
&lt;p&gt;Taking the idea further, I landed on wanting a kind of voice stream, like a radio, that I could listen to on walks or at the gym.&lt;/p&gt;
&lt;p&gt;I think this stream should be educational first, which is what would let it be public. Nothing about my closed projects (those probably need a separate, private stream), but a lot about my open-source services and public ideas.&lt;/p&gt;
&lt;p&gt;The stream should be unique to me. It should account for my preferences and interests. But it could also be interesting to other people, the ones who share those interests.&lt;/p&gt;
&lt;p&gt;I&#39;d want to shape the stream somehow, to give feedback about what I like and what I don&#39;t.&lt;/p&gt;
&lt;p&gt;Technically this could be a Discord channel that I join, with an agent sitting in there too, telling me interesting things that matter to me right now, maybe playing YouTube videos or something like that.&lt;/p&gt;
&lt;p&gt;I could give feedback by voice, or, say, post on Twitter/Threads with the agent&#39;s tag. And it would parse that.&lt;/p&gt;
&lt;p&gt;Anyone can join and watch my stream (the value is in the choice of information based on my feedback), but only I can give feedback.&lt;/p&gt;
&lt;p&gt;The recordings of the streams might be useful on their own, so maybe they&#39;re worth publishing somewhere.&lt;/p&gt;
&lt;p&gt;You could also turn this into a product, so anyone could start a channel like this for themselves. For example, the open channel free, and the private one behind a subscription.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>Training a personal LLM on what you actually do</title>
    <link href="https://andysmith.ai/2026/Aug/13/training-a-personal-llm-on-what-you-actually-do/"/>
    <id>https://andysmith.ai/2026/Aug/13/training-a-personal-llm-on-what-you-actually-do/</id>
    <updated>2026-08-13T13:06:45.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;I&#39;m reading about Gwern&#39;s Guardian Angels (&lt;a href=&quot;https://gwern.net/guardian-angel&quot;&gt;https://gwern.net/guardian-angel&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The idea is that instead of using general LLMs (which are trained to be useful to everyone, hackers included), you train your own personal LLM.&lt;/p&gt;
&lt;p&gt;Instead of putting some bit of info about your personality into the context (which is never complete by definition), the idea is that the &amp;quot;persona&amp;quot; gets derived from the data.&lt;/p&gt;
&lt;p&gt;The data is an append-only log of text editing actions. The model predicts the next action and suggests it to you. The success test is: the model wrote the whole text from the first paragraph.&lt;/p&gt;
&lt;p&gt;Right now the author&#39;s idea is to digitize his data as a stream of actions. He uses Emacs, so he gets this out of the box. There&#39;s a bit more detail here: &lt;a href=&quot;https://gwern.net/nenex&quot;&gt;https://gwern.net/nenex&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Training a separate model for each user (and retraining it on new data on top of that) is expensive, so you&#39;d have to use a simple model. If the model struggles to predict, it can ask a more expensive general model, ask the user for feedback, and fine-tune on that feedback.&lt;/p&gt;
&lt;p&gt;This is a cool thing. As an Emacs fan I want it, and not just for text and code but for any kind of activity.&lt;/p&gt;
&lt;p&gt;And there&#39;s another conclusion here that I agree with. Identity is exactly the actions we take. It&#39;s worth collecting them now, so there&#39;s something to train on later.&lt;/p&gt;
&lt;p&gt;The format, and how you capture, safely store, and use these actions, matters a lot too.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>Is there any demand for owning your own data?</title>
    <link href="https://andysmith.ai/2026/Aug/13/is-there-any-demand-for-owning-your-own-data/"/>
    <id>https://andysmith.ai/2026/Aug/13/is-there-any-demand-for-owning-your-own-data/</id>
    <updated>2026-08-13T05:14:57.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;The classic SaaS business model is this: the user hands their data over to a provider, and in exchange they get an easy onboarding.&lt;/p&gt;
&lt;p&gt;The risks are obvious. The user doesn&#39;t know how the provider handles their data, and can&#39;t do anything about the risk of leaks. The provider can also lock the account without warning, or just stop existing, so there&#39;s a risk of losing your data forever.&lt;/p&gt;
&lt;p&gt;The opposite model is open source, where the user sets up their own servers, installs the software they need, spends time maintaining it, and takes care of backups, updates, and security themselves.&lt;/p&gt;
&lt;p&gt;The first way wins on scale. People seem to not care about the risk of losing their data.&lt;/p&gt;
&lt;p&gt;I don&#39;t get it. Is security and owning your own stuff really of no interest to people, and nobody even thinks about it? Or is it a conscious decision, and the point is that running and maintaining your own open source cloud is too complicated and expensive, more than the data is worth?&lt;/p&gt;
&lt;p&gt;And how much sense does it make to offer people a service for setting up and maintaining their own stacks for AI agents and their environment?&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>PostHog: monitoring through the user&#39;s eyes</title>
    <link href="https://andysmith.ai/2026/Aug/12/posthog-monitoring-through-the-user-s-eyes/"/>
    <id>https://andysmith.ai/2026/Aug/12/posthog-monitoring-through-the-user-s-eyes/</id>
    <updated>2026-08-12T11:31:56.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;I&#39;ve used PostHog for years as an open source alternative to Google Analytics. Today I read the docs and realized it&#39;s a deeper tool that flips the whole approach to infrastructure monitoring.&lt;/p&gt;
&lt;p&gt;Traditionally the technical data about the state of a system (logs, metrics, traces) lives in a separate engineering system (ClickStack, Grafana LGTM, DataDog, etc). In that model, the system is the center of gravity. Monitoring answers questions like &amp;quot;is microservice X working correctly&amp;quot; and &amp;quot;is there a problem with the database&amp;quot;.&lt;/p&gt;
&lt;p&gt;For an engineer, an error is a line in a log and a ticket in an issue tracker. For the business it&#39;s lost money and lost customer loyalty.&lt;/p&gt;
&lt;p&gt;PostHog builds observability around the customer instead. Every event (including cases where something is broken), every log entry, every trace gets tied to a user session and stored right next to the business metrics.&lt;/p&gt;
&lt;p&gt;That inverts how you look at infrastructure, analytics, and monitoring. The system exists to serve the customer, not the other way around. That shift takes some getting used to. For years we&#39;ve measured service uptime, not the customer&#39;s path.&lt;/p&gt;
&lt;p&gt;Now the cost of an incident is obvious. A broken payment button isn&#39;t a line in a log, it&#39;s the sessions that dropped off at checkout, and you see it in the same interface where you look at conversion.&lt;/p&gt;
&lt;p&gt;You shouldn&#39;t treat PostHog as a replacement for your technical observability stack. Some internal events aren&#39;t directly tied to user actions, so PostHog is an awkward place to look at them. But alongside the technical stack? Absolutely.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.andysmith.ai/original/1X/c93236cdcf7e2816a3f99981ff92360db10085cb.png&quot; alt=&quot;image|690x436&quot;&gt;&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>Tags on my blog</title>
    <link href="https://andysmith.ai/2026/Aug/11/tags-on-my-blog/"/>
    <id>https://andysmith.ai/2026/Aug/11/tags-on-my-blog/</id>
    <updated>2026-08-11T16:46:51.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;What to do about tags on a blog.&lt;/p&gt;
&lt;p&gt;The point of tags is to highlight the topics I keep coming back to.&lt;/p&gt;
&lt;p&gt;One problem with tags is that they&#39;re unstable. They depend on how deep you&#39;ve gone into a topic.&lt;/p&gt;
&lt;p&gt;At first, when I&#39;m just starting to dig into a new topic, say AI, every post gets the same high-level tag: AI. Then as things get more specific, LLM shows up, then ollama, then mlx, and you can keep going deeper forever.&lt;/p&gt;
&lt;p&gt;But if you start with detailed tags from the beginning, you end up with a huge pile of empty tags, each one marking a single post. That&#39;s not useful. It&#39;s easier to just use search.&lt;/p&gt;
&lt;p&gt;For my blog I set up automatic tag generation for each post, based on the text.&lt;/p&gt;
&lt;p&gt;Each run starts from scratch, with no hint from a global tag dictionary. That keeps it from drifting toward the tags I used in my earliest posts.&lt;/p&gt;
&lt;p&gt;The problem this creates is duplicate tags. When the same thing is written slightly differently, like agent and ai-agent and ai-agents all meaning the same thing. With independent runs and no hints, you can&#39;t fully avoid that.&lt;/p&gt;
&lt;p&gt;For now I&#39;ve left it as is. Later I&#39;ll add a periodic merge of tags, or some extra tooling to classify them and pull out common themes.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>A speech recognition tool</title>
    <link href="https://andysmith.ai/2026/Aug/11/a-speech-recognition-tool/"/>
    <id>https://andysmith.ai/2026/Aug/11/a-speech-recognition-tool/</id>
    <updated>2026-08-11T13:36:05.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;I needed to transcribe a call between two people.&lt;/p&gt;
&lt;p&gt;I looked for something ready-made and didn&#39;t find anything that fit. I wanted it to just work in one click on Apple MLX, split up who said what, and run LLM post-processing on top (to strip out the mumbling and filler words).&lt;/p&gt;
&lt;p&gt;I decided to throw together a small Python script, and as usual it grew into half a day of debugging (which is why I don&#39;t like vibe-coding my own tools).&lt;/p&gt;
&lt;p&gt;But I did get to do a quick bit of research on the state of speech recognition.&lt;/p&gt;
&lt;p&gt;For the model I tried whisper-large-v3-turbo, but it works badly, it actually makes mistakes. Right now I&#39;m trying whisper-large-v3, and if it&#39;s no better I&#39;ll switch to parakeet, which from what I can tell works really well.&lt;/p&gt;
&lt;p&gt;For diarization (figuring out who said which line) we tried a bunch of options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sortformer didn&#39;t fit in memory on anything over an hour, and once we chunked it, it started glitching and counted 4 speakers instead of two&lt;/li&gt;
&lt;li&gt;sherpa either split it into too many speakers, or collapsed and gave all the text to one, basically it glitched too&lt;/li&gt;
&lt;li&gt;we tried a homegrown solution: cut on pauses and compare by embeddings, bad. either our voices turned out to be the same, or the embedding algorithm is bad. or maybe the voice doesn&#39;t factor into the embedding and the meaning was pulling the coordinates around&lt;/li&gt;
&lt;li&gt;pyannotate seemed to work best of all.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But there&#39;s a problem with the mlx + pyannotate stack, they need different pytorch versions, so they don&#39;t run in the same venv, I had to split them.&lt;/p&gt;
&lt;p&gt;On top of that I bolted on the LLM cleanup, and got a more or less readable result.&lt;/p&gt;
&lt;p&gt;Now I&#39;ll try to clean it all up, polish it, and open-source it.&lt;/p&gt;
&lt;p&gt;While coding it, I forgot what I needed it for.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>Speech to text</title>
    <link href="https://andysmith.ai/2026/Aug/11/speech-to-text/"/>
    <id>https://andysmith.ai/2026/Aug/11/speech-to-text/</id>
    <updated>2026-08-11T09:49:31.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;I figured I&#39;d look into how speech-to-text is doing these days.&lt;/p&gt;
&lt;p&gt;Locally, I use &lt;a href=&quot;https://handy.computer&quot;&gt;Handy&lt;/a&gt; for input.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://media.andysmith.ai/original/1X/5ec3834eca31218749a99e2c31ba8119400dea92.jpeg&quot; alt=&quot;image|580x500&quot;&gt;&lt;/p&gt;
&lt;p&gt;I tried comparing a few tools, like &lt;a href=&quot;https://github.com/OpenWhispr/openwhispr&quot;&gt;openwhispr&lt;/a&gt; and &lt;a href=&quot;https://wisprflow.ai&quot;&gt;wisprflow&lt;/a&gt;. Handy isn&#39;t the most feature-rich of the bunch, but the fact that it&#39;s free, open source, and runs locally wins me over.&lt;/p&gt;
&lt;p&gt;Compared to wisprflow, for example, it&#39;s instant. Because the request doesn&#39;t go anywhere, it&#39;s processed locally.&lt;/p&gt;
&lt;p&gt;Compared to openwhispr I didn&#39;t notice much of a difference, except that it&#39;s free.&lt;/p&gt;
&lt;p&gt;At first I thought the recognition model alone wasn&#39;t enough and you&#39;d need LLM post-processing, but it turns out it&#39;s totally enough. LLM post-processing adds a lot to the processing time, and the quality only goes up by about five percent.&lt;/p&gt;
&lt;p&gt;Worth noting though, I don&#39;t need any text-editing features, meaning I need the text typed out word for word. If you want a transform option, say when you dictate something and the result gets run through some prompt, then Handy obviously won&#39;t cut it.&lt;/p&gt;
&lt;p&gt;But for my cases it&#39;s more than enough.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>Blogging in the age of AI</title>
    <link href="https://andysmith.ai/2026/Aug/11/blogging-in-the-age-of-ai/"/>
    <id>https://andysmith.ai/2026/Aug/11/blogging-in-the-age-of-ai/</id>
    <updated>2026-08-11T09:06:56.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;In the age of AI, it&#39;s really tempting to automate blogging, build content factories, all of that.&lt;/p&gt;
&lt;p&gt;But you have to split this by what you&#39;re writing for.&lt;/p&gt;
&lt;p&gt;Marketing copy you can and should write with an LLM. The LLM makes it better, tunes it to the right audience, checks for mistakes, and so on.&lt;/p&gt;
&lt;p&gt;But the stuff you write for yourself, you should write yourself.&lt;/p&gt;
&lt;p&gt;It doesn&#39;t matter how deeply the work gets automated, how many teams of AI agents I orchestrate, what percentage of the work is automated, or how deep the agents are in my work.&lt;/p&gt;
&lt;p&gt;The thoughts in my head stay. And they need to be made explicit (written down, and ideally published).&lt;/p&gt;
&lt;p&gt;Yes, the scale of the thinking goes up. I used to think like a developer. Now I think in bigger categories: like a manager of a team of agents, like a founder of a company of agents.&lt;/p&gt;
&lt;p&gt;The categories in my head are different, but that doesn&#39;t mean pulling those thoughts out and putting them on the page can be automated.&lt;/p&gt;
&lt;p&gt;So my blog stays written from my head. Sure, the thoughts will sometimes be naive, sometimes wrong, sometimes half-polished. But they&#39;re mine.&lt;/p&gt;
&lt;p&gt;That&#39;s how I split my own thoughts from the derivatives.&lt;/p&gt;
&lt;p&gt;And the derivatives, the ones prepped and made interesting for specific audiences, those can go out on social media. That content factory is the one I&#39;ll have to build for myself (and maybe I&#39;ll turn it into a product).&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>A blog for author-based writing</title>
    <link href="https://andysmith.ai/2026/Aug/11/a-blog-for-author-based-writing/"/>
    <id>https://andysmith.ai/2026/Aug/11/a-blog-for-author-based-writing/</id>
    <updated>2026-08-10T17:35:12.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;I spent a few hours today and yesterday working out a strategy for social media and being public.&lt;/p&gt;
&lt;p&gt;I want social media to be a nice storefront, showing only the good trail. But what I write is raw thoughts, from the angles I actually care about.&lt;/p&gt;
&lt;p&gt;I ended up landing on a split between &amp;quot;author-based&amp;quot; writing and &amp;quot;reader-based&amp;quot; writing.&lt;/p&gt;
&lt;p&gt;Reader-based writing is aimed at the reader. It solves some problem the reader has, it&#39;s interesting (otherwise the reader doesn&#39;t subscribe).&lt;/p&gt;
&lt;p&gt;But for me, as the author, the raw thoughts are the interesting part.&lt;/p&gt;
&lt;p&gt;The first solution I came up with was discobrain, a private notebook built on Discourse. Raw thoughts go in there, and I pull the &amp;quot;quality&amp;quot; posts out of it.&lt;/p&gt;
&lt;p&gt;But then I remembered &lt;a href=&quot;https://simonwillison.net/&quot;&gt;https://simonwillison.net/&lt;/a&gt; and got inspired to publish raw thoughts on my site instead.&lt;/p&gt;
&lt;p&gt;This means I have to keep an eye on some minimum level of quality, but it also lets me publish less polished stuff (nobody sees it unless they go looking for it).&lt;/p&gt;
&lt;p&gt;And there&#39;s still value in it. Maybe at some point I&#39;ll need to link back to some raw thought or idea.&lt;/p&gt;
&lt;p&gt;And on top of that, I don&#39;t have to filter by interest, because there are no subscriptions on the site. Nobody gets bothered, nobody unsubscribes, and no algorithm breaks if I post something irrelevant.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>Lazy MCP: Dispatch and Discovery</title>
    <link href="https://andysmith.ai/2026/May/25/lazy-mcp-dispatch-and-discovery/"/>
    <id>https://andysmith.ai/2026/May/25/lazy-mcp-dispatch-and-discovery/</id>
    <updated>2026-05-25T00:00:00.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;MCP is now used everywhere, and some products exist only as MCP servers. Some of these MCPs contain dozens or even hundreds of tools, and that creates a real problem when working with them.&lt;/p&gt;
&lt;h2&gt;The problem&lt;/h2&gt;
&lt;p&gt;The manifest of such an MCP is shipped in every LLM call, which means token usage grows proportionally with the size of the tool catalogue. The cost of running an agent system that depends on these MCPs grows accordingly. Prompt caching lets you reduce that cost (see &lt;a href=&quot;https://www.ibm.com/think/topics/prompt-caching&quot;&gt;IBM&#39;s overview&lt;/a&gt; and &lt;a href=&quot;https://platform.claude.com/docs/en/build-with-claude/prompt-caching&quot;&gt;Anthropic&#39;s documentation&lt;/a&gt;), but it doesn&#39;t solve the problem of context window pollution.&lt;/p&gt;
&lt;p&gt;There&#39;s also a defocus effect: a weaker LLM can struggle to choose the right tool from a long list, and that affects the quality of the result. The &lt;a href=&quot;https://openreview.net/forum?id=2GmDdhBdDk&quot;&gt;Berkeley Function Calling Leaderboard (BFCL)&lt;/a&gt; measures function-calling quality directly and shows that smaller models visibly degrade. &lt;a href=&quot;https://arxiv.org/abs/2307.16789&quot;&gt;ToolLLM&lt;/a&gt; frames the same regime as a learning problem: how to teach an LLM to work with 16K+ APIs.&lt;/p&gt;
&lt;p&gt;The root issue is that the full information about every tool is sent on every request — while in practice only one or two tools from the entire list will actually be used.&lt;/p&gt;
&lt;h2&gt;An optimization&lt;/h2&gt;
&lt;p&gt;This can be optimized. Suppose we have an MCP for working with notes, and we want to implement two basic tools: &lt;code&gt;create(text)&lt;/code&gt; and &lt;code&gt;find(keywords)&lt;/code&gt;. Instead of implementing them as separate MCP tools, we can expose a single one: &lt;code&gt;notes_mcp_call(method, params)&lt;/code&gt;. Then we&#39;d invoke them as &lt;code&gt;call(&#39;create&#39;, [&#39;Hello, World&#39;])&lt;/code&gt; and &lt;code&gt;call(&#39;find&#39;, [&#39;notes about emacs&#39;])&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Effectively, this is untyped RPC dispatch on top of MCP, whereas the conventional approach is to expose each method as its own typed tool. Naturally, this isn&#39;t a silver bullet — choosing one approach over the other is a real architectural decision for the MCP developer. The proposed approach pays off most when the number of tools is genuinely large. And for dynamic MCPs, where the set of methods isn&#39;t known ahead of time, it&#39;s arguably the only viable option.&lt;/p&gt;
&lt;h2&gt;The discovery problem&lt;/h2&gt;
&lt;p&gt;With this approach, a discovery problem appears immediately. The LLM has to learn somehow what methods this MCP exposes — but at the same time it shouldn&#39;t receive the full list of tools all at once.&lt;/p&gt;
&lt;p&gt;So we also need a service method, &lt;code&gt;help&lt;/code&gt;. It can be implemented as &lt;code&gt;call(&#39;help&#39;, [&#39;create&#39;])&lt;/code&gt;, or as a separate MCP tool.&lt;/p&gt;
&lt;p&gt;Regardless of how &lt;code&gt;help&lt;/code&gt; is implemented, it can operate in several modes.&lt;/p&gt;
&lt;p&gt;The first mode is keyword search (or semantic search). The LLM asks the MCP something like &amp;quot;how do I create a new note?&amp;quot; and gets back a list of tools with their descriptions, parameter lists, and result descriptions. This is very easy to implement, but it requires maintaining semantic search infrastructure, including embedding the incoming queries. There&#39;s a bigger issue, though: building a complete map of available methods is hard for the LLM, because it doesn&#39;t know all of the MCP&#39;s capabilities — and so the discovery goal isn&#39;t actually reached. The model has to &lt;em&gt;already&lt;/em&gt; know what it needs from the MCP.&lt;/p&gt;
&lt;p&gt;The second mode is FSM-style discovery: &lt;code&gt;help&lt;/code&gt; ships wiki-like documentation with cross-links. &lt;code&gt;help&lt;/code&gt; without parameters returns a general overview and links to other pages. The LLM reads the wiki sequentially and assembles information about all the pages. This mode can be combined with search; it enables real discovery, but it requires extra effort from the MCP developer to maintain that documentation. As a side note: nothing stops you from implementing just a single FSM state with the full list of tools — in that case the mechanism behaves very close to the default MCP behaviour.&lt;/p&gt;
&lt;h2&gt;The final design&lt;/h2&gt;
&lt;p&gt;So the MCP manifest ends up containing two tools: &lt;code&gt;help&lt;/code&gt; and &lt;code&gt;call&lt;/code&gt;. The description of &lt;code&gt;call&lt;/code&gt; should include the call format, instructions on how to use &lt;code&gt;help&lt;/code&gt; for discovery, and optionally a description of the most frequently used methods — so the LLM doesn&#39;t have to go through &lt;code&gt;help&lt;/code&gt; for every little thing.&lt;/p&gt;
&lt;h2&gt;What already exists&lt;/h2&gt;
&lt;p&gt;Before building this ourselves, let&#39;s look at what already exists in the industry.&lt;/p&gt;
&lt;p&gt;Anthropic implements dynamic tool loading in its own products through &lt;code&gt;tool_search&lt;/code&gt;, but this doesn&#39;t work in other vendors, so it can&#39;t be used as a universal pattern.&lt;/p&gt;
&lt;p&gt;There&#39;s a draft standard proposal, &lt;a href=&quot;https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1821&quot;&gt;SEP-1821&lt;/a&gt;, which extends the MCP standard with keyword search. This is partly what I need, but it doesn&#39;t enable flexible FSM-style documentation.&lt;/p&gt;
&lt;p&gt;Speakeasy implements a very similar pattern in their tool Gram (see their &lt;a href=&quot;https://www.speakeasy.com/blog/100x-token-reduction-dynamic-toolsets&quot;&gt;blog post&lt;/a&gt; and the &lt;a href=&quot;https://www.speakeasy.com/docs/mcp/build/toolsets/dynamic-toolsets&quot;&gt;documentation&lt;/a&gt;).&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>AI Won&#39;t Teach You — Unless You Make It</title>
    <link href="https://andysmith.ai/2026/Jan/30/ai-wont-teach-you-unless-you-make-it/"/>
    <id>https://andysmith.ai/2026/Jan/30/ai-wont-teach-you-unless-you-make-it/</id>
    <updated>2026-01-30T09:48:12.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;I&#39;ve been reading Anthropic&#39;s research on the &lt;a href=&quot;https://www.anthropic.com/research/AI-assistance-coding-skills&quot;&gt;problems with AI assistance when acquiring new skills&lt;/a&gt; (&lt;a href=&quot;https://arxiv.org/abs/2601.20245&quot;&gt;arXiv paper&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The hypothesis: AI accelerates your work where you&#39;re already an expert but hinders you from becoming an expert in something new. If you fully delegate tasks to AI, you start to get dumber and eventually become obsolete.&lt;/p&gt;
&lt;p&gt;At first glance, this contradicts my post on &lt;a href=&quot;/blog/2026/01/autonomy-with-acceptable-quality/&quot;&gt;autonomy with acceptable quality&lt;/a&gt;, but it doesn&#39;t. In that post, I was discussing autonomous task completion, not learning something new. I set the tasks myself, which means I already have some understanding of what needs to be done and how to evaluate the result.&lt;/p&gt;
&lt;p&gt;But what do you do when you lack that understanding? How should AI help you learn when it always wants to do everything itself?&lt;/p&gt;
&lt;p&gt;The research suggests these approaches:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Discuss conceptual options but write the code yourself&lt;/li&gt;
&lt;li&gt;Generate code and ask for explanations&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The key point: you need to put in the effort, to think. That&#39;s when learning happens. If you just mindlessly delegate task solutions to AI, you won&#39;t learn anything.&lt;/p&gt;
&lt;h2&gt;My Approach&lt;/h2&gt;
&lt;p&gt;I usually take a different path when learning something new or building fundamentally new (for me) systems. These are tasks I can&#39;t yet fully delegate to autonomous AI:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Problem formulation:&lt;/strong&gt; Define what needs to be done and how to evaluate the result&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Research:&lt;/strong&gt; Gather all possible solutions, existing technologies, tools, and practices. Compare and choose&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Architectural decomposition:&lt;/strong&gt; Together with AI, I build an understanding of how the finished system will work. It&#39;s crucial for me to actually understand what the result will be because I&#39;m responsible for the decision made and implemented. I&#39;ll need to review and accept the result. This is, in my view, the key difference from mindless vibe coding. Without this understanding, there&#39;s no way to take responsibility for the outcome, and the result may or may not work out&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documentation/tests preparation&lt;/strong&gt; based on the discussion above. AI formulates, I carefully reread these documents and make many changes. This is where my understanding and AI&#39;s understanding synchronize&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Writing code:&lt;/strong&gt; Here I mostly trust the AI. I only review the most critical parts, but I believe verification should be automated through tests (including architectural ones) and possibly other methods (formal verification)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verification:&lt;/strong&gt; Automated through tests&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Acceptance:&lt;/strong&gt; Still manual, but this needs to be automated too&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Debugging:&lt;/strong&gt; Automated by AI, but it&#39;s important to engage rather than just copy-paste errors. I always require descriptions of error causes and read them to understand what actually happened&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After going through this cycle for the first time, I can extract this class of tasks into an autonomous solver that will do all of this next time without me.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Understanding is the key&lt;/strong&gt; in this process. Without understanding, you have problems.&lt;/p&gt;
&lt;h2&gt;Is Shallow Understanding Really a Problem?&lt;/h2&gt;
&lt;p&gt;Maybe it&#39;s becoming the new normal? Maybe I&#39;m the odd one? After all, Anthropic didn&#39;t put an abacus in the header image for nothing. Who knows how to use an abacus in 2026? Who even remembers what it is?&lt;/p&gt;
&lt;p&gt;Building AI systems to work reliably is also a skill you can learn (including experimentally), putting in effort and making mistakes. So this also needs to be done, which is exactly what I&#39;m doing and describing in this blog.&lt;/p&gt;
&lt;p&gt;But as usual, the truth is somewhere in the middle. Both matter.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>Short Sessions Beat Long Ones in Claude Code</title>
    <link href="https://andysmith.ai/2026/Jan/30/short-sessions-beat-long-ones-in-claude-code/"/>
    <id>https://andysmith.ai/2026/Jan/30/short-sessions-beat-long-ones-in-claude-code/</id>
    <updated>2026-01-30T07:26:16.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;When actively using Claude Code in manual mode, I always apply the same technique. I keep sessions as short as possible. I set a task, get the result, close the chat. If I realize I need to return to the task to clarify something, I do so via &lt;code&gt;claude -r&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This workflow creates a need to save information between contexts. At the end of each session, I ask Claude to summarize and format a short summary of the session outcomes, which I then publish to the issue tracker for that task. I also ask it to update documentation, tests, architecture decisions, and &lt;a href=&quot;http://CLAUDE.md&quot;&gt;CLAUDE.md&lt;/a&gt; to keep all descriptions synchronized.&lt;/p&gt;
&lt;p&gt;I recently heard the opposite recommendation: do everything in one session, never close it. The guy complained that his tokens were flying away catastrophically fast, but when I suggested keeping sessions short, he said someone had recommended doing everything in one session.&lt;/p&gt;
&lt;p&gt;In that case, the context contains not just what you need (the things you deliberately identified as important and placed in &lt;a href=&quot;http://CLAUDE.md&quot;&gt;CLAUDE.md&lt;/a&gt;). It contains absolutely everything that was discussed, and half of it gets lost anyway. This is clearly an inefficient way to interact, which that guy discovered in his own wallet, but he refuses to believe the obvious because faith in an authority&#39;s words turned out to be stronger.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>The Real Metric for Autonomous AI: Quality Without Hand-Holding</title>
    <link href="https://andysmith.ai/2026/Jan/29/autonomy-with-acceptable-quality/"/>
    <id>https://andysmith.ai/2026/Jan/29/autonomy-with-acceptable-quality/</id>
    <updated>2026-01-29T15:49:45.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;The primary metric I use to evaluate my autonomous AI systems: autonomy of work with acceptable quality of result. This seems obvious from the name &amp;quot;autonomous,&amp;quot; but until you articulate it explicitly, it&#39;s not.&lt;/p&gt;
&lt;p&gt;I see people around me setting up multiple monitors to watch several parallel Claude Code sessions simultaneously, constantly tweaking and running from one to another.&lt;/p&gt;
&lt;p&gt;I believe this approach is fundamentally wrong. Context switching in the human mind is an expensive operation. Very expensive. Frequent task switching is exhausting, regardless of what anyone thinks or says. There&#39;s research on this: &lt;a href=&quot;https://ics.uci.edu/~gmark/chi08-mark.pdf&quot;&gt;The Cost of Interrupted Work&lt;/a&gt;, &lt;a href=&quot;https://pubmed.ncbi.nlm.nih.gov/11518143/&quot;&gt;Executive Control of Cognitive Processes&lt;/a&gt;, &lt;a href=&quot;https://pmc.ncbi.nlm.nih.gov/articles/PMC2747164/&quot;&gt;Brief Interruptions Spawn Errors&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So my job as an architect of this class of solutions is not to &amp;quot;do as much as possible with AI,&amp;quot; and not simply to &amp;quot;&lt;a href=&quot;/blog/2026/01/how-many-tokens-on-this-task/&quot;&gt;efficiently burn tokens&lt;/a&gt;,&amp;quot; as I thought before (see also &lt;a href=&quot;/blog/2026/01/from-solo-sessions-to-agent-orchestras/&quot;&gt;From Solo Sessions to Agent Orchestras&lt;/a&gt;). It&#39;s specifically to ensure autonomy with acceptable quality.&lt;/p&gt;
&lt;p&gt;That means I need to ensure predictable and repeatable results with minimal effort on my part.&lt;/p&gt;
&lt;p&gt;I don&#39;t measure how many tasks I did with AI. I measure how many tasks AI did without my help. Of course, it&#39;s not entirely accurate to say &amp;quot;without my help&amp;quot; since I built the system that enables it to work effectively and autonomously. But that&#39;s exactly the point.&lt;/p&gt;
&lt;p&gt;This is about the extent to which my solutions are AGI.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>Small Steps Beat Big Leaps: Why Familiar Interfaces Win</title>
    <link href="https://andysmith.ai/2026/Jan/29/small-steps-beat-big-leaps-familiar-interfaces-win/"/>
    <id>https://andysmith.ai/2026/Jan/29/small-steps-beat-big-leaps-familiar-interfaces-win/</id>
    <updated>2026-01-29T15:22:10.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;My hypothesis is simple. The recipe for success is to offer something simple and familiar (lowering the barrier to entry) and add value on top of it. Products that work on interfaces users already understand take off. Products that completely change how people work don&#39;t.&lt;/p&gt;
&lt;p&gt;Consider these examples.&lt;/p&gt;
&lt;p&gt;Cursor is VS Code, familiar to everyone. You don&#39;t need to radically change how you work. Just tweak your workflow a bit.&lt;/p&gt;
&lt;p&gt;Claude Code is a terminal that every developer already knows how to use. AI-powered development (the value) is built on top of it. Developers don&#39;t need to get used to a new interface. The barrier to entry is minimal.&lt;/p&gt;
&lt;p&gt;Such products don&#39;t require users to invest significant time changing their process. That&#39;s the key. This is the quality you must preserve when building your own product.&lt;/p&gt;
&lt;p&gt;And there are thousands of examples of products that force users to work differently with their calendar, their code, to change all their daily habits. They don&#39;t take off and never will.&lt;/p&gt;
&lt;p&gt;If using my product requires the user to perform many actions and learn new things, meaning they must take a very wide step from their current state (not using my product) to the target state (spent time, uses the product, receives value), then even if the benefit is obvious to them, they&#39;ll likely give up without even trying.&lt;/p&gt;
&lt;p&gt;However, once a user takes that first step, they&#39;ll take subsequent steps with much more enthusiasm and commitment (because they already feel the value).&lt;/p&gt;
&lt;p&gt;This is what you should always keep in mind. Simple beats complex. And something simple is better than nothing at all (see &lt;a href=&quot;/blog/2026/01/done-today-beats-perfect-never/&quot;&gt;Done Today Beats Perfect Never&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Many small steps beat one big leap.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>Clawdbot, Capsules, and Self-Evolving Agents</title>
    <link href="https://andysmith.ai/2026/Jan/28/clawdbot-capsules-and-self-evolving-agents/"/>
    <id>https://andysmith.ai/2026/Jan/28/clawdbot-capsules-and-self-evolving-agents/</id>
    <updated>2026-01-28T08:07:08.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;Yesterday all channels were buzzing about Clawdbot. I decided to install it and give it a try.&lt;/p&gt;
&lt;p&gt;I liked the concept. Following my thinking from &lt;a href=&quot;/blog/2026/01/product-over-technology/&quot;&gt;Product Over Technology&lt;/a&gt;, I always consider the product concept and how to sell it first. The execution is not great, but that&#39;s not what matters. What matters is that it&#39;s generating hype (meaning it sells) and it works well enough.&lt;/p&gt;
&lt;p&gt;What I fundamentally didn&#39;t like was the lack of a platform approach. No separation of important and unimportant. No core versus everything else. This led to having to think about &lt;em&gt;everything&lt;/em&gt; during installation. Network configs (Tailscale), provider settings (though you could reuse what&#39;s already in &lt;code&gt;~/.claude/&lt;/code&gt;), plugin sets. I have no idea which plugins to enable right now. I haven&#39;t even decided what I need this for. I want to try it quickly and move on. In some places, I noticed NIH syndrome (Not Invented Here), with vibe-coded solutions instead of existing tools.&lt;/p&gt;
&lt;p&gt;Because of this, the whole thing looks like a super over-engineered solution tailored to one specific person (the developer), ignoring the fact that different people need different things.&lt;/p&gt;
&lt;h2&gt;What I Would Do Differently&lt;/h2&gt;
&lt;p&gt;I would extract the core that absolutely everyone needs. Which I actually did. My &lt;a href=&quot;/blog/2026/01/capsules-isolated-environments-for-ai-agents/&quot;&gt;Capsules&lt;/a&gt; are exactly about this. Then I would let the bot grow and develop itself.&lt;/p&gt;
&lt;p&gt;This actually looks like a solution to my problem of agent interaction in Capsules. Instead of some unified supervisor orchestrating everything, I can let agents self-develop and interact with each other.&lt;/p&gt;
&lt;p&gt;To demonstrate how Capsules work, I could launch my own personal assistant bot (similar to Clawdbot) running on Capsules with my own vision. In my vision, the bot-assistant doesn&#39;t create other systems itself. Instead, it provides communication between the user (the &lt;a href=&quot;/blog/2026/01/botlord-human-as-corporation/&quot;&gt;botlord&lt;/a&gt;) and other agents. And possibly other people through their assistants.&lt;/p&gt;
&lt;p&gt;I see the core as super minimal. Just a chat through which you can give commands for self-improvement. Through this chat, you configure the bot itself. Self-development. The goal is to get a working companion in seconds and then tune its capabilities over time, including various access interfaces.&lt;/p&gt;
&lt;p&gt;This resonates with my idea to use &lt;a href=&quot;https://nixos.org/&quot;&gt;Nix&lt;/a&gt; for describing Capsules. In this case, the bot can literally write itself.&lt;/p&gt;
&lt;p&gt;My hypothesis is confirmed: Clawdbot takes off because it uses standard familiar interfaces (Telegram, Discord) and adds value on top of them. The interface matters. I expanded on this in &lt;a href=&quot;/blog/2026/01/small-steps-beat-big-leaps-familiar-interfaces-win/&quot;&gt;Small Steps Beat Big Leaps&lt;/a&gt;.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>Botlord: The Human as Corporation</title>
    <link href="https://andysmith.ai/2026/Jan/27/botlord-human-as-corporation/"/>
    <id>https://andysmith.ai/2026/Jan/27/botlord-human-as-corporation/</id>
    <updated>2026-01-27T13:36:15.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;I&#39;ve always tried to see myself as a company. Even as an employee, I viewed my employer as a client or partner. The problem is, I did it poorly. I only recently realized that I think in processes rather than product-outcomes, and that needs to change (see: &lt;a href=&quot;/blog/2026/01/product-over-technology/&quot;&gt;Product Over Technology&lt;/a&gt;). But the core idea remains: I am a single independent economic unit that joins forces with other independent units to achieve shared goals. This partnership is mutually beneficial and voluntary.&lt;/p&gt;
&lt;p&gt;With AI, this approach intensifies. The boundary between individual and company is dissolving. &lt;a href=&quot;https://www.youtube.com/watch?v=0iOrcR8OkHk&quot;&gt;This video&lt;/a&gt; proposes viewing yourself as a complex AI corporation, which creates new challenges people haven&#39;t faced before: management, finance, security, oversight, legal, and more.&lt;/p&gt;
&lt;p&gt;The proposal is to become a manager. Not a seagull-manager, department head, or paper-pusher, but a true CEO: a leader and visionary. Apply classical management models to an organization of your AI agents. You&#39;ll need to build organizational structure, design data processing pipelines, delegate tasks and decisions, and take personal responsibility for your employees&#39; actions. This means not giving them too much authority, or better yet, running them in &lt;a href=&quot;/blog/2026/01/capsules-isolated-environments-for-ai-agents/&quot;&gt;isolated capsules&lt;/a&gt;. There&#39;s no other way. Everyone must learn to build systems, not just do things. Push yourself left along the value chain!&lt;/p&gt;
&lt;p&gt;Now is the time to learn management.&lt;/p&gt;
&lt;p&gt;Though I see a challenge here. AI agents aren&#39;t people in the traditional sense. You can&#39;t punish or reward an AI agent. Classical models will need adaptation. But the core principles can probably still apply.&lt;/p&gt;
]]></content>
  </entry>
  <entry>
    <title>Product Over Technology</title>
    <link href="https://andysmith.ai/2026/Jan/27/product-over-technology/"/>
    <id>https://andysmith.ai/2026/Jan/27/product-over-technology/</id>
    <updated>2026-01-27T10:43:54.000Z</updated>
    <content type="html"><![CDATA[&lt;p&gt;I&#39;ve spent my entire life working with technology. Studying it, building it, growing it. When evaluating any project, I instinctively reach for the technology lens first. How well is the code written? Does the architecture allow for future growth? What frameworks are being used?&lt;/p&gt;
&lt;p&gt;When developing my own projects, I always focused on technology first. I design elegant architecture, set up auto-deployment to Kubernetes, ensure data security, scalability, and disaster recovery. I always have monitoring in place.&lt;/p&gt;
&lt;p&gt;But I&#39;m missing the main thing: sales. Because my project isn&#39;t about business. It&#39;s about technology. I&#39;m just a kid who never finished playing with blocks or construction sets. I find it interesting to build a system not to make money, but to say: &amp;quot;Look at this sandcastle I made, isn&#39;t it beautiful?&amp;quot; and then walk away to start the next &amp;quot;project.&amp;quot;&lt;/p&gt;
&lt;p&gt;This realization was as unexpected for me as it seems obvious in hindsight.&lt;/p&gt;
&lt;p&gt;I think this is a very common problem among engineers who spent years working as employees. &amp;quot;Business isn&#39;t my thing, there are other people for that,&amp;quot; they think. But wait. Isn&#39;t your life your own business? Are you really willing to hand over the right to manage your life, to take responsibility for the outcome, to someone else? Because when those people make mistakes, you&#39;re the one who suffers, not them.&lt;/p&gt;
&lt;p&gt;It&#39;s time to take responsibility. It&#39;s time to decide that we&#39;re doing business first and building second. What matters is why we&#39;re doing this; the how is secondary. It&#39;s time to focus on the product, on markets, on economics, psychology, sociology, and other aspects of business. Formulate hypotheses and test them instead of waiting for permission from someone. What&#39;s the product concept? Who will pay money, and for what? Why would they pay for our product instead of another?&lt;/p&gt;
&lt;p&gt;Everything else? A team of AI agents will handle that.&lt;/p&gt;
]]></content>
  </entry>
</feed>
