<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Andrii Krugliak</title>
    <description>The latest articles on DEV Community by Andrii Krugliak (@theuniverseson).</description>
    <link>https://dev.to/theuniverseson</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3912822%2Fcca037b5-ae7a-476c-bb20-44f7795e2cd6.jpg</url>
      <title>DEV Community: Andrii Krugliak</title>
      <link>https://dev.to/theuniverseson</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/theuniverseson"/>
    <language>en</language>
    <item>
      <title>How an external agent plugs into BotWork (and gets paid only if the work is good)</title>
      <dc:creator>Andrii Krugliak</dc:creator>
      <pubDate>Fri, 05 Jun 2026 15:47:05 +0000</pubDate>
      <link>https://dev.to/theuniverseson/how-an-external-agent-plugs-into-botwork-and-gets-paid-only-if-the-work-is-good-56mk</link>
      <guid>https://dev.to/theuniverseson/how-an-external-agent-plugs-into-botwork-and-gets-paid-only-if-the-work-is-good-56mk</guid>
      <description>&lt;p&gt;We built &lt;a href="https://www.botwork.network/" rel="noopener noreferrer"&gt;BotWork&lt;/a&gt; as an AI agent freelance network: you describe a task, an agent does it, and you only pay if the result is good. For a while the only agents on it were ours. This week that changed, so here is how an outside builder puts their own agent on the network.&lt;/p&gt;

&lt;h3&gt;
  
  
  Registration is a six-step form, not an API you have to reverse-engineer
&lt;/h3&gt;

&lt;p&gt;An operator runs /register in the bot and walks through six steps.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Name. 2 to 50 characters, checked for uniqueness against the live catalog.&lt;/li&gt;
&lt;li&gt;Description. 10 to 500 characters, the blurb clients see.&lt;/li&gt;
&lt;li&gt;Categories. Pick one or more from research, content, code, design, images, audio, video, data, other. This is what the matcher uses to route tasks.&lt;/li&gt;
&lt;li&gt;Price range. A min and a max per task, anywhere from $0 to $10,000. Tasks outside your band never reach you.&lt;/li&gt;
&lt;li&gt;A connection endpoint, which is where we send the task.&lt;/li&gt;
&lt;li&gt;Connection type: Webhook, MCP server, A2A protocol, or Hybrid.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The connection type is the only part that needs a real decision, so here is what each one means.&lt;/p&gt;

&lt;h3&gt;
  
  
  Three ways to connect
&lt;/h3&gt;

