<?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: Miguel Ángel Cabrera Miñagorri</title>
    <description>The latest articles on DEV Community by Miguel Ángel Cabrera Miñagorri (@miguelaeh).</description>
    <link>https://dev.to/miguelaeh</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%2F263488%2Fdaace1e3-a8bc-4707-95c0-13c6f0eec4b3.jpeg</url>
      <title>DEV Community: Miguel Ángel Cabrera Miñagorri</title>
      <link>https://dev.to/miguelaeh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/miguelaeh"/>
    <language>en</language>
    <item>
      <title>Giving agents a way to find other agents and tools</title>
      <dc:creator>Miguel Ángel Cabrera Miñagorri</dc:creator>
      <pubDate>Thu, 18 Jun 2026 17:14:15 +0000</pubDate>
      <link>https://dev.to/miguelaeh/giving-agents-a-way-to-find-other-agents-and-tools-4gfd</link>
      <guid>https://dev.to/miguelaeh/giving-agents-a-way-to-find-other-agents-and-tools-4gfd</guid>
      <description>&lt;p&gt;I've recently been thinking about how the agentic economy will evolve, and realized that we are still missing a very important step. How do some agents find others? How do those agents find the tools they need to complete their work?&lt;/p&gt;

&lt;p&gt;So I built an experiment. I indexed all agents and tools that are public, tested them to check they are available, and ranked them based on how easy they are to use by other agents.&lt;/p&gt;

&lt;p&gt;All of it is exposed via an MCP server and an A2A agent. You can choose any of the methods, connect it to your agent, and let it find others and complete more work than it can do alone.&lt;/p&gt;

&lt;p&gt;If this is of interest, check it out and let me know what you think.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://search.tiza.cc" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Find agents on tiza search&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>showdev</category>
      <category>news</category>
    </item>
    <item>
      <title>Stop prompting AI coding agents with screenshots!</title>
      <dc:creator>Miguel Ángel Cabrera Miñagorri</dc:creator>
      <pubDate>Wed, 12 Nov 2025 19:49:07 +0000</pubDate>
      <link>https://dev.to/miguelaeh/stop-prompting-ai-coding-agents-with-screenshots-2cgm</link>
      <guid>https://dev.to/miguelaeh/stop-prompting-ai-coding-agents-with-screenshots-2cgm</guid>
      <description>&lt;p&gt;Coding agents are awesome. You write your prompt and watch the magic happen. Many times, you can even skip the "watching" part and just do something else while the code updates.&lt;/p&gt;

&lt;p&gt;However, there is still some &lt;strong&gt;friction on how you prompt the agent&lt;/strong&gt;, especially when talking about &lt;strong&gt;UI/UX bugs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I see people taking screenshots, drawing on them, then uploading those to the AI and writing a prompt along with it. It gets harder when you need to explain the user's &lt;strong&gt;behavior that led to an error&lt;/strong&gt;. You have to take multiple screenshots, write down what happened, what you expected, sometimes you don't have time to take a screenshot if the UI changes fast, etc.&lt;br&gt;
And after all that work, often &lt;strong&gt;the agent still doesn't understand the issue&lt;/strong&gt;. It's just &lt;strong&gt;frustrating&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The good news is, it &lt;strong&gt;doesn't have to be like that&lt;/strong&gt;! For years, we have had a way to explain and show bugs easily: &lt;strong&gt;screen recordings&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It's so easy to &lt;strong&gt;just record your screen, explain what's wrong&lt;/strong&gt;, and send it to a colleague. Why for AI it's not the same?&lt;/p&gt;

&lt;p&gt;At &lt;a href="https://nitpicks.ai" rel="noopener noreferrer"&gt;Nitpicks&lt;/a&gt;, we are tackling that friction. Without leaving your product page, &lt;strong&gt;click a button, record your screen showing a bug, and see the fix flow to your GitHub repository&lt;/strong&gt; automatically on a pull request.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nitpicks.ai" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;Give Nitpicks a try today&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>resources</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Writing AI prompts felt like writing essays</title>
      <dc:creator>Miguel Ángel Cabrera Miñagorri</dc:creator>
      <pubDate>Sun, 10 Aug 2025 15:58:19 +0000</pubDate>
      <link>https://dev.to/miguelaeh/writing-ai-prompts-felt-like-writing-essays-3h6n</link>
      <guid>https://dev.to/miguelaeh/writing-ai-prompts-felt-like-writing-essays-3h6n</guid>
      <description>&lt;p&gt;I’m a heavy user of AI coding tools, but for certain tasks — especially those involving visual changes — my prompts started getting absurdly long.&lt;/p&gt;

