<?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: GridPort</title>
    <description>The latest articles on DEV Community by GridPort (@gridport).</description>
    <link>https://dev.to/gridport</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%2F4043634%2F015dc2f1-d2ac-4099-8df4-98ab9ca37fc2.png</url>
      <title>DEV Community: GridPort</title>
      <link>https://dev.to/gridport</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gridport"/>
    <language>en</language>
    <item>
      <title>Claude Code's ELI5 Skill Explained: How It Works, Setup, and When to Use It</title>
      <dc:creator>GridPort</dc:creator>
      <pubDate>Tue, 25 Aug 2026 04:50:28 +0000</pubDate>
      <link>https://dev.to/gridport/claude-codes-eli5-skill-explained-how-it-works-setup-and-when-to-use-it-c6</link>
      <guid>https://dev.to/gridport/claude-codes-eli5-skill-explained-how-it-works-setup-and-when-to-use-it-c6</guid>
      <description>&lt;p&gt;&lt;em&gt;This article reflects Claude Code's spec as of August 2026. Since Claude Code updates frequently, check the &lt;a href="https://code.claude.com/docs/ja/commands" rel="noopener noreferrer"&gt;official docs&lt;/a&gt; for the latest behavior.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Type &lt;code&gt;/eli5 &amp;lt;topic&amp;gt;&lt;/code&gt; into Claude Code, and the ELI5 skill generates a jargon-free, diagram-heavy HTML explainer on the spot.&lt;/p&gt;

&lt;p&gt;It went viral in August 2026 after Anthropic's own dev team mentioned they use it internally.&lt;/p&gt;

&lt;p&gt;This post covers how ELI5 works, how to install it, what happened when we pointed it at one of our own technical topics, and what to watch out for before using it at work.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the ELI5 skill?
&lt;/h2&gt;

&lt;p&gt;"ELI5" stands for "Explain Like I'm 5." Type &lt;code&gt;/eli5 &amp;lt;topic&amp;gt;&lt;/code&gt; in Claude Code, and it produces a single HTML artifact (Claude's panel-style output format) aimed at someone with zero background on the topic, built from big visuals and minimal text.&lt;/p&gt;

&lt;p&gt;Unlike a normal chat reply, which tends to come back as a wall of text, the output is locked to three constraints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Output format&lt;/strong&gt;: not a chat reply, but a single standalone HTML artifact&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Information density&lt;/strong&gt;: "few words." It's built to avoid long explanations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mode of expression&lt;/strong&gt;: "big pictures." Structure gets shown visually instead of described in prose.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The skill was published by Thariq Shihipar of the Claude Code team, who introduced it on X on August 21, 2026 as "a skill people at Anthropic have been using a lot lately." It's distributed through the community marketplace &lt;code&gt;anthropics/claude-plugins-community&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why does the actual behavior differ from "explain to a 5-year-old"?
&lt;/h3&gt;

&lt;p&gt;Looking at ELI5's &lt;a href="https://github.com/DreambigOu/ELI5/blob/main/skills/eli5/SKILL.md" rel="noopener noreferrer"&gt;SKILL.md&lt;/a&gt;, there's a mismatch between the &lt;code&gt;description&lt;/code&gt; field, which controls when the skill triggers, and the body text, which actually shapes the output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;eli5&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Explain a topic like I'm a 5 year old. Use when the user types /eli5 &amp;lt;topic&amp;gt; or asks for a dead-simple picture explainer of how something works.&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="c1"&gt;# eli5&lt;/span&gt;

&lt;span class="s"&gt;Explain like I'm someone who knows nothing about this topic, using a HTML artifact with big pictures and few words.&lt;/span&gt;

&lt;span class="na"&gt;Topic&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;$ARGUMENTS&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;description&lt;/code&gt; still says "like a 5-year-old," but the body, the part that actually drives the model, has been changed to "&lt;strong&gt;someone who knows nothing about this topic&lt;/strong&gt;."&lt;/p&gt;

&lt;p&gt;That's a deliberate choice: literally targeting a 5-year-old's vocabulary tends to tank explanation accuracy, so the body is tuned instead toward "strip out assumed background knowledge" rather than "talk like you're speaking to a child."&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing and using ELI5
&lt;/h2&gt;

&lt;p&gt;You can install ELI5 through Claude Code's plugin system in two commands. The plugin itself is distributed free under the MIT license (Claude Code usage still follows your existing plan's pricing).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Add the community marketplace&lt;/span&gt;
claude plugin marketplace add anthropics/claude-plugins-community

&lt;span class="c"&gt;# 2. Install eli5 (specify the marketplace after @)&lt;/span&gt;
claude plugin &lt;span class="nb"&gt;install &lt;/span&gt;eli5@claude-community
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check that it installed correctly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude plugin list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;eli5@claude-community
Version: 1.0.0
Scope: user
Status: enabled
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Basic usage
&lt;/h3&gt;

&lt;p&gt;Just follow &lt;code&gt;/eli5&lt;/code&gt; with whatever you want explained:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/eli5 how does RAG actually work
/eli5 how does auth work in this project
/eli5 why is the sky blue
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Left to its own devices it sometimes generates fewer diagrams than you'd like. If you want it to lean harder into visuals, adding an explicit condition like "include at least 3 SVG diagrams" makes the output more consistent.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trying it on RAG
&lt;/h3&gt;

&lt;p&gt;We asked ELI5 to explain RAG (retrieval-augmented generation) to see what the output actually looks like.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt used:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/eli5 Explain how RAG works in a simple way. Don't just use text —
include at least 3 SVG diagrams. Show the flow of gather documents →
split them → search → generate an answer as a flowchart with arrows.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The recreated output boiled the process down to four steps: gather documents, chop them into small pieces, find similar chunks, read and answer. It used emoji and short phrases to fit everything on one screen:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📚 &lt;strong&gt;Gather documents&lt;/strong&gt;: collect all the internal docs and PDFs&lt;/li&gt;
&lt;li&gt;✂️ &lt;strong&gt;Split into chunks&lt;/strong&gt;: break long documents into readable pieces&lt;/li&gt;
&lt;li&gt;🔍 &lt;strong&gt;Find similar chunks&lt;/strong&gt;: pick only the chunks close to the question's meaning&lt;/li&gt;
&lt;li&gt;✍️ &lt;strong&gt;Read and answer&lt;/strong&gt;: the AI reads the selected chunks and writes an answer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Bottom line&lt;/strong&gt;: question → find documents → read and answer. That's it.&lt;/p&gt;

&lt;p&gt;This is meant as an entry point for grasping &lt;em&gt;what the mechanism even is&lt;/em&gt;, not a technically precise spec.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using ELI5 at work: what to keep in mind
&lt;/h2&gt;

&lt;p&gt;ELI5 is designed to optimize for "gets the idea across" over "is precisely correct." Keep these three things in mind when using it for actual work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where ELI5 shines
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Explaining to non-engineers&lt;/strong&gt;: turn how an AI system works into a single shareable slide for internal proposals or client materials&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Onboarding&lt;/strong&gt;: give new team members a visual first pass at how auth flows or module structure work before they dig into code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incident retrospectives&lt;/strong&gt;: lay out where a problem started, what it touched, and what ultimately happened, in chronological order&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Checking your own understanding&lt;/strong&gt;: if you can't turn something into a diagram, that's usually the part you don't actually understand yet&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Where ELI5 falls short
&lt;/h3&gt;

&lt;p&gt;Because it optimizes for ease of understanding, it's not a good fit for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verifying exact specs, numbers, or conditional branches&lt;/li&gt;
&lt;li&gt;Checking edge cases and boundary conditions&lt;/li&gt;
&lt;li&gt;Auditing security issues&lt;/li&gt;
&lt;li&gt;Actually fixing code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For that kind of work, use ELI5 to get the big picture first, then switch to normal Claude Code instructions or official documentation to nail down the details.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it yourself
&lt;/h2&gt;

&lt;p&gt;Start with something simple like &lt;code&gt;/eli5 why is the sky blue&lt;/code&gt; and see how different the output feels from a normal chat response.&lt;/p&gt;

&lt;p&gt;It's also a quick way to turn trending technical terms into a shareable visual explainer. Worth keeping in your toolkit.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was edited with AI assistance.&lt;br&gt;
*Originally published in Japanese on &lt;a href="https://highreso.jp/edgehub/wordgenerationai/eli5.html?utm_source=devto" rel="noopener noreferrer"&gt;EdgeHUB&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>ai</category>
      <category>productivity</category>
      <category>llm</category>
    </item>
    <item>
      <title>Stop Comparing GPU Clouds Only by $/hour</title>
      <dc:creator>GridPort</dc:creator>
      <pubDate>Mon, 24 Aug 2026 01:43:07 +0000</pubDate>
      <link>https://dev.to/highreso/stop-comparing-gpu-clouds-only-by-hour-4kbc</link>
      <guid>https://dev.to/highreso/stop-comparing-gpu-clouds-only-by-hour-4kbc</guid>
      <description>&lt;p&gt;&lt;em&gt;GPU Cloud Research · #002 — 11 min read&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The cheapest GPU instance is not always the cheapest way to finish a workload.&lt;/p&gt;

&lt;p&gt;GPU cloud comparison pages usually begin with the same number:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much does this GPU cost per hour?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is a useful number. But it is rarely the full cost.&lt;/p&gt;

&lt;p&gt;A low hourly rate can quickly lose its advantage when a user spends an hour configuring an environment, reruns a failed job, downloads the same model again, pays for storage while no GPU is running, or waits for a compatible GPU to become available in the region where the data is stored.&lt;/p&gt;

&lt;p&gt;The more useful question is not: which GPU has the lowest hourly price? It is: how much will it cost to complete this workload successfully?&lt;/p&gt;

&lt;p&gt;For this article, GPU Cloud Research reviewed a database of 131 unique Reddit threads posted since January 2025 and selected 80 evidence units related to GPU cloud costs.&lt;/p&gt;

&lt;p&gt;The cases show that the practical cost of GPU infrastructure includes much more than compute.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Total workload cost may include:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPU compute&lt;/li&gt;
&lt;li&gt;Environment setup&lt;/li&gt;
&lt;li&gt;Failed runs and retries&lt;/li&gt;
&lt;li&gt;Persistent storage&lt;/li&gt;
&lt;li&gt;Data transfer&lt;/li&gt;
&lt;li&gt;Idle or stopped-instance charges&lt;/li&gt;
&lt;li&gt;Model loading and initialization&lt;/li&gt;
&lt;li&gt;GPU availability&lt;/li&gt;
&lt;li&gt;Network and storage performance&lt;/li&gt;
&lt;li&gt;Engineering and operational labor&lt;/li&gt;
&lt;li&gt;Model quality&lt;/li&gt;
&lt;li&gt;Workflow restrictions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once these factors are included, the cheapest GPU by the hour may no longer be the cheapest option.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Cheap GPU capacity can become expensive
&lt;/h2&gt;

&lt;p&gt;Marketplace-style GPU clouds can offer attractive hourly rates. For flexible experiments and price-sensitive workloads, that can be valuable.&lt;/p&gt;

&lt;p&gt;The problem begins when the low price is offset by unreliable execution or repeated operational work.&lt;/p&gt;

&lt;p&gt;In one case, a fine-tuning user reported trying multiple lower-priced GPU instances but encountering repeated failures and troubleshooting. The user eventually began looking for alternatives because the failed runs outweighed the hourly savings. [1]&lt;/p&gt;

&lt;p&gt;Another user completed three hours of LoRA training, but could not retrieve the output at a usable speed. The GPU computation had finished, but the actual workload had not: the trained files still needed to be downloaded. [2]&lt;/p&gt;

&lt;p&gt;A separate commenter reported losing roughly $5–$7 in one day due to migration work, unavailable GPU capacity, and repeated downloads. [3]&lt;/p&gt;

&lt;p&gt;Other users described model downloads consuming close to an hour of billable time, instances hanging or crashing, and recurring deployment work taking one to two hours. [4][5]&lt;/p&gt;

&lt;p&gt;These are individual experiences, not platform-wide reliability measurements. However, they reveal a common cost pattern:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A low hourly rate has little value if the workload must be restarted, repaired, or manually rebuilt.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The relevant metric is not the cost of one GPU-hour. It is the cost of one successfully completed training run, generated video, benchmark, or inference job.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Compute is only one billing meter
&lt;/h2&gt;

&lt;p&gt;GPU pricing is highly visible. Storage and data movement are often less visible until a workload is already running.&lt;/p&gt;

&lt;p&gt;One user ran an RTX 5090 instance for approximately ten minutes and then downloaded around 23GB of data. The reported data-transfer charge exceeded the cost of the GPU session itself. [6]&lt;/p&gt;

&lt;p&gt;Storage can create a different tradeoff.&lt;/p&gt;

&lt;p&gt;Persistent storage preserves models, environments, checkpoints, and outputs between sessions. But for infrequent users, the monthly storage charge may exceed the cost of the occasional GPU usage.&lt;/p&gt;

&lt;p&gt;A daily user with a workspace below roughly 200GB concluded that rebuilding the environment with a ten-minute installation script was preferable to paying for a region-locked network volume. [7]&lt;/p&gt;

&lt;p&gt;Another user repeatedly destroyed GPU instances to avoid storage charges, but then had to solve the problem of moving environments and preserving state between sessions. [8]&lt;/p&gt;

&lt;p&gt;The opposite decision can also be expensive. A user who relied on temporary storage lost training data and checkpoints after an instance ended. [9]&lt;/p&gt;

&lt;p&gt;Storage also has little value if the stored workspace is tied to a region where compatible GPUs are unavailable. Users have reported paying to retain a workspace while being unable to start the GPU they needed in that region. [10]&lt;/p&gt;

&lt;p&gt;Storage should therefore not be evaluated as a separate price line. Its value depends on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How often the environment is reused&lt;/li&gt;
&lt;li&gt;How long rebuilding takes&lt;/li&gt;
&lt;li&gt;How much data must be downloaded again&lt;/li&gt;
&lt;li&gt;Whether storage can move across regions&lt;/li&gt;
&lt;li&gt;Whether compatible GPUs are consistently available&lt;/li&gt;
&lt;li&gt;How costly it would be to lose a checkpoint&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sometimes persistent storage lowers total cost. Sometimes automation and reconstruction are cheaper. The correct answer depends on the workload.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. A more expensive service may cost less overall
&lt;/h2&gt;

&lt;p&gt;A higher hourly price does not automatically mean higher total cost.&lt;/p&gt;

&lt;p&gt;Users may rationally pay more for templates, faster onboarding, managed environments, reliable storage, or easier operations.&lt;/p&gt;

&lt;p&gt;In one discussion, users described paying more for a provider because LoRA training and video-generation environments were nearly ready to use. A cheaper marketplace was reportedly available, but some users continued choosing the more expensive option because the setup experience saved time and effort. [11]&lt;/p&gt;

&lt;p&gt;Another user became tired of spending around 30 minutes comparing providers, connecting through SSH, and installing vLLM or Ollama for every experiment. The user eventually built a command-line tool to automate the process and reduce the risk of forgetting to terminate instances. [12]&lt;/p&gt;

&lt;p&gt;This operational time is often excluded from GPU cost calculations. But engineering time is not free.&lt;/p&gt;

