<?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: Omar Baró</title>
    <description>The latest articles on DEV Community by Omar Baró (@unfire).</description>
    <link>https://dev.to/unfire</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%2F4160885%2F41bd30d6-d1b9-4cf7-9909-2565a6756072.png</url>
      <title>DEV Community: Omar Baró</title>
      <link>https://dev.to/unfire</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/unfire"/>
    <language>en</language>
    <item>
      <title>Field Break: an open-weight AI that tells you to close the screen</title>
      <dc:creator>Omar Baró</dc:creator>
      <pubDate>Mon, 05 Oct 2026 22:55:45 +0000</pubDate>
      <link>https://dev.to/unfire/field-break-an-open-weight-ai-that-tells-you-to-close-the-screen-35j9</link>
      <guid>https://dev.to/unfire/field-break-an-open-weight-ai-that-tells-you-to-close-the-screen-35j9</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;Field Break&lt;/strong&gt;, a deliberately small AI tool whose success condition is that you stop using it.&lt;/p&gt;

&lt;p&gt;You tell it four things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how many minutes you have;&lt;/li&gt;
&lt;li&gt;your energy level;&lt;/li&gt;
&lt;li&gt;what kind of outdoor space is nearby;&lt;/li&gt;
&lt;li&gt;one constraint, such as “stay close to home” or “no car”.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It returns &lt;strong&gt;one&lt;/strong&gt; micro-adventure that can start almost immediately, plus a final instruction telling you when to lock the screen.&lt;/p&gt;

&lt;p&gt;That last part is the product idea. Most AI apps optimize for more conversation. Field Break optimizes for the shortest useful interaction possible.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5n256n6yny7q5nxcllr3.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5n256n6yny7q5nxcllr3.png" alt="Field Break UI" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The 36-second demo is here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://raw.githubusercontent.com/ondmindmanagement-hub/field-break/main/demo/field-break-demo.mp4" rel="noopener noreferrer"&gt;https://raw.githubusercontent.com/ondmindmanagement-hub/field-break/main/demo/field-break-demo.mp4&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A live Apertus 1.5 70B test was also captured during the challenge. Given 20 minutes, medium energy, neighbourhood streets and a small park, the model produced a “Neighbourhood Pocket Adventure” and ended with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Turn off phone and let adventure unfold offline&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The exact prompt and result are preserved in the repository so the model evidence is inspectable rather than described from memory.&lt;/p&gt;

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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ondmindmanagement-hub" rel="noopener noreferrer"&gt;
        ondmindmanagement-hub
      &lt;/a&gt; / &lt;a href="https://github.com/ondmindmanagement-hub/field-break" rel="noopener noreferrer"&gt;
        field-break
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Open-weight AI micro-adventures that get you off the screen — Hacktoberfest Week 1
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Field Break&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Hacktoberfest Open-Source AI Challenge — Week 1: Touch Grass&lt;/p&gt;
&lt;p&gt;Field Break turns a small amount of free time into one simple outdoor micro-adventure, then explicitly tells the user to put the screen away.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Open-source AI core&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;The app is designed for the open-weight Apertus 1.5 model through an OpenAI-compatible endpoint. The provider/model are environment-configurable, so the project can switch to another open-weight deployment without changing the UI.&lt;/p&gt;
&lt;p&gt;Run with real model inference by setting:&lt;/p&gt;
&lt;p&gt;OPEN_MODEL_API_KEY
OPEN_MODEL_API_URL=&lt;a href="https://api.publicai.co/v1/chat/completions" rel="nofollow noopener noreferrer"&gt;https://api.publicai.co/v1/chat/completions&lt;/a&gt;
OPEN_MODEL_NAME=swiss-ai/apertus-v1.5-8b&lt;/p&gt;
&lt;p&gt;Without a key, the prototype runs a clearly labelled deterministic demo-policy; it never pretends that fallback output is model inference.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why open innovation matters&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;The planning layer is not locked to one proprietary model or API. An open-weight model can be self-hosted, swapped, audited, or moved closer to the user's data. For a tiny tool whose purpose is to get you away from the screen, that simplicity matters.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Safety&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Field…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ondmindmanagement-hub/field-break" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Repository: &lt;a href="https://github.com/ondmindmanagement-hub/field-break" rel="noopener noreferrer"&gt;https://github.com/ondmindmanagement-hub/field-break&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is intentionally dependency-light: a Python standard-library server, a small browser UI, three unit tests, and an OpenAI-compatible adapter for an open-weight model endpoint.&lt;/p&gt;

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

&lt;p&gt;The open model at the center is &lt;strong&gt;Apertus 1.5&lt;/strong&gt;, with the default configuration pointing to &lt;code&gt;swiss-ai/apertus-v1.5-8b&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The model receives only the context the user provides. The system prompt explicitly tells it not to invent live weather, trail closures, local conditions, or medical claims. It must prefer something local, simple, low-cost and reversible.&lt;/p&gt;