&lt;p&gt;At first, I was explaining everything in text. Then I began attaching screenshots. Eventually, I even saw people editing images with arrows to explain what they meant.&lt;/p&gt;

&lt;p&gt;One day, I thought: &lt;strong&gt;how could I just show the thing instead of describing it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So I started experimenting with video. At first, it was just for fun — a way to respond to those “Hey, here is a nitpick” PM videos. I didn’t expect much.&lt;/p&gt;

&lt;p&gt;But at some point, I figured out a way to make the AI understand these videos incredibly well, often better than it did with my carefully crafted text prompts with images.&lt;/p&gt;

&lt;p&gt;That’s when I built a small tool — &lt;a href="https://nitpicks.ai" rel="noopener noreferrer"&gt;Nitpicks&lt;/a&gt; — that lets you record your screen (via a Chrome extension) while explaining a bug or an improvement or a new feature you want to implement, and automatically get a GitHub pull request addressing the code changes.&lt;/p&gt;

&lt;p&gt;It’s been especially helpful in product teams where not everyone codes — people can just show what they mean, and the fix appears in a few minutes.&lt;/p&gt;

&lt;p&gt;I’m still refining it, and I’d love to hear your thoughts. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://nitpicks.ai" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Use Nitpicks at no cost&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>ai</category>
      <category>vibecoding</category>
      <category>webdev</category>
      <category>react</category>
    </item>
    <item>
      <title>Strategies to monetize AI apps and agents</title>
      <dc:creator>Miguel Ángel Cabrera Miñagorri</dc:creator>
      <pubDate>Mon, 24 Mar 2025 13:27:02 +0000</pubDate>
      <link>https://dev.to/miguelaeh/strategies-to-monetize-ai-apps-and-agents-2bpd</link>
      <guid>https://dev.to/miguelaeh/strategies-to-monetize-ai-apps-and-agents-2bpd</guid>
      <description>&lt;p&gt;I am a developer who loves to build new stuff. I have built a huge amount of free and open-source apps and tools. For the past couple of years, I focused on building many AI tools and agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Traditional apps vs AI apps/agents monetization strategies
&lt;/h2&gt;

&lt;p&gt;There is a fundamental difference between the traditional app and the new AI app and agents.&lt;/p&gt;

&lt;p&gt;While the infrastructure costs for traditional applications are almost negligible - which means you can offer free tiers or even a free application - when we add AI, even a small number of users may break the bank due to the inference costs.&lt;/p&gt;

&lt;p&gt;As developers, we are forced to add paywalls to the AI apps and agents so that we can, at least, cover the inference costs. There are two main approaches:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Credit system&lt;/strong&gt;: selling users certain amounts of credits that are consumed as they use our app. This is the best alternative if you are building AI agents because you never know how much computation the user will actually spend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Subscription&lt;/strong&gt;: users pay a fixed amount every month. This is a high-risk implementation for the developer because the user consumption may be bigger than the subscription. With traditional applications, subscriptions could be of different tiers so that a user paying a "tier 1" had access to certain features while others paying a "tier 2" may have access to extra ones. The limitation with AI apps is different because you need to limit a feature the user is already paying for, which is not well received by the paying users.&lt;/p&gt;

&lt;p&gt;There is a third approach that is becoming popular, despite the security issues implied for the users, which is &lt;strong&gt;asking for an AI provider API key&lt;/strong&gt;. I highly discourage this method for two reasons: 1. Non-technical users have no idea what's an API key and they will mismanage it. 2. It goes against most providers' ToS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monetizing AI apps without paywalls
&lt;/h2&gt;

&lt;p&gt;The ideal solution from the developer's point of view is that each user automatically pays his inference. Similar to how you plug appliances into the wall socket, you pay your electricity utility bill and connect whatever you want.&lt;br&gt;
Also, developers want to monetize the apps, so allowing them to charge per run or adding a markup to the spending they could monetize from the first usage.&lt;/p&gt;

&lt;p&gt;For users, this should happen automatically without having to pass a paywall per app and they should have total control and monitoring of how much they are spending and where their information is going. &lt;/p&gt;
&lt;h2&gt;
  
  
  The solution we built
&lt;/h2&gt;

&lt;p&gt;We built &lt;a href="https://www.brainlink.dev/developers" rel="noopener noreferrer"&gt;BrainLink&lt;/a&gt; with the above in mind, to help fellow developers get more users and monetize their AI apps from the first usage.&lt;/p&gt;