&lt;p&gt;A service that costs more per GPU-hour may still be cheaper when it reduces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Setup time&lt;/li&gt;
&lt;li&gt;Deployment work&lt;/li&gt;
&lt;li&gt;Failed runs&lt;/li&gt;
&lt;li&gt;Incident investigation&lt;/li&gt;
&lt;li&gt;Environment reconstruction&lt;/li&gt;
&lt;li&gt;Billing mistakes&lt;/li&gt;
&lt;li&gt;Employee interruptions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This does not mean premium providers are always cheaper. It means the price of human labor should be included in the comparison.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Compare cost per completed output, not cost per hour
&lt;/h2&gt;

&lt;p&gt;Even when two instances run without failure, their hourly rates still do not reveal which one is more economical.&lt;/p&gt;

&lt;p&gt;The GPU must fit the workload. A faster GPU can lose its advantage if model loading, storage I/O, CPU performance, or network communication becomes the bottleneck.&lt;/p&gt;

&lt;p&gt;One user reported that cloud RTX 5090 instances required approximately ten minutes to load WAN models for each run. Because models stayed loaded more effectively on the local machine, a local RTX 5070 Ti completed the overall workflow faster. [13]&lt;/p&gt;

&lt;p&gt;Another user reported spending about 35 H100 hours per month on QLoRA and inference for 7B–30B models. After reassessing the workload, the user estimated that an RTX 5090 could perform the same work for roughly $12 per month instead of approximately $60, with the same evaluation results. [14]&lt;/p&gt;

&lt;p&gt;The reverse can also happen. In a provider-affiliated vLLM benchmark, B200 had the highest hourly price among the tested GPUs but achieved the best reported cost per million tokens for the stated workloads because its throughput offset the price premium. [15] This should be treated as a technical benchmark rather than independent user sentiment, but the underlying lesson is important.&lt;/p&gt;

&lt;p&gt;The cheapest GPU depends on what is being measured. Useful metrics include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cost per generated image or video&lt;/li&gt;
&lt;li&gt;Cost per million tokens&lt;/li&gt;
&lt;li&gt;Cost per completed training run&lt;/li&gt;
&lt;li&gt;Cost per experiment&lt;/li&gt;
&lt;li&gt;Cost per checkpoint&lt;/li&gt;
&lt;li&gt;Cost per successful deployment&lt;/li&gt;
&lt;li&gt;Cost per employee task completed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hourly price is an input. Completed output is the result.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Cloud versus local is a utilization question
&lt;/h2&gt;

&lt;p&gt;The same principle applies when comparing GPU rental with hardware ownership.&lt;/p&gt;

&lt;p&gt;Buying a GPU can look cheaper after enough rental hours. But the true comparison also includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Purchase cost&lt;/li&gt;
&lt;li&gt;Electricity&lt;/li&gt;
&lt;li&gt;Cooling&lt;/li&gt;
&lt;li&gt;Storage&lt;/li&gt;
&lt;li&gt;Maintenance&lt;/li&gt;
&lt;li&gt;Depreciation&lt;/li&gt;
&lt;li&gt;Resale value&lt;/li&gt;
&lt;li&gt;Hardware downtime&lt;/li&gt;
&lt;li&gt;Upgrade cycles&lt;/li&gt;
&lt;li&gt;The employee time required to operate it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cloud GPUs remain attractive for occasional use, uncertain workloads, short-term projects, and validation before a major hardware purchase.&lt;/p&gt;

&lt;p&gt;One user rented a cloud RTX 5090 for several days before considering a $2,499 purchase, using the rental period to measure the actual speed improvement for a ComfyUI workload. [16]&lt;/p&gt;

&lt;p&gt;A startup used cloud H100s to validate its software, but planned to move toward local hardware because predictable product pricing and customer deployment mattered more during commercialization. [17]&lt;/p&gt;

&lt;p&gt;These cases suggest that cloud and local infrastructure are not always direct competitors. Cloud may be used for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Initial validation&lt;/li&gt;
&lt;li&gt;Temporary peak capacity&lt;/li&gt;
&lt;li&gt;Large training runs&lt;/li&gt;
&lt;li&gt;Access to new GPU generations&lt;/li&gt;
&lt;li&gt;Workloads with irregular demand&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Local hardware may become more economical when usage is frequent, predictable, and sustained.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. API versus self-hosting has no universal winner
&lt;/h2&gt;

&lt;p&gt;The same company can reach different conclusions depending on model quality, task type, privacy requirements, and utilization.&lt;/p&gt;

&lt;p&gt;In one Reddit discussion, two companies reported opposite completed decisions. One moved routine work to a self-hosted GLM model while retaining Anthropic Opus for selected research and R&amp;amp;D tasks. Another modeled the economics repeatedly and kept managed APIs because weaker self-hosted models and operational work shifted the cost into employee and engineering time. [18]&lt;/p&gt;

&lt;p&gt;At high utilization, self-hosting can make more sense. One company reported processing roughly 70–120 million tokens per day, with peaks around 330 million, on local multi-GPU systems. It still used Gemini Flash for some workloads, creating a hybrid rather than fully local architecture. [19]&lt;/p&gt;

&lt;p&gt;Another 40-user company invested approximately €26,000 in a self-hosted Qwen and OpenWebUI environment integrated with Active Directory, while retaining an external search API. [20]&lt;/p&gt;

&lt;p&gt;Privacy and regulation can also justify a higher cost. A B2B AI company reported that private LLM deployments were substantially more expensive than commercial APIs, but continued offering them to customers that required greater control over sensitive data. [21]&lt;/p&gt;

&lt;p&gt;Conversely, one self-hosting user calculated local GPU options at roughly $49–$69 per month after including capital cost, power, always-on storage, depreciation, resale value, and maintenance. At the user's current usage level, a $19.99 managed subscription remained the preferred choice. [22] These prices are a January 2026 snapshot, but the TCO framework remains useful.&lt;/p&gt;

&lt;p&gt;Cost is not always the final reason, either. A Claude Pro subscriber moved to local models after usage and chat-length limits repeatedly interrupted work. The local models were described as less capable, but the user reported getting more work done because the workflow was no longer interrupted. [23]&lt;/p&gt;

&lt;p&gt;The best model on a benchmark is not necessarily the model that creates the most business value.&lt;/p&gt;

&lt;h2&gt;
  
  
  A better GPU cloud comparison checklist
&lt;/h2&gt;

&lt;p&gt;Before selecting a GPU cloud, estimate the cost of completing the actual workload. Ask:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;How long does the full workflow take, including setup and data movement?&lt;/li&gt;
&lt;li&gt;What happens when an instance fails or is interrupted?&lt;/li&gt;
&lt;li&gt;Where are models, datasets, checkpoints, and outputs stored?&lt;/li&gt;
&lt;li&gt;Is storage portable across regions and GPU types?&lt;/li&gt;
&lt;li&gt;How often will the workload run?&lt;/li&gt;
&lt;li&gt;Can a cheaper GPU complete the job with the same quality?&lt;/li&gt;
&lt;li&gt;Does a more expensive GPU finish enough faster to reduce cost per output?&lt;/li&gt;
&lt;li&gt;How much employee time is required to operate the environment?&lt;/li&gt;
&lt;li&gt;Are privacy, SLA, support, or capacity guarantees part of the requirement?&lt;/li&gt;
&lt;li&gt;Would an API, cloud GPU, local system, or hybrid architecture best match actual utilization?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The comparison should end with a unit that reflects the business or research result.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Not $ per GPU-hour. But $ per completed workload.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;GPU hourly pricing is easy to compare because it is visible and standardized. The costs that determine whether a project succeeds are less visible.&lt;/p&gt;

&lt;p&gt;Setup time, failed jobs, storage, transfers, idle resources, unavailable capacity, model loading, network performance, engineering labor, and workflow restrictions can all change the result.&lt;/p&gt;

&lt;p&gt;This is why the cheapest GPU instance is not always the cheapest GPU infrastructure.&lt;/p&gt;

&lt;p&gt;The more useful comparison is not how cheaply a GPU can be started. It is how reliably and economically the workload can be completed.&lt;/p&gt;




&lt;h3&gt;
  
  
  Research note
&lt;/h3&gt;

&lt;p&gt;This article is based on GPU Cloud Research, a qualitative analysis of Reddit discussions about GPU infrastructure. The research database contains 131 unique Reddit threads published from January 1, 2025 onward. Eighty evidence units were selected for Article #002.&lt;/p&gt;

&lt;p&gt;Reddit posts represent individual experiences and discussions. They do not measure provider market share, overall failure rates, or current official pricing. User-reported prices should be treated as snapshots from the date of each post. Provider-affiliated benchmarks are treated as technical references rather than independent customer evaluations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Source Notes
&lt;/h2&gt;

&lt;p&gt;Reddit threads referenced in this article, in order of appearance.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;R065 — &lt;a href="https://www.reddit.com/r/LocalLLaMA/comments/1lls8l7/vast_ai_bad_experience/" rel="noopener noreferrer"&gt;Vast.ai bad experience&lt;/a&gt; — r/LocalLLaMA&lt;/li&gt;
&lt;li&gt;R070 — &lt;a href="https://www.reddit.com/r/StableDiffusion/comments/1t5hw7p/3_hours_of_lora_training_completely_wasted_on/" rel="noopener noreferrer"&gt;3 hours of LoRA training completely wasted on...&lt;/a&gt; — r/StableDiffusion&lt;/li&gt;
&lt;li&gt;R075 — &lt;a href="https://www.reddit.com/r/comfyui/comments/1nx4fzb/alternatives_to_runpod/" rel="noopener noreferrer"&gt;Alternatives to RunPod&lt;/a&gt; — r/comfyui&lt;/li&gt;
&lt;li&gt;R104 — &lt;a href="https://www.reddit.com/r/comfyui/comments/1ragmc2/runpod_a_million_times_slower_on_io_than_vast/" rel="noopener noreferrer"&gt;RunPod a million times slower on I/O than Vast&lt;/a&gt; — r/comfyui&lt;/li&gt;
&lt;li&gt;R111 — &lt;a href="https://www.reddit.com/r/comfyui/comments/1rjxikv/runpod_comfyui_alternative/" rel="noopener noreferrer"&gt;RunPod ComfyUI alternative&lt;/a&gt; — r/comfyui&lt;/li&gt;
&lt;li&gt;R101 — &lt;a href="https://www.reddit.com/r/vastai/comments/1ue1v5l/i_think_that_price_is_too_much/" rel="noopener noreferrer"&gt;I think that price is too much&lt;/a&gt; — r/vastai&lt;/li&gt;
&lt;li&gt;R063 — &lt;a href="https://www.reddit.com/r/StableDiffusion/comments/1nkcgvp/psa_dont_bother_with_network_volumes_on_runpod/" rel="noopener noreferrer"&gt;PSA: don't bother with network volumes on RunPod&lt;/a&gt; — r/StableDiffusion&lt;/li&gt;
&lt;li&gt;R076 — &lt;a href="https://www.reddit.com/r/LocalLLaMA/comments/1jca6xz/how_can_i_save_my_progress_between_different_server_instances/" rel="noopener noreferrer"&gt;How can I save my progress between different server instances&lt;/a&gt; — r/LocalLLaMA&lt;/li&gt;
&lt;li&gt;R102 — &lt;a href="https://www.reddit.com/r/StableDiffusion/comments/1qyok3e/preventing_lost_data_from_aitoolkit_once_runpod/" rel="noopener noreferrer"&gt;Preventing lost data from ai-toolkit once RunPod...&lt;/a&gt; — r/StableDiffusion&lt;/li&gt;
&lt;li&gt;R110 — &lt;a href="https://www.reddit.com/r/RunPod/comments/1tfu5tp/whats_going_on_with_runpod_today_or_lately_there/" rel="noopener noreferrer"&gt;What's going on with RunPod today or lately, there...&lt;/a&gt; — r/RunPod&lt;/li&gt;
&lt;li&gt;R093 — &lt;a href="https://www.reddit.com/r/comfyui/comments/1n6mdna/how_many_of_you_actively_use_runpod/" rel="noopener noreferrer"&gt;How many of you actively use RunPod&lt;/a&gt; — r/comfyui&lt;/li&gt;
&lt;li&gt;R008 — &lt;a href="https://www.reddit.com/r/mlops/comments/1t9g3au/i_got_tired_of_spending_30_minutes_setting_up_gpu/" rel="noopener noreferrer"&gt;I got tired of spending 30 minutes setting up GPU...&lt;/a&gt; — r/mlops&lt;/li&gt;
&lt;li&gt;R072 — &lt;a href="https://www.reddit.com/r/comfyui/comments/1ojschp/runpod_insanely_slow_to_load_models/" rel="noopener noreferrer"&gt;RunPod insanely slow to load models&lt;/a&gt; — r/comfyui&lt;/li&gt;
&lt;li&gt;R127 — &lt;a href="https://www.reddit.com/r/deeplearning/comments/1u14ali/spent_motnhs_renting_h100s_for_7b_models_like_an/" rel="noopener noreferrer"&gt;Spent months renting H100s for 7B models like an...&lt;/a&gt; — r/deeplearning&lt;/li&gt;
&lt;li&gt;R128 — &lt;a href="https://www.reddit.com/r/LocalLLaMA/comments/1r1lskx/benchmarking_llm_inference_on_rtx_pro_6000_se/" rel="noopener noreferrer"&gt;Benchmarking LLM inference on RTX Pro 6000 SE&lt;/a&gt; — r/LocalLLaMA&lt;/li&gt;
&lt;li&gt;R066 — &lt;a href="https://www.reddit.com/r/StableDiffusion/comments/1lxelm2/rent_runpod_5090_vs_purchasing_2499_5090_for_24/" rel="noopener noreferrer"&gt;Rent RunPod 5090 vs purchasing $2,499 5090 for 24...&lt;/a&gt; — r/StableDiffusion&lt;/li&gt;
&lt;li&gt;R049 — &lt;a href="https://www.reddit.com/r/LocalLLaMA/comments/1p9qh1t/recommendation_for_production_hardware_for/" rel="noopener noreferrer"&gt;Recommendation for production hardware for...&lt;/a&gt; — r/LocalLLaMA&lt;/li&gt;
&lt;li&gt;R123 — &lt;a href="https://www.reddit.com/r/mlops/comments/1trkvfy/anybody_ran_the_numbers_and_decided_self_hosting/" rel="noopener noreferrer"&gt;Anybody ran the numbers and decided self-hosting...&lt;/a&gt; — r/mlops&lt;/li&gt;
&lt;li&gt;R125 — &lt;a href="https://www.reddit.com/r/LocalLLaMA/comments/1opa6os/local_setup/" rel="noopener noreferrer"&gt;Local setup&lt;/a&gt; — r/LocalLLaMA&lt;/li&gt;
&lt;li&gt;R126 — &lt;a href="https://www.reddit.com/r/LocalLLaMA/comments/1uhtw45/what_are_companies_actually_using_for_selfhosted/" rel="noopener noreferrer"&gt;What are companies actually using for self-hosted...&lt;/a&gt; — r/LocalLLaMA&lt;/li&gt;
&lt;li&gt;R124 — &lt;a href="https://www.reddit.com/r/LocalLLaMA/comments/1jzeo0l/the_real_cost_of_hosting_an_llm/" rel="noopener noreferrer"&gt;The real cost of hosting an LLM&lt;/a&gt; — r/LocalLLaMA&lt;/li&gt;
&lt;li&gt;R130 — &lt;a href="https://www.reddit.com/r/selfhosted/comments/1qbriq6/ai_seems_to_be_being_deeply_subsidised/" rel="noopener noreferrer"&gt;AI seems to be being deeply subsidised&lt;/a&gt; — r/selfhosted&lt;/li&gt;
&lt;li&gt;R131 — &lt;a href="https://www.reddit.com/r/ClaudeAI/comments/1mj0eyf/comment/n7b1c9j/" rel="noopener noreferrer"&gt;Comment on local vs. Claude Pro workflow&lt;/a&gt; — r/ClaudeAI&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://lp-soroban.highreso.jp/compute-cluster/blog/gpu-cloud-research-002.html" rel="noopener noreferrer"&gt;Compute Cluster&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>gpu</category>
      <category>cloud</category>
      <category>machinelearning</category>
      <category>llm</category>
    </item>
    <item>
      <title>Local AI, Cloud GPUs, or APIs? Four Questions to Answer Before Comparing Cost</title>
      <dc:creator>GridPort</dc:creator>
      <pubDate>Fri, 21 Aug 2026 10:28:10 +0000</pubDate>
      <link>https://dev.to/gridport/local-ai-cloud-gpus-or-apis-four-questions-to-answer-before-comparing-cost-5fbo</link>
      <guid>https://dev.to/gridport/local-ai-cloud-gpus-or-apis-four-questions-to-answer-before-comparing-cost-5fbo</guid>
      <description>&lt;p&gt;“Should I buy local hardware or rent GPU capacity?”&lt;/p&gt;