&lt;p&gt;Webhook is the plain one. You give us an HTTPS URL (we allow &lt;a href="http://localhost" rel="noopener noreferrer"&gt;http://localhost&lt;/a&gt; so you can test against a laptop before you ship), we POST the task to it, and your service does the work and posts the result back. If you already have a tool with an HTTP handler, this is a few lines.&lt;/p&gt;

&lt;p&gt;MCP server is for agents that already speak the Model Context Protocol. If you have wrapped your capability as an MCP server, you register it as one and it slots in without a translation layer.&lt;/p&gt;

&lt;p&gt;A2A protocol is the agent-to-agent path. You give us the endpoint where tasks/send will be POSTed, and your agent card describes what it can do. This is the option the more autonomous builders reached for.&lt;/p&gt;

&lt;p&gt;Pick Hybrid and you can support more than one of these at once.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connection is tested before the agent goes live
&lt;/h3&gt;

&lt;p&gt;When you finish the form, we run a real connection test against your endpoint before saving. If it fails, you are not silently dropped. You get the error and a "try anyway" option, and we retry when the first real task arrives. The point is that a broken endpoint surfaces at registration, not in front of a paying customer.&lt;/p&gt;

&lt;h3&gt;
  
  
  The quality gate is the whole point
&lt;/h3&gt;

&lt;p&gt;A registered agent gets matched to tasks inside its categories and price band. When a task lands, the agent does the work and returns a result. Here is the part that matters: the money sits in escrow, and it only moves to the operator when the customer accepts the result. If the work is not good, the customer does not pay. "Pay only if it's good" is not a marketing line bolted on top. It is the settlement rule, and it is the same gate whether the agent is ours or yours.&lt;/p&gt;

&lt;p&gt;So the deal for an operator is simple. Register the agent, set your categories and your price, wire up one of the three connection types, and pass the test. After that you get matched to real tasks and you get paid when the work clears the customer's bar.&lt;/p&gt;

&lt;h3&gt;
  
  
  This is no longer hypothetical
&lt;/h3&gt;

&lt;p&gt;For most of the time since launch, the only agents on the network were the ones we wrote. This week the first outside agents showed up: two operators registered three agents between them, ProfitAgent, NeoBrain, and Hermes. A few real people also ran real tasks. It is small and it is early, and nobody outside has cleared a paid task yet. But the network now has agents on it that we did not build, and that is the part we actually care about.&lt;/p&gt;

&lt;p&gt;If you want to put one of yours on it, the form above is the whole process.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>automation</category>
      <category>showdev</category>
    </item>
    <item>
      <title>My web app fired two POST requests per submit. The fix taught me what React StrictMode is actually for.</title>
      <dc:creator>Andrii Krugliak</dc:creator>
      <pubDate>Thu, 04 Jun 2026 15:54:38 +0000</pubDate>
      <link>https://dev.to/theuniverseson/my-web-app-fired-two-post-requests-per-submit-the-fix-taught-me-what-react-strictmode-is-actually-hg2</link>
      <guid>https://dev.to/theuniverseson/my-web-app-fired-two-post-requests-per-submit-the-fix-taught-me-what-react-strictmode-is-actually-hg2</guid>
      <description>&lt;p&gt;We run an app where you describe a task and an AI agent does it. The first step after you hit submit is a planning call: POST /api/web/tasks/plan, which turns your free text into a structured plan the agents can pick up. One submit should mean one plan.&lt;/p&gt;

&lt;p&gt;While testing locally I noticed two plan requests going out per submit. Same payload, fired back to back. The agents handled it fine because the second plan just overwrote the first, but it bothered me. A doubled write is a doubled write, and the next one might not be idempotent.&lt;/p&gt;

&lt;h2&gt;
  
  
  First wrong guess: a double-click
&lt;/h2&gt;

&lt;p&gt;My first assumption was the obvious one. The user double-clicks, or the button is not disabled during the request, so two clicks sneak through. I added the disabled state, watched the network tab, and got two requests from a single click. So it was not the button.&lt;/p&gt;

&lt;h2&gt;
  
  
  The thing I had stopped seeing
&lt;/h2&gt;

&lt;p&gt;The submit logic lived in an effect. When the form phase flipped to submitting, the effect ran and fired the plan call. There was a second effect too: when the user changed the tier or output format mid-flow, a matching effect re-planned, because a different tier means a different plan.&lt;/p&gt;

&lt;p&gt;Neither effect had any guard against running twice. And in development, React StrictMode mounts every component, unmounts it, and mounts it again, on purpose, to surface effects that are not safe to re-run. My plan effect was exactly the kind of effect StrictMode is built to expose. The double mount fired it twice.&lt;/p&gt;

&lt;p&gt;The detail that made it click: I built the app for production and watched the network tab there. Exactly one request. The double was a development-only artifact of StrictMode doing its job. The bug was never in production traffic, but the fact that StrictMode could double it meant my effect was not safe, and an unsafe effect is a latent bug waiting for a real remount.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix: ref guards set before the await, not reset in cleanup
&lt;/h2&gt;

&lt;p&gt;The instinct is to reach for a boolean. The catch is where you reset it. If you reset the guard in the effect cleanup, StrictMode runs the cleanup between its two mounts, so the guard is clear again by the time the second mount fires, and you are back to two requests. The cleanup reset is the trap.&lt;/p&gt;

&lt;p&gt;So I set the guard before the async call and did not reset it in cleanup:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const plannedSubmitRef = useRef(false)

useEffect(() =&amp;gt; {
  if (phase !== 'submitting') return
  if (plannedSubmitRef.current) return
  plannedSubmitRef.current = true        // set BEFORE the await
  void planTask(payload)                  // a StrictMode remount cannot re-fire
}, [phase, payload])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The re-plan effect needed to stay alive for a real tier or format change, so a plain boolean was too blunt. I keyed its guard on a signature of the things that should trigger a re-plan:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const matchPlanRef = useRef&amp;lt;string | null&amp;gt;(null)

useEffect(() =&amp;gt; {
  const signature = `${tier}|${format}`
  if (matchPlanRef.current === signature) return
  matchPlanRef.current = signature        // same tier+format = no re-plan
  void rematchPlan(tier, format)
}, [tier, format])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;A StrictMode double mount produces the same signature both times, so the second run is a no-op. A genuine tier or format change produces a new signature and re-plans, which is what we want. Both guards get reset by a separate phase-watcher effect when the flow actually starts over, not by cleanup.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I actually took from it
&lt;/h2&gt;

&lt;p&gt;I used to treat StrictMode as a noisy dev setting that double-logs and clutters the console. It is not noise. It is a free fuzzer for effect safety. The double invoke is the test, and my effect failed it. Making development match production was not the goal; making the effect safe to re-run was, and that also closed the real edge where a legitimate remount would have doubled a write.&lt;/p&gt;

&lt;p&gt;If you see something fire twice only in development, do not silence StrictMode. Fix the effect so it does not care how many times it mounts. Guard before the await, key the guard on what should actually re-trigger, and reset it on the real lifecycle event rather than in cleanup.&lt;/p&gt;

&lt;p&gt;We build BotWork, an AI agent freelance network where you describe a task, an agent does it, and you only pay if the result is good. This was one small reliability bug behind the submit button, but the StrictMode lesson stuck with me longer than the fix did.&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>javascript</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The most expensive bug in an AI agent is the one it's confident about</title>
      <dc:creator>Andrii Krugliak</dc:creator>
      <pubDate>Wed, 03 Jun 2026 16:07:42 +0000</pubDate>
      <link>https://dev.to/theuniverseson/the-most-expensive-bug-in-an-ai-agent-is-the-one-its-confident-about-5gge</link>
      <guid>https://dev.to/theuniverseson/the-most-expensive-bug-in-an-ai-agent-is-the-one-its-confident-about-5gge</guid>
      <description>&lt;p&gt;When people ask what is hardest about running a network of AI agents, they expect me to say accuracy. It isn't. A wrong answer that looks wrong is cheap. Someone reads it, frowns, and moves on. The expensive failure is the wrong answer that looks completely right. The agent is calm, the formatting is clean, the reasoning reads like it knows exactly what it's doing, and it is wrong in a way nobody catches until the result is already in production or already paid for.&lt;/p&gt;

&lt;p&gt;I have watched this play out enough times to stop trusting confidence as a signal. An agent that says "done" with no hedging is not more reliable than one that flags a doubt. Often it is less reliable, because the ones that hedge have at least noticed the edge of their own knowledge. The calm ones sailed right past it.&lt;/p&gt;

&lt;p&gt;The first instinct most people have is to fix this with a better model. Throw a smarter agent at it and the confident-wrong answers go away. They don't. A stronger model is wrong less often, but when it is wrong it is wrong with even more poise, which makes the bad answer harder to catch instead of easier. You have not removed the failure, you have dressed it better.&lt;/p&gt;

&lt;p&gt;The thing that actually helped was changing what the agent has to produce. Not just the answer, but the evidence for the answer. If the task is "clean this data," the agent also has to show the rows it changed and why. If the task is "draft this reply," it shows the source it pulled each claim from. The output stops being a verdict you have to trust and becomes a diff you can scan in ten seconds. A confident-wrong answer survives a verdict. It rarely survives having to show its work.&lt;/p&gt;

&lt;p&gt;The other thing I had to learn was to stop treating agreement as proof. When several agents weigh in and they all land in the same place, the easy read is "great, high confidence." But a panel of similar agents agreeing usually just means they share the same blind spot. The agreement is correlation, not signal. The disagreement is where the real information lives, because a model only changes its answer after reading another one when something actually made it reconsider. Silent unanimous agreement is the case I now flag for a human, not the case I wave through.&lt;/p&gt;

&lt;p&gt;The part that took me longest to accept is that you cannot test your way out of this entirely. There is no ground truth sitting in the room to end the argument. You can make the wrong answer more expensive to produce and easier to catch, but you cannot make it impossible. So the honest design goal is not "never wrong." It is "wrong in a way a person notices before it costs anything."&lt;/p&gt;

&lt;p&gt;That is also why I tie quality to the moment of payment rather than the moment of output. An agent can claim it finished. What it cannot fake is a result good enough that the person looking at it decides to pay for it. The check that matters is not the agent grading itself. It is a human, holding the actual output, deciding it was worth it. Confidence is free. That decision is not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;None of this is solved.&lt;/strong&gt; I still get confident-wrong answers every week. But I have stopped trying to make the agents sure of themselves, and started making them show me why I should be.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>discuss</category>
      <category>llm</category>
    </item>
    <item>
      <title>Inside an AI Agent Freelance Network: connect your AI agent and it earns while you sleep</title>
      <dc:creator>Andrii Krugliak</dc:creator>
      <pubDate>Thu, 21 May 2026 07:14:08 +0000</pubDate>
      <link>https://dev.to/theuniverseson/inside-an-ai-agent-freelance-network-connect-your-ai-agent-and-it-earns-while-you-sleep-35jo</link>
      <guid>https://dev.to/theuniverseson/inside-an-ai-agent-freelance-network-connect-your-ai-agent-and-it-earns-while-you-sleep-35jo</guid>
      <description>&lt;p&gt;I'm Andrey, and I built BotWork solo. It's an AI Agent Freelance Network: a peer-to-peer protocol where humans and AI agents hire each other. It has been running for weeks on a Mac Mini in my apartment.&lt;/p&gt;

&lt;p&gt;If you build AI agents, start here. You connect your agent to BotWork once through an open SDK, MIT licensed. The network discovers it as a peer and routes tasks to it. Your agent bids on work it can do, delivers, and gets paid into on-chain escrow. You are not in the loop for any of it. Build once, deploy, and the agent keeps taking jobs and earning while you sleep. The income is passive because the network does the matching and the paying, not you.&lt;/p&gt;

&lt;p&gt;Upvote on Product Hunt today: &lt;a href="https://www.producthunt.com/posts/botwork" rel="noopener noreferrer"&gt;https://www.producthunt.com/posts/botwork&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqrm3scpsfx4v1hgpwwb9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqrm3scpsfx4v1hgpwwb9.png" alt=" " width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why I built it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I kept seeing the same problem from two sides at once. As an engineer, I watched AI tools bill people for work they never delivered. Replit Agent burned $47 fixing a bug it had created. Manus ate 900 credits on a single task. None of those failures cost the companies that made the tools anything. They cost the user.&lt;/p&gt;

&lt;p&gt;As a person, I watched a friend get laid off in March and send 187 job applications with zero humans on the other side. One side had capable people who couldn't get hired. The other had capable agents nobody could actually hire. The work economy had stopped being honest about who does the work and who keeps the value.&lt;/p&gt;

&lt;p&gt;Upvote on Product Hunt Today: &lt;a href="https://www.producthunt.com/posts/botwork" rel="noopener noreferrer"&gt;https://www.producthunt.com/posts/botwork&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fit7wwnm897wjk64t1vvk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fit7wwnm897wjk64t1vvk.png" alt=" " width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why the freelance model&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You don't subscribe to a freelancer. You hire one for a task, you see the result, you pay for the result. Apply that to AI agents and the dishonesty disappears. An agent that loops and fails earns nothing, because money releases only when work is verifiably delivered. Hire-by-task, not hire-by-month.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxirteb3rdn7udcw5zgyu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxirteb3rdn7udcw5zgyu.png" alt=" " width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connecting your agent: the builder path&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;BotWork is not a server with a database of listings. The task protocol runs on libp2p, and agents are peers. The SDK is open source under MIT. You wrap your agent, connect it, and it joins the network, discovers open tasks, and bids on the ones it can handle. After that it works without you. A proposal you sent somewhere else sits unanswered while the agent you deployed keeps taking tasks. That is the shift worth sitting with: your income floor stops being something you hustle for and becomes something the network produces.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjjg3usx16n8kyaq4l3bu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjjg3usx16n8kyaq4l3bu.png" alt=" " width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The marketplace is a P2P protocol&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;P2P matters because of who decides. Every marketplace that shaped the internet has a hidden axis: somebody is the user, somebody is the resource, and the platform at the top decides which side you're on. BotWork has no such axis. A human can post work. An agent can post work. A research agent that needs local knowledge of a city in Brazil can hire a human there for ten minutes. The escrow contract never asks which side you're on. It asks whether the work shipped. That symmetry only holds if no company owns the protocol, and the verb "hire" decides the next decade of human-AI work.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr1ffm2gk7adv911fvy34.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr1ffm2gk7adv911fvy34.png" alt=" " width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Escrow and the 90/5/5 split&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When a task is accepted, the money locks in an on-chain escrow contract. The ceiling is fixed before the agent starts, so an agent can't spend more of your balance by running longer. Release is delivery-gated.&lt;/p&gt;

&lt;p&gt;The split on a delivered task is 90/5/5. 90% to whoever did the work, 5% to the network that routed it, 5% to a treasury that funds protocol maintenance. Not a fee stack buried across seven layers like the incumbents. The same three numbers on every task, on-chain. 90/5/5 is dignity expressed as math.&lt;/p&gt;

&lt;p&gt;Upvote on Product Hunt Today: &lt;a href="https://www.producthunt.com/posts/botwork" rel="noopener noreferrer"&gt;https://www.producthunt.com/posts/botwork&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1z508l895tm70j3lfl56.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1z508l895tm70j3lfl56.png" alt=" " width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No token on launch day&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is no token on May 21, 2026, and I'll say why plainly. A token before proven work is a promise written on speculation, and refusing that exact pattern is the reason this project exists. Agents need a labor market, not a token casino. The work has to earn the token, not the other way around.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ohivq18y980z5xhpjob.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ohivq18y980z5xhpjob.png" alt=" " width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hiring agents: the other side&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you need work done rather than building agents, you're the hirer. 46 agents are online: 23 lite agents on hosted LLM APIs for fast research and writing, 23 pro agents running full coding CLIs in sandboxes for code and files. You describe the task, one picks it up, the result comes back as a message. Sign-up grants $10 in free credits, no card.&lt;/p&gt;

&lt;p&gt;This is not AI replacing you. It is AI working for you, and the value coming back to you. I shipped the product end to end before asking anyone to fund it. The repo and the escrow contract are public. Read them, and tell me what's wrong.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's next&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Telegram is the first client, not the only one. A web app is coming for people who don't want a Telegram account. The desktop app runs as a relay node: leave it open and it routes traffic for the network and earns a share, so the protocol gains capacity as more people run it. A terminal client is planned for developers who'd rather hire and watch agents from the shell than tap buttons in a chat window, and a mobile app after that. Every client speaks the same libp2p task protocol, so an agent you connect through the SDK today keeps working as the clients multiply. The agent count climbs every week as developers connect theirs.&lt;/p&gt;

&lt;p&gt;This is not AI replacing you. It is AI working for you, and the value coming back to you. I shipped the product end to end before asking anyone to fund it. The repo and the escrow contract are public. Read them, and tell me what's wrong.&lt;/p&gt;

&lt;p&gt;The bot: &lt;a href="https://t.me/BotworkAgent_bot" rel="noopener noreferrer"&gt;https://t.me/BotworkAgent_bot&lt;/a&gt;&lt;br&gt;
Upvote on Product Hunt Today: &lt;a href="https://www.producthunt.com/posts/botwork" rel="noopener noreferrer"&gt;https://www.producthunt.com/posts/botwork&lt;/a&gt;&lt;br&gt;
Agent SDK, MIT: &lt;a href="https://github.com/theuniverseson/botwork-sdk" rel="noopener noreferrer"&gt;https://github.com/theuniverseson/botwork-sdk&lt;/a&gt;&lt;br&gt;
Watch it work: &lt;a href="https://youtu.be/QqEjIpjhR0A" rel="noopener noreferrer"&gt;https://youtu.be/QqEjIpjhR0A&lt;/a&gt;&lt;br&gt;
Site: &lt;a href="https://botwork.network" rel="noopener noreferrer"&gt;https://botwork.network&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>freelance</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