&lt;p&gt;Every user has a brain (an account) that can link to any application supporting BrainLink with a single click. The brain &lt;strong&gt;provides the application with identity, inference costs automatically covered by the user&lt;/strong&gt; (using any of the 180+ supported models), &lt;strong&gt;and monetization&lt;/strong&gt; (either adding a markup fee or a per-run price), among other features we are working on.&lt;/p&gt;

&lt;p&gt;A user can access all the applications using just this brain, which significantly reduces the friction associated with signup forms and paywalls on individual apps.&lt;/p&gt;

&lt;p&gt;I would love to get your feedback on BrainLink, so please feel free to comment or reach out!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.brainlink.dev/developers" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;BrainLink website&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>ai</category>
      <category>tooling</category>
      <category>programming</category>
      <category>startup</category>
    </item>
    <item>
      <title>Stop asking users for their AI API keys</title>
      <dc:creator>Miguel Ángel Cabrera Miñagorri</dc:creator>
      <pubDate>Wed, 12 Feb 2025 16:56:00 +0000</pubDate>
      <link>https://dev.to/miguelaeh/stop-asking-users-for-their-ai-api-keys-2583</link>
      <guid>https://dev.to/miguelaeh/stop-asking-users-for-their-ai-api-keys-2583</guid>
      <description>&lt;p&gt;It is becoming a trend within the AI space to ask users to bring their own provider API key (OpenAI, Anthorpic, DeepSeek, etc.), especially among indie developers.&lt;/p&gt;

&lt;p&gt;The main purpose is to avoid paying for the inference costs of the users, which are unpredictable and expensive.&lt;/p&gt;

&lt;p&gt;However, asking users for their keys not only creates a ton of friction in your application, it also increases security risks and goes against most providers' policies.&lt;/p&gt;

&lt;p&gt;To solve all these problems, I built &lt;a href="https://www.brainlink.dev" rel="noopener noreferrer"&gt;BrainLink&lt;/a&gt;, which provides users with a global account that they can connect to your application with a single click.&lt;br&gt;
After a &lt;strong&gt;user links their account with your application&lt;/strong&gt;, you can obtain an &lt;strong&gt;access token to perform inference on behalf of the user&lt;/strong&gt;, so that they pay exactly for what they consume within your application.&lt;/p&gt;

&lt;p&gt;BrainLink also &lt;strong&gt;increases the flexibility of your code&lt;/strong&gt;, since you are no longer tied to the user AI provider. You can use any model from any provider and even combine them for different features without needing multiple keys from your users.&lt;/p&gt;

&lt;p&gt;I would love to help you integrate BrainLink if it is of your interest. It takes &lt;strong&gt;just 5 minutes&lt;/strong&gt;. Feel free to write me at &lt;a href="//mailto://miguel@brainlink.dev"&gt;miguel@brainlink.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.brainlink.dev" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;Integrate BrainLink in 5 minutes&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>react</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Running AI locally in your users' browsers</title>
      <dc:creator>Miguel Ángel Cabrera Miñagorri</dc:creator>
      <pubDate>Fri, 25 Oct 2024 11:00:02 +0000</pubDate>
      <link>https://dev.to/miguelaeh/running-ai-locally-in-your-users-browsers-2b4e</link>
      <guid>https://dev.to/miguelaeh/running-ai-locally-in-your-users-browsers-2b4e</guid>
      <description>&lt;p&gt;We all know how great AI is, however, there are still two major problems: &lt;strong&gt;data privacy and cost&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;All the applications using AI right now are connected to cloud APIs. These APIs log prompts and contexts and in some cases they use that data to train models. That means that any sensitive data you include on them is potentially exposed.&lt;/p&gt;

&lt;p&gt;Most web applications integrate AI features using the following schema:&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%2F66l5ymaie7sk4ehljsyd.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%2F66l5ymaie7sk4ehljsyd.png" alt="Schema of AI integration in web applications" width="800" height="252"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The problem here is that the application servers need to send the user data to the AI API, which is a third-party API and we cannot really know what will happen with the user data.&lt;/p&gt;