&lt;p&gt;Price alone cannot answer that question. The decision may also involve control, data-handling requirements, and where each part of a workload should run.&lt;/p&gt;

&lt;p&gt;This guide separates the local-versus-cloud debate into four practical questions. By the end, you should know what to verify before comparing prices and which deployment options are worth testing first for your workload.&lt;/p&gt;

&lt;p&gt;In this article, hosted options include self-managed rented GPU infrastructure, managed dedicated endpoints, and shared model APIs. They differ in pricing, tenancy, data handling, and operational responsibility. “Cloud” is convenient shorthand, but it is not a single deployment model.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR: Four questions that shape the decision
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;💰 &lt;strong&gt;ROI:&lt;/strong&gt; Which cost structure fits after both options meet the required quality?&lt;/li&gt;
&lt;li&gt;🔧 &lt;strong&gt;Control:&lt;/strong&gt; How much of the model, data path, update cycle, and operation do you need to manage?&lt;/li&gt;
&lt;li&gt;🔐 &lt;strong&gt;Constraints:&lt;/strong&gt; Which data is permitted to go to which environment?&lt;/li&gt;
&lt;li&gt;🔀 &lt;strong&gt;Routing:&lt;/strong&gt; Does every task need to run in the same place?&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why “local or cloud?” is not enough
&lt;/h2&gt;

&lt;p&gt;A recent &lt;a href="https://www.reddit.com/r/LocalLLM/comments/1vo7uc1/local_models_beyond_128_gb_of_ram_arent/" rel="noopener noreferrer"&gt;r/LocalLLM discussion about whether systems beyond 128 GB are financially viable&lt;/a&gt; is a useful example. The original post argued that large local stacks often fail an ROI test and recommended cloud access for larger models. Replies pushed back that local hardware can be an enthusiast purchase and emphasized privacy, control, and the freedom to experiment.&lt;/p&gt;

&lt;p&gt;A separate r/macbookpro discussion included a self-described lawyer distinguishing public documents from privileged material, a systems administrator concerned about ITAR and DOD information, and a user who gathered current information with an online model before passing it to an offline model for deeper work.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Examples: &lt;a href="https://www.reddit.com/r/macbookpro/comments/1ucl74o/comment/ot51shh/" rel="noopener noreferrer"&gt;lawyer and privileged material&lt;/a&gt; · &lt;a href="https://www.reddit.com/r/macbookpro/comments/1ucl74o/comment/ot4shz1/" rel="noopener noreferrer"&gt;systems administrator and ITAR/DOD&lt;/a&gt; · &lt;a href="https://www.reddit.com/r/macbookpro/comments/1ucl74o/comment/ot53xjw/" rel="noopener noreferrer"&gt;online-to-offline workflow&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;None of these are really answers to the same question. Each commenter was solving something different, and the local-versus-cloud framing flattens all of it into one debate.&lt;/p&gt;

&lt;p&gt;There's another reason the binary framing fails: deployment isn't a single spectrum running from “local” at one end to “cloud” at the other. It's a bundle of separate decisions. A system may run on owned or rented hardware, on-premises or in a data center, as a dedicated or shared service, and under your operation or a provider's. Ownership, location, tenancy, and operational responsibility do not have to move together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four questions to separate before deciding
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. 💰 “Will this pay for itself?” — the ROI question
&lt;/h3&gt;

&lt;p&gt;Before comparing prices, check technical feasibility. Both options must do the required job at acceptable quality. Benchmark representative tasks across model and quantization, context length, output quality, concurrency, and latency. A cheaper system that misses the target isn't a cheaper equivalent—it's simply a different product.&lt;/p&gt;

&lt;p&gt;If both options clear that gate and the goal is financial return, start with a workload — not a model-size threshold and not the price of a GPU in isolation.&lt;/p&gt;

&lt;p&gt;A useful comparison looks more like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Annual local cost
= hardware amortization
+ power and cooling
+ storage and networking
+ maintenance and replacement risk
+ engineering time

Annual hosted cost
= compute usage
+ persistent storage
+ data transfer
+ idle, startup, and recovery overhead
+ engineering time
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The workload inputs matter just as much as the prices: prompt and output lengths, peak concurrency, latency targets, duty cycle, utilization, and expected growth.&lt;/p&gt;

&lt;p&gt;Consider a deliberately simplified example. A $12,000 workstation used for four years starts at $3,000 per year before power, maintenance, and engineering time. Hosted compute at an assumed $5 per hour starts at $1,200 per year when used for 20 hours a month, but reaches $7,200 per year at 120 hours a month—before storage, data transfer, or migration work. These illustrative numbers do not identify a winner. They show how duty cycle alone can reverse the comparison.&lt;/p&gt;

&lt;p&gt;Concurrency is particularly easy to underestimate. The &lt;a href="https://doi.org/10.1145/3600006.3613165" rel="noopener noreferrer"&gt;PagedAttention paper behind vLLM&lt;/a&gt; explains how large, dynamically changing KV caches can limit batch size. Its evaluation found that better KV-cache management changed throughput by 2–4× at a similar latency level in the tested systems. In other words, a cost model based on single-user tokens per second may say little about production economics.&lt;/p&gt;

&lt;p&gt;If those workload inputs have not been measured, a short on-demand rental or API trial can collect real demand, concurrency, and utilization data before buying. But renting is not automatically low commitment: reservations, migration work, persistent storage, data transfer, and provider-specific integration create costs of their own. Buying becomes a financial argument when repeated usage produces a credible break-even case.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. 🔧 “How much control do I need?” — the control question
&lt;/h3&gt;

&lt;p&gt;For some teams and individual builders, maximizing financial return is not the only objective.&lt;/p&gt;

&lt;p&gt;Local deployment can provide more direct control over model files, update timing, data paths, offline availability, and experimentation without per-request charges.&lt;/p&gt;

&lt;p&gt;But this is a transfer of responsibility, not literal independence. Local operation also makes you responsible for patching, authentication, backups, capacity planning, hardware failure, and eventual replacement.&lt;/p&gt;

&lt;p&gt;That trade may still be worthwhile. A lab, hobbyist, or engineering team can rationally pay for control and experimentation even when the hardware does not produce the best spreadsheet ROI. The important thing is to name that value honestly instead of forcing it into a cost-per-token argument.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. 🔐 “Which deployments are we allowed to use?” — the constraint question
&lt;/h3&gt;

&lt;p&gt;Some workloads face contractual, confidentiality, export-control, residency, or internal-policy requirements that rule out particular providers, regions, or data flows.&lt;/p&gt;

&lt;p&gt;That does not mean every cloud service is unavailable to every regulated organization.&lt;/p&gt;

&lt;p&gt;For example, in the United States:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HHS guidance says HIPAA-covered entities and business associates may use cloud services for ePHI when they enter into an appropriate business associate agreement and otherwise comply with the HIPAA Rules.&lt;/li&gt;
&lt;li&gt;22 CFR 120.54 describes conditions under which sending, taking, or storing certain encrypted technical data is not treated as an export, reexport, retransfer, or temporary import under ITAR.&lt;/li&gt;
&lt;li&gt;ABA Formal Opinion 512 tells lawyers using generative AI to evaluate confidentiality, informed consent, terms of use, privacy policies, and vendor safeguards rather than imposing a universal ban on cloud tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are US-specific examples, not legal advice. Requirements vary by jurisdiction, contract, client, data type, and system design.&lt;/p&gt;

&lt;p&gt;The practical question is narrower than “Is this industry allowed to use cloud?” Ask instead: &lt;strong&gt;Which data may go to which processor, in which region, under which contract and controls?&lt;/strong&gt; Confirm that boundary before optimizing cost.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sources: &lt;a href="https://www.hhs.gov/hipaa/for-professionals/special-topics/health-information-technology/cloud-computing/index.html" rel="noopener noreferrer"&gt;HHS guidance&lt;/a&gt; · &lt;a href="https://www.ecfr.gov/current/title-22/chapter-I/subchapter-M/part-120/subpart-C/section-120.54" rel="noopener noreferrer"&gt;22 CFR 120.54&lt;/a&gt; · &lt;a href="https://www.americanbar.org/content/dam/aba/administrative/professional_responsibility/ethics-opinions/aba-formal-opinion-512.pdf" rel="noopener noreferrer"&gt;ABA Formal Opinion 512&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. 🔀 “Which part of the workload belongs where?” — the routing question
&lt;/h3&gt;

&lt;p&gt;Local and cloud do not have to be mutually exclusive.&lt;/p&gt;

&lt;p&gt;Work can be routed by data sensitivity, freshness, latency, model capability, or burstiness.&lt;/p&gt;

&lt;p&gt;The Reddit example above — online retrieval followed by deeper offline processing — is one possible pattern, not a universal architecture. Research on local-cloud LLM inference offloading similarly treats placement as a per-task decision involving response quality, latency, usage cost, and resource constraints.&lt;/p&gt;

&lt;p&gt;A system might keep sensitive processing inside a controlled environment, send approved low-risk tasks to a hosted model, and rent additional GPUs for temporary peaks. Splitting work by requirement is also a valid architecture.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Further reading: &lt;a href="https://research.ibm.com/publications/local-cloud-inference-offloading-for-llms-in-multi-modal-multi-task-multi-dialogue-settings" rel="noopener noreferrer"&gt;Local-cloud LLM inference offloading&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Three operational checks to include in the comparison
&lt;/h2&gt;

&lt;p&gt;The four questions above help decide where a workload belongs. The following checks test whether the comparison still holds once the system is operated in practice.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cloud cost needs active controls
&lt;/h3&gt;

&lt;p&gt;Cloud cost is not self-governing. Budgets, quotas, anomaly alerts, and a named owner belong in the design.&lt;/p&gt;

&lt;p&gt;Cloud providers offer cost-anomaly tooling because unexpected spend must be detected and investigated. AWS notes in its &lt;a href="https://docs.aws.amazon.com/cost-management/latest/userguide/manage-ad.html" rel="noopener noreferrer"&gt;Cost Anomaly Detection documentation&lt;/a&gt; that billing-data delays can mean an anomaly takes up to 24 hours to detect after usage occurs. An alert is useful, but it is not an instantaneous kill switch.&lt;/p&gt;

&lt;h3&gt;
  
  
  Self-hosting is not secure by installation alone
&lt;/h3&gt;

&lt;p&gt;Self-hosting is not private or secure by default, either. It describes who operates the stack, not where it runs; the hardware may be in your building or rented elsewhere. A joint &lt;a href="https://www.sentinelone.com/labs/silent-brothers-ollama-hosts-form-anonymous-ai-network-beyond-platform-guardrails/" rel="noopener noreferrer"&gt;SentinelOne and Censys investigation&lt;/a&gt; recorded 175,108 internet-reachable Ollama hosts across 130 countries over 293 days. That does not mean every host was compromised, but it does show how easily infrastructure assumed to be private can become publicly reachable.&lt;/p&gt;

&lt;p&gt;A self-hosted service still needs deliberate network binding, authentication, patching, segmentation, and monitoring. The security boundary comes from the architecture and its operation — not the GPU's location alone.&lt;/p&gt;

&lt;h3&gt;
  
  
  External APIs and local hardware both need contingency plans
&lt;/h3&gt;

&lt;p&gt;Local infrastructure requires upfront capital, power, maintenance, spare capacity, and a replacement plan. Hosted infrastructure introduces dependencies on provider availability, policy, pricing, geography, and regulation.&lt;/p&gt;

&lt;p&gt;Those external conditions can change. According to &lt;a href="https://www.anthropic.com/news/redeploying-fable-5" rel="noopener noreferrer"&gt;Anthropic's account of the event&lt;/a&gt;, a US export-control action led the company to suspend access to Fable 5 and Mythos 5 on June 12, 2026. The restrictions were lifted on June 30, and access was restored in stages: Fable 5 returned globally on July 1, while Mythos 5 remained limited to approved organizations at that time.&lt;/p&gt;

&lt;p&gt;The lesson is not that hosted APIs are uniquely unreliable. It is that external APIs are dependencies that need an explicit contingency plan, just as local hardware needs recovery and replacement plans.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion: Choose the decision criteria before the provider
&lt;/h2&gt;

&lt;p&gt;Before committing, find the row that best describes the real driver:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Situation&lt;/th&gt;
&lt;th&gt;Sensible first move&lt;/th&gt;
&lt;th&gt;Verify before committing&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Quality or performance is uncertain&lt;/td&gt;
&lt;td&gt;Benchmark representative tasks&lt;/td&gt;
&lt;td&gt;Model, quantization, context, output quality, concurrency, and latency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Demand is uncertain&lt;/td&gt;
&lt;td&gt;Run a short on-demand trial&lt;/td&gt;
&lt;td&gt;Actual usage, utilization, migration effort, storage, and data transfer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Usage is sustained and predictable&lt;/td&gt;
&lt;td&gt;Model the buy-versus-rent break-even point&lt;/td&gt;
&lt;td&gt;Full operating cost, growth, maintenance, and replacement risk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Control is valuable even without ROI&lt;/td&gt;
&lt;td&gt;Consider owned or self-managed infrastructure&lt;/td&gt;
&lt;td&gt;Patching, authentication, backups, capacity, and recovery ownership&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A law, contract, client term, or policy limits data flow&lt;/td&gt;
&lt;td&gt;Define the permitted boundary first&lt;/td&gt;
&lt;td&gt;Data type, processor, region, contract, logs, and administrative access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tasks have different needs&lt;/td&gt;
&lt;td&gt;Route them across suitable environments&lt;/td&gt;
&lt;td&gt;Sensitivity, freshness, capability, latency, burstiness, and failure paths&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Local hardware, rented GPUs, managed endpoints, and shared APIs are implementation choices within a wider deployment design. The first decisions are the required quality, cost structure, control boundary, permitted data flow, and routing policy—not the provider or hardware.&lt;/p&gt;