&lt;p&gt;The output is structured JSON:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;title;&lt;/li&gt;
&lt;li&gt;number of minutes;&lt;/li&gt;
&lt;li&gt;a short plan;&lt;/li&gt;
&lt;li&gt;what to bring;&lt;/li&gt;
&lt;li&gt;a &lt;code&gt;screen_exit&lt;/code&gt; instruction.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That structure matters because I did not want another chat interface that can drift into an endless conversation. Field Break asks for one decision and then gets out of the way.&lt;/p&gt;

&lt;p&gt;The provider and model are environment-configurable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OPEN_MODEL_API_KEY=...
OPEN_MODEL_API_URL=https://api.publicai.co/v1/chat/completions
OPEN_MODEL_NAME=swiss-ai/apertus-v1.5-8b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If no model key is configured, the app switches to an explicitly labelled &lt;code&gt;demo-policy&lt;/code&gt;. It never claims that deterministic fallback output came from the model.&lt;/p&gt;

&lt;p&gt;I also added tests for JSON extraction, output normalization and the demo planner. All three are passing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;For this project, open innovation is not a decorative technology choice.&lt;/p&gt;

&lt;p&gt;A closed planning API would make the smallest part of the product — deciding what to do outside — dependent on one vendor. With an open-weight model, the inference layer can be moved, swapped or self-hosted without changing the experience.&lt;/p&gt;

&lt;p&gt;That becomes especially interesting for a tool whose philosophy is &lt;strong&gt;less cloud, less screen, less dependency&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The project can use a hosted Apertus endpoint today, but the interface is deliberately compatible with a future local or privately hosted deployment. The user interface does not need to know which provider is behind it.&lt;/p&gt;

&lt;p&gt;Open weights also make the model choice inspectable. The project is not pretending that “AI” is a magic black box; the model family, prompt, evidence and fallback behavior are all visible in the repo.&lt;/p&gt;

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

&lt;p&gt;The challenge theme pushed me to reverse the normal metric.&lt;/p&gt;

&lt;p&gt;Instead of “How many messages can the user send?”, I asked:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How quickly can the software become unnecessary?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That changed the design:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no feed;&lt;/li&gt;
&lt;li&gt;no history requirement;&lt;/li&gt;
&lt;li&gt;no engagement loop;&lt;/li&gt;
&lt;li&gt;one plan;&lt;/li&gt;
&lt;li&gt;one exit instruction.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The best output is not the most impressive paragraph. It is the one that makes someone say “okay” and leave the desk.&lt;/p&gt;

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

&lt;p&gt;I am entering the &lt;strong&gt;overall Hacktoberfest Open-Source AI Challenge Week 1&lt;/strong&gt; category.&lt;/p&gt;

&lt;p&gt;I did not add a partner category just to increase eligibility; the project only claims technologies it actually uses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build Evidence
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;New project created during the Week 1 challenge window.&lt;/li&gt;
&lt;li&gt;Public GitHub repository.&lt;/li&gt;
&lt;li&gt;3/3 tests passing.&lt;/li&gt;
&lt;li&gt;Live Apertus 1.5 70B evidence captured from Public AI / CSCS infrastructure.&lt;/li&gt;
&lt;li&gt;Short demo video and screenshots included in the repo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Field Break is small on purpose. The screen should be the shortest part of the experience.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>BOLT PayFlow Guard: Open AI That Cannot Spend Without You</title>
      <dc:creator>Omar Baró</dc:creator>
      <pubDate>Mon, 05 Oct 2026 05:18:11 +0000</pubDate>
      <link>https://dev.to/unfire/bolt-payflow-guard-open-ai-that-cannot-spend-without-you-2536</link>
      <guid>https://dev.to/unfire/bolt-payflow-guard-open-ai-that-cannot-spend-without-you-2536</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;BOLT PayFlow Guard&lt;/strong&gt;, a governed AI payment workflow designed around one rule: &lt;strong&gt;AI can propose, but a person must authorize the consequential action.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I built it for &lt;strong&gt;a close friend&lt;/strong&gt;, who uses AI tools but does not want an AI agent to have silent authority over money. The problem is not whether AI can understand a payment request; it is whether that recommendation can become an irreversible action without explicit human control.&lt;/p&gt;

&lt;p&gt;A user can write a natural-language request such as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pay 1 EUR for a test purchase.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The local AI turns that into structured JSON with whether a payment is recommended, the proposed amount, and the reason.&lt;/p&gt;

&lt;p&gt;But nothing is paid. A separate approval gate blocks the payment path until explicit human authorization exists.&lt;/p&gt;

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

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