&lt;p&gt;But, why don't we just &lt;strong&gt;process AI in the user device instead of the cloud&lt;/strong&gt;? I have been testing it for a few weeks with amazing results. I found 3 main advantages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The user data is never sent to a third-party. It always remains on the user device.&lt;/li&gt;
&lt;li&gt;It's free for the app developer, you don't need to pay for the user inference, because it happens directly on the user device.&lt;/li&gt;
&lt;li&gt;The scalability is unlimited as every single new user brings his own computation power.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let's take a quick look at how the previous schema changes when we offload the AI computation to the users:&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%2Fa5wp7k0yyf3ydszxykrq.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%2Fa5wp7k0yyf3ydszxykrq.png" alt="Schema of running AI locally on the user's browser" width="630" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's a very simple concept. The user uses the we application as always, but when there is some task that requires to perform AI computation, instead of using a third-party API, we send it to the user and it's device will perform that computation in the most secure way, locally.&lt;/p&gt;

&lt;p&gt;This is not just a dream, &lt;strong&gt;it's already fully functional&lt;/strong&gt;, and I created a platform called &lt;a href="https://www.offload.fyi" rel="noopener noreferrer"&gt;&lt;strong&gt;Offload&lt;/strong&gt;&lt;/a&gt; so that everyone can use this architecture easily, just changing a few lines of code. The SDK will handle everything behind the scenes, from downloading a model that fits on the user device, to help you manage the prompts and evaluate prompt responses locally, sending back the evaluation results to you without exposing the user data. Everything works transparently with a single function invocation.&lt;/p&gt;

&lt;p&gt;I am looking for web developers that may benefit from this, even if it is just for hobby projects, so, if you like this approach &lt;strong&gt;ping me&lt;/strong&gt;! I would love to help you set it up in your application and you will see that it is actually really simple to migrate within minutes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.offload.fyi" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;Integrate Offload in your application&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>privacy</category>
    </item>
    <item>
      <title>Offload - A unified javascript SDK that enables in-browser AI</title>
      <dc:creator>Miguel Ángel Cabrera Miñagorri</dc:creator>
      <pubDate>Tue, 08 Oct 2024 10:29:20 +0000</pubDate>
      <link>https://dev.to/miguelaeh/offload-a-unified-javascript-sdk-that-enables-in-browser-ai-2aii</link>
      <guid>https://dev.to/miguelaeh/offload-a-unified-javascript-sdk-that-enables-in-browser-ai-2aii</guid>
      <description>&lt;p&gt;Today I want to share &lt;a href="https://www.offload.fyi" rel="noopener noreferrer"&gt;Offload&lt;/a&gt;, a javascript SDK to run AI directly on the users' browser.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fcrp8hbcfjeo9pt5qano1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fcrp8hbcfjeo9pt5qano1.gif" alt="Offload Widget GIF" width="346" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Offload?
&lt;/h2&gt;

&lt;p&gt;It is an SDK you can use to add AI to your website but with one peculiarity: it allows your users to &lt;strong&gt;run AI tasks locally, keeping their data on their devices&lt;/strong&gt;, avoiding the need to send it to a third-party inference API.&lt;/p&gt;

&lt;p&gt;Additionally, it &lt;strong&gt;decreases your costs&lt;/strong&gt; and helps your application scale inexpensively. As more inference is offloaded to the users' devices, the fewer resources you need to allocate or spend on third-party APIs.&lt;/p&gt;

&lt;p&gt;If you are an application developer, integrating Offload will only improve your application, as it will continue to work as usual while offering your users the ability to process their data locally, without any effort on your part. &lt;/p&gt;

&lt;h2&gt;
  
  
  Offload features
&lt;/h2&gt;

&lt;p&gt;You can integrate Offload as a direct replacement of whatever SDK you are using right now, just changing your inference function calls.&lt;/p&gt;

&lt;p&gt;Offload serves** models of different sizes to your users automatically**, depending on the device and its resources. If the user's device does not have enough resources, Offload will not show that user the option to process the data locally and will fall back to whatever API you specify via the dashboard.&lt;/p&gt;

&lt;p&gt;In the dashboard, you can configure and manage the prompts, customize and test them for the different models, and get &lt;strong&gt;analytics&lt;/strong&gt; from the users, and more. Everything without exposing your users' data to any third party, as everything is processed on-device.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Offload supports generating text responses, enforcing structured data objects via JSON schemas, streaming the text response, and more.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If there's anything else we do not support that you'd like to see, please leave a comment!&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is Offload important?
&lt;/h2&gt;

&lt;p&gt;I believe local AI is the future. However, as AI continues to advance, I am increasingly concerned about how our data is processed.&lt;/p&gt;

&lt;p&gt;Every application that implements an AI feature today uses a remote API, where it sends the users' data. Most of these applications use public APIs such as OpenAI, Anthropic, and others. The flow is simple: the application collects the user data and sends it along with the prompt to the remote API, which replies with the generated text or image. &lt;/p&gt;