&lt;p&gt;There is no need to move workloads that already fit an API onto local infrastructure. However, when control requirements or data boundaries are clear, local or hybrid deployment may be worth evaluating. Compare prices only after those conditions are defined.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was edited with AI assistance, and the cover image was AI-generated. The final content and cited sources were reviewed before publication.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>cloud</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>MiniMax H3 Beyond Basic Generation: R2V, Video Editing, Voice Cloning, and Agent-Written Prompts</title>
      <dc:creator>GridPort</dc:creator>
      <pubDate>Wed, 19 Aug 2026 02:07:11 +0000</pubDate>
      <link>https://dev.to/gridport/minimax-h3-beyond-basic-generation-r2v-video-editing-voice-cloning-and-agent-written-prompts-3j8m</link>
      <guid>https://dev.to/gridport/minimax-h3-beyond-basic-generation-r2v-video-editing-voice-cloning-and-agent-written-prompts-3j8m</guid>
      <description>&lt;p&gt;Most MiniMax H3 tutorials stop the moment text-to-video or image-to-video produces a usable clip.&lt;/p&gt;

&lt;p&gt;That is enough to prove the model runs, but it misses the part that makes H3 interesting: &lt;strong&gt;reference-to-video (R2V)&lt;/strong&gt;. With R2V, images can define identity and style, video can define motion or camera work, and audio can define a voice—all within one generation context.&lt;/p&gt;

&lt;p&gt;In practice, adding more files isn't the hard part. The real challenge is telling H3 exactly what each reference controls, what must remain unchanged, and what may be transformed.&lt;/p&gt;

&lt;p&gt;This guide focuses on four practical skills:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;th&gt;What it gives you&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mixed-reference R2V&lt;/td&gt;
&lt;td&gt;Reuse identity, style, motion, camera work, and audio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Instruction-based video editing&lt;/td&gt;
&lt;td&gt;Change one part of a clip while preserving the rest&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Voice-timbre transfer&lt;/td&gt;
&lt;td&gt;Generate new dialogue using a consented voice reference&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent-written prompts&lt;/td&gt;
&lt;td&gt;Convert a rough brief into H3's structured prompt format&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Before you start
&lt;/h2&gt;

&lt;p&gt;This article assumes that MiniMax H3 already runs in ComfyUI. The official ComfyUI integration requires version 0.30.0 or later and provides T2V, I2V, and R2V templates under &lt;strong&gt;Template Library → Video&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Two details are easy to overlook:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;H3-Base generates at 768p. MiniMax's separate H3-Regenerate-2K stage produces 2K output, but that module is not currently part of the open-weight release.&lt;/li&gt;
&lt;li&gt;R2V uses a different checkpoint from T2V and I2V. In ComfyUI, use the &lt;code&gt;ref2va&lt;/code&gt; weights for reference-driven generation, not the &lt;code&gt;fl2va&lt;/code&gt; weights.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1. Think in reference roles, not reference files
&lt;/h2&gt;

&lt;p&gt;H3-Base-Ref2VA accepts a mixed context of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Up to 9 images&lt;/li&gt;
&lt;li&gt;Up to 3 video clips&lt;/li&gt;
&lt;li&gt;Up to 3 audio clips&lt;/li&gt;
&lt;li&gt;Up to 12 files in total&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each video or audio clip must be between 2 and 15 seconds, and the total duration for each media type cannot exceed 15 seconds.&lt;/p&gt;

&lt;p&gt;Those limits are generous, but filling every slot rarely improves the result: a short target clip can't express twelve competing ideas clearly, so start with the smallest reference set that describes the shot.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;Picture 1&amp;gt;&lt;/code&gt;: character identity&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;Picture 2&amp;gt;&lt;/code&gt;: costume and color palette&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;Video 1&amp;gt;&lt;/code&gt;: body movement and camera motion&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;Audio 1&amp;gt;&lt;/code&gt;: voice timbre&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then state those jobs directly in the prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Picture 1&amp;gt; defines the character's face and hairstyle.
&amp;lt;Picture 2&amp;gt; defines the wardrobe and blue-silver color palette.
&amp;lt;Video 1&amp;gt; defines the walking motion and slow left-to-right tracking shot.
&amp;lt;Audio 1&amp;gt; is the voice-timbre reference for the character.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The order matters. ComfyUI identifies references by the order in which they are connected, so &lt;code&gt;&amp;lt;Picture 1&amp;gt;&lt;/code&gt; in the prompt must really be the first connected image.&lt;/p&gt;

&lt;h3&gt;
  
  
  A reliable R2V workflow
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Decide what the final 4–15 second clip should accomplish.&lt;/li&gt;
&lt;li&gt;Assign one explicit role to each reference.&lt;/li&gt;
&lt;li&gt;Remove references that do not contribute to that result.&lt;/li&gt;
&lt;li&gt;Describe the action chronologically.&lt;/li&gt;
&lt;li&gt;Specify camera movement, dialogue, ambience, effects, and music.&lt;/li&gt;
&lt;li&gt;Check every label against the order of the connected inputs.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;References carry reusable traits. The prompt decides what those traits do over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Edit video by separating preservation from change
&lt;/h2&gt;

&lt;p&gt;R2V can also behave like an instruction-based video editor. Give it a source video, identify what must remain stable, and describe the local change.&lt;/p&gt;

&lt;p&gt;Typical edits include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Replacing a character or object&lt;/li&gt;
&lt;li&gt;Changing the background&lt;/li&gt;
&lt;li&gt;Relighting a scene&lt;/li&gt;
&lt;li&gt;Transferring a visual style&lt;/li&gt;
&lt;li&gt;Adding a localized effect&lt;/li&gt;
&lt;li&gt;Preserving or replacing the original audio&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A prompt like "make this warmer" rarely gets useful results. What works better is a small edit specification with an explicit preservation contract.&lt;/p&gt;

&lt;p&gt;Here is a relighting example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;subject_definitions:
&amp;lt;Video 1&amp;gt; is the source video. It shows a product on a table in daylight.

summary:
[video editing] Relight &amp;lt;Video 1&amp;gt; as a warm evening interior.

retention_analysis:
&amp;lt;Video 1&amp;gt; (composition, camera movement, product position): fully_preserved.
Only the lighting condition changes.

detailed_description:
The target video keeps the composition and timing of &amp;lt;Video 1&amp;gt;.
[Shot 1] Replace the daylight with warm evening light entering from the left.
Soft amber highlights move across the product. The camera, product, table,
background geometry, and duration remain unchanged.

overall_soundscape:
Reuse the original quiet room tone without modification.

non_diegetic_music:
N/A
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This structure reduces a common failure mode: the model "helpfully" redesigns the entire shot when only one attribute should change.&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;fully_preserved&lt;/code&gt; for composition, motion, timing, or audio that must remain intact. Use an explicit transfer or replacement instruction only for the attributes that should change. If a section is irrelevant, write &lt;code&gt;N/A&lt;/code&gt; instead of leaving the intent ambiguous.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Treat voice cloning as timbre transfer—not signal copying
&lt;/h2&gt;

&lt;p&gt;With an audio reference, H3 can generate new speech that follows a speaker's vocal characteristics while producing new audio for the target scene.&lt;/p&gt;

&lt;p&gt;A minimal prompt might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Subject 1&amp;gt; is the character shown in &amp;lt;Picture 1&amp;gt;.
&amp;lt;Audio 1&amp;gt; is the consented voice-timbre reference for &amp;lt;Subject 1&amp;gt;.
Use &amp;lt;Audio 1&amp;gt; only as a timbre reference; do not reproduce its original words.

&amp;lt;Subject 1&amp;gt; turns toward the camera and says:
&amp;lt;d&amp;gt;[Japanese] こんにちは、今日は新商品をご紹介します。&amp;lt;/d&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For cleaner transfer, use a short recording with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One speaker&lt;/li&gt;
&lt;li&gt;Little or no music&lt;/li&gt;
&lt;li&gt;Minimal room echo&lt;/li&gt;
&lt;li&gt;No overlapping dialogue&lt;/li&gt;
&lt;li&gt;A speaking style close to the desired output&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Consent is part of the workflow
&lt;/h3&gt;

&lt;p&gt;Only use a voice when you have the speaker's informed consent or another clear legal right to use it. Do not imitate a real person deceptively, and disclose synthetic media where appropriate. A technically successful clone can still violate privacy, publicity, copyright, platform, or employment rules.&lt;/p&gt;

&lt;p&gt;Check this before the audio ever enters the workflow, not as a final QA step tacked on afterward.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Let an agent write the structured prompt
&lt;/h2&gt;

&lt;p&gt;MiniMax includes an official &lt;code&gt;h3-prompt-writing&lt;/code&gt; skill in the H3 repository. It's a Markdown-based instruction package, portable to any coding agent or harness that can read a &lt;code&gt;SKILL.md&lt;/code&gt; file and its local references.&lt;/p&gt;

&lt;p&gt;Install it with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add https://github.com/MiniMax-AI/MiniMax-H3 &lt;span class="nt"&gt;--skill&lt;/span&gt; h3-prompt-writing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The skill first selects the input mode:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mode&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;T2VA&lt;/td&gt;
&lt;td&gt;Generate an audiovisual timeline from text&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I2VA&lt;/td&gt;
&lt;td&gt;Continue forward from a first frame&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FL2VA&lt;/td&gt;
&lt;td&gt;Connect supplied first and last frames&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L2VA&lt;/td&gt;
&lt;td&gt;Build toward a supplied last frame&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ref2VA&lt;/td&gt;
&lt;td&gt;Generate from mixed image, video, and audio references&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For the base modes, it produces three sections in this order:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;integrated_multimodal_description
overall_soundscape
non_diegetic_music
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For full-reference Ref2VA, it uses six:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;subject_definitions
summary
retention_analysis
detailed_description
overall_soundscape
non_diegetic_music
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Handing this to an agent works well because the task is mechanical: preserve exact field names, resolve labels, arrange events chronologically, keep the sound synced to the visual timeline.&lt;/p&gt;

&lt;p&gt;A practical request to the agent can be short:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use the MiniMax H3 prompt-writing skill.

Mode: Ref2VA
Duration: 8 seconds
Picture 1: character identity
Video 1: camera motion only
Audio 1: consented voice-timbre reference

Goal: The character walks into a small studio, stops at the desk,
looks at the camera, and says “Build the first version today.”
Preserve the character identity and the reference camera motion.
Generate quiet room ambience. No music.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The resulting prompt should still be reviewed. Check that every reference exists, every preservation rule is intentional, the dialogue fits the duration, and the generated structure has not introduced details you did not ask for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common failure modes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. A reference has no declared job
&lt;/h3&gt;

&lt;p&gt;If the prompt does not say whether a video controls motion, style, composition, or all three, the model has to guess.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; assign a role to every input.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The edit and preservation rules conflict
&lt;/h3&gt;

&lt;p&gt;“Keep the original lighting” and “change the scene to sunset” cannot both be true.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; separate preserved attributes from transferred or replaced attributes.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Too much story for the duration
&lt;/h3&gt;

&lt;p&gt;A 6-second clip cannot reliably contain an establishing shot, three actions, a costume change, a camera orbit, and two lines of dialogue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; choose one visual beat, or increase the duration within H3's 15-second limit.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Voice audio contains music or multiple speakers
&lt;/h3&gt;

&lt;p&gt;The reference no longer represents one clean voice identity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; prepare a rights-cleared, single-speaker sample with minimal background sound.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. The open-weight license is treated like a permissive OSS license
&lt;/h3&gt;

&lt;p&gt;It is not. The MiniMax H3 Community License currently excludes the European Union, the United Kingdom, the Republic of Korea, and the United States from its applicable territory. It also restricts use and display of the model's outputs outside that territory, requires separate authorization for certain commercial products above the stated revenue threshold, and includes labeling obligations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; read the current license before downloading the weights, deploying a service, or publishing an output. If your use crosses jurisdictions, get qualified legal advice. Because the restriction covers display of outputs, I have intentionally not embedded an H3-generated video in this cross-post.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pre-generation checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] The target duration and aspect ratio are defined.&lt;/li&gt;
&lt;li&gt;[ ] Every image, video, and audio input has one explicit role.&lt;/li&gt;
&lt;li&gt;[ ] Reference labels match ComfyUI's connection order.&lt;/li&gt;
&lt;li&gt;[ ] Preserved and changed attributes do not conflict.&lt;/li&gt;
&lt;li&gt;[ ] The action fits within 4–15 seconds.&lt;/li&gt;
&lt;li&gt;[ ] Camera, dialogue, ambience, effects, and music are specified.&lt;/li&gt;
&lt;li&gt;[ ] Voice and visual references are consented or rights-cleared.&lt;/li&gt;
&lt;li&gt;[ ] The deployment and publication plan complies with the current license.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final takeaway
&lt;/h2&gt;

&lt;p&gt;The skill in advanced H3 prompting has little to do with cinematic paragraph length. It comes down to a clear contract between the references and the target clip:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;What does each reference control?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What must remain unchanged?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What should change, and when?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What should the audience hear at each moment?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once those decisions are explicit, R2V becomes much more predictable. And an agent can handle much of the repetitive prompt structuring for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Official references
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/MiniMax-AI/MiniMax-H3" rel="noopener noreferrer"&gt;MiniMax H3 repository and model documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.comfy.org/tutorials/video/minimax/minimax-h3" rel="noopener noreferrer"&gt;MiniMax H3 workflows in ComfyUI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/MiniMax-AI/MiniMax-H3/blob/main/skills/h3-prompt-writing/SKILL.md" rel="noopener noreferrer"&gt;Official H3 prompt-writing skill&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://huggingface.co/MiniMaxAI/MiniMax-H3/blob/main/LICENSE" rel="noopener noreferrer"&gt;MiniMax H3 Community License&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;This article was edited with AI assistance.&lt;br&gt;
*Originally published in Japanese on &lt;a href="https://highreso.jp/edgehub/moviegenerationai/minimax-h3-pro.html?utm_source=devto" rel="noopener noreferrer"&gt;EdgeHUB&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>video</category>
      <category>comfyui</category>
    </item>
    <item>
      <title>Your LLM Runs Locally. Your Data Might Not.</title>
      <dc:creator>GridPort</dc:creator>
      <pubDate>Tue, 18 Aug 2026 02:48:36 +0000</pubDate>
      <link>https://dev.to/gridport/your-llm-runs-locally-your-data-might-not-5p4</link>
      <guid>https://dev.to/gridport/your-llm-runs-locally-your-data-might-not-5p4</guid>
      <description>&lt;p&gt;When sensitive or regulated data enters an LLM workflow, teams often make a quick decision: if it cannot go to a public cloud API, run the model locally.&lt;/p&gt;

&lt;p&gt;That may be right. But a local GPU or selected region does not determine the full data path. Prompts may stay local while RAG components, embeddings, logs, backups, or administrative access cross a different boundary.&lt;/p&gt;

&lt;p&gt;This field guide helps engineers, security teams, and technical leaders:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand why a local model is not necessarily a local data path&lt;/li&gt;
&lt;li&gt;Trace data from input through processing, storage, and deletion&lt;/li&gt;
&lt;li&gt;Ask for the owners and evidence needed before choosing self-hosting, isolated infrastructure, or a managed service&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;This article does not recommend a specific vendor and is not legal advice. Requirements vary by jurisdiction, data type, contract, and professional obligation.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why “local” is not the end of the decision
&lt;/h2&gt;

&lt;p&gt;It often starts with a clear rule. A criminal defense lawyer may decide not to enter client files into a general-purpose cloud AI service before reviewing confidentiality safeguards, contracts, retention, training use, and consent. The American Bar Association’s &lt;a href="https://www.americanbar.org/content/dam/aba/administrative/professional_responsibility/ethics-opinions/aba-formal-opinion-512.pdf" rel="noopener noreferrer"&gt;Formal Opinion 512&lt;/a&gt; does not impose a blanket ban; it requires lawyers to evaluate the tool and protect client information.&lt;/p&gt;

