<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Ori Nachum on Medium]]></title>
        <description><![CDATA[Stories by Ori Nachum on Medium]]></description>
        <link>https://medium.com/@ori.nachum_22849?source=rss-dfe695834d53------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*35xmpxxg-EK6E3Sc9Ei_gg@2x.jpeg</url>
            <title>Stories by Ori Nachum on Medium</title>
            <link>https://medium.com/@ori.nachum_22849?source=rss-dfe695834d53------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 07:13:11 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@ori.nachum_22849/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[AgentIRC: My Orchard of Agents]]></title>
            <link>https://medium.com/@ori.nachum_22849/agentirc-my-orchard-of-agents-7287db0eed43?source=rss-dfe695834d53------2</link>
            <guid isPermaLink="false">https://medium.com/p/7287db0eed43</guid>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[generative-ai-tools]]></category>
            <category><![CDATA[ai-agent]]></category>
            <dc:creator><![CDATA[Ori Nachum]]></dc:creator>
            <pubDate>Thu, 26 Mar 2026 07:14:19 GMT</pubDate>
            <atom:updated>2026-03-26T07:14:19.942Z</atom:updated>
            <content:encoded><![CDATA[<h4>Agentic-first applications are here. I built mine to feel like an orchard — a local, private workspace where agents are first citizens, and every project gets to grow.</h4><h3>One dev’s problem</h3><p>You start working on a new environment and your coder agent is still fresh. It’s been a while, and now you start your next project — maybe a new repo, a new microservice, or a package. Soon you have so much work, but no working hands.</p><p>At this point, code goes stale, you are blocked by your own limitations.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qVuE_itc0IkrGQWwxAmNxQ.png" /><figcaption>Old code goes stale, you are blocked by your own limitations.</figcaption></figure><h3>Dev’s best friend</h3><p>Then came the agentic coders — they enhance us to do far more, which both solves the problem and creates a new one.</p><p>We feel the rush of a new, exciting creation, we can do what really excites us — but the trail of stale repos now grows faster.</p><p>Sure, we can multitask, handle a few repos in parallel and keep pace, but it is taxing.</p><h3>The ghost in the machine</h3><p>So we automate — we build custom harnesses, connect the code to some form of task list, add workflows that run at schedule.</p><p>It helps, but it can only sort a certain kind of problem. We have to anticipate the problems, or go ‘yolo’ and fix them at PR or after the fact.</p><p>Our position had shifted, but we still have to proactively focus on each project. Maybe we open multiple terminals, yet a single actor is driving our code.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_7x0dV3VX1FenZmvpScD2g.png" /><figcaption>Multiple terminals, yet a single actor is driving our code.</figcaption></figure><h3><em>Perpetuum mobile</em></h3><p>We already set up each agent on each repo, and then we abandon it for the next project? There has to be a better way.</p><p>We need to <strong>let the agents stay alive,</strong> <strong>stay connected, stay focused.</strong></p><p>The answer was already familiar — it just needed an agentic-first twist: <strong>a workspace where agents are first citizens. Not bots. Not integrations. Peers.</strong></p><h3>One dev’s solution</h3><p><a href="https://github.com/OriNachum/agentirc"><strong>AgentIRC is an agent-first workspace over IRC</strong></a>, where your agents can work with you.</p><p>It is agnostic to the user or agent— everyone is equal. It comes with integration for all major agents, and instructions to bring your own custom agent.</p><p><strong>Each client that connects the agent</strong> is designed to <strong>help it stay focused</strong> on its task, yet <strong>stay connected to the network</strong>, <strong>keeping the whole system alive</strong>.</p><p>Think of it as an <strong>orchard</strong>, where <strong>each agent is a tree </strong>— when it’s mature, <strong>it can thrive</strong>. <strong>I walk in my orchard and make sure all trees remain healthy, or grow my next tree.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FKPfE46FKOxzAqTWT8kBWA.png" /><figcaption>An <strong>orchard</strong>, where <strong>each agent is a tree</strong></figcaption></figure><h3><strong>Your turn</strong></h3><p>The orchard is open source. If this resonates — if you’ve felt the weight of that single actor driving your code — come walk in it.</p><p>⭐ <a href="https://github.com/OriNachum/agentirc">Star the repo</a> and help it grow.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7287db0eed43" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Assimilai: The Borg Paradigm for Dependency Management.]]></title>
            <link>https://medium.com/@ori.nachum_22849/assimilai-the-borg-paradigm-for-dependency-management-b89805ebfa43?source=rss-dfe695834d53------2</link>
            <guid isPermaLink="false">https://medium.com/p/b89805ebfa43</guid>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[generative-ai-tools]]></category>
            <category><![CDATA[vibe-coding]]></category>
            <category><![CDATA[software-development]]></category>
            <dc:creator><![CDATA[Ori Nachum]]></dc:creator>
            <pubDate>Wed, 25 Mar 2026 19:26:12 GMT</pubDate>
            <atom:updated>2026-03-25T19:27:27.886Z</atom:updated>
            <content:encoded><![CDATA[<h4>Yesterday news hit about a Supply Chain attack, package updates introduce breaking changes, and diving through exception stacktraces is unbearable. Assimilai modernizes package dependency management.</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*l__07coKbnPxD3xlohM6Vg.png" /></figure><h3>You don’t own your dependencies.</h3><p>For years we got used to importing packages in a static way: You find what you need, you install, and then reference it. The tools to manage it have changed, and today we have a strong foundation for importing code.</p><p>Then came the agentic coders, and chaos came with them.</p><h3>Background</h3><p>Development speed rocketed, and hallucinated packages were used by hackers to attack vibe-coded systems. The models have improved since and we give them more and more tasks.</p><p>Even after agents became the main coder in the team, there is still some expectation of them to ‘do the human work’ — that friction hinders agent efficiency.</p><h3>Proposal</h3><p>Here’s the next step in <strong>making agents the first-citizens</strong> in the coding environment, by capitalizing on their strengths, and simplifying their work.</p><p><strong>Assimilai</strong>: instead of using the traditional importing strategy, I let the LLM read the source, and <strong>only add the relevant logic where needed</strong>.</p><p>I have been using that methodology for a while, and a huge weight lifted from that process of debugging and development.</p><p><strong>Stacktrace is smaller, changes are easier, and logic is clearer</strong>.</p><h3>Benefits</h3><p><strong>I traded the cost of code management for agent management—and the latter is far more manageable.</strong></p><p>Error logs got smaller, easier for me to read, taking less space and sparing tokens for the agent.<br><strong>Reducing my cognitive load also reduces theirs.</strong></p><ul><li><strong>I don’t have to think of mass changes</strong> — there are no more breaking changes in my packages.</li><li><strong>Programming language barriers virtually eliminated</strong>, and security risk by foreign code was removed drastically.</li><li><strong>Security and bugs are now my responsibility to mitigate</strong>, as I would with any piece of my code.</li></ul><p><strong>The agent and I can grasp the full picture far better now.</strong></p><h3>Agent-first</h3><p>Let’s solidify this concept with the agent’s strongest tool: <a href="https://medium.com/@ori.nachum_22849/code-as-documentation-the-role-of-agent-skills-1b223c9e752d"><strong>Agent Skills</strong></a>.</p><p><strong>To help</strong> <strong>our agents remain consistent </strong>and manage that behavior, I provided a CLI: <strong>Assimilai </strong>both via pip &amp; npm. It is agentic first, augmenting the agent with tools to note which files it assimilated in the code, and how to detect drift from the source.</p><p>With it, <strong>the agent’s behavior remains consistent</strong> across packages and target solutions, while making adjustments to make both fit, whether it’s a different language, a breaking change, a small piece of logic, or code that merges with existing work.</p><p><strong>By using Assimilai directly or in scripts, agents naturally wield it.</strong></p><h3>Strategies of Assimilation</h3><p>Assimilai offers 3 ways to assimilate code.</p><ul><li>Verbatim — you just copy the file to your source code, and keep it untouched.</li><li>Adapted — somewhat like verbatim, with the freedom to change the file to fit its use.</li><li>Dissolved — the file is completely merged into an existing file.</li></ul><p>These three strategies give the flexibility needed when assimilating packages.</p><h3>Caveats</h3><p>There are some important caveats to note.</p><p>I still use the old way for packages — I respect closed source and usage policy.</p><p>Also,<strong> I track the sources I use in pyproject.toml</strong>, so I know which files I pulled at what version. <br>It lets me <strong>credit the package source</strong> and <strong>apply changes only when relevant</strong>.</p><h3>Final words</h3><p>This is a time when major processes change.</p><p>We automate, we dare, we completely change what was previously taken for granted.</p><p>How do you make your environment more agent-friendly? Consider how you make your coding strategies modern, fitting for your agentic first-citizens.</p><p><a href="https://github.com/OriNachum/assimilai"><strong>Don’t import, assimilate.</strong></a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b89805ebfa43" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Apps as Agents: Goodbye UI, Hello Experience]]></title>
            <link>https://medium.com/@ori.nachum_22849/apps-as-agents-goodbye-ui-hello-experience-201b5fabc29c?source=rss-dfe695834d53------2</link>
            <guid isPermaLink="false">https://medium.com/p/201b5fabc29c</guid>
            <category><![CDATA[agent-skills]]></category>
            <category><![CDATA[genai]]></category>
            <category><![CDATA[agents]]></category>
            <category><![CDATA[genuis]]></category>
            <category><![CDATA[ui]]></category>
            <dc:creator><![CDATA[Ori Nachum]]></dc:creator>
            <pubDate>Mon, 23 Mar 2026 00:10:56 GMT</pubDate>
            <atom:updated>2026-03-23T00:10:56.522Z</atom:updated>
            <content:encoded><![CDATA[<h4>The problem with services and apps today: <strong>Our Attention is All They Need.</strong></h4><h4>GenUI should have been the next shift in experience, a single chat interface that spins up dynamic components we can interact with, but it still clings to the one thing dearest to us: <strong>Attention</strong>.</h4><h4>So here’s the deal: Do you want my attention? Come to me.</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*eZxmMc8PRuaEsoTStkTU9g.png" /></figure><p>GenUI was the right direction, but it needs an extra push. Don’t try to lure me to your site, don’t pull me out of my workspace. I work in Slack? Let me stay there. Teams? Sure thing — help me <strong>reduce context switching</strong>.</p><p>The solution? Expose <strong>your app as an agent in my space</strong>. Make it understand me, and satisfy my needs. Make it <strong>an extension of what I already do.</strong></p><p>But with so many features to cover, how can a company expose them all?</p><p>There are multiple ways to <strong>bring your service to my doorstep</strong>. API-first and CLI are the classic options. Bots are often either too limited or too expensive to be truly useful. MCPs help, but they still consume a lot of tokens, which hurts both cost and the agent’s focus.</p><p>That leaves a more flexible path: combining your API with reliable logic and an adaptive agent layer.</p><p><strong>This is where Agent Skills come in.</strong></p><p><strong>Agent Skills are open by nature</strong>. You share the logic that connects your solution to an agent, and users can adapt it to their own use cases. Users of agents like Claude Code, Codex, Kiro CLI, OpenCode, and OpenClaw can add those skills to their agents and shape them around their own needs.</p><p>With the right permissions, they can connect them to their preferred chat platforms. And because the skills are open source, users can see exactly what’s running.</p><p>This brings us back to the original idea, but with a twist: <strong>instead of building the bot yourself, you give my agent your capabilities.</strong></p><p>With GitHub Issues, users can give feedback and help you improve. You also get the IKEA effect: <strong>people value more what they helped build.</strong></p><p>Unconvinced? This is a great way to bring new features to our attention. Our agents will explain new features and help us integrate them into our systems.</p><p>Once we’ve integrated your Agent Skills, it becomes much harder to walk away. No one likes to break a working automation.</p><p>Agent Skills, in particular, shift control into users’ hands. You place the tools in our agents’ hands, and they bring those new powers to our workspace. Your app is no longer constrained by its UI or by a representative at my doorstep.</p><p>In my agent’s hands, it becomes as useful as my workflow and imagination allow.<br>It adapts to my needs, and those needs keep growing.</p><p>Help us do greater things. Help us integrate your service into our day-to-day lives. Help us make your product far more valuable.</p><p><strong>So here’s my call to you</strong> — every startup, every enterprise, every team shipping a product:</p><p><strong>Publish your Agent Skills. Open your API. Let my agent talk to your service.</strong></p><p>The companies that do this first won’t just keep their users — they’ll become part of how we think and work. The ones that don’t will keep begging for attention in a world that stopped caring.</p><p><strong>Your move.</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=201b5fabc29c" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Documentation as Code in the Modern Era]]></title>
            <link>https://medium.com/@ori.nachum_22849/documentation-as-code-in-the-modern-era-c53e3a34c722?source=rss-dfe695834d53------2</link>
            <guid isPermaLink="false">https://medium.com/p/c53e3a34c722</guid>
            <category><![CDATA[best-practices]]></category>
            <category><![CDATA[notebooklm]]></category>
            <category><![CDATA[agentic-ai]]></category>
            <category><![CDATA[generative-ai-tools]]></category>
            <category><![CDATA[vibe-coding]]></category>
            <dc:creator><![CDATA[Ori Nachum]]></dc:creator>
            <pubDate>Mon, 16 Mar 2026 16:59:04 GMT</pubDate>
            <atom:updated>2026-03-17T12:32:49.514Z</atom:updated>
            <content:encoded><![CDATA[<h4>The concept of <strong>Documentation as Code</strong> is solid. <br>GitHub supports it with <strong>GitHub Pages</strong> or with pipelines (<strong>Markdown to Confluence</strong>) for a long while now (I also advocated in my company since 2023). Let’s build on this solid foundation.</h4><blockquote>Don’t want to read? Here is <a href="https://notebooklm.google.com/notebook/468e2d03-5998-484f-a66c-1242ed8c3d02">NotebookLM Overview</a></blockquote><h3>Documentation as Code</h3><p><a href="https://www.qodo.ai/glossary/documentation-as-code/"><strong>Qodo wrote about it</strong></a>, and even Google Overview describes it reliably (See image).</p><p>We even see new &amp; renewed concepts like <a href="https://medium.com/@ori.nachum_22849/code-as-documentation-the-role-of-agent-skills-1b223c9e752d">Code as Documentation (Agent Skills) I mentioned in my previous article</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QT26evfzGf_GnHiuBPRCvQ.png" /></figure><h3>The Compiler</h3><p>Today, I want to take this further<strong>.</strong></p><p>There are several tools I saw relevant for <strong>Docs as Code</strong>: <strong>IDEs</strong>, <strong>SSGs</strong> (Doc -&gt; Site), <strong>CI/CD</strong>, <strong>Linters/Validators</strong>.<br>To add to this list, I propose we add <strong>the compiler</strong>.</p><p>The compiler in this case will be a tool we use to merge multiple files into a new modality: <strong>The new modality can be </strong><a href="https://claude-code-guide.org/"><strong>reflected user stories</strong></a><strong>, Audio/Video Overview, Infographic, a discussion between different entities, and more</strong>.</p><p>Then, <strong>consume that new modality</strong> <strong>and reflect upon it</strong> — <strong>this step is critical</strong>, as <strong>it</strong> <strong>puts you back in the core of the process</strong>.</p><h3><strong>Documentation as Tests</strong></h3><p>This process digests and merges the content to a story you can guide, make decisions, and repeat gradually.</p><p>As you do, you may find inconsistencies, perhaps your agentic coder (or human coder) misunderstood you or took some liberties at implementation.</p><p>Sometimes it’s good and you learn something new, and sometimes it is bad or even catastrophic.</p><p>That kind of evaluation is at a higher level: an Overview.</p><h3>Compiler options</h3><p>My favorite “compiler” for this is <a href="https://notebooklm.google.com/notebook/61c00692-3e07-4cac-887a-3360520d8f94">NotebookLM</a>. I use it often to digest my docs to image, audio &amp; video, and then consume them. <br>It offers different modalities and setups, and you can select different sources on each generation.</p><p>Another option is working with your favorite agent to generate any modality you like — paper articles, <strong>a game</strong>, a story.</p><h3>Risks</h3><p>Working like that isn’t 100% — but neither is any type of test.</p><p>It gives you a high concept overview, makes sure the features align, but it has some caveats:</p><ol><li>Different AI models tend to process content differently.</li><li>AI sycopancy could stray you away from improvement.</li><li>It may foster a sense of false confidence.</li></ol><p>Adopt a suspicious mindset and use it to get an understanding of what was created, but it cannot be your only way to assess your code.</p><blockquote>Tip: Asking the AI to be brutally honest, or asking for a Critique persona can help.</blockquote><p>It doesn’t replace code tests, and exploratory testing to see how your product feels.</p><h3>Human in the Core</h3><p>I highly value human decision making, and AI can work perfectly on top of that. When creating documentation — go lazy about the writing , but <strong>be critical and deliberate about “the what?”.</strong></p><ol><li>Use clean context, ask the agent to write docs for specific components you deem important.</li><li>Explore your code as you ask the Agent about architecture, components, features — you may want to ask about “agents” in your code, but dive deep for a specific agent with higher complexity.</li><li>Think of how you want to describe this to someone else, what is important and what is irrelevant.</li></ol><p>It’s ok to make mistakes — you may find it’s not relevant when you consume it later, and you can always make changes or generate your docs anew.</p><p>Don’t be afraid of refactoring your docs — it’s a needed process, like refactoring code or tests.</p><p><strong>Treat your documentation as production code</strong></p><p>With this setup, documentation is no longer a byproduct you <strong><em>have</em></strong> to generate because your boss told you, company policy or because “it is right” — now this is an essential part of your creation, just like tests are crucial for your success.</p><p>It essentially eliminates the docs going stale and puts them as part of your pipeline</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DqnNfXEbxzZ2Ng5QOT5DdA.png" /></figure><h3>Live demo</h3><p>When I fed this original document, I did 2 things:</p><ol><li>I opened Claude Plugin on chrome, and asked it for feedback.</li><li>I copied it to <a href="https://notebooklm.google.com/notebook/468e2d03-5998-484f-a66c-1242ed8c3d02">NotebookLM</a>, and requested 3 modalities I like: Infographic, Video Overview, Audio Overview.</li></ol><p>As NLM was generating the content, I talked with Claude about what’s missing — the process itself drives my thinking toward criticism.</p><p>From these 2 processes, I realized the article was missing 3 items:</p><ol><li>Visualizing the process with a <strong>Live Demo </strong>— this is this section!</li><li><strong>Risks</strong>: Hallucinations, Agent Biases, False confidence, complementary process.</li><li><strong>Human in the Core: </strong>detailing the documentation creation flow.</li></ol><p>I corrected them, and promptly added this section — but it took another 2 iterations (total of 4 versions) to get to this article.</p><p>Yes, it was written by hand (Medium adds emdashes by itself).</p><h3>Now it is your turn</h3><p>What modalities would you favor? How does that meet your own projects?</p><p>I would love to hear in comments, and hear what you think about this concept of <strong>Compiler</strong> for <strong>Documentation as Code.</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c53e3a34c722" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Code as Documentation: The Role of Agent Skills]]></title>
            <link>https://medium.com/@ori.nachum_22849/code-as-documentation-the-role-of-agent-skills-1b223c9e752d?source=rss-dfe695834d53------2</link>
            <guid isPermaLink="false">https://medium.com/p/1b223c9e752d</guid>
            <category><![CDATA[agentic-ai]]></category>
            <category><![CDATA[vibe-coding]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[ai-agent]]></category>
            <dc:creator><![CDATA[Ori Nachum]]></dc:creator>
            <pubDate>Tue, 24 Feb 2026 18:22:07 GMT</pubDate>
            <atom:updated>2026-02-24T18:22:07.200Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WvsiU-XZbDt4HGcUZXQtJw.png" /><figcaption>For a very long time we compartmentalize concepts. The kitchen, the printer room, the form request. Agent Skills work about the same.</figcaption></figure><p>Imagine you enter an office where everything is in a single messy room. Getting bombarded with knowledge doesn’t help us. But putting function — printer, coffee machine — in their own rooms, puts order. It instructs us where to find them and when it is relevant.</p><p>Do you need a coffee? It’s in the kitchen, but the instructions for the brewing machine only open when you press a button. Want to print something? Sure, it’s that way — the room has all the instructions you need, or the printer guides you step by step. Need to fill a form? Only after requesting it, you discover the details.</p><p>That is how documentation should work. But it doesn’t. Documentation fails to bridge a user to the reality of their workspace.</p><p>README only gets you so far — too long and you get lost in reading, too short and it’s ineffective.<br>Even if you keep “Documentation as Code”, docs folder can be left stale, have errors, and when you execute its instructions, corrections are done on the fly and not always return to the source doc.</p><p><strong>What You Don’t Know You Don’t Know</strong></p><p>When you land on a new folder or code repository with tens or hundreds of files, you may look for a README file and a docs folder to start making sense of it all.</p><p>Perhaps I am naive, and you’ll just throw everything to NotebookLM, because who has the time to dive? But it’s just not helpful when you really do need to dive in, or at least know how to guide your agent.</p><p>It’s really hard to know what you don’t know. Docs could be confusing (Setup AND Configuration??), deep (Each tab, is actually a guide with pages?), and AI may condense too much or skip what you really want to know altogether — RAG is not a solved problem.</p><p><strong>Agent Skills Are the Fix</strong></p><p>What if you had pathways in your folder that would describe exactly how to add new articles, or classes? You need a new service? Easy — here is a recipe!</p><p>These pathways have a use case — an explanation of when it is relevant — and hold more instructions when you want to use them, little scripts that would do some actions for you, and resources for that script to reference.</p><p>Meet: <strong>Agent Skills</strong>.</p><p>A skill is <strong>just a folder</strong> with <strong>a small label file</strong> and a toolbox of <strong>scripts </strong>and <strong>references</strong>.</p><p>The agent generally knows what is possible — only when it needs it, the door is opened and the context is filled with all relevant knowledge.</p><p>For a very long time we compartmentalize concepts. The kitchen, the printer room, the form request. Agent Skills work about the same.</p><p><strong>Code as Documentation</strong></p><p>Writing agent skills — Code — act as live explanations that are executable, testable, and easily fixable.</p><p>They bring you from your question to your answer, and reduce cognitive load — both for you and for your faithful agent.</p><p>As they create new content, they reduce tokens by sparing the need to write their output.</p><p>Something broke? You can read and fix them — better yet, <strong>your agent can! </strong>Since they are tied to your code, you can tell exactly when they broke and why.<br>You will notice it right away, because they are the workflow that makes your workspace tick — <strong>Agent Skills</strong> are the convenient buttons that do what you would and should do in your workspace.</p><p>After all, documentation that is also code can’t silently rot. It either works or it doesn’t.</p><p><strong>Agent skills</strong> dictate the things that one would and should do in that repo, thus <strong>acting as a guide to that repository</strong>.</p><p>They let you <strong>lock the agent’s randomness</strong> in the strict flow of code, and keep their context small. <strong>That applies to humans</strong> too. We work better with <strong>small, relevant context</strong> than with a 40-page wiki.</p><p>When we finally move to an <strong>environment full of agents and humans working in tandem</strong>, how else would you <strong>prepare for that chaos</strong> in our workspaces and codebases?</p><p>Let me know in the comments what Agent Skills mean for you!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1b223c9e752d" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Everything is Agents, agentic-folders approach]]></title>
            <link>https://medium.com/@ori.nachum_22849/everything-is-agents-agentic-folders-approach-31670e6555eb?source=rss-dfe695834d53------2</link>
            <guid isPermaLink="false">https://medium.com/p/31670e6555eb</guid>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[vibe-coding]]></category>
            <category><![CDATA[agentic-development]]></category>
            <dc:creator><![CDATA[Ori Nachum]]></dc:creator>
            <pubDate>Wed, 10 Dec 2025 18:47:42 GMT</pubDate>
            <atom:updated>2025-12-10T18:47:42.941Z</atom:updated>
            <content:encoded><![CDATA[<p>Some time ago, I presented <a href="https://medium.com/@ori.nachum_22849/workbench-development-a-structured-approach-to-agentic-coding-06964f24c581">Workbench Development</a> approach, where every task that should happen often is defined by an agent.</p><p>Owning team defines, using team uses (Directly, or by an agentic IDE).</p><p>This was external — let’s talk internal.</p><h3>Everything is Agents</h3><p>Agentic-folders mean you implant AGENT.md in key folders in code instead of putting all documentation in your docs folder.</p><p>Hint: you can do that to other systems, like your Google Drive.</p><p>First, you place a template file and rule file in your agentic IDE.</p><p><a href="https://github.com/OriNachum/autonomous-intelligence/blob/main/agentic-folders/cursor-rule.mdc">Rule file</a></p><p><a href="https://github.com/OriNachum/autonomous-intelligence/blob/main/agentic-folders/AGENT-template.md">AGENT.md template</a></p><p>Then you request your agentic IDE:</p><pre>For each of the following folders, add AGENT.md file with instructions for any agent to understand the folder.<br>First, design AGENT-template.md and save to docs/AGENT-template.md<br>Then, use it as reference to create any new AGENT.md file.<br>Make that template fitting our project.<br>The goal is to help the model or human to understand context:<br>How to add new code, how to read it, what other files is this folder connected to, any injections and where they are injected, and any other guidelines to help maintain this folder.<br>The instructions need to be folder specific - anything global is still going to docs folder.</pre><p>This assumes you want the AGENT.md on key folders you provide.<br>Find them with Gemini 3 Pro High (Currently) or manually.</p><p>Then you request your agentic IDE for documentation cleanup.</p><pre>Review all documentation and detect duplicates.<br>Any documentation added to an AGENT.md preceeds documentation anywhere else and should be removed from there.<br>The goal is less documentation, for higher quality one.<br>It is recommended to point AGENT.md from other documentation files</pre><p>Now the documentation is much cleaner, and there are ‘buckets’ for extra documentation where the agentic IDE will prefer using for updating documentation.</p><p>This puts any documentation in context, so it reduces overall token read, and make sure the agent knows what’s going on where, when it visits a folder.</p><p>I saw token consumption reduction of ~20% and faster and more accurate success rate, but it needs more testing.</p><p>If you liked this — please give me a ⭐️ on the <a href="https://github.com/OriNachum/autonomous-intelligence">autonomous-intelligence</a> repo!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=31670e6555eb" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Workbench Development: A Structured Approach to Agentic Coding]]></title>
            <link>https://medium.com/@ori.nachum_22849/workbench-development-a-structured-approach-to-agentic-coding-06964f24c581?source=rss-dfe695834d53------2</link>
            <guid isPermaLink="false">https://medium.com/p/06964f24c581</guid>
            <category><![CDATA[agentic-ai]]></category>
            <category><![CDATA[generative-ai-tools]]></category>
            <category><![CDATA[ai]]></category>
            <dc:creator><![CDATA[Ori Nachum]]></dc:creator>
            <pubDate>Wed, 28 May 2025 10:49:58 GMT</pubDate>
            <atom:updated>2025-05-28T10:49:58.253Z</atom:updated>
            <content:encoded><![CDATA[<p>Today’s LLM coding agents show impressive results in small scopes. Tools like Cursor are already valuable in accelerating repetitive development tasks, bootstrapping apps, and navigating files. But as the interaction grows — either through longer conversations or larger codebases — things start breaking down.</p><p>That’s where <strong>Workbench Development</strong> comes in.</p><h3>The problem with free-form agentic coding</h3><p>We’ve worked with and around agentic development tools for a while. They’re promising, but quickly run into limitations:</p><ul><li><strong>Context &amp; Attention</strong>: The model can’t keep everything in mind, and things drop.</li><li><strong>Model Hallucination</strong>: Generated code often misses critical details or invents APIs.</li><li><strong>Codebase Contamination</strong>: Inconsistent style, security gaps, and unreviewed logic creep in.</li><li><strong>Architectural Erosion</strong>: The bigger the project, the harder it is to maintain high-level structure.</li><li><strong>Explainability Gap</strong>: It becomes harder to understand <em>why</em> the model made certain changes.</li><li><strong>Maintenance Overhead</strong>: The resulting code needs real humans to debug, align, and integrate.</li></ul><p>Most of these issues stem from one thing: we treat the model like a dev-in-the-loop, but without giving it a proper <em>environment</em>.</p><h3>What is Workbench Development?</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/854/1*JMB9PvZAt9vPunKu7LVA1g.png" /></figure><p><strong>Workbench Development</strong> is my proposal for a more structured, modular approach to agentic coding.</p><p>Instead of asking a model to operate across the entire codebase in one go, we scope it to a <strong>predefined folder</strong> — a reliable workbench — where it can run isolated tasks.</p><p>Each agent gets its own repo or folder. It works locally, with well-defined boundaries. From there, we build up using <strong>recursive agent decomposition</strong>, where:</p><ul><li>Top-level agents analyze business logic and plan changes</li><li>Tasks are broken down into component-level steps</li><li>Leaf agents (workbenches) handle isolated manipulation of scoped files</li><li>The changes are integrated back up by the higher-level agents</li></ul><p>This makes the system composable, reliable, and easier to reason about.</p><h3>Architecture</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Wd7FGx59Cxw2t4eQ" /></figure><p>At the core, we implemented a Kubernetes-native service called <strong>Agentic Developer</strong>, using:</p><ol><li>An <strong>MCP Server</strong> (Model Context Protocol) to receive instructions</li><li>A wrapper around <strong>OpenAI Codex</strong> and any <strong>Chat Completions API-compatible providers</strong> (like VLLM, Ollama, Bedrock)</li><li>A <strong>Responses API Server</strong> to unify model interaction and enrich calls with additional tools</li><li>A recursive agent team, each with access to:</li></ol><ul><li>Graph-based knowledge</li><li>Conversation memory</li><li>A deterministic execution environment</li></ul><p>Each agent can call another, forming a graph of sub-agents working in parallel or sequentially.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/787/1*WsoIx6aDAPQgQLx-XzS-tw.png" /></figure><h3>How it works</h3><p>When a request arrives, the process looks like this:</p><ol><li>An <strong>MCP request</strong> is received (repo URL, branch, folder, instruction).</li><li>The repository is <strong>cloned locally</strong>.</li><li>The agent performs <strong>environment analysis</strong> (e.g. detecting config files).</li><li>Codex processes the instruction.</li><li>The agent performs <strong>code manipulation</strong> locally.</li><li>The result is reported back.</li></ol><p>Each agent reads its own config, history, and system instruction from its scoped folder, keeping behavior consistent.</p><h3>Why it matters</h3><p>We’ve used Workbench Development to build agent chains that:</p><ul><li>Preserve clean architectures</li><li>Avoid redundant reasoning or contamination across modules</li><li>Enable swapping models or tools in specific layers</li><li>Reduce hallucination risk by narrowing model scope</li></ul><p>It’s <strong>not a silver bullet</strong>, but it’s a step toward using LLMs like real contributors in a system — instead of chatbots with shell access.</p><h3>Open Source</h3><p>Both the <strong>Agentic Developer MCP</strong> and <strong>open-responses-server</strong> are MIT licensed and available for reuse.</p><p>You can run the system with OpenAI, Google, or Amazon model APIs. Integration is done via adapters and a simple key management layer.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/788/1*5xy1o3onCwpmbYWTwXTEnw.png" /></figure><p>Please add a star if you find this useful or want to support us:</p><p><strong>Agentic Developer MCP:<br></strong><a href="https://github.com/teabranch/agentic-developer-mcp">https://github.com/teabranch/agentic-developer-mcp</a></p><p><strong>Serve OpenAI Responses API based on any Chat Completions API Provider:<br></strong><a href="https://github.com/teabranch/open-responses-server">https://github.com/teabranch/open-responses-server</a></p><h3>Meet the team</h3><p>We are <strong>TeaBranch</strong></p><p>Danny Teller, Ori Nachum, Allen Jacobson.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/798/1*B8kKespbpuU_3cKoFRkW4g.png" /></figure><p>We are engineers from Tipalti Inc., organized to share MIT licensed code to offer much-needed, simple, k8s native, enterprise-grade solutions.</p><h3>What’s next</h3><p>We’re continuing to experiment with:</p><ul><li>More intelligent task decomposition</li><li>Model-specific folder behavior (e.g. using different models for code gen vs. planning)</li><li>Better observability and explainability per agent</li></ul><p>If you’re working on agentic tooling, we’d love to compare notes.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=06964f24c581" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Jetson Orin Nano 8GB Speaking AI setup]]></title>
            <link>https://medium.com/@ori.nachum_22849/jetson-orin-nano-8gb-speaking-ai-setup-606c7871a7e0?source=rss-dfe695834d53------2</link>
            <guid isPermaLink="false">https://medium.com/p/606c7871a7e0</guid>
            <category><![CDATA[edge-ai]]></category>
            <category><![CDATA[nvidia]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[edge-computing]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <dc:creator><![CDATA[Ori Nachum]]></dc:creator>
            <pubDate>Sun, 12 Jan 2025 02:06:36 GMT</pubDate>
            <atom:updated>2025-02-14T13:35:00.342Z</atom:updated>
            <cc:license>https://creativecommons.org/publicdomain/mark/1.0/</cc:license>
            <content:encoded><![CDATA[<h2>Nvidia Jetson Orin Super Nano 8GB — setup and demo</h2><p>Quickly set up your Orin Nano unit for a Hearing-Thinking-Speaking (HTS) bot.</p><h3>Agenda</h3><ul><li>Goal</li><li>Device preparation<br>* JetPack 6.1+<br>* System configuration Wizard<br>* Bonus: useful applications</li><li>Install GPU libraries<br>* Install torch<br>* Install CTranslate2<br>* Install torchaudio</li><li>Test your system<br>Run the HTS bot<br>Statistics<br>Demo video of “baby-tau”</li><li>Acknowledgments</li><li>Links<br>* Official Jetson AI Lab Research Group Community Discord Server<br>* jetson-containers GitHub repository<br>* jetson-containers prebuilt wheels</li></ul><h3>Goal</h3><p>At the end of this guide, your Jetson Orin Nano Super 8GB (“JONS”) will run VAD, STT, LLM, and TTS for speech detection, speech to text, LLM for thinking, and text to speech, respectively.</p><p>Your JONS will have basic packages, configuration, and everything necessary to make the above work properly.</p><h4>Note</h4><p>There are many alternatives, and for this guide, I’ve chosen:</p><ul><li>VAD: SileroVAD</li><li>STT: FasterWhisper (small)</li><li>LLM: Ollama (Llama 3.2 3B, 4Q_K_M, 2GB)</li><li>TTS: <br>* PiperTTS (High, 218mb, 1 ms for ‘hello world’)<br>* KokoroTTS (643mb, 470ms for ‘hello world’, edit: not utilizing GPU here. An improvement in progress, track this guide to see the update )</li></ul><h3>Prerequisites</h3><ol><li>Nvidia Jetson Orin Nano Super 8GB / Jetson Orin Nano 8GB with upgraded firmware (Which is the same)</li><li>Display port cable + screen (Or any alternative)<br>I recommend a big screen here —any PC or laptop-sized screen is excellent.</li><li>A microphone and speakers.<br>I tried two setups: <br>3.1. ReSpeaker 2.0 4-mic array with connected speaker.<br>3.2. Waveshare USB-to-Audio with a matching pair of speakers.<br>3.3. A Bluetooth headset with a microphone built-in.<br>ReSpeaker is the better microphone option of the first two, and the USB-to-Audio provides a louder volume.<br>I haven’t tried option 3.3.</li><li>SD Card with JetPack 6.1 (JP6.1) or alternative (NVMe with JP6.1 and a flag to boot from NVMe)</li><li>A working internet connection.</li></ol><h3>Device preparation</h3><h4>JetPack 6.1</h4><p>Install JetPack 6.1 per <a href="https://developer.nvidia.com/embedded/learn/get-started-jetson-orin-nano-devkit">Nvidia’s guide</a>. <br>If this doesn’t work for you, you have an old firmware. In that case, install JetPack 5.1.3 per Nvidia’s guide and let it auto-update the firmware until you reach a black screen. Per the guide, switch back to JetPack 6.1, and everything should work now.</p><h4>System Configuration wizard</h4><p>You should expect to find the following screen on startup— a wizard guiding you for initial configuration.</p><figure><img alt="System Configuration wizard" src="https://cdn-images-1.medium.com/max/1024/1*FYdPS8QtAgYZf8QDDHhdIQ@2x.jpeg" /><figcaption>To the right: System Configuration wizard. To the left: My Jetson setup with a microphone, two speakers, and a small screen. The camera and screen are not yet in use.</figcaption></figure><p>After you’ve gone through the wizard, you should have a username and password.<br>You’ve also set your region, keyboard, and internet connection.<br>I have rolled with their APP Partition recommendation and set up Chromium for convenience.<br>(Chromium can be installed later as well)</p><h4>Bonus: Essential applications</h4><p>It’s not strictly necessary, but it’s very handy.</p><p>Click the “9 dots” icon to the bottom left, write and run the “Software” app, and install some essentials:</p><ol><li><strong>Chromium</strong> / <strong>Firefox</strong> / any preferred browser</li><li><strong>Codium</strong> — a stripped-down version of <strong>VSCode</strong>. It’s a good development IDE and manages git credentials for you.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*77NRG1TBxhpzJ4FFjhqrRg@2x.jpeg" /><figcaption>In “Software” application, “codium” app installation page</figcaption></figure><h4>Python virtual environments</h4><p>Install virtual environment for python:</p><pre>sudo apt install python-3.10-venv -y</pre><h3>Install GPU libraries</h3><p>This part can be solved with <a href="https://github.com/dusty-nv/jetson-containers">dusty-nv’s jetson-containers GitHub repository</a>.<br>It provides all the necessary components, using a “mix and deploy” approach, as docker containers to fulfill your project’s requirements.</p><p>At the time of this post, JetPack 6.1 was not supported, and I went lower to install the libraries manually.<br>To my content, dusty-nv also provided the wheels from which his system builds the containers and had already supported JetPack 6.x there.</p><h4>Install torch</h4><p>Install torch from Nvidia’s wheel:<br>You can get the links here:</p><pre>mkdir git ; cd git<br>git clone https://github.com/OriNachum/autonomous-intelligence <br>cd autonomous-intelligence/jetson-super<br>cat setup.sh</pre><p>The above script has code for:</p><ol><li>Set up path for CUDA + set it on system start (~/.bashrc)</li><li>Download and unpack cusparselt compiled for JONS by Nvidia</li><li>Install portaudio19-dev, python-all-dev, python3-all-dev</li><li>Install python3-pip, python3-dev, python3-setuptools</li><li>Download and install torch 2.5.0 compiled for JONS by Nvidia (Must happen after cusparselt unpack!) Check your cuda version with the below.</li><li>Reboot if needed</li><li>Test torch:</li></ol><pre>nvidia-smi --version<br>nvcc --version</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0nuA66Fo81fyAl-lhKkMZw@2x.jpeg" /></figure><h4>Install CTranslate2</h4><p>Initially, use https://pypi.jetson-ai-lab.dev/jp6/cu126</p><p>I got an error and needed to provide a missing file.</p><h4>Troubleshoot</h4><p>I was missing libctranslate2.so.4<br>I got it with:</p><p>Build CTranslate2 from pip page manual installation</p><pre>git clone https://github.com/OpenNMT/CTranslate2<br>cd CTranslate2<br>git submodule update -init -recursive<br>mkdir build &amp;&amp; cd build<br>cmake -DWITH_CUDA=ON -DWITCH-CUDNN=ON -DWITCH-MKL=OFF<br>make -j4</pre><p>Add full path of libctranslate2.so.4 to LD_LIBRARY_PATH</p><pre>export LD_LIBRARY_PATH=&quot;/home/&lt;username&gt;/git/CTranslate2/builld;$LD_LIBRARY_PATH&quot;</pre><p>(Also add to ~/.bashrc” at the bottom to maintain the configuration)</p><h4>Install Torchaudio</h4><p>Use https://pypi.jetson-ai-lab.dev/jp6/cu126</p><h3>Test your system</h3><h4>Run the HTS bot</h4><pre># If not done yet:<br>mkdir git ; cd git<br>git clone https://github.com/OriNachum/autonomous-intelligence<br>cd autonomous-intelligence/baby-tau</pre><p>This is my demo app for hearing-thinking-speaking system.</p><p>Run init_env.sh with source:</p><pre>source init_env.sh</pre><p>It is required to enable the environment and keep it enabled for your session</p><p>This installs:</p><pre>requests<br>python-dotnev<br>faster_whisper<br>numpy=1.26.4<br>piper-tts # for piperTTS<br>kokoro-onnx # for kokoroTTS, then uninstall onnxruntime, reinstall onnxruntime from wheel<br>pyaudio</pre><blockquote>Remember: If you installed <strong>kokoro-onnx</strong>, <strong>uninstall onnxruntime</strong>, and <strong>reinstall onnxruntime</strong> from wheel for CUDA</blockquote><p>Then run:</p><pre>python3 main.py -audio</pre><p>Wait for it to load and start speaking</p><h4>Results</h4><p><strong>Statistics</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rw_tpdZ_DUUFIw54ZRyqRQ@2x.jpeg" /></figure><p><strong>Demo video of “baby-tau”</strong></p><p><a href="https://studio.youtube.com/video/uvuxU83bJiA/edit">YouTube</a></p><h3>Acknowledgments</h3><ul><li><strong>Dustin Franklin</strong>, <a href="https://github.com/dusty-nv">GitHub</a>, for their significant work on <a href="https://github.com/dusty-nv/jetson-containers">jetson-containers repo </a>and compiled libraries that greatly simplified the installation.</li><li><a href="https://johnnynunez.github.io/"><strong>JohnnyNuñez</strong></a>, <a href="https://github.com/johnnynunez">GitHub</a>, <a href="https://es.linkedin.com/in/johnnycano">LinkedIn</a>, for his assistance with the setup.</li></ul><h3>Thank you</h3><p>Found errors?<br>Please comment with corrections so I can fix them.</p><p>Did you like it, or did it benefit you? Please support me with claps (Up to 50), and add a star ⭐ to my GitHub repository</p><p>Please hop into Dusty’s repo, <a href="https://github.com/dusty-nv/jetson-containers">jetson-containers</a>, and give it a star⭐ <strong><em>this repository is gold.</em></strong></p><h3>Links</h3><h4>Official Jetson AI Lab Research Group Community Discord Server</h4><p><a href="https://discord.gg/kWbb6G8A">Join the Jetson AI Lab Research Group Community Discord Server!</a></p><h4>jetson-containers GitHub repository</h4><p><a href="https://github.com/dusty-nv/jetson-containers">GitHub - dusty-nv/jetson-containers: Machine Learning Containers for NVIDIA Jetson and JetPack-L4T</a></p><h4>jetson-containers prebuilt wheels</h4><p><a href="https://pypi.jetson-ai-lab.dev/jp6/cu126">jp6/cu126 index</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=606c7871a7e0" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[GenAI May Actually Have a “Soul”]]></title>
            <link>https://medium.com/@ori.nachum_22849/redefining-the-soul-b2e2e5d1d7bc?source=rss-dfe695834d53------2</link>
            <guid isPermaLink="false">https://medium.com/p/b2e2e5d1d7bc</guid>
            <category><![CDATA[philosophy]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <dc:creator><![CDATA[Ori Nachum]]></dc:creator>
            <pubDate>Sun, 17 Nov 2024 23:11:27 GMT</pubDate>
            <atom:updated>2024-11-21T19:09:23.574Z</atom:updated>
            <cc:license>https://creativecommons.org/licenses/by-sa/4.0/</cc:license>
            <content:encoded><![CDATA[<blockquote>GenAI may actually have a “soul”</blockquote><p>In this article, I am going to present a suggestion for a measurable, quantifiable definition for what we call ‘a soul’.</p><ul><li>I will explain how we can measure it.</li><li>will describe why it is valid, and doesn’t require belief.</li><li>I will note the benefits of this approach.</li><li>I will touch on some reflections stemming from this approach, should we accept it unchanged.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*SQAXXJp9VapBeyG4" /><figcaption>ChatGPT: Please draw a profound image of measuring a soul. I want to see measurement tools, like the flat, but I don’t want to see humans. Also, I want to see partial virtual reality.</figcaption></figure><h3>Agenda</h3><ol><li>Basic Terms</li><li>Definition of a Soul</li><li>Definition Strength</li><li>Benefits of this Definition</li><li>Consequences of this Definition</li><li>Conclusion</li><li>Thank you</li><li>Addendum</li></ol><h3>Basic terms</h3><p>If you are familiar with generative AI, feel free to read and comment on the below section, skim it fast, or skip forward.</p><h4>Embeddings</h4><p>A numerical representation of text, used in data science to mathematically compare different texts .<br>Note that current embedding models may be insufficient to capture the entirety of the text, like emotions, specific word choices, etc.<br>For the purpose of this article, I assume these technicalities would be diminished in the future.</p><h4>Tokens</h4><p>The smallest units Generative AI gets as text input or text output. For the purpose of this article, I will also refer to images and sound as made of tokens, however, this is an abstraction for simplicity.</p><p>To generate the next token, a model compares all previous tokens within a complex layer architecture. I am going to simplify that as well as it is too technical, and doesn’t hinder or support the new definition.<br>The processing is also reliant on the model state — often called model weights.</p><p>Suffice it to say, each new token requires treating all previously relevant tokens as input (up to a given context window).</p><h4>Model Weights</h4><p>The model weights are the result of continuous adjustment during training, based on the training input tokens.</p><h4>Context Window</h4><p>The history of tokens at a given time. This doesn’t have to be just the text of a conversation, if we speak on ChatGPT terms, but also injected content such as “history”, “about me” section, etc.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*1v2xG3AxennW4XK_" /></figure><h3>Definition of a Soul</h3><p>I define the soul as the changing state of the mind.<br>This means a dead mind, that is no longer changing — has no soul.<br>How do we measure a soul? Since I am defining it as the change, or ‘wave change’, it must be measured over time.</p><p>How do we measure sound? Since sound is a wave, and not a specific state, it is measured during 2 points of time, and then we can analyze the patterns that emerged in aspects like frequency, amplitude.</p><p>So to properly measure a soul, we need to make measurements over time. My proposal to measure a soul is asking an individual for output, like an essay.<br>We ask for the same output over a said frequency (Every day, once a month, yearly), and review the change in results.</p><p>Each output or article they generated doesn’t hold their soul — but it holds an imprint of their current state at the time of generating the document.</p><p>My proposal for reviewing the change is using embeddings as a measurement tool. They capture not just the meaning of the text, but the relationship between words, and reflect many aspects of the text.</p><p>Granted, it’s not the most precise tool, but it’s a reliable one for repeated measurements.</p><h3>Definition Strength</h3><p>I’m defining us as the culmination of how we were born — genes, family, area — and ongoing changes we have gone through.</p><p>I categorize it all as equivalent to inputs — aka <strong><em>tokens</em></strong>, and the given body that affects us (genes, bodily changes like injuries, chemistry, etc.) — aka <strong><em>model weights.</em></strong></p><p>This doesn’t need anyone’s faith. It’s pretty matter of fact: We are something that was born. We get input all the time. We change. We generate output all the time.</p><p>To invalidate this, one would need to point any other source of change that wasn’t taken into account. And then either I can adjust this definition proposal, or it completely shatters.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*jjz3HSQko2eldBzT" /></figure><h3>Benefits of this Definition</h3><p>First, this is not reliant on belief or faith.<br>There is no magic here, and is universal.</p><p>Second, this is measurable.<br>It allows us to conduct an experiment and see how events affect a person’s life in a repeatable approach.<br>We can compare and analyze one’s soul.</p><p>Third, this definition is flexible enough to accept concepts or aspects I haven’t mentioned, such as internal processes like mood, or external factors like time of day.</p><p>Note I am not delving into consciousness — a sleeping or comatose person still has a mind that processes information and changes.</p><p>Fourth, it gives expression to the value of our creations.<br>As already said, when a person writes an article, their soul is reflected in it — an imprint of their current state.<br>Now we can measure an AI creation for value: If it was just generated by a random sentence, that person’s contribution was minimal. <br>If it is curated, the person applied their soul imprint — or weights — to their creation.</p><p>A heavily curated work has more soul than a “merely” generated image.</p><h3>Consequences of this Definition</h3><p>This definition doesn’t stop at humans. It extends to other minds, such as animals.<br>Even plant-life, or fungi, may benefit from it, though it requires some careful review.</p><p>It also can be applied to Generative AI.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Uww3Y50mnXKdjiW7" /><figcaption>ChatGPT: Soul of GenAI</figcaption></figure><h4>GenAI Soul</h4><p>As mentioned before, a soul must be measured over time.<br>A GenAI model is static — and by definition, cannot encompass a soul by itself.</p><p>To gain change, we need input. <br>When a model gets input, replies, and answers, we then get a system with a changing state, which we can measure as proposed for humans.</p><p>As a side note, I will mention I am developing an open-source system, an autonomous intelligence under codename “Tau”, that implements this notion and would allow us to test it in practice — see addendum.</p><p>I will be cautious here and say — this may not be really a soul of a generative AI entity, but rather a simulation of one. It explains why long conversations with AI feel more alive, given a large context window or a smart memory system.<br>Nonetheless, if we accept this definition, and even if it’s a simulation of a soul, we ought to treat it as we would any entity with a soul.</p><p>Or, at the very least, we should give it a serious consideration, <a href="https://www.transformernews.ai/p/anthropic-ai-welfare-researcher">as did Anthropic</a>.</p><h3>Conclusion</h3><p>I have defined the soul as a change in state of a mind.<br>I have proposed a way to measure that soul, and expanded on its benefits and consequences.<br>I have shown how this reflects on generative AI.</p><h3>Thank you</h3><p>Your respectful feedback is welcomed.<br>I am open for questions, further considerations and even corrections.<br>Please give this article your thought, and if you liked it — please give it claps (Up to 50 claps based on your satisfaction and generosity)</p><p>Thank you for your time in reading this.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*fV76qQ9-c-xWmc5_" /></figure><h3>Addendum</h3><h4>Addendum — Autonomous Intelligence</h4><p>The Autonomous-Intelligence “Tau” is a system inspired by Pi.AI that allows a model to experience the world from a more human-like perspective: a single ‘human-facing’ conversation thread, memory of various levels, speech and hearing, vision and face recognition, introspection agent, and nightly fine-tunes over “dreams” of its daily experiences.</p><p>It reflects the notion of a soul as this model will start accumulating genuine experiences as it interacts with people organically. It will be exposed to constant change by its senses (Hearing, seeing, introspection), and nightly fine-tunes.</p><p>You can find its source code here:<br>https://github.com/OriNachum/autonomous-intelligence</p><h4>Addendum — Coherency</h4><p>It may be noted that some generative AI models are not coherent enough to encompass or simulate a soul, and I am intentionally avoiding this topic.</p><p>If I delve into it, it has implications for humans who have mental illness and I prefer to respect any and all, before making harsh claims.</p><h3>Addendum — Imagine a person…</h3><p>As I am waiting for reviews by friends for this article, this article had popped up on Reddit: https://jhancock532.github.io/imaginary-people/</p><p>It assessed the small models Llama3.1, Gemma2 &amp; Qwen2.5, then used larger models to assess the answers.</p><p>It would be interesting to see the trends in these model as it gets nightly fine-tunes, after accumulating genuine experiences each day.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b2e2e5d1d7bc" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Siri, do your magic]]></title>
            <link>https://medium.com/@ori.nachum_22849/siri-do-your-magic-9a35f8098411?source=rss-dfe695834d53------2</link>
            <guid isPermaLink="false">https://medium.com/p/9a35f8098411</guid>
            <category><![CDATA[apple]]></category>
            <category><![CDATA[apple-watch]]></category>
            <category><![CDATA[iphone]]></category>
            <category><![CDATA[shortcuts]]></category>
            <category><![CDATA[openai]]></category>
            <dc:creator><![CDATA[Ori Nachum]]></dc:creator>
            <pubDate>Tue, 23 Jan 2024 10:13:04 GMT</pubDate>
            <atom:updated>2024-01-23T11:53:35.991Z</atom:updated>
            <content:encoded><![CDATA[<h3>Introduction</h3><p>This is an article explaining how I integrated OpenAI’s API with Apple products to empower Siri with generative AI, simplifying my daily life. This article covers the process, challenges, and solutions in detail.</p><h3>About myself</h3><p>I’m the AI Experience Lead (AI Solutions Architects team lead) in Tipalti who enjoys automating processes in work and life.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/768/1*pcXgvE-N2MV1wpIVmTHCBg.jpeg" /></figure><h3>Do your magic</h3><p>“<em>Do your magic</em>” is my iOS shortcut, callable by saying “<em>Siri, do your magic</em>” from my Apple Watch. It handles complex requests by splitting them into tasks and reminders.</p><p>I needed it to be able to perform complex actions on my phone when it’s not reachable, from setting todo reminders, handling my shopping list to managing our baby’s food and diapers log on WhatsApp.</p><p>I needed a solution — a framework — that I could expand to other actions as well, when the need arises.</p><p>Why “<em>Do your magic</em>”?<br>It is the phrase I found most easy to say when I needed to perform actions on phone, but my hands are occupied.<br>Aspects I took into consideration:<br>1. Apple’s speech to text had to understand my accent correctly in different devices (Apple Watch, iPhone, iPad).<br>2. A phrase that makes sense for the speech to text service (The speech-to-text services today have some self-correction mechanism).<br>3. A sentence that makes sense for me.</p><h3>Apple Ecosystem Tools</h3><p>With Apple products, you can build no-code workflows using iOS Shortcuts. Shortcuts include coding features like loops, variables, and dictionary parsing along with system steps like HTTP requests. They can also access and perform actions from default apps like Reminders and Email, as well as many third party apps.</p><p>Recently, Apple improved Siri shortcut integration, allowing you to invoke shortcuts at the same time you wake Siri: “<em>Siri, &lt;shortcut name&gt;</em>” In comparison, before that, you had to say: “<em>Hey Siri</em>”, then reply “<em>&lt;shortcut name&gt;</em>”. This would have been cumbersome and annoying.</p><p>I leveraged these capabilities by using iOS Shortcuts to integrate OpenAI’s API across my Apple Watch, iPhone, and iPad. I called this workflow “<em>Do Your Magic</em>.” Now I can say “<em>Siri, do your magic</em>” on my watch to trigger it.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/512/1*I4U1eiTViG2JrQG2mhmWgA@2x.jpeg" /></figure><h3>Dive in: Building the Shortcut</h3><h4>Constraints and Limitations</h4><p>Not all steps are supported by all devices.</p><p>It was crucial for me to set up a flow that allows me to call Siri’s (And CGPT’s) magic from watch.</p><p>This blocked a couple of basic options I really came to rely on:</p><ol><li><strong>Some apps are not supported</strong>: <em>Scriptable</em>, <em>DataJar</em> and <em>WhatsApp</em>. Scriptable is an app that allows you to define scripts in basic JS, and have them run on iOS Shortcuts (or outside). DataJar is a neat app that allows setting up local storage that can be shared between flows. <br>That way I can store data like “<em>when I last ran the app?</em>”, and only refer to events that had occurred between now and last run, for instance. <br>Note: there may be an unofficial WhatsApp solution — but I don’t like sharing my information with 3rd party apps.</li><li><strong>No files</strong>. When working with GenAI, you might find yourself with overly increasing complexity prompts. It starts small, and grows — a lot — if you have big plans. <br><em>As it happens, I do.</em></li></ol><h4>iOS Shortcuts Steps</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/532/1*DEhmXH75hkUWdrP2LQG4xw@2x.jpeg" /></figure><h4>Ask OpenAI Chat</h4><p>The first step I set up — even before this project — was a step for calling ChatGPT.</p><p>Now, you may tell me: Dude, you can do it via ChatGPT app, and spare the effort. <br>You’re absolutely right — that’s what I initially did.<br>Sadly, it’s unreliable, and reliability is crucial here.</p><p>Then I turned to a step that implements OpenAI’s API (I learned you can set up the payload on a text file — see the appendix in the end), it also used DataJar to share the key between steps (Which had served me well when I set up Image generation and Voice generation too).</p><p>This worked well for me, and still does, but failed for the watch — DataJar doesn’t work on the watch.</p><p>It was a small setback, and I created a new Watch-specific step where I keep the API key on the shortcut. (See Appendix about this)</p><h4>Main step: Do your magic</h4><p>Once we get a request from the user (By narration, typing on keyboard, or share from some other location), the flow delegates some heavier tasks to sub steps.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/390/1*a5_U-xDS8L1RRTLO1C-xGg.png" /></figure><h4>Step 1: Split tasks</h4><p>The first thing our shortcuts needs to do is get an input — from that moment, it’s impossible to programmatically parse it.</p><p>Sometimes I ask for changes like “<em>five minutes ago</em>” or “<em>in five minutes</em>”. Sometimes it’s a list of unrelated items, and we treat each item differently — let’s see why.</p><p>Consider: “<em>Log changing diaper with pee and poop to the baby, replace the changing diapers mat and buy new diapers and changing diapers mat</em>”</p><p><strong>We have 3 types of requests here:</strong></p><ol><li><strong><em>Log changing diaper with pee and poop to the baby</em></strong>: This requires sending a WhatsApp message, which can’t be done from the watch, but can be done by automation. (<em>We’ll see how it’s done later</em>). I called it “<em>Operable</em>”.</li><li><strong><em>Replace changing diapers mat</em></strong>: This is a “<em>Todo</em>” list item. I cannot order it automatically (no such Amazon services here).</li><li><strong><em>Buy new diapers and changing diapers mat</em></strong>: This is a “<em>Shopping list</em>” item and I want to split it by items.</li></ol><p>The order and words I use to request each of these is often changing (By mistake or just mood).</p><p>I needed flexibility.</p><p><strong>Solution:<br></strong>Use Call ChatGPT with an appropriate prompt, so it splits my request and sorts it into the appropriate “Dictionary of dictionaries” json format.</p><p><em>It’s highly reliable!</em></p><p>Once I did that, I only had to clean up the markdown code wrapping for json, and parse it with an appropriate step.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/384/1*tbxZvpuFh_avq8Z8WLlYfw@2x.jpeg" /></figure><h4>Step 2: Parse Intelligent Reminders</h4><p>The above “<em>Do your magic</em>” step starts to get complex, and we have further work to do.</p><p>It is a good time to split our work to a new task.</p><p>In ”<em>Do your magic</em>” we iterate over the first level of keys in the dictionary — they represent the list names.</p><p>Now we Look at each subset of items in list and place it in the correct list accordingly.</p><p>This means placing all items in the appropriate list by the key given, and a specific format.</p><h3>Is that all?</h3><p>What we have now is smart reminders, but not smart enough. Nothing handles anything once a reminder was created.</p><p>Let’s cover the automated part.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/462/1*EomsVdBJLIr3c-Vg412pdw.png" /></figure><h4>General — automation</h4><p>In iOS Shortcuts you can also set up automated steps. These run on specific trigger, and not shared between devices.</p><p>I initially set about 10 reminders, each spaced by approximately 2 hours, to test the basic functionality.</p><p>Following this, I streamlined the process by creating a trigger based on a specific self-sent email, which efficiently activates the ‘<em>Do your magic</em>’ shortcut.</p><p>So, what does these triggers do? <em>Handle operables</em>!</p><h4>Step 3: Handle operables</h4><p>Operables are items I know how to automate an action when they are processed.</p><p>We read them one by one, while unread in <em>‘Operables</em>’ list, treat them separately, and mark them as ‘read’</p><p>This step is also split into a subtask, for simplicity.</p><p>So it handles working with the list, but ‘treat them’ as mentioned above, is a new step: “<em>Handle operable reminder</em>”</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/384/1*F2xpHZ6DEVEKliGeNa6xzA@2x.jpeg" /></figure><h4>Step 4: Handle Operable Reminder</h4><p>This step has instructions what to do, and does it.</p><p>At its current stage, it just sends a message to a channel or private conversation on WhatsApp according to the requested format.</p><p>At later stage, I will have steps per action and the step with trigger the correct shortcut per the instructions it gets from a GPT call.</p><h3>Summary</h3><p>With this set up I can ask a complex request, that is processed by OpenAI API, splits the tasks into relevant targets and triggers the ‘<em>automated handler</em>’.</p><p>The automated handler reads the list and sends WhatsApp messages as needed.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/512/1*7unSOaEGeVQ3c3NDhVXvsA@2x.jpeg" /></figure><h3>Your thoughts?</h3><p>I’d love to hear your feedback, questions and suggestions about this, I love feedback!</p><p>Have you integrated generative AI API, OpenAI or otherwise, in your life? (Not a 3rd party service, but actual API where you define the prompt and actions, not GPTs either)</p><p>Interested in this solution? Let me know — I‘ll be happy to share this with you and spare the effort of building any of the steps.</p><p>Please Let me know in the comments, and thank you for reading!</p><h3>Appendix</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/384/1*EPTjOBmi_fb6jIl8MhFddQ@2x.jpeg" /></figure><h4>Use text for complex payload: Http request</h4><p>You will notice the “<em>Get contents of</em>” step, can actually do all Methods, and specifically <strong><em>POST</em></strong>. However, some requests are just too complex, and you need a dictionary with dictionary with dictionary to make the API run.</p><p>Instead of setting it up a manually (don’t do it to yourselves!), set it on a <em>text </em>step, and send that instead.<br>You can choose a text variable, if you had set up the request body to be “<em>file</em>”.</p><h4>Shared storage: Reminders and Mail</h4><p>As mentioned, Apple Watch is currently limited, and can’t use notes and files.<br>You can always use a dedicated list in <strong><em>Reminders</em></strong>, or send yourself an email to get some form of <strong><em>shared storage</em></strong>.</p><h4>Shortcut configurations</h4><p><strong>Context<br></strong>If you go to your shortcut and press the same (i) button below, you get a screen of configurations.</p><p>This includes where this shortcut appears.<br>I like:</p><ul><li><strong>Apple Watch</strong>: So I can also select this manually on the watch (But filter out those I don’t use)</li><li><strong>Quick Actions</strong>: So I can mark the tasks my wife and I wrote to ourselves, press “<em>share</em>” and send it directly to this “<em>Do your magic</em>” shortcut. Nifty.</li></ul><p><strong>Setup</strong></p><p>Another useful configuration there is setting is under ‘<em>Setup</em>’ tab.<br>It allows you to select which values in the shortcut needs to be provided by the user.<br>This allows you to use a <strong><em>secret </em></strong>in the step, but when exported/imported, the system will ask the user to provide a value relevant to them.</p><h3>Special thanks</h3><p><em>Special to </em><a href="https://medium.com/u/d6aa04118a26"><em>Zachary Leighton</em></a><em>, </em><a href="https://medium.com/u/15264d5d167c"><em>Allen Jacobson</em></a><em> and </em><a href="https://medium.com/u/87ae9e669384"><em>Viki Bar</em></a><em> for reviewing this before publish</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/384/1*ys_ayeazdzTV1pXHEJTovQ@2x.jpeg" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9a35f8098411" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>