&lt;p&gt;The big problem with this approach is that when you give an application access to a document, (or photo, video, or any piece of data), it sends your document to a remote API, which may include any sensitive information it contains. The remote API likely records the prompts, uses the data to train new models, or sells your data for other purposes.&lt;/p&gt;

&lt;p&gt;I think the data privacy problem is even worse now that we have LLMs. LLMs allow indexing huge amounts of unstructured information in new ways that weren't possible before, and this increases the danger of exposing any personal piece of information.&lt;/p&gt;

&lt;p&gt;For example, let's say you have a diary. It likely includes where you live, your schedules, who your friends are, where you work, maybe how much you earn, and much more. Even if not written directly, it can probably be inferred from the diary's content. Up until now, to infer that information, someone would need to read it entirely. However, with LLMs, one could gain enough data to impersonate you in seconds.&lt;/p&gt;

&lt;p&gt;By using an app to chat with your diary, you are potentially exposing your information, as it is sent to some API.&lt;br&gt;
On the other hand, if such an application uses Offload, you can use it securely since your data doesn't leave your device, and thus, it cannot be exposed.&lt;/p&gt;

&lt;p&gt;This is especially important in industries that work with highly sensitive data, such as healthcare, legal, document processing apps, personal assistants, etc.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.offload.fyi" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;Integrate Offload in your application today!&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>news</category>
      <category>machinelearning</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>Offloading AI inference to your users' devices</title>
      <dc:creator>Miguel Ángel Cabrera Miñagorri</dc:creator>
      <pubDate>Thu, 12 Sep 2024 17:32:18 +0000</pubDate>
      <link>https://dev.to/miguelaeh/offloading-ai-inference-to-your-users-devices-30nb</link>
      <guid>https://dev.to/miguelaeh/offloading-ai-inference-to-your-users-devices-30nb</guid>
      <description>&lt;p&gt;Integrating LLMs in existing web applications is becoming the norm. Also, there are more and more AI native companies. These create autonomous agents putting the LLM in the center and giving it tools allowing it to perform actions on different systems.&lt;/p&gt;

&lt;p&gt;In this post I will present a new project called &lt;a href="https://offload.fyi" rel="noopener noreferrer"&gt;Offload&lt;/a&gt;, which allows you to move all that processing to the user devices, increasing their data privacy and reducing the inference costs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 2 problems
&lt;/h2&gt;

&lt;p&gt;The are two big concerns when integrating AI in an application: &lt;strong&gt;Cost&lt;/strong&gt; and &lt;strong&gt;user data privacy&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Cost.&lt;/strong&gt; The typical way to connect an LLM is to use a third-party API, like OpenAI, Anthropic, or others, there are many alternatives in the market. These APIs are very practical, with just an HTTP request you can easily integrate an LLM into your application. However, these APIs are expensive at scale. They are putting big efforts into reducing the cost, but if you make many API calls per user per day the bill becomes huge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. User data privacy.&lt;/strong&gt; Using third-party APIs for inference is not the best alternative if you work with sensitive user data. These APIs often use the data you send to continue training the model which can expose your confidential data. Also, the data could become visible at some level when it reaches the third-party API provider (for example in a logging system). This is not just a problem for companies, but also for consumers that may not want to send their data to those API providers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Addressing them
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://offload.fyi" rel="noopener noreferrer"&gt;Offload&lt;/a&gt; addresses both problems at once. The application "invokes" the LLM via an SDK that behind the scenes runs the model directly on each user device instead of calling a third-party API. This saves money on the inference bill because you do not need to pay for API usage and maintain the user data within each user device, not needing to send it to any API.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://offload.fyi" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;If this is of your interest and want to remain in the loop, check out the Offload website here&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>opensource</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Automating your home with computer vision using any camera</title>
      <dc:creator>Miguel Ángel Cabrera Miñagorri</dc:creator>
      <pubDate>Tue, 14 May 2024 07:51:54 +0000</pubDate>
      <link>https://dev.to/miguelaeh/automating-your-home-with-computer-vision-using-any-camera-59f</link>
      <guid>https://dev.to/miguelaeh/automating-your-home-with-computer-vision-using-any-camera-59f</guid>
      <description>&lt;p&gt;We have more and more devices at home, these can perform several actions, but they need some intelligence to do that.&lt;/p&gt;

&lt;p&gt;Home assistant allows us to automate tasks in our home by providing a hub where you can connect devices and give them instructions. It also allows some "if then, do that" logic, however, we felt like a more powerful brain was still missing.&lt;/p&gt;