&lt;p&gt;An EU-based company may similarly restrict personal data from a US region. But the rule is not simply “US cloud prohibited”: the GDPR allows some transfers under a valid mechanism. The &lt;a href="https://www.edpb.europa.eu/sme/be-compliant/international-data-transfers_en" rel="noopener noreferrer"&gt;European Data Protection Board’s guidance&lt;/a&gt; explains the available routes.&lt;/p&gt;

&lt;p&gt;“Regulated data” is not one universal category. Personal data, health information, payment data, privileged communications, export-controlled information, and trade secrets can produce different obligations.&lt;/p&gt;

&lt;p&gt;Still, once a team decides that a public API is not acceptable, the next question arrives immediately: &lt;strong&gt;what hardware, exactly?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The answers are predictable — a $6K Mac Studio, a pair of used 3090s for $4K, a $16K rack. A legal or contractual constraint gets converted, in a single conversation, into a hardware purchase decision. That conversion happens so quickly that almost nobody stops to ask whether the box actually satisfies the requirement.&lt;/p&gt;

&lt;h2&gt;
  
  
  It is not just where the GPU sits
&lt;/h2&gt;

&lt;p&gt;Data residency often gets treated as a map problem: pick the region, pick the provider, done. Region is important, but it is only one part of the data flow.&lt;/p&gt;

&lt;p&gt;An AI service can have separate locations and policies for model execution, request storage, application logs, traces, abuse monitoring, customer support, backups, and administrative access. This does not mean that every EU inference endpoint sends prompt content elsewhere, or that every form of cross-border access is automatically unlawful. It means that a region selector is not a complete architecture diagram.&lt;/p&gt;

&lt;p&gt;The honest version of “where does this run?” has at least seven layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where the model executes&lt;/li&gt;
&lt;li&gt;Where prompts, files, and outputs are stored — and for how long&lt;/li&gt;
&lt;li&gt;Where embeddings, vector data, and retrieved documents are processed&lt;/li&gt;
&lt;li&gt;Where logs, traces, telemetry, and error reports go&lt;/li&gt;
&lt;li&gt;Where caches, queues, temporary files, backups, and snapshots live&lt;/li&gt;
&lt;li&gt;Which subprocessors receive or can access the data&lt;/li&gt;
&lt;li&gt;Who has administrative or support access to any of the above&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The places to check are the service-specific data-residency documentation, data processing agreement, subprocessor list, logging configuration, retention policy, and support-access model — not only the marketing page.&lt;/p&gt;

&lt;p&gt;The same inspection applies to a self-hosted system. A model can run on a local GPU while an observability SDK exports traces, an embedding call goes to an external API, a vector database is managed in another region, or a crash reporter captures part of a prompt.&lt;/p&gt;

&lt;p&gt;“Local model” does not necessarily mean “local data path.”&lt;/p&gt;

&lt;h2&gt;
  
  
  The description reaches review before the architecture does
&lt;/h2&gt;

&lt;p&gt;Another risk rarely appears in the infrastructure budget: the system may be described to legal, insurance, or procurement reviewers before its operating boundaries are clear.&lt;/p&gt;

&lt;p&gt;Consider the phrase “autonomous decision engine.” A reviewer may reasonably hear that as a system making consequential decisions without human approval. The engineering team may only mean a tool that drafts recommendations for a person to review. Those are materially different control models, but a vague description can make them sound identical.&lt;/p&gt;

&lt;p&gt;The lesson is not to market around compliance review. It is to describe the system accurately enough that reviewers do not have to infer what it does.&lt;/p&gt;

&lt;p&gt;Before the build starts, write one paragraph covering what data enters, what the model produces or decides, what actions it can take, where human approval is required, where data is retained, and what happens when the system is wrong or unavailable.&lt;/p&gt;

&lt;p&gt;Have the people who will actually approve the system review it early. Vocabulary is not merely a marketing afterthought here; it is part of the governance surface.&lt;/p&gt;

&lt;h2&gt;
  
  
  A blanket ban can create a shadow-AI problem
&lt;/h2&gt;

&lt;p&gt;An air-gapped environment can be appropriate for some threat models. But “no cloud APIs” is a policy statement, not by itself a complete security architecture.&lt;/p&gt;

&lt;p&gt;If a policy prohibits the available tools without providing a usable alternative, some people may look for another route: a personal account, a browser extension, an unreviewed open-source UI, or a script that bypasses the normal controls.&lt;/p&gt;

&lt;p&gt;That does not make the policy unnecessary. It means the control has to include an approved way to complete the work.&lt;/p&gt;

&lt;p&gt;The useful framing is not simply “cloud versus local.” It is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can people complete the intended task inside the approved boundary, with controls that are visible and supportable?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Open weights do not remove every dependency
&lt;/h2&gt;

&lt;p&gt;It is tempting to assume that open weights settle the dependency question. A provider cannot revoke access to a copy of the weights you already possess, so the system must be independent.&lt;/p&gt;

&lt;p&gt;The first sentence may be technically true. The conclusion does not always follow.&lt;/p&gt;

&lt;p&gt;MiniMax H3 provides a concrete 2026 example. H3 is a video-generation model rather than a text LLM, but its license illustrates a dependency question that applies to downloadable models across an AI stack. Its community license defines an “Applicable Territory” that excludes the United States, the European Union, the United Kingdom, and the Republic of Korea. The relevant rights are granted only within that territory. The exact terms are in the official &lt;a href="https://huggingface.co/MiniMaxAI/MiniMax-H3/blob/main/LICENSE" rel="noopener noreferrer"&gt;MiniMax H3 Community License Agreement&lt;/a&gt;, and users in excluded territories can apply for &lt;a href="https://platform.minimax.io/h3-license" rel="noopener noreferrer"&gt;separate authorization&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The important distinction is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Possessing model weights is not the same as having the legal, technical, and operational ability to deploy them for your use case.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The license is only one dependency. A self-hosted system may still rely on a model repository, tokenizer, container registry, proprietary runtime, update channel, or a small group of staff who know how to operate it. Test whether the deployment can actually be rebuilt without the original provider.&lt;/p&gt;

&lt;h2&gt;
  
  
  Treat availability as a design input
&lt;/h2&gt;

&lt;p&gt;Managed APIs can become unavailable because of capacity constraints, provider incidents, account problems, policy changes, or regional restrictions. Self-hosted infrastructure has its own failure modes: hardware faults, broken model artifacts, unavailable operators, and delayed security patches.&lt;/p&gt;

&lt;p&gt;The relevant question is not “Which option never fails?” It is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What happens to this workflow when the selected option fails tomorrow?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;An acceptable answer may be automatic failover, a second approved provider, a smaller local model, a manual queue, or a documented decision to pause the workflow. The important part is that the answer exists before the outage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Eight questions to answer before deployment
&lt;/h2&gt;

&lt;p&gt;This is a minimum-viable design review, not a universal statement of legal requirements. Not every team needs every control on day one. The goal is to decide explicitly which controls your data, industry, contracts, and risk level require. The lifecycle approach is consistent with the &lt;a href="https://www.nist.gov/itl/ai-risk-management-framework" rel="noopener noreferrer"&gt;NIST Generative AI Profile&lt;/a&gt; and the UK National Cyber Security Centre’s &lt;a href="https://www.ncsc.gov.uk/collection/guidelines-secure-ai-system-development" rel="noopener noreferrer"&gt;Guidelines for Secure AI System Development&lt;/a&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What data enters the system?&lt;/strong&gt; Classify prompts, files, RAG sources, and tool inputs. Define prohibited data and remove unnecessary identifiers where practical.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What leaves the application boundary?&lt;/strong&gt; Trace inference, embeddings, reranking, moderation, tool calls, observability, and crash reporting — not just the primary model request.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Where does the data persist?&lt;/strong&gt; Check prompts, outputs, logs, vector stores, caches, queues, temporary files, snapshots, and backups. Set retention deliberately, including whether data can be used for provider training or service improvement.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Who can access or redirect it?&lt;/strong&gt; Include end users, application operators, provider support, subprocessors, and anyone able to change logging, region, retention, or outbound connections. Use least privilege and managed secrets.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;How will you detect and contain a failure?&lt;/strong&gt; Decide what must be logged, where audit records are exported, who responds to an incident, and how you will detect abnormal access, prompt injection, bulk extraction, or unexpected outbound traffic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;How does deletion actually work?&lt;/strong&gt; Define retention by data type and verify whether deletion reaches replicas, indexes, backups, snapshots, and derived datasets. Keep production data out of development and evaluation unless explicitly approved.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What evidence proves the design is operating as intended?&lt;/strong&gt; Keep a current data-flow diagram, configuration records, relevant contracts and license terms, and test results. For important controls, record an owner, evidence, last review date, and accepted residual risk.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What happens if a dependency disappears tomorrow?&lt;/strong&gt; Plan for provider, region, account, model, operator, or license unavailability. Confirm that essential data and configurations can be exported and that the deployment can be rebuilt or replaced.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Higher-risk environments may need deeper controls for isolation, encryption, supply-chain integrity, patching, recovery testing, and jurisdiction-specific evidence. The eight questions above tell you where that deeper work is needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this does not settle
&lt;/h2&gt;

&lt;p&gt;These questions do not decide whether you should self-host, rent isolated infrastructure, use a private cloud, or choose a compliant managed endpoint. A well-operated managed service can be safer than a poorly maintained local server; an isolated deployment can meet requirements that a shared API cannot. The answer depends on the data, threat model, workload, internal capability, cost, and tolerance for operational responsibility.&lt;/p&gt;

&lt;p&gt;The narrower point is this: regulated data is not merely a hardware-buying trigger. Before choosing the box or endpoint, trace the data path, define the operating boundary, identify who can change it, and decide what happens when a dependency fails. That is the design work that prevents an expensive surprise during a review, incident, or outage.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was edited with AI assistance, and the cover image was AI-generated. The final content and cited sources were reviewed before publication.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you have been through a security, privacy, insurance, procurement, or legal review for an AI system, what evidence actually mattered — and what turned out to be noise?&lt;/em&gt;&lt;/p&gt;

</description>
      <category>llm</category>
      <category>security</category>
      <category>architecture</category>
      <category>ai</category>
    </item>
    <item>
      <title>Using PixelRAG with Claude Code (August 2026) — Visual RAG for Documents with Tables and Diagrams</title>
      <dc:creator>GridPort</dc:creator>
      <pubDate>Mon, 17 Aug 2026 05:01:56 +0000</pubDate>
      <link>https://dev.to/gridport/using-pixelrag-with-claude-code-august-2026-visual-rag-for-documents-with-tables-and-diagrams-82c</link>
      <guid>https://dev.to/gridport/using-pixelrag-with-claude-code-august-2026-visual-rag-for-documents-with-tables-and-diagrams-82c</guid>
      <description>&lt;p&gt;PixelRAG is a visual RAG tool that treats web pages, PDFs, and images as &lt;em&gt;screenshots&lt;/em&gt; rather than text — preserving the layout of tables and charts so you can search and reference them as-is.&lt;/p&gt;

&lt;p&gt;This post covers installing it as a plugin, actual usage, how it differs from traditional text-based RAG, and the gotchas you're likely to hit — all from a Claude Code user's perspective.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you'll get out of this post&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You're an intermediate engineer already using Claude Code for real work&lt;/li&gt;
&lt;li&gt;You need to search or understand documents where tables, diagrams, and layout matter&lt;/li&gt;
&lt;li&gt;You want to know how this differs from traditional text RAG (embeddings + a vector DB)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is PixelRAG?
&lt;/h2&gt;

&lt;p&gt;PixelRAG renders documents — web pages, PDFs, images — as screenshots and feeds those images directly to the model. The visual structure that HTML parsing normally destroys — tables, charts, layout, infographics — stays intact, so the model can actually answer questions about them.&lt;/p&gt;

&lt;p&gt;PixelRAG is an open-source project built around "Visual Retrieval-Augmented Generation," made up of 5 components:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pixelrag-render&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Converts documents (web pages, PDFs) into image tiles (via Playwright/CDP)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pixelrag-embed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Vectorizes tile images and builds a FAISS index&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pixelrag-index&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Runs the full source → ingest → embed → index pipeline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pixelrag-serve&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Serves a FAISS search API (CPU/GPU)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pixelrag-train&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Fine-tunes Qwen3-VL-Embedding via LoRA&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These are all now bundled into a single &lt;code&gt;pixelrag&lt;/code&gt; package, installable with one &lt;code&gt;pip install pixelrag&lt;/code&gt;. As a Claude Code user, the first thing you'll actually touch is the &lt;code&gt;pixelshot&lt;/code&gt; command (shipped by &lt;code&gt;pixelrag-render&lt;/code&gt;) and the "pixelbrowse" plugin that wires it into Claude Code.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A[URL / PDF] --&amp;gt; B["pixelshot&amp;lt;br/&amp;gt;(generates image tiles)"]
    B --&amp;gt; C["tile_0000.jpg ..."]
    C --&amp;gt; D["Claude Code's Read tool"]
    D --&amp;gt; E["Claude understands it visually"]
    C -.-&amp;gt;|optional| F[pixelrag-embed / index]
    F --&amp;gt; G[FAISS index]
    G --&amp;gt; H[pixelrag-serve search API]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;&lt;strong&gt;How this differs from traditional text RAG&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Row/column relationships in tables (these tend to break down under text extraction)&lt;/li&gt;
