<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MCP on Ted Factory</title><link>https://tedfactory.com/en/tags/mcp/</link><description>Recent content in MCP on Ted Factory</description><generator>Hugo</generator><language>en</language><lastBuildDate>Tue, 02 Jun 2026 00:38:27 +0900</lastBuildDate><atom:link href="https://tedfactory.com/en/tags/mcp/index.xml" rel="self" type="application/rss+xml"/><item><title>Ladder Pick Development Plan</title><link>https://tedfactory.com/en/apps/ladder-pick/plan/</link><pubDate>Mon, 02 Mar 2026 00:00:00 +0900</pubDate><guid>https://tedfactory.com/en/apps/ladder-pick/plan/</guid><description>&lt;h1 id="ladder-pick--chatgpt-app-development-plan"&gt;Ladder Pick — ChatGPT App Development Plan&lt;a class="anchor" href="#ladder-pick--chatgpt-app-development-plan"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Project name&lt;/strong&gt;: &lt;code&gt;ted-mcp-servers&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App name (App Directory display)&lt;/strong&gt;: Ladder Pick&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App language&lt;/strong&gt;: English first (UI / tool description / privacy policy all in English; only the plan document is in Korean)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="official-developer-documentation-reference-links"&gt;Official Developer Documentation Reference Links&lt;a class="anchor" href="#official-developer-documentation-reference-links"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="core-documents-must-read"&gt;Core Documents (Must-Read)&lt;a class="anchor" href="#core-documents-must-read"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Apps SDK Home&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk"&gt;https://developers.openai.com/apps-sdk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quickstart (includes Todo example)&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/quickstart"&gt;https://developers.openai.com/apps-sdk/quickstart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP Server Concepts&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/concepts/mcp-server"&gt;https://developers.openai.com/apps-sdk/concepts/mcp-server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP Apps in ChatGPT&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/mcp-apps-in-chatgpt"&gt;https://developers.openai.com/apps-sdk/mcp-apps-in-chatgpt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="design"&gt;Design&lt;a class="anchor" href="#design"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;UX Principles&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/concepts/ux-principles"&gt;https://developers.openai.com/apps-sdk/concepts/ux-principles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UI Guidelines&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/concepts/ui-guidelines"&gt;https://developers.openai.com/apps-sdk/concepts/ui-guidelines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Design Components&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/plan/components"&gt;https://developers.openai.com/apps-sdk/plan/components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tool Definitions&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/plan/tools"&gt;https://developers.openai.com/apps-sdk/plan/tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use Case Research&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/plan/use-case"&gt;https://developers.openai.com/apps-sdk/plan/use-case&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="build"&gt;Build&lt;a class="anchor" href="#build"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MCP Server Setup&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/build/mcp-server"&gt;https://developers.openai.com/apps-sdk/build/mcp-server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ChatGPT UI Build&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/build/chatgpt-ui"&gt;https://developers.openai.com/apps-sdk/build/chatgpt-ui&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;State Management&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/build/state-management"&gt;https://developers.openai.com/apps-sdk/build/state-management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Authentication&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/build/auth"&gt;https://developers.openai.com/apps-sdk/build/auth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Example Apps (GitHub)&lt;/strong&gt;: &lt;a href="https://github.com/openai/openai-apps-sdk-examples"&gt;https://github.com/openai/openai-apps-sdk-examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UI Library (GitHub)&lt;/strong&gt;: &lt;a href="https://github.com/openai/apps-sdk-ui"&gt;https://github.com/openai/apps-sdk-ui&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="deployment--testing--submission"&gt;Deployment / Testing / Submission&lt;a class="anchor" href="#deployment--testing--submission"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Deployment Guide&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/deploy"&gt;https://developers.openai.com/apps-sdk/deploy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testing Guide&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/deploy/testing"&gt;https://developers.openai.com/apps-sdk/deploy/testing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ChatGPT Connection&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/deploy/connect-chatgpt"&gt;https://developers.openai.com/apps-sdk/deploy/connect-chatgpt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App Submission &amp;amp; Maintenance&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/deploy/submission"&gt;https://developers.openai.com/apps-sdk/deploy/submission&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App Submission Guidelines (Policies / Rules)&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/app-submission-guidelines"&gt;https://developers.openai.com/apps-sdk/app-submission-guidelines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Developer Mode Setup&lt;/strong&gt;: &lt;a href="https://platform.openai.com/docs/guides/developer-mode"&gt;https://platform.openai.com/docs/guides/developer-mode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="guides--references"&gt;Guides / References&lt;a class="anchor" href="#guides--references"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Security &amp;amp; Privacy&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/guides/security-privacy"&gt;https://developers.openai.com/apps-sdk/guides/security-privacy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metadata Optimization&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/guides/optimize-metadata"&gt;https://developers.openai.com/apps-sdk/guides/optimize-metadata&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Troubleshooting&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/deploy/troubleshooting"&gt;https://developers.openai.com/apps-sdk/deploy/troubleshooting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API Reference&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/reference"&gt;https://developers.openai.com/apps-sdk/reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changelog&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/changelog"&gt;https://developers.openai.com/apps-sdk/changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="general-references"&gt;General References&lt;a class="anchor" href="#general-references"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Apps in ChatGPT (Help Center)&lt;/strong&gt;: &lt;a href="https://help.openai.com/en/articles/12503483-apps-in-chatgpt-and-the-apps-sdk"&gt;https://help.openai.com/en/articles/12503483-apps-in-chatgpt-and-the-apps-sdk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App Directory Submission (Help Center)&lt;/strong&gt;: &lt;a href="https://help.openai.com/en/articles/20001040"&gt;https://help.openai.com/en/articles/20001040&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App Directory Browsing&lt;/strong&gt;: &lt;a href="https://chatgpt.com/apps"&gt;https://chatgpt.com/apps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="goals"&gt;Goals&lt;a class="anchor" href="#goals"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Build a &lt;strong&gt;&amp;ldquo;Ladder Pick&amp;rdquo;&lt;/strong&gt; app that can be listed on the ChatGPT App Directory.&lt;/li&gt;
&lt;li&gt;Enable the complete flow — entering participants / items → generating a ladder (random matching) → revealing results — through an &lt;strong&gt;interactive widget (iframe)&lt;/strong&gt; within a chat.&lt;/li&gt;
&lt;li&gt;After testing with ChatGPT Developer Mode, the ultimate goal is &lt;strong&gt;App Directory submission / approval / Publish&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="assumptions--scope"&gt;Assumptions / Scope&lt;a class="anchor" href="#assumptions--scope"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MVP&lt;/strong&gt;: Interactive widget (iframe UI) + MCP tool-based. The widget provides core interactions such as entering participants / items, displaying results, and reshuffling.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Out of scope (initial)&lt;/strong&gt;: Login / payments, real-time multiplayer, complex animations, external data integration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No authentication required&lt;/strong&gt;: Since there is no external service integration, we start without OAuth / authentication flows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Safety / Policy&lt;/strong&gt;: No write operations to external systems. Tool hint annotations:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;readOnlyHint: false&lt;/code&gt; — Not true because internal state is created / modified&lt;/li&gt;
&lt;li&gt;&lt;code&gt;destructiveHint: false&lt;/code&gt; — No irreversible external impact&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openWorldHint: false&lt;/code&gt; — No public internet state changes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="user-experience-ux-scenarios"&gt;User Experience (UX) Scenarios&lt;a class="anchor" href="#user-experience-ux-scenarios"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="basic-flow-interactive-widget"&gt;Basic Flow (Interactive Widget)&lt;a class="anchor" href="#basic-flow-interactive-widget"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;The user types &lt;code&gt;@Ladder Pick&lt;/code&gt; or something like &amp;ldquo;play a ladder game.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;ChatGPT calls the &lt;code&gt;create_game&lt;/code&gt; tool, and the &lt;strong&gt;Ladder Pick widget&lt;/strong&gt; is displayed in an iframe.&lt;/li&gt;
&lt;li&gt;Within the widget:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Players&lt;/strong&gt; list: Add / remove participant names (default 4)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Items&lt;/strong&gt; list: Add / remove result items (prizes / roles)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Options&lt;/strong&gt;: Reveal mode (All at once / One by one), Seed (auto / custom)&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;&amp;ldquo;Pick!&amp;rdquo;&lt;/strong&gt; button → Generate matching results&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Results area:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;All at once&lt;/strong&gt;: Display the full matching table immediately&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One by one&lt;/strong&gt;: Reveal one person at a time with the &amp;ldquo;Reveal Next&amp;rdquo; button&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;Reshuffle&amp;rdquo;&lt;/strong&gt; button: Reshuffle with a new seed&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;Export&amp;rdquo;&lt;/strong&gt; button: Copy results as text&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="text-fallback"&gt;Text Fallback&lt;a class="anchor" href="#text-fallback"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Even without the widget, ChatGPT can display tool call results as text (table).&lt;/li&gt;
&lt;li&gt;Example: &amp;ldquo;Ladder Pick, match A,B,C,D with 1st,2nd,3rd,4th&amp;rdquo; → Text table response&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="error-cases"&gt;Error Cases&lt;a class="anchor" href="#error-cases"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fewer than 2 participants → Error message: &amp;ldquo;At least 2 players are required.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Item count ≠ participant count → Error message: &amp;ldquo;Number of items must match number of players. You have {n} players and {m} items.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Items list empty → Error message: &amp;ldquo;Items list cannot be empty.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="functional-requirements"&gt;Functional Requirements&lt;a class="anchor" href="#functional-requirements"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="input"&gt;Input&lt;a class="anchor" href="#input"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Participant list (Players)&lt;/strong&gt;: 2–20 people&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Result items (Items)&lt;/strong&gt;: Must be &lt;strong&gt;exactly the same count&lt;/strong&gt; as participants (error returned on mismatch)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Options&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Reveal mode: &lt;code&gt;all&lt;/code&gt; | &lt;code&gt;one-by-one&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Seed: Auto-generated or user-specified (for reproducibility)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="output"&gt;Output&lt;a class="anchor" href="#output"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Matching results&lt;/strong&gt;: Player ↔ Item 1:1 mapping&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ladder visualization&lt;/strong&gt;: Canvas-based visual ladder (vertical lines + horizontal rungs + color-coded path animations)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="state--storage"&gt;State / Storage&lt;a class="anchor" href="#state--storage"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Module-level &lt;code&gt;Map&amp;lt;gameId, GameState&amp;gt;&lt;/code&gt; for in-process in-memory management&lt;/li&gt;
&lt;li&gt;Unique ID issued on game creation; subsequent reshuffle / reveal_next lookups use that ID&lt;/li&gt;
&lt;li&gt;No persistent storage (resets on server restart; this is sufficient for the initial version)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="technical-design"&gt;Technical Design&lt;a class="anchor" href="#technical-design"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="architecture-based-on-official-structure"&gt;Architecture (Based on Official Structure)&lt;a class="anchor" href="#architecture-based-on-official-structure"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;ChatGPT Apps consist of two components:&lt;/p&gt;</description></item><item><title>Key AI Concepts (2): Fine-tuning / RAG / Function Calling / MCP</title><link>https://tedfactory.com/en/books/ai-for-startup/ai-concepts-2/</link><pubDate>Fri, 02 Jan 2026 00:00:00 +0900</pubDate><guid>https://tedfactory.com/en/books/ai-for-startup/ai-concepts-2/</guid><description>&lt;h1 id="key-ai-concepts-2"&gt;Key AI Concepts (2)&lt;a class="anchor" href="#key-ai-concepts-2"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;In this chapter, we cover key concepts you’ll frequently encounter when turning a pre-trained LLM into a real product: fine-tuning, RAG, function calling, and MCP.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="fine-tuning"&gt;Fine-tuning&lt;a class="anchor" href="#fine-tuning"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Fine-tuning is the process of further training a pre-trained model to better fit a specific purpose. Thanks to open-source culture, training datasets and pre-trained models are often publicly available, and you can fine-tune them to improve performance or specialize in a particular domain.&lt;/p&gt;</description></item><item><title>Ladder Pick in ChatGPT</title><link>https://tedfactory.com/en/apps/ladder-pick/</link><pubDate>Mon, 02 Mar 2026 00:00:00 +0900</pubDate><guid>https://tedfactory.com/en/apps/ladder-pick/</guid><description>&lt;h1 id="ladder-pick-in-chatgpt"&gt;Ladder Pick in ChatGPT&lt;a class="anchor" href="#ladder-pick-in-chatgpt"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="what-are-chatgpt-apps"&gt;What Are ChatGPT Apps?&lt;a class="anchor" href="#what-are-chatgpt-apps"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://openai.com/index/introducing-apps-in-chatgpt/"&gt;&lt;strong&gt;ChatGPT Apps&lt;/strong&gt;&lt;/a&gt; is a feature introduced by OpenAI in October 2025 that allows external service providers to integrate their services into ChatGPT. It is built on &lt;strong&gt;MCP (Model Context Protocol)&lt;/strong&gt;, which provides a standard for LLMs to invoke external tools. ChatGPT Apps takes this a step further by extending the standard so that &lt;strong&gt;interactive UI and logic&lt;/strong&gt; from external services can be embedded directly within the ChatGPT chat interface. In other words, MCP established the standard for &amp;ldquo;LLMs using external capabilities,&amp;rdquo; and the scope of those capabilities has expanded beyond simple data retrieval and execution to include user-facing interactive UI. On top of this, OpenAI launched the &lt;a href="https://chatgpt.com/apps"&gt;App Directory&lt;/a&gt;, a marketplace where users can discover and try a wide variety of apps. For developers, this creates an opportunity to expose their apps to ChatGPT&amp;rsquo;s massive user base and potentially monetize them.&lt;/p&gt;</description></item><item><title>An Agent That Keeps Working After the Laptop Closes: Remote Development with Lightsail, Hermes, and Discord</title><link>https://tedfactory.com/en/notes/essays/hermes-remote-discord-development/</link><pubDate>Mon, 01 Jun 2026 00:00:00 +0900</pubDate><guid>https://tedfactory.com/en/notes/essays/hermes-remote-discord-development/</guid><description>&lt;h1 id="an-agent-that-keeps-working-after-the-laptop-closes-remote-development-with-lightsail-hermes-and-discord"&gt;An Agent That Keeps Working After the Laptop Closes: Remote Development with Lightsail, Hermes, and Discord&lt;a class="anchor" href="#an-agent-that-keeps-working-after-the-laptop-closes-remote-development-with-lightsail-hermes-and-discord"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;2026-06-01&lt;/p&gt;
&lt;p&gt;&lt;img src="https://tedfactory.com/images/notes/hermes-remote-discord-development-cover.png" alt="A remote Hermes development environment connected through Lightsail, Docker sandbox, and Discord" /&gt;&lt;/p&gt;
&lt;h2 id="the-problem-started-when-i-closed-the-laptop"&gt;The Problem Started When I Closed the Laptop&lt;a class="anchor" href="#the-problem-started-when-i-closed-the-laptop"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;For a while, I used Hermes Agent installed directly on my local laptop. The experience was fast and intuitive: open a repository, edit files, run tests, and keep the agent close to the development environment.&lt;/p&gt;</description></item></channel></rss>