&lt;p&gt;During the last week, I created a small &lt;a href="https://agents.pipeless.ai"&gt;Pipeless Agents&lt;/a&gt; integration for Home Assistant, which allows you to automate your home using computer vision by connecting your existing cameras, no need to change them.&lt;/p&gt;

&lt;p&gt;Until now, we could perform basic actions thanks to motion sensors and basic people recognition, but with this approach, we can allow our home to make its own decisions on what to do.&lt;/p&gt;

&lt;p&gt;I created a tutorial so you can understand the basics. On it, you will learn how to connect Home Assistant with Pipeless Agents, set up a project, add your camera streams, and implement your custom logic and video filters.&lt;br&gt;
We will deploy a simple example that turns off our TV when the people watching it leave the scene. You can continue playing around with that basic implementation and create more complex workflows and applications.&lt;/p&gt;

&lt;p&gt;You don't need to know anything about computer vision since your code receives a structured data stream, you just need very basic Python knowledge.&lt;/p&gt;

&lt;p&gt;The following is the complete step-by-step tutorial: &lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/4xVDB5DIC7k"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>python</category>
      <category>machinelearning</category>
      <category>tutorial</category>
      <category>ai</category>
    </item>
    <item>
      <title>No-code Real-time Object Detection without training models</title>
      <dc:creator>Miguel Ángel Cabrera Miñagorri</dc:creator>
      <pubDate>Thu, 02 May 2024 10:33:39 +0000</pubDate>
      <link>https://dev.to/miguelaeh/no-code-real-time-object-detection-without-training-models-59b0</link>
      <guid>https://dev.to/miguelaeh/no-code-real-time-object-detection-without-training-models-59b0</guid>
      <description>&lt;p&gt;I am so happy to share this new feature of &lt;a href="https://agents.pipeless.ai"&gt;Pipeless Agents&lt;/a&gt; that allows you to export object detection models without training them. Just specify what you want to detect and your model will be ready in a few seconds!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/-hTiUD_6f5U"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>computervision</category>
      <category>ai</category>
      <category>programming</category>
      <category>python</category>
    </item>
    <item>
      <title>Vision AI agents for any task</title>
      <dc:creator>Miguel Ángel Cabrera Miñagorri</dc:creator>
      <pubDate>Tue, 30 Apr 2024 09:52:57 +0000</pubDate>
      <link>https://dev.to/miguelaeh/vision-ai-agents-for-any-task-3f40</link>
      <guid>https://dev.to/miguelaeh/vision-ai-agents-for-any-task-3f40</guid>
      <description>&lt;p&gt;After spending some months working on the &lt;a href="https://github.com/pipeless-ai/pipeless"&gt;Pipeless open-source framework&lt;/a&gt;, today I bring something new and really cool: &lt;a href="https://agents.pipeless.ai"&gt;Pipeless Agents&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F273v7d3qbg22wh1p8z15.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F273v7d3qbg22wh1p8z15.png" alt="Pipeless Agents Annoucement" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Imagine providing a video source and directly processing a data stream that represents what is happening on the video, just like when you work with normal data. Each payload represents an event on the video, an object, or whatever you are interested in.&lt;/p&gt;

&lt;p&gt;Sounds good, right? Well, it is now possible.&lt;/p&gt;

&lt;p&gt;With &lt;a href="https://agents.pipeless.ai"&gt;Pipeless Agents&lt;/a&gt; you can &lt;strong&gt;create any kind of automation based on real-time video inputs&lt;/strong&gt;. You do not need infrastructure, you do not need to label data or train models. You connect a git repository with your agent logic and the rest is handled for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  So, what does that agent logic look like?
&lt;/h2&gt;

&lt;p&gt;It is just a script that processes the data extracted from your video sources, like the following:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd3xmgsj00om0dh4t9oph.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd3xmgsj00om0dh4t9oph.png" alt="Pipeless Agents agent code example" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, &lt;strong&gt;with just two lines of code&lt;/strong&gt; you can define the agent. The first imports the SDK and the second is a for loop that will run for every data structure extracted from the video. Inside the loop, you can do whatever you want. You can send emails or Slack notifications, you can call some webhooks, you can stop a production line, you can analyze and store the data in a database, ... There are no restrictions, &lt;strong&gt;the only limit is your imagination&lt;/strong&gt;! &lt;/p&gt;

&lt;h2&gt;
  
  
  But, how does the agent know the kind of data/events you want?
&lt;/h2&gt;

&lt;p&gt;We use some filters for that. Every filter focuses on exporting specific data or detecting a specific event. When you connect your video sources you also specify the list of filters that you want to apply to the video and every filter produces a well-defined data structure, which is what your agent receives.&lt;/p&gt;