&lt;p&gt;The demo shows the complete decision flow: intent, AI recommendation, blocked state, human approval, and the PayPal Sandbox path.&lt;/p&gt;

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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ondmindmanagement-hub" rel="noopener noreferrer"&gt;
        ondmindmanagement-hub
      &lt;/a&gt; / &lt;a href="https://github.com/ondmindmanagement-hub/bolt-payflow-guard" rel="noopener noreferrer"&gt;
        bolt-payflow-guard
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Governed AI payment workflow prototype using PayPal Orders API
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;BOLT Payflow Guard&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;BOLT Payflow Guard is a governed AI-to-payment workflow prototype for the PayPal AI Hackathon.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Flow&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;A local AI model running in Ollama analyzes a natural-language payment request and returns a structured recommendation. The AI is advisory only and cannot execute payments.&lt;/li&gt;
&lt;li&gt;A separate BOLT approval gate blocks the payment step unless explicit human approval is present.&lt;/li&gt;
&lt;li&gt;After approval, the PayPal module authenticates with OAuth 2.0 and creates a PayPal Orders v2 Sandbox order.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;AI integration&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;The demo uses Ollama with &lt;code&gt;qwen2.5:7b&lt;/code&gt; by default, so the AI part can run locally without cloud credentials.&lt;/p&gt;
&lt;p&gt;Run:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;npm run ai -- "Pay 1 EUR for a test purchase"&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The model returns JSON with &lt;code&gt;should_pay&lt;/code&gt;, &lt;code&gt;amount_eur&lt;/code&gt;, and &lt;code&gt;reason&lt;/code&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;PayPal integration&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Requires PayPal Sandbox credentials. Keep them in environment variables only:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PAYPAL_CLIENT_ID&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PAYPAL_CLIENT_SECRET&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;optional &lt;code&gt;PAYPAL_BASE_URL&lt;/code&gt; (defaults to the Sandbox API)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then explicitly approve the sandbox transaction with &lt;code&gt;BOLT_APPROVED=1&lt;/code&gt; and…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ondmindmanagement-hub/bolt-payflow-guard" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://github.com/ondmindmanagement-hub/bolt-payflow-guard" rel="noopener noreferrer"&gt;https://github.com/ondmindmanagement-hub/bolt-payflow-guard&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The open-source AI core is &lt;strong&gt;Ollama running Qwen 2.5 7B locally&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The Node.js AI module sends the natural-language request to a local Ollama endpoint and asks the model to return structured JSON containing &lt;code&gt;should_pay&lt;/code&gt;, &lt;code&gt;amount_eur&lt;/code&gt;, and &lt;code&gt;reason&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The model is advisory only. It never receives PayPal credentials and it cannot execute a transaction.&lt;/p&gt;

&lt;p&gt;A separate BOLT approval layer evaluates whether explicit authorization exists. Without approval, the workflow stops before contacting PayPal. With approval, the payment module can authenticate with &lt;strong&gt;PayPal OAuth 2.0&lt;/strong&gt; and create an order using the &lt;strong&gt;PayPal Orders v2 Sandbox API&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The architecture is intentionally simple:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;natural-language intent → local open model → structured proposal → human approval gate → PayPal Sandbox&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;That separation keeps AI reasoning independent from financial authority.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Running Qwen locally through Ollama changes the trust model.&lt;/p&gt;

&lt;p&gt;The payment request can be interpreted without sending the user's prompt to a closed hosted model. The model can be swapped, inspected, run offline, or replaced with another open-weight model without changing the governance layer.&lt;/p&gt;

&lt;p&gt;With local inference:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;prompts can remain on the user's machine,&lt;/li&gt;
&lt;li&gt;there is no AI API key to manage,&lt;/li&gt;
&lt;li&gt;inference can keep working without a cloud model provider,&lt;/li&gt;
&lt;li&gt;the model can be changed without redesigning the workflow,&lt;/li&gt;
&lt;li&gt;and payment credentials remain completely separate from the AI process.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open AI makes the reasoning layer portable. Human approval keeps the authority layer explicit.&lt;/p&gt;

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

&lt;p&gt;The useful boundary is not “AI versus no AI.” It is &lt;strong&gt;recommendation versus authority&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;An AI system can automate interpretation and planning while still requiring a person to approve the final consequential step. That pattern can extend to spending limits, role-based approvals, risk checks, multi-step authorization, and other high-impact workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built With
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Ollama&lt;/li&gt;
&lt;li&gt;Qwen 2.5 7B&lt;/li&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;PayPal Orders v2 Sandbox API&lt;/li&gt;
&lt;li&gt;PayPal OAuth 2.0&lt;/li&gt;
&lt;li&gt;Human-in-the-loop approval gating&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