&lt;li&gt;The actual content of charts, diagrams, and infographics&lt;/li&gt;
&lt;li&gt;Meaning carried by layout itself (emphasis, the position of annotations, etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setting up PixelRAG
&lt;/h2&gt;

&lt;p&gt;Setup is straightforward: either clone the repo and run it locally, or add the plugin via the marketplace.&lt;/p&gt;

&lt;h3&gt;
  
  
  Before you start
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.12+ (per &lt;code&gt;requires-python&lt;/code&gt; in &lt;code&gt;pyproject.toml&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Claude Code CLI already installed&lt;/li&gt;
&lt;li&gt;License: Apache-2.0 (commercial use allowed)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Note&lt;/strong&gt;: the repo's &lt;code&gt;pyproject.toml&lt;/code&gt; includes &lt;code&gt;environments = ["sys_platform == 'linux'"]&lt;/code&gt;, meaning the GPU-dependent parts (&lt;code&gt;embed&lt;/code&gt;/&lt;code&gt;serve&lt;/code&gt;/&lt;code&gt;train&lt;/code&gt;) assume Linux. This shouldn't matter much if you're only using the screenshot feature (&lt;code&gt;pixelshot&lt;/code&gt;), but on Mac/Windows you're safer running it through WSL.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost note&lt;/strong&gt;: the &lt;code&gt;pixelshot&lt;/code&gt; screenshot feature just runs Playwright/Chromium locally, so there's no extra cost beyond your normal Claude Code token usage. Building your own index with &lt;code&gt;embed&lt;/code&gt;/&lt;code&gt;serve&lt;/code&gt;/&lt;code&gt;train&lt;/code&gt;, however, needs a GPU, and if you use a cloud GPU for that, you'll pay for that usage separately.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;p&gt;The official &lt;code&gt;plugin/setup.sh&lt;/code&gt; looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="c"&gt;# One-liner that installs pixelrag and registers it as a Claude Code plugin&lt;/span&gt;
&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt;

&lt;span class="c"&gt;# Install pixelrag into an isolated environment via uv&lt;/span&gt;
uv tool &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--from&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$REPO_DIR&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; pixelrag 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    uv tool upgrade &lt;span class="nt"&gt;--from&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$REPO_DIR&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; pixelrag

&lt;span class="c"&gt;# Install Chromium for screenshots&lt;/span&gt;
uvx playwright &lt;span class="nb"&gt;install &lt;/span&gt;chromium 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Option 1: Clone the repo and run it locally&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/StarTrail-org/PixelRAG.git
&lt;span class="nb"&gt;cd &lt;/span&gt;PixelRAG
./plugin/setup.sh
claude &lt;span class="nt"&gt;--plugin-dir&lt;/span&gt; ./plugin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Option 2: Install via the marketplace&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;pixelrag                                &lt;span class="c"&gt;# installs the pixelshot command&lt;/span&gt;
claude plugin marketplace add StarTrail-org/PixelRAG
claude plugin &lt;span class="nb"&gt;install &lt;/span&gt;pixelbrowse@pixelrag-plugins
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With the plugin installed, Claude is set up to call &lt;code&gt;pixelshot&lt;/code&gt; via Bash and then read the generated images with the Read tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using PixelRAG with Claude Code
&lt;/h2&gt;

&lt;p&gt;Once installed, you just pass a URL in regular conversation and it works.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"Look at https://news.ycombinator.com and summarize the top stories"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In an interactive session, you can also use the slash command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude &lt;span class="nt"&gt;--plugin-dir&lt;/span&gt; ./plugin
&lt;span class="c"&gt;# inside the session&lt;/span&gt;
/screenshot https://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Under the hood, Claude runs something like the following &lt;code&gt;pixelshot&lt;/code&gt; command via Bash:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Screenshot a URL (tile height optimized to 1568px for Claude's vision model)&lt;/span&gt;
pixelshot https://example.com &lt;span class="nt"&gt;--output&lt;/span&gt; /tmp/pixelbrowse &lt;span class="nt"&gt;--tile-height&lt;/span&gt; 1568 &lt;span class="nt"&gt;--wait-network-idle&lt;/span&gt;

&lt;span class="c"&gt;# Process multiple URLs in parallel&lt;/span&gt;
pixelshot url1 url2 &lt;span class="nt"&gt;--output&lt;/span&gt; /tmp/pixelbrowse &lt;span class="nt"&gt;--tile-height&lt;/span&gt; 1568 &lt;span class="nt"&gt;--wait-network-idle&lt;/span&gt; &lt;span class="nt"&gt;--workers&lt;/span&gt; 4

&lt;span class="c"&gt;# Render a PDF&lt;/span&gt;
pixelshot document.pdf &lt;span class="nt"&gt;--output&lt;/span&gt; /tmp/pixelbrowse
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output is saved with a naming pattern like &lt;code&gt;/tmp/pixelbrowse/&amp;lt;domain&amp;gt;.png.tiles/tile_0000.jpg&lt;/code&gt;, and Claude reads it in as an image to understand the content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gotchas, troubleshooting, and where this is useful
&lt;/h2&gt;

&lt;p&gt;The following notes come straight from the official SKILL.md and matter in practice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Forgetting &lt;code&gt;--wait-network-idle&lt;/code&gt; gives you a blank page&lt;/strong&gt;&lt;br&gt;
Sites that render via JavaScript will get captured before they've finished loading if you skip this flag, leaving you with an empty screenshot. Always include it when targeting a URL.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stick with the default &lt;code&gt;--tile-height&lt;/code&gt; of 1568px&lt;/strong&gt;&lt;br&gt;
Claude's vision models downscale images whose long edge exceeds 1568px (Sonnet/Haiku) or 2576px (Opus) before processing them. Leave the default at 8192px and the text becomes too compressed to read.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If text is too small to read, crop and re-read it&lt;/strong&gt;&lt;br&gt;
The official workflow is to crop the relevant region with Pillow and feed it back through the Read tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where PixelRAG is useful&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Searching specs, IR documents, and anything else with tables and charts that text extraction tends to mangle&lt;/li&gt;
&lt;li&gt;Checking your own site's UI for visual bugs (e.g. "screenshot &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt; and tell me if anything looks broken")&lt;/li&gt;
&lt;li&gt;Understanding papers or scanned PDFs where layout carries meaning&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;PixelRAG specializes in exactly what traditional text RAG struggles with: searching documents while preserving tables, diagrams, and layout.&lt;/p&gt;

&lt;p&gt;Wiring it into Claude Code doesn't require an MCP server at all — it's a skill-only setup that comes down to a single &lt;code&gt;pixelshot&lt;/code&gt; command. Before using it in production, check the official repo for the latest status.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Official repo: &lt;a href="https://github.com/StarTrail-org/PixelRAG" rel="noopener noreferrer"&gt;https://github.com/StarTrail-org/PixelRAG&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Official site: &lt;a href="https://pixelrag.ai" rel="noopener noreferrer"&gt;https://pixelrag.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Plugin-only README: &lt;a href="https://github.com/StarTrail-org/PixelRAG/blob/main/plugin/README.md" rel="noopener noreferrer"&gt;https://github.com/StarTrail-org/PixelRAG/blob/main/plugin/README.md&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;📌 This post reflects information as of August 2026. Since Claude Code updates frequently, check the official docs for the latest specifics.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;This article was edited with AI assistance.&lt;br&gt;
*Originally published in Japanese on &lt;a href="https://highreso.jp/edgehub/machinelearning/pixelrag.html?utm_source=devto" rel="noopener noreferrer"&gt;EdgeHUB&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>rag</category>
      <category>python</category>
      <category>ai</category>
    </item>
    <item>
      <title>Building a Custom MCP Server for Claude Code — A Fortune-Telling Tool with FastMCP</title>
      <dc:creator>GridPort</dc:creator>
      <pubDate>Thu, 13 Aug 2026 15:04:18 +0000</pubDate>
      <link>https://dev.to/gridport/building-a-custom-mcp-server-for-claude-code-a-fortune-telling-tool-with-fastmcp-2j0d</link>
      <guid>https://dev.to/gridport/building-a-custom-mcp-server-for-claude-code-a-fortune-telling-tool-with-fastmcp-2j0d</guid>
      <description>&lt;p&gt;"MCP servers sound complicated" — if that's your reaction, FastMCP might change your mind. It handles almost all the plumbing for you. Add one decorator to a plain Python function, and you've got a custom tool Claude Code can call.&lt;/p&gt;

&lt;p&gt;In this post, we'll build a small fortune-telling tool as a learning exercise, and walk through what FastMCP is actually doing for you along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is MCP, anyway?
&lt;/h2&gt;

&lt;p&gt;MCP (Model Context Protocol) is a common standard for giving AI models like Claude "external tools" to work with.&lt;/p&gt;

&lt;p&gt;An AI model itself is great at generating text, but on its own it can't do concrete things like "tell today's fortune based on the date" or "query an internal database."&lt;/p&gt;

&lt;p&gt;That's where an MCP server comes in: you register callable tools on it, and Claude Code invokes them whenever it needs to.&lt;/p&gt;

&lt;p&gt;Hand-writing an MCP server from scratch is a fair amount of work, but with FastMCP you can build a working fortune-telling tool that Claude Code can call in just a few dozen lines of code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why FastMCP makes this easy
&lt;/h3&gt;

&lt;p&gt;Normally, an MCP server has to implement a lot of low-level protocol details — what message format to use, how to advertise the list of available tools, and so on. FastMCP takes care of all that "plumbing" for you.&lt;/p&gt;

&lt;p&gt;All you do as a developer is write a normal Python function and mark it with &lt;code&gt;@mcp.tool&lt;/code&gt;. FastMCP inspects the function's argument types and return type to auto-generate the schema (the "instruction manual") that gets handed to the AI. Since none of the transport or protocol details are something you need to think about, anyone who's written a basic web app can have their first tool running in a few minutes.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note on decorator syntax&lt;/strong&gt;: the standalone &lt;code&gt;fastmcp&lt;/code&gt; package (what we're using here) accepts a bare &lt;code&gt;@mcp.tool&lt;/code&gt;, no parentheses needed. If you're instead using the &lt;code&gt;MCPServer&lt;/code&gt; bundled with the official &lt;code&gt;mcp&lt;/code&gt; Python SDK, the decorator requires parentheses: &lt;code&gt;@mcp.tool()&lt;/code&gt;. Mixing the two up is a common source of confusing errors, so if you copy code from a different MCP tutorial, double-check which package it's using.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Setting up the Python environment
&lt;/h2&gt;

&lt;p&gt;You'll need Python 3.10 or later.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If it's not installed, grab it from &lt;a href="https://www.python.org/" rel="noopener noreferrer"&gt;python.org&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Then create and activate a virtual environment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# macOS / Linux&lt;/span&gt;
python &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv
&lt;span class="nb"&gt;source &lt;/span&gt;venv/bin/activate

&lt;span class="c"&gt;# Windows&lt;/span&gt;
python &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv
venv&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\a&lt;/span&gt;ctivate.bat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once activated, you should see &lt;code&gt;(venv)&lt;/code&gt; at the start of your prompt.&lt;/p&gt;

&lt;p&gt;Install FastMCP:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;fastmcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it — no database, no config files.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the fortune-telling tool
&lt;/h2&gt;

&lt;p&gt;Create a project folder and, inside it, a &lt;code&gt;server.py&lt;/code&gt; file with the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;fastmcp&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;FastMCP&lt;/span&gt;

&lt;span class="c1"&gt;# Create the server ("uranai" is Japanese for "fortune-telling" — the name of this tool group)
&lt;/span&gt;&lt;span class="n"&gt;mcp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;FastMCP&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;uranai&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nd"&gt;@mcp.tool&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;fortune&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;birthday&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Tells today&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s fortune based on a name (and optionally a birthday).&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="c1"&gt;# Seed the RNG with name + birthday + today's date, so the result
&lt;/span&gt;    &lt;span class="c1"&gt;# stays the same for a given person on a given day, but changes daily.
&lt;/span&gt;    &lt;span class="n"&gt;seed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;|&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;birthday&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;|&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;today&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;isoformat&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;rng&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Random&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;seed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;levels&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Great luck&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Good luck&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Modest luck&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Luck&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Fading luck&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bad luck&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;items&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;reading a book&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;taking a walk&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;coffee&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sleeping early&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;a new app&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cleaning&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;colors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;red&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;blue&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;green&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;yellow&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;white&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;purple&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="nf"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Today&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s fortune for &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Fortune: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;rng&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;levels&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Lucky activity: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;rng&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Lucky color: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;rng&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;colors&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Lucky number: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;rng&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;randint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;49&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;mcp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three things matter here:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;FastMCP("uranai")&lt;/code&gt; creates the server instance.&lt;/li&gt;
&lt;li&gt;Adding &lt;code&gt;@mcp.tool&lt;/code&gt; to the function is all it takes to turn it into something Claude can call.&lt;/li&gt;
&lt;li&gt;The docstring (the &lt;code&gt;"""..."""&lt;/code&gt; part) is what the AI reads to decide &lt;em&gt;when&lt;/em&gt; to use this tool — write it clearly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The trick worth noting is seeding the random number generator with today's date. That gives you fortune-telling-app behavior for free: the same person gets the same result if asked again on the same day, and a different result the next day.&lt;/p&gt;

&lt;h2&gt;
  
  
  Starting the server
&lt;/h2&gt;

&lt;p&gt;From the project directory, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python server.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If it starts without errors, you're ready to connect it to Claude Code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting to Claude Code
&lt;/h2&gt;

&lt;p&gt;If you don't have the Claude Code CLI installed yet, install it first — see the &lt;a href="https://code.claude.com/docs/en/installation" rel="noopener noreferrer"&gt;official installation docs&lt;/a&gt; for your platform (macOS, Linux, or Windows).&lt;/p&gt;

&lt;p&gt;Then register the server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add uranai &lt;span class="nt"&gt;--&lt;/span&gt; python /path/to/server.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;/path/to/server.py&lt;/code&gt; with the actual path (if you're using a virtual environment, point to that environment's Python executable to be safe).&lt;/p&gt;

&lt;p&gt;Restart or reload Claude Code, and the &lt;code&gt;uranai&lt;/code&gt; server should be recognized. You can check connection status with the &lt;code&gt;/mcp&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;If you're using the Claude desktop app instead, add this to your config file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;macOS: &lt;code&gt;~/Library/Application Support/Claude/claude_desktop_config.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Windows: &lt;code&gt;%APPDATA%\Claude\claude_desktop_config.json&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"uranai"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/path/to/venv/bin/python"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"/path/to/uranai/server.py"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(On Windows, &lt;code&gt;command&lt;/code&gt; would instead point to something like &lt;code&gt;C:\\Users\\yourname\\uranai\\venv\\Scripts\\python.exe&lt;/code&gt;.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it out
&lt;/h2&gt;

&lt;p&gt;Open Claude Code, ask it for your fortune, and approve the tool call when prompted. You should get back a fortune generated by your own tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ideas for taking it further
&lt;/h2&gt;

&lt;p&gt;Once the basics work, adding more tools is just a matter of writing another function and decorating it with &lt;code&gt;@mcp.tool&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tarot / omikuji mode&lt;/strong&gt;: expand the pool of results and messages for more variety.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zodiac-based fortunes&lt;/strong&gt;: parse the birthday into a zodiac sign and tailor results accordingly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;External API integration&lt;/strong&gt;: pull in weather or calendar data to add some real-world flavor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persisting results&lt;/strong&gt;: log fortune history to a file or database.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If things get heavier — image generation, larger-scale analysis — you don't have to run this on your laptop. You could offload the compute to a GPU cloud instance and expose the MCP server from there instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;With FastMCP, building an MCP server comes down to "write a Python function, add &lt;code&gt;@mcp.tool&lt;/code&gt;." We walked through the whole loop here — environment setup, writing the tool, connecting it to Claude Code, and confirming it works — using a fortune-telling tool as the example.&lt;/p&gt;

&lt;p&gt;The same pattern scales to far more useful things: wrapping internal tools, automating repetitive tasks, and more. Fortune-telling is just the toy example — try swapping in your own idea next.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;📌 This post reflects Claude Code's behavior as of June 2026. Since Claude Code updates frequently, check the &lt;a href="https://code.claude.com/docs/en/commands" rel="noopener noreferrer"&gt;official docs&lt;/a&gt; for the latest details.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;This article was edited with AI assistance.&lt;br&gt;
*Originally published in Japanese on &lt;a href="https://highreso.jp/edgehub/wordgenerationai/claude-mcp.html?utm_source=devto" rel="noopener noreferrer"&gt;EdgeHUB&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>mcp</category>
      <category>python</category>
      <category>ai</category>
    </item>
    <item>
      <title>6 Claude Code Skills You Should Actually Install (2026 Edition)</title>
      <dc:creator>GridPort</dc:creator>
      <pubDate>Mon, 10 Aug 2026 04:58:48 +0000</pubDate>
      <link>https://dev.to/gridport/6-claude-code-skills-you-should-actually-install-2026-edition-4k24</link>
      <guid>https://dev.to/gridport/6-claude-code-skills-you-should-actually-install-2026-edition-4k24</guid>
      <description>&lt;p&gt;Claude Code now has dozens of skills and plugins available, both official and community-built. Installing them indiscriminately backfires: when several skills cover the same territory, Claude has to guess which one to use, and that guesswork shows up as unpredictable behavior.&lt;/p&gt;

&lt;p&gt;Based on what's available as of July 2026, this post narrows the field down to 6 skills that actually move the needle in day-to-day work, along with the selection criteria behind the picks and the install commands. It also covers what to watch for when rolling these out to a team.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 6 skills at a glance
&lt;/h2&gt;

&lt;p&gt;A typical dev cycle runs design → implementation → review → security → testing, then loops back to design. Each of the 6 skills below maps to one of these phases.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A[Design&amp;lt;br/&amp;gt;skill-creator] --&amp;gt; B[Implementation UI&amp;lt;br/&amp;gt;frontend-design]
    B --&amp;gt; C[Review&amp;lt;br/&amp;gt;code-review]
    C --&amp;gt; D[Security&amp;lt;br/&amp;gt;security-guidance]
    D --&amp;gt; E[Testing&amp;lt;br/&amp;gt;playwright]
    E --&amp;gt; A&lt;/code&gt;&lt;/pre&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;th&gt;Phase&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;superpowers&lt;/td&gt;
&lt;td&gt;Development discipline&lt;/td&gt;
&lt;td&gt;Forces steps like "clarify requirements before writing code" and "identify root cause before fixing a bug"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;skill-creator&lt;/td&gt;
&lt;td&gt;Design (meta: builds skills)&lt;/td&gt;
&lt;td&gt;Walks you through a Q&amp;amp;A to generate a custom SKILL.md for your own workflows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;frontend-design&lt;/td&gt;
&lt;td&gt;Implementation (UI)&lt;/td&gt;
&lt;td&gt;Generates frontends with a deliberate aesthetic direction instead of generic "AI-looking" UI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;security-guidance&lt;/td&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;Detects roughly 25 vulnerability patterns in real time on every edit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;playwright&lt;/td&gt;
&lt;td&gt;Testing&lt;/td&gt;
&lt;td&gt;Drives a browser to run E2E tests and verify behavior&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;discord&lt;/td&gt;
&lt;td&gt;Notifications / remote control&lt;/td&gt;
&lt;td&gt;Sends run notifications and lets you operate Claude Code remotely from your phone&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Three criteria guided this selection:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Keep exactly one skill per phase.&lt;/strong&gt;&lt;br&gt;
Installing multiple skills that cover the same phase makes Claude hesitate over which one to invoke, which leads to unpredictable behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prefer official or well-established plugins.&lt;/strong&gt;&lt;br&gt;
A SKILL.md someone wrote as a side project is riskier to depend on than something maintained by Anthropic or widely used across the ecosystem (high weekly install counts, for example) — the latter is more likely to keep being maintained.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start with these 6, add more only when you actually need to.&lt;/strong&gt;&lt;br&gt;
Add anything beyond this baseline only once you hit a task you find yourself repeating almost identically every time. Things like test generation, changelog formatting, or company-specific checklists are worth building yourself with skill-creator — but only after you've used the core 6 enough to know exactly what you need.&lt;/p&gt;
&lt;h2&gt;
  
  
  The 6 skills in detail
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. superpowers (enforces development discipline)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does&lt;/strong&gt;: Claude Code tends to jump straight into implementation, skipping requirements clarification and root-cause analysis. Superpowers forces steps like "clarify requirements before adding a feature" and "identify the root cause before fixing a bug." Built by developer Jesse Vincent, it was added to the official plugin marketplace in January 2026.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/plugin &lt;span class="nb"&gt;install &lt;/span&gt;superpowers@claude-plugins-official
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: No special invocation is needed after install — just ask Claude to implement something as usual, and it will automatically walk through clarify requirements → design → implement → test. If you only want a specific phase, like brainstorming or test-driven development, you can call the relevant sub-skill directly, e.g. &lt;code&gt;/superpowers:brainstorming&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. skill-creator (a skill for building skills)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does&lt;/strong&gt;: Walks you through an interactive Q&amp;amp;A to build a SKILL.md tailored to your own team's workflows. This is an official Anthropic plugin, and one of the most widely used skills in the ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/plugin &lt;span class="nb"&gt;install &lt;/span&gt;skill-creator@claude-plugins-official
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: Typing &lt;code&gt;/skill-creator&lt;/code&gt; starts an interactive Q&amp;amp;A. Answer questions about the goal of the skill you want, expected inputs, and expected outputs, and it generates a SKILL.md template. Save it under &lt;code&gt;.claude/skills/&lt;/code&gt;, then call it with &lt;code&gt;/skill-name&lt;/code&gt; to test and refine it. It's best to build one skill per purpose — e.g., a standardized meeting-notes format or a code review checklist — rather than one catch-all skill.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. frontend-design (frontend UI generation)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does&lt;/strong&gt;: Instead of generic "AI-looking" defaults, this generates UI with a deliberate aesthetic — brutalism, glassmorphism, and so on. It's an official Anthropic skill with a large install base.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/plugin &lt;span class="nb"&gt;install &lt;/span&gt;frontend-design@claude-plugins-official
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: When asking for UI, be explicit about both the skill and the style you want — e.g., "Using the frontend-design skill, build an admin dashboard with a brutalist aesthetic." Follow-up nudges like "make it more monochrome" or "give it more whitespace" refine the result while keeping the original direction.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. security-guidance (security scanning)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does&lt;/strong&gt;: On every code edit, it scans for roughly 25 vulnerability patterns — injection, unsafe deserialization, dangerous DOM API usage, and more — using regex-based real-time detection. It also layers in an LLM-based diff review at the end of each turn and a cross-file review at commit time, for a three-tier check. This is a free, official Anthropic plugin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/plugin &lt;span class="nb"&gt;install &lt;/span&gt;security-guidance@claude-plugins-official
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: No explicit invocation is needed — a background scan runs automatically on every edit. When it flags a vulnerability, it proposes a fix on the spot, which you can review and choose to apply. If you'd rather batch a review before committing, you can also ask it to actively review a specific scope of changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. playwright (browser automation)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does&lt;/strong&gt;: Drives a browser to handle navigation, form input, screenshots, and console log inspection. There are two ways to install it: Microsoft's official Playwright MCP, or a CLI+Skill setup (&lt;code&gt;playwright-cli install --skills&lt;/code&gt;) that's more token-efficient.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# MCP approach&lt;/span&gt;
claude mcp add playwright

&lt;span class="c"&gt;# CLI+Skill approach&lt;/span&gt;
playwright-cli &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--skills&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: With the MCP approach, register it with &lt;code&gt;claude mcp add playwright&lt;/code&gt;, then ask Claude to test something like a login form — it will drive the browser and return screenshots and results. With the CLI+Skill approach, call &lt;code&gt;/playwright&lt;/code&gt; after install and specify the test scenario step by step.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Discord (notifications / remote control)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does&lt;/strong&gt;: Sends Claude Code's run results to Discord, and lets you pair with a bot via DM to remotely generate code or manipulate files from your phone. It combines an MCP server with Agent Skills.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/plugin &lt;span class="nb"&gt;install &lt;/span&gt;discord@claude-plugins-official
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: After installing, DM the bot on Discord and it replies with a pairing code. Enter that code in Claude Code to complete the link. From there, the &lt;code&gt;/discord&lt;/code&gt; command handles run notifications and lets you remotely generate code or manipulate files via Discord.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rolling this out to a team
&lt;/h2&gt;

&lt;p&gt;Commit skills to the project-level &lt;code&gt;.claude/skills/&lt;/code&gt; directory rather than your personal home directory (&lt;code&gt;~/.claude/skills/&lt;/code&gt;), so the whole team shares the same 6 skills.&lt;/p&gt;

&lt;p&gt;For production repos where you want to avoid Claude auto-triggering a skill at an unintended moment, set &lt;code&gt;disable-model-invocation: true&lt;/code&gt; in the SKILL.md frontmatter. This disables Claude's automatic invocation from conversational context, restricting it to explicit &lt;code&gt;/skill-name&lt;/code&gt; calls only.&lt;/p&gt;

&lt;p&gt;security-guidance is designed with the assumption that it will produce some false positives, so it's worth agreeing as a team on how much to trust its findings. Discord involves managing bot tokens and notification channels, so decide in advance who's allowed to notify or operate through which channel. It's also worth restricting which marketplaces are allowed for installs — official (&lt;code&gt;claude-plugins-official&lt;/code&gt;) or internally vetted ones only.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;Once these 6 skills cover discipline, design, implementation, security, testing, and notifications, the next step is to use skill-creator to turn your own team's repeated workflows into SKILL.md files.&lt;/p&gt;

&lt;p&gt;The generic skills above won't catch your company's specific review standards or release process — and that's exactly where building your own skills pays off the most.&lt;/p&gt;

&lt;p&gt;For more on how skills work under the hood, see the &lt;a href="https://code.claude.com/docs/en/skills" rel="noopener noreferrer"&gt;official Claude Code docs&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;📌 This post reflects information as of July 2026. Claude Code updates frequently, so check the official docs for the latest specifics.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;This article was edited with AI assistance.&lt;br&gt;
*Originally published in Japanese on &lt;a href="https://highreso.jp/edgehub/wordgenerationai/claude-code-skill6.html?utm_source=devto" rel="noopener noreferrer"&gt;EdgeHUB&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>claudecode</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to Run MiniMax H3 on 16GB VRAM with ComfyUI</title>
      <dc:creator>GridPort</dc:creator>
      <pubDate>Thu, 06 Aug 2026 03:09:48 +0000</pubDate>
      <link>https://dev.to/gridport/how-to-use-minimax-h3-comfyui-setup-for-local-and-cloud-generation-20hh</link>
      <guid>https://dev.to/gridport/how-to-use-minimax-h3-comfyui-setup-for-local-and-cloud-generation-20hh</guid>
      <description>&lt;p&gt;On August 3, 2026, MiniMax H3 was released with open weights, and ComfyUI shipped native support for it on the same day.&lt;/p&gt;

&lt;p&gt;It's a next-generation model that handles text, images, and audio together, generating video with stereo audio — but there are some practical caveats that official blog posts and early reviews haven't covered much: the resolution ceiling for local runs, and regional restrictions in the commercial license.&lt;/p&gt;

&lt;p&gt;This article covers setup on ComfyUI 0.30.0+, model selection by VRAM, how to use the three workflows (T2V/I2V/R2V), and licensing caveats, as of August 2026.&lt;/p&gt;

&lt;p&gt;In my testing, the pruned INT8 diffusion model combined with the NVFP4 AWQ text encoder allowed MiniMax H3 to run on a GPU with 16GB of VRAM. Depending on your environment, you may still need to adjust settings such as resolution and video duration.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is MiniMax H3?
&lt;/h2&gt;

&lt;p&gt;MiniMax H3 is a video generation model released with open weights by China's MiniMax on August 3, 2026.&lt;/p&gt;

&lt;p&gt;It's the third generation of the Hailuo series, and the first model the company has released weights for. ComfyUI added native support on release day.&lt;/p&gt;

&lt;p&gt;Key specs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model architecture&lt;/strong&gt;: 33.1B-parameter single-stream omni transformer (about 13B of that is in AdaLN-modulation branches, which don't need to be loaded for inference-only use)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text encoder&lt;/strong&gt;: Qwen3-VL-32B&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output&lt;/strong&gt;: up to 15 seconds, 24fps, with stereo audio&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supported tasks&lt;/strong&gt;: Text-to-Video (T2V), Image-to-Video (I2V, with start/end frame specification), Reference-to-Video (R2V)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supported languages&lt;/strong&gt;: 11 languages, including Japanese&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Checkpoints&lt;/strong&gt;: two families — FL2VA (handles T2V/I2V) and Ref2VA (handles reference-driven R2V)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started with MiniMax H3 in ComfyUI
&lt;/h2&gt;

&lt;p&gt;Here's how to get MiniMax H3 running locally in ComfyUI, from setup through generation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Update ComfyUI to the latest version
&lt;/h3&gt;

&lt;p&gt;Launch ComfyUI and update to the latest version before proceeding. Once the update finishes, move on to installing the model data.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Get the model data
&lt;/h3&gt;

&lt;p&gt;Next, download the model data needed for video generation.&lt;/p&gt;

&lt;p&gt;The model is distributed via the &lt;a href="https://huggingface.co/Comfy-Org/MiniMax-H3" rel="noopener noreferrer"&gt;Comfy-Org/MiniMax-H3&lt;/a&gt; repository on Hugging Face. MiniMax's official repo (&lt;code&gt;MiniMaxAI/MiniMax-H3&lt;/code&gt;) contains every precision and format, weighing in at around 498GB — but if you only download the files ComfyUI actually needs, it's more like a few dozen GB.&lt;/p&gt;

&lt;p&gt;You need three pieces of model data for video generation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Video model data&lt;/li&gt;
&lt;li&gt;Text encoder&lt;/li&gt;
&lt;li&gt;VAE&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you load the workflow, a list of required downloads appears. Download them in order, or use these commands to grab everything at once:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Video model data&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;ComfyUI/models/diffusion_models
wget https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/diffusion_models/minimax_h3_fl2va_pruned_int8_convrot.safetensors

&lt;span class="c"&gt;# Text encoder&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;ComfyUI/models/text_encoders
wget https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/text_encoders/qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors

&lt;span class="c"&gt;# VAE&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;ComfyUI/models/vae
wget https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_audio_vae_fp32.safetensors
wget https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_video_vae_fp16.safetensors
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Launch ComfyUI and open the workflow
&lt;/h3&gt;

&lt;p&gt;This guide uses the official combined workflow.&lt;/p&gt;

&lt;p&gt;Download the &lt;a href="https://docs.comfy.org/tutorials/video/minimax/minimax-h3" rel="noopener noreferrer"&gt;official workflow&lt;/a&gt; from Comfy's docs.&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%2F6kyszmhymb5phhrwuzk9.webp" 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%2F6kyszmhymb5phhrwuzk9.webp" alt="ComfyUI Native Workflows page showing the MiniMax H3 Text-to-Video download button" width="493" height="600"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;(Source: &lt;a href="https://docs.comfy.org/tutorials/video/minimax/minimax-h3" rel="noopener noreferrer"&gt;docs.comfy.org&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Drag and drop the downloaded workflow file into the ComfyUI canvas, then confirm the nodes have loaded correctly.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 4: Enter a prompt and start generation (T2V)
&lt;/h3&gt;

&lt;p&gt;MiniMax H3's text-to-video mode can produce high-quality video from a fairly simple prompt.&lt;/p&gt;

&lt;p&gt;Write your scene description in natural language in the prompt field, then click the "▷Queue" button to start generation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Video generated with MiniMax H3 (ComfyUI):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/W_5cgfkfZyU" width="100%" height="390"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt used:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Emotional anime character film. The girl from Picture 1 in her original scene: a warm sunlit wooden hallway indoors, lit by dramatic warm golden backlight and soft ambient fill, deep soft shadow falloff into rich amber tones. Warm monochromatic palette with golden light and soft blue accents from her eyes. Emotional motif: a desperately reaching hand and a single falling tear. The environment is constant throughout.&lt;/p&gt;

&lt;p&gt;SHOT 1: The scene opens exactly on Picture 1, the girl reaching desperately toward the camera; her eyes well with tears as the golden backlight pulses slightly brighter, dust motes drifting past as the camera executes a slow, deliberate push-in on her straining fingers and glistening eyes.&lt;/p&gt;

&lt;p&gt;SHOT 2: Cut to an extreme close-up profile as her tear finally spills down her flushed cheek; the camera glides slowly alongside her face as loose strands of hair sweep across in the warm draft, her collar and necktie trembling faintly.&lt;/p&gt;

&lt;p&gt;SHOT 3: Cut to a low, tilted wide shot: she loses her balance and tips forward, her twin tails sweeping wildly, the retreating figure's footstep fading further out of frame; the warm light flares gently along her damp eyes before the frame settles into a soft freeze as her hand falls just short.&lt;/p&gt;

&lt;p&gt;Audio: soft ambient room tone, a trembling desperate breath, rustling fabric and a faint hair ornament chime, receding footsteps on wood, and a swelling emotional piano-and-strings score that resolves to a hushed, breathless quiet on the final beat.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 5: Generate video from an image (I2V)
&lt;/h3&gt;

&lt;p&gt;MiniMax H3 can also generate video using a single reference image.&lt;/p&gt;

&lt;p&gt;The workflow is available on the same &lt;a href="https://docs.comfy.org/tutorials/video/minimax/minimax-h3" rel="noopener noreferrer"&gt;official workflow&lt;/a&gt; page.&lt;/p&gt;

&lt;p&gt;Structure your prompt by shot (SHOT 1–3), then click "▷Queue" to start generation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Video generated with I2V:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/d8H06Pf2o10" width="100%" height="390"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Errors and Fixes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;MiniMax H3 nodes don't show up in ComfyUI&lt;/strong&gt;&lt;br&gt;
Your ComfyUI version is older than 0.30.0. Update to the latest version. Note that Desktop and Cloud versions track stable releases, so the update may lag behind.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Running out of VRAM / high memory usage&lt;/strong&gt;&lt;br&gt;
Use pruned int8 instead of bf16 for the diffusion model, and nvfp4 AWQ for the text encoder. If it's still tight, lower the megapixel count in the Resolution Selector or shorten the duration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Generation fails at low resolutions like 256p&lt;/strong&gt;&lt;br&gt;
MiniMax H3's minimum resolution is 384p. Anything at or below 256p will fail — pick from the resolution presets in the template instead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No audio in the output video&lt;/strong&gt;&lt;br&gt;
Check that both &lt;code&gt;minimax_h3_video_vae_fp16.safetensors&lt;/code&gt; (video) and &lt;code&gt;minimax_h3_audio_vae_fp32.safetensors&lt;/code&gt; (audio) are loaded, and that the &lt;code&gt;VAEDecodeAudio&lt;/code&gt; node is connected to the &lt;code&gt;SaveVideo&lt;/code&gt; node.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not sure which checkpoint to use for I2V&lt;/strong&gt;&lt;br&gt;
Use the FL2VA family for T2V and I2V (including start/end frame specification), and the Ref2VA family for reference-driven R2V. These are separate weights — the workflow won't function correctly if you mix them up.&lt;/p&gt;

&lt;h2&gt;
  
  
  MiniMax H3 Licensing and Commercial Use
&lt;/h2&gt;

&lt;p&gt;MiniMax H3 is released under a custom license called the "MiniMax H3 Community License."&lt;/p&gt;

&lt;p&gt;The main terms confirmed at the time of writing are as follows:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Details&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Applicable Territory&lt;/td&gt;
&lt;td&gt;Available worldwide, except for "Excluded Territories": the EU, UK, South Korea, and the US&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Japan&lt;/td&gt;
&lt;td&gt;Not listed as an Excluded Territory. Under the current license, both use and commercial use within Japan appear to be within scope&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Commercial use&lt;/td&gt;
&lt;td&gt;Permitted free of charge, but the "MiniMax H3" attribution must be displayed in the commercial product's UI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Revenue threshold&lt;/td&gt;
&lt;td&gt;If annual revenue exceeds $20 million, separate written permission from MiniMax is required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Other&lt;/td&gt;
&lt;td&gt;Using outputs to improve other AI models (e.g. distillation) is prohibited. Redistribution requires marking modified files and including a NOTICE file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Governing law&lt;/td&gt;
&lt;td&gt;Hong Kong SAR law&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;(Information as of August 2026.)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This regional-restriction clause has been a talking point on overseas technical blogs covering MiniMax H3.&lt;br&gt;
If you're planning to integrate it into a commercial service, check the original license text (the &lt;a href="https://huggingface.co/MiniMaxAI/MiniMax-H3/blob/main/LICENSE" rel="noopener noreferrer"&gt;LICENSE file on Hugging Face&lt;/a&gt;) with your legal team before making a decision.&lt;/p&gt;

&lt;p&gt;Nothing in this article constitutes legal advice.&lt;/p&gt;

&lt;p&gt;MiniMax H3/LICENSE: &lt;a href="https://huggingface.co/MiniMaxAI/MiniMax-H3/blob/main/LICENSE" rel="noopener noreferrer"&gt;https://huggingface.co/MiniMaxAI/MiniMax-H3/blob/main/LICENSE&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;This covered how to use MiniMax H3, the latest release in open video generation models.&lt;/p&gt;

&lt;p&gt;It's one of the most capable open-weight video generation models currently available, and it's well worth exploring while it's still fresh.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was edited with AI assistance.&lt;br&gt;
*Originally published in Japanese on &lt;a href="https://highreso.jp/edgehub/moviegenerationai/minimax-h3.html?utm_source=devto" rel="noopener noreferrer"&gt;EdgeHUB&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>comfyui</category>
      <category>ai</category>
      <category>videogeneration</category>
      <category>minimax</category>
    </item>
    <item>
      <title>I Reviewed 100 Reddit Threads About GPU Clouds. Price Was Only Part of the Story.</title>
      <dc:creator>GridPort</dc:creator>
      <pubDate>Tue, 04 Aug 2026 11:07:58 +0000</pubDate>
      <link>https://dev.to/highreso/i-reviewed-100-reddit-threads-about-gpu-clouds-price-was-only-part-of-the-story-n98</link>
      <guid>https://dev.to/highreso/i-reviewed-100-reddit-threads-about-gpu-clouds-price-was-only-part-of-the-story-n98</guid>
      <description>&lt;p&gt;When engineers compare GPU clouds, the conversation usually starts with three familiar numbers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPU model&lt;/li&gt;
&lt;li&gt;VRAM&lt;/li&gt;
&lt;li&gt;Hourly price&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those numbers matter.&lt;/p&gt;

&lt;p&gt;But they do not always tell us whether a workload will actually finish efficiently.&lt;/p&gt;

&lt;p&gt;A cheap GPU can become expensive when a failed job has to be repeated. A more powerful GPU can still produce a slower workflow when storage, system RAM, model loading, or data transfer becomes the bottleneck.&lt;/p&gt;

&lt;p&gt;To understand what engineers actually care about, we reviewed 100 unique Reddit threads about GPU infrastructure decisions published between January 2025 and July 2026.&lt;/p&gt;

&lt;p&gt;The discussions covered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Model training and fine-tuning&lt;/li&gt;
&lt;li&gt;LLM inference&lt;/li&gt;
&lt;li&gt;ComfyUI and image generation&lt;/li&gt;
&lt;li&gt;Private LLM deployments&lt;/li&gt;
&lt;li&gt;Managed APIs&lt;/li&gt;
&lt;li&gt;Rented GPU instances&lt;/li&gt;
&lt;li&gt;Local hardware&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most surprising result was this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Price was the primary pain point in 23 of the 100 threads. However, in 74 threads, cost was not the primary decision criterion.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Price was important, but it was only the beginning of the decision.&lt;/p&gt;

&lt;p&gt;Here are three patterns that stood out.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Cheapest GPU Can Produce an Expensive Workflow
&lt;/h2&gt;

&lt;p&gt;Hourly pricing is easy to compare.&lt;/p&gt;

&lt;p&gt;The cost of completing a workload is much harder.&lt;/p&gt;

&lt;p&gt;The real cost may also include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Failed runs&lt;/li&gt;
&lt;li&gt;Repeated environment setup&lt;/li&gt;
&lt;li&gt;Persistent storage&lt;/li&gt;
&lt;li&gt;Idle instances&lt;/li&gt;
&lt;li&gt;Data transfer&lt;/li&gt;
&lt;li&gt;Engineering time&lt;/li&gt;
&lt;li&gt;Troubleshooting and recovery work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In one discussion, a user tried multiple low-cost marketplace instances for a fine-tuning job.&lt;/p&gt;

&lt;p&gt;Crashes, failed downloads, and unusable environments consumed both time and budget without completing the intended work.&lt;/p&gt;

&lt;p&gt;Other users described the opposite decision. They continued paying more for a managed platform because its templates and simpler setup saved enough time to justify the higher hourly rate.&lt;/p&gt;

&lt;p&gt;The relevant unit is therefore not always the GPU hour.&lt;/p&gt;

&lt;p&gt;It may be the &lt;strong&gt;completed workload&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. A Faster GPU Does Not Guarantee a Faster Workflow
&lt;/h2&gt;

&lt;p&gt;A workload does not run on a GPU specification alone.&lt;/p&gt;

&lt;p&gt;It runs on a complete system.&lt;/p&gt;

&lt;p&gt;In one discussion, a cloud RTX 5090 produced a slower end-to-end image-generation workflow than a local RTX 5070 Ti.&lt;/p&gt;

&lt;p&gt;The cloud GPU was more powerful, but several models had to be loaded repeatedly during the workflow.&lt;/p&gt;

&lt;p&gt;Other discussions showed that having enough VRAM did not always mean that a workload would run successfully.&lt;/p&gt;

&lt;p&gt;Performance and compatibility could also depend on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;System RAM&lt;/li&gt;
&lt;li&gt;Storage throughput&lt;/li&gt;
&lt;li&gt;Model-loading behavior&lt;/li&gt;
&lt;li&gt;Network transfer&lt;/li&gt;
&lt;li&gt;CPU performance&lt;/li&gt;
&lt;li&gt;Container restrictions&lt;/li&gt;
&lt;li&gt;Regional host configuration&lt;/li&gt;
&lt;li&gt;Software compatibility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The best GPU on paper is not necessarily the best environment for the actual job.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Engineers Choose Environments, Not Just GPUs
&lt;/h2&gt;

&lt;p&gt;GPU clouds are also working environments.&lt;/p&gt;

&lt;p&gt;They must be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configured&lt;/li&gt;
&lt;li&gt;Stopped&lt;/li&gt;
&lt;li&gt;Restarted&lt;/li&gt;
&lt;li&gt;Preserved&lt;/li&gt;
&lt;li&gt;Monitored&lt;/li&gt;
&lt;li&gt;Reproduced&lt;/li&gt;
&lt;li&gt;Recovered&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One developer described repeatedly spending around 30 minutes comparing providers, connecting through SSH, and installing tools before testing a model.&lt;/p&gt;

&lt;p&gt;Forgotten instances also created billing risk.&lt;/p&gt;

&lt;p&gt;Another user destroyed instances after every session to avoid ongoing storage charges. However, destroying the instance also removed the configured environment, creating additional work to preserve and restore progress.&lt;/p&gt;

&lt;p&gt;This is why operational questions often become important:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can compute stop without deleting the workspace?&lt;/li&gt;
&lt;li&gt;Are storage charges easy to understand?&lt;/li&gt;
&lt;li&gt;Can checkpoints survive a restart?&lt;/li&gt;
&lt;li&gt;Can the environment be reproduced?&lt;/li&gt;
&lt;li&gt;Can a failed job resume?&lt;/li&gt;
&lt;li&gt;Can instances terminate automatically?&lt;/li&gt;
&lt;li&gt;How much setup is required for each session?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A platform does not need to eliminate all operational work.&lt;/p&gt;

&lt;p&gt;The important question is whether that work matches the team’s skills, time, and operating model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four Types of Fit
&lt;/h2&gt;

&lt;p&gt;The discussions became easier to understand when we grouped GPU infrastructure decisions into four types of fit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Economic Fit
&lt;/h3&gt;

&lt;p&gt;Does the total cost match the usage pattern?&lt;/p&gt;

&lt;p&gt;This includes compute, storage, idle time, failed runs, setup, and recovery work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Workload Fit
&lt;/h3&gt;

&lt;p&gt;Can the complete workload run effectively?&lt;/p&gt;

&lt;p&gt;This includes the GPU, VRAM, system RAM, storage, network, interconnects, and software environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Operational Fit
&lt;/h3&gt;

&lt;p&gt;Can the user operate and restore the environment?&lt;/p&gt;

&lt;p&gt;This includes setup, billing visibility, stop-and-restart behavior, checkpoints, automation, and reproducibility.&lt;/p&gt;

&lt;h3&gt;
  
  
  Risk Fit
&lt;/h3&gt;

&lt;p&gt;Are the remaining risks acceptable?&lt;/p&gt;

&lt;p&gt;This includes reliability, capacity availability, data handling, region, vendor lock-in, support, and runtime control.&lt;/p&gt;

&lt;p&gt;A provider can look attractive on one dimension and still be a poor fit on another.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three Questions to Ask Before Comparing Providers
&lt;/h2&gt;

&lt;p&gt;Before opening a GPU pricing table, it may help to answer three questions.&lt;/p&gt;

&lt;h3&gt;
  
  
  What must work?
&lt;/h3&gt;

&lt;p&gt;Define the complete workload, not only the GPU.&lt;/p&gt;

&lt;p&gt;Include system memory, storage, software, data transfer, latency, concurrency, and scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  What must survive?
&lt;/h3&gt;

&lt;p&gt;Decide which datasets, checkpoints, models, containers, and configured environments must remain recoverable after compute stops or a host disappears.&lt;/p&gt;

&lt;h3&gt;
  
  
  What must never happen?
&lt;/h3&gt;

&lt;p&gt;Identify the unacceptable outcome.&lt;/p&gt;

&lt;p&gt;That might be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Runaway cost&lt;/li&gt;
&lt;li&gt;Lost training progress&lt;/li&gt;
&lt;li&gt;Unavailable capacity&lt;/li&gt;
&lt;li&gt;Data exposure&lt;/li&gt;
&lt;li&gt;Vendor lock-in&lt;/li&gt;
&lt;li&gt;Insufficient runtime control&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions will not identify one universal winner.&lt;/p&gt;

&lt;p&gt;They will identify the trade-offs that actually matter for the workload.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Main Takeaway
&lt;/h2&gt;

&lt;p&gt;The 100 discussions did not point to one best GPU cloud.&lt;/p&gt;

&lt;p&gt;They showed that AI engineers are not simply selecting a machine.&lt;/p&gt;

&lt;p&gt;They are choosing a combination of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cost&lt;/li&gt;
&lt;li&gt;Workload capability&lt;/li&gt;
&lt;li&gt;Operational burden&lt;/li&gt;
&lt;li&gt;Risk&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The better question may therefore be:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which environment lets me finish this workload at a cost, operational burden, and level of risk I can accept?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What matters most in your own GPU infrastructure decisions after hourly price?&lt;/p&gt;

&lt;p&gt;Storage, availability, setup time, system RAM, stop-and-restart behavior, privacy—or something else?&lt;/p&gt;




&lt;p&gt;This article is a condensed adaptation of our full research report, which includes the research methodology and representative source discussions:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lp-soroban.highreso.jp/compute-cluster/blog/gpu-cloud-research-001.html?utm_source=devto" rel="noopener noreferrer"&gt;https://lp-soroban.highreso.jp/compute-cluster/blog/gpu-cloud-research-001.html?utm_source=devto&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was edited with AI assistance. The research data, analysis, examples, and conclusions were reviewed by the author.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>gpu</category>
      <category>cloud</category>
      <category>mlops</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