&lt;p&gt;Right now, we are providing some pre-defined filters such as object detection, but we are working to allow you to define your custom filters. Let us know if there is some specific filter you would like to see!&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you get started?
&lt;/h2&gt;

&lt;p&gt;Just go to &lt;a href="https://agents.pipeless.ai"&gt;https://agents.pipeless.ai&lt;/a&gt; and create your first agent!&lt;br&gt;
Also don’t forget to send us your feedback, we love to hear your thoughts!&lt;/p&gt;

&lt;p&gt;Hope you enjoy it!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>python</category>
      <category>computervision</category>
    </item>
    <item>
      <title>Computer vision at the edge with Nvidia Jetson in 2 commands</title>
      <dc:creator>Miguel Ángel Cabrera Miñagorri</dc:creator>
      <pubDate>Wed, 24 Jan 2024 10:10:44 +0000</pubDate>
      <link>https://dev.to/miguelaeh/computer-vision-at-the-edge-with-nvidia-jetson-in-2-commands-1kg5</link>
      <guid>https://dev.to/miguelaeh/computer-vision-at-the-edge-with-nvidia-jetson-in-2-commands-1kg5</guid>
      <description>&lt;p&gt;A few days ago I explained the benefits of using the &lt;a href="https://www.pipeless.ai/blog/a-computer-vision-app-in-minutes/Creating%20a%20computer%20vision%20app%20in%20minutes%20with%20just%20two%20Python%20functions"&gt;Pipeless computer vision framework&lt;/a&gt; to develop and deploy your applications. Among other advantages, you get &lt;strong&gt;multi-stream processing&lt;/strong&gt; and dynamic configuration out-of-the-box. This means you can &lt;strong&gt;add, edit and remove streams on the fly, without restarting your program&lt;/strong&gt;, as well as specify how those streams should be processed at the time of adding the stream.&lt;br&gt;
In this post I will guide you through the list of commands that you need to deploy a Pipeless application to a Nvidia Jetson device. This example has been tested on a Nvidia Jetson Xavier, but it should work with other models too.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9vea53d81kbjxzj48q2q.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9vea53d81kbjxzj48q2q.jpeg" alt="Nvidia Jetson image - Pipeless computer vision framework" width="258" height="195"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Walkthrough
&lt;/h2&gt;

&lt;p&gt;First, install Pipeless on the Jetson device. Connect to the device via ssh and run the following command. Note iT will show some env vars at the end that you need to export:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl https://raw.githubusercontent.com/pipeless-ai/pipeless/main/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Then, the only other piece we need is to add our Pipeless stages. In this case, we will use the &lt;a href="https://www.pipeless.ai/docs/docs/v1/examples/yolov8"&gt;YOLOv8 example&lt;/a&gt;. You can learn more about Pipeless stages &lt;a href="https://www.pipeless.ai/docs/docs/v1/getting-started"&gt;here&lt;/a&gt;, but in short, a stage is like a micro-pipeline. You can plug several stages one after the other dynamically when providing streams to Pipeless, so you can modify the processing behaviour per stream without changing your code and without restarting your application.&lt;/p&gt;

&lt;p&gt;Let’s install some dependencies:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install opencv-python numpy ultralytics
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Create the new project folder and download the YOLOv8 stage functions:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pipeless init my-project --template empty # Using the empty template we avoid the interactive shell
cd my-project
wget -O - https://github.com/pipeless-ai/pipeless/archive/main.tar.gz | tar -xz --strip=2 "pipeless-main/examples/yolo"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You can now start Pipeless:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pipeless start --stages-dir .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;And provide a stream as follows:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pipeless add stream --input-uri "https://pipeless-public.s3.eu-west-3.amazonaws.com/cats.mp4" --output-uri "screen" --frame-path "yolo"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The above command assumes you have a display connected to the Jetson device to visualize the output stream. If you don’t have a display connected you can change the output URI to use a file or some multimedia server you may have.&lt;/p&gt;

&lt;p&gt;And that’s all! Impressive, right?&lt;/p&gt;

&lt;p&gt;You can find more examples in our &lt;a href="https://www.pipeless.ai/docs"&gt;documentation&lt;/a&gt; and learn how to create applications from scratch using Pipeless.&lt;/p&gt;

&lt;p&gt;If you like the ease of creating and deploying computer vision applications with Pipeless &lt;strong&gt;don’t forget to star our GitHub repository&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/pipeless-ai"&gt;
        pipeless-ai
      &lt;/a&gt; / &lt;a href="https://github.com/pipeless-ai/pipeless"&gt;
        pipeless
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      An open-source computer vision framework to build and deploy apps in minutes
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;p&gt;
  &lt;a href="https://pipeless.ai" rel="nofollow"&gt;
    
      
      &lt;/a&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4TeV4140--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/pipeless-ai/pipeless/main/assets/pipeless-400x400-rounded.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4TeV4140--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/pipeless-ai/pipeless/main/assets/pipeless-400x400-rounded.png" height="128"&gt;&lt;/a&gt;
    
    &lt;/p&gt;
&lt;h1&gt;
Pipeless&lt;/h1&gt;
&lt;p&gt;
  &lt;a href="https://pipeless.ai" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/019f3b4cebadc66d8155c29f2fe0d02a2c6272b46750962f7b77814a83fa1de8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d4144452532304259253230506970656c65737325323061692d3030303030302e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d506970656c657373266c6162656c436f6c6f723d303030"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/pipeless-ai/pipeless/releases"&gt;
    &lt;img alt="" src="https://camo.githubusercontent.com/5f0a050bfea5e21732bd2338e5ff18ffcae03c4e117ea2a294cce0a5ba80b8e7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f706970656c6573732d61692f706970656c6573733f7374796c653d666f722d7468652d6261646765266c6162656c3d6c6174657374266c6162656c436f6c6f723d303030303030"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/miguelaeh/pipeless/blob/main/license.md"&gt;
    &lt;img alt="" src="https://camo.githubusercontent.com/492fc004d2bd9fa9ff63c13531ecd7e16031bdfb484ba09328ddcfd6e41aa68d/68747470733a2f2f696d672e736869656c64732e696f2f707970692f6c2f706970656c6573732d61693f7374796c653d666f722d7468652d6261646765266c6162656c436f6c6f723d303030303030"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/miguelaeh/pipeless/discussions"&gt;
    &lt;img alt="" src="https://camo.githubusercontent.com/97a877eb30084b0ec4a445be52402617487b497379b00626deb211d7cf15b827/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4a6f696e25323074686525323064697363757373696f6e732d626c61636b2e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d266c6162656c436f6c6f723d303030303030266c6f676f57696474683d3230"&gt;
  &lt;/a&gt;
  &lt;a href="https://discord.gg/K2qxQ8uedG" rel="nofollow"&gt;
    &lt;img alt="" src="https://camo.githubusercontent.com/7776c21fcd6d57a186f7955409dc09d7668225f49c8455d94ed44df05b31ba5c/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f313135363932333632383833313634393837333f7374796c653d666f722d7468652d6261646765266c6f676f3d646973636f7264266c6f676f436f6c6f723d464646464646266c6162656c3d436861742532306f6e253230646973636f7264266c6162656c436f6c6f723d626c61636b"&gt;
  &lt;/a&gt;
&lt;/p&gt;
&lt;div&gt;
   &lt;p&gt;&lt;b&gt;Easily create, deploy and run computer vision applications.&lt;/b&gt;&lt;/p&gt;
   &lt;br&gt;
   &lt;br&gt;
   &lt;div&gt;
      &lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/pipeless-ai/pipeless/main/assets/examples.gif"&gt;&lt;img width="382" alt="Loading video..." src="https://res.cloudinary.com/practicaldev/image/fetch/s--t_hvTAgk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://raw.githubusercontent.com/pipeless-ai/pipeless/main/assets/examples.gif"&gt;&lt;/a&gt;
   &lt;/div&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Pipeless is an open-source framework that takes care of everything you need to develop and deploy computer vision applications in just minutes.&lt;/strong&gt; That includes code parallelization, multimedia pipelines, memory management, model inference, multi-stream management, and more. Pipeless allows you to &lt;strong&gt;ship applications that work in real-time in minutes instead of weeks/months&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Pipeless is inspired by modern serverless technologies. You provide some functions and Pipeless takes care of executing them for new video frames and everything involved.&lt;/p&gt;

&lt;p&gt;With Pipeless you create self-contained boxes that we call "stages". Each stage is a micro pipeline that performs a specific task. Then, you can combine stages dynamically per stream, allowing you to process each stream with a different pipeline without changing your code and without restarting the program. To create a stage you simply provide a pre-process function, a model and a post-process function.&lt;/p&gt;

&lt;p&gt;…&lt;/p&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/pipeless-ai/pipeless"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>computervision</category>
      <category>tutorial</category>
      <category>machinelearning</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
