<?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: Matthias | StudioMeyer</title>
    <description>The latest articles on DEV Community by Matthias | StudioMeyer (@studiomeyer_io).</description>
    <link>https://dev.to/studiomeyer_io</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3866458%2F170ce662-470b-4f78-ac37-58a9a2a00220.PNG</url>
      <title>DEV Community: Matthias | StudioMeyer</title>
      <link>https://dev.to/studiomeyer_io</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/studiomeyer_io"/>
    <language>en</language>
    <item>
      <title>Codex Has No Real Memory: Three Ways to Fix It, One in 30 Seconds</title>
      <dc:creator>Matthias | StudioMeyer</dc:creator>
      <pubDate>Wed, 20 May 2026 23:48:25 +0000</pubDate>
      <link>https://dev.to/studiomeyer_io/codex-has-no-real-memory-three-ways-to-fix-it-one-in-30-seconds-34i1</link>
      <guid>https://dev.to/studiomeyer_io/codex-has-no-real-memory-three-ways-to-fix-it-one-in-30-seconds-34i1</guid>
      <description>&lt;p&gt;&lt;strong&gt;OpenAI Codex crossed 3 million weekly active users by April, 2026, with 70 percent month-over-month growth and 5x growth since January. The product has memory now, after the April 16 update. But the memory it ships with is project-scoped, cloud-only, and locked inside OpenAI. Three approaches actually solve the problem of giving Codex memory that survives sessions, follows you across machines, and connects to the same memory your other AI tools use: built-in memories with project files, an MCP memory server, or a hybrid setup that keeps OpenAI memories for sensitive code and an MCP server for everything else. The MCP path takes about 30 seconds to set up and works with Claude, ChatGPT, Cursor and seven other clients on the same memory store.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When the Codex usage numbers hit 3 million weekly users, what you are seeing is OpenAI shipping the productivity story Anthropic shipped 18 months ago, at a scale Anthropic never reached. Codex Web, Codex Desktop on macOS and Windows, the Codex app inside ChatGPT iOS, the Codex CLI, the VS Code extension. Five surfaces, one account, the same model behind all of them. By April 16 OpenAI added persistent memory to the Desktop app, alongside Computer Use, an in-app browser, image generation and a 90+ plugin marketplace.&lt;/p&gt;

&lt;p&gt;If you read the announcement, "persistent memory" sounds solved. It is not. There are three different problems hiding behind that label, and Codex's built-in memory only solves one of them. Here is what is actually going on, and three practical paths through it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "Codex memory" actually means today
&lt;/h2&gt;

&lt;p&gt;OpenAI's Codex memory, launched April 16, is project-scoped. You can pin instructions, code conventions and personal preferences inside a single Codex project. The memory persists between Codex sessions for that project. If you switch projects, you start fresh. If you switch from Codex to ChatGPT, you start fresh again. If you switch from Codex Web to Codex Desktop, the memory is supposed to follow but in practice users still report drift between surfaces.&lt;/p&gt;

&lt;p&gt;This is the same model ChatGPT uses for its consumer memory feature. It is good for what it does. It is not what most developers mean when they ask whether Codex remembers them.&lt;/p&gt;

&lt;p&gt;What developers actually want has three layers:&lt;/p&gt;

&lt;p&gt;The first is &lt;strong&gt;session memory&lt;/strong&gt;. Inside a single conversation, can the model remember what it did three turns ago? This was a problem in 2023. It is solved.&lt;/p&gt;

&lt;p&gt;The second is &lt;strong&gt;project memory&lt;/strong&gt;. Across multiple sessions on the same task, does the model recall the conventions of the codebase, the people on the team, the decisions you made last week? Codex's built-in memory solves this for projects that live entirely inside Codex. It does not solve it if half your work is in Claude Code or Cursor.&lt;/p&gt;

&lt;p&gt;The third is &lt;strong&gt;operator memory&lt;/strong&gt;. Across every AI tool you use, can the model recall who you are, what you build, what your customers care about, what mistakes you do not want to repeat? This is the layer nobody at the model providers wants to solve, because their incentive is to lock you to their stack.&lt;/p&gt;

&lt;p&gt;The three solutions below address layers two and three. Use what fits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solution 1: Codex's built-in memories with project files
&lt;/h2&gt;

&lt;p&gt;Codex has two ways to remember. The Memories feature stores user-specific preferences. Project-level config files store team-shared context. Together, for code that lives entirely inside Codex, this is enough.&lt;/p&gt;

&lt;p&gt;The setup is straightforward. Inside any Codex project, create an &lt;code&gt;AGENTS.md&lt;/code&gt; file at the repo root. Codex reads it on every task. This is the equivalent of the &lt;code&gt;CLAUDE.md&lt;/code&gt; pattern that Anthropic established. Common entries: tech stack, coding conventions, deploy commands, PR rules, naming rules, "never do X" warnings.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# AGENTS.md&lt;/span&gt;

&lt;span class="gu"&gt;## Stack&lt;/span&gt;
Next.js 15, TypeScript strict, Prisma, Postgres on port 5433.

&lt;span class="gu"&gt;## Conventions&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Server Actions over API routes when possible
&lt;span class="p"&gt;-&lt;/span&gt; Tailwind utility-first, no CSS modules
&lt;span class="p"&gt;-&lt;/span&gt; Tests via Vitest for unit, Playwright for e2e

&lt;span class="gu"&gt;## Never&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`prisma db push --force-reset`&lt;/span&gt; on any branch
&lt;span class="p"&gt;-&lt;/span&gt; Skip the read-before-edit hook
&lt;span class="p"&gt;-&lt;/span&gt; Push to main without &lt;span class="sb"&gt;`pnpm typecheck`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For personal preferences that cross projects, use the Memories panel inside Codex Settings. Pin things like "I prefer concise responses with code first, explanation after" or "always cite the line numbers when referencing code".&lt;/p&gt;

&lt;p&gt;The limit of this approach is what I described earlier. It works inside Codex. It does not follow you to Claude or Cursor. If you live entirely in Codex, that is fine. If you do not, keep reading.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solution 2: An MCP memory server connected to Codex
&lt;/h2&gt;

&lt;p&gt;This is the path I run on. It takes 30 seconds to set up and gives Codex access to the same memory that Claude Code, Claude Desktop, Cursor, Codex CLI and seven other MCP clients read and write.&lt;/p&gt;

&lt;p&gt;Codex supports MCP servers natively as of the late-March update. The configuration lives in &lt;code&gt;~/.codex/config.toml&lt;/code&gt;. Add a block like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[mcp_servers.memory]&lt;/span&gt;
&lt;span class="py"&gt;url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"https://memory.studiomeyer.io/mcp"&lt;/span&gt;
&lt;span class="py"&gt;type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"http"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is it. No bearer token. No API key in your config. Restart Codex, run any tool that touches memory, and your browser opens a Magic Link login page. Enter your email, click the link in the email that arrives, and the OAuth flow finishes silently. Codex now has dauerhaften Zugriff auf the same memory store every other client of yours uses.&lt;/p&gt;

&lt;p&gt;The numbers that matter: from "open config file" to "Codex queries memory" was 30 seconds in our test. The OAuth refresh token is stored in Codex's secure credential store. No token ever lives in a git repo. The same memory is reachable from Claude Desktop, Claude Code, Cursor, the Codex CLI and Goose with the same one-click login.&lt;/p&gt;

&lt;p&gt;What you can ask Codex once memory is wired in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Search my memory for past decisions about authentication."&lt;/li&gt;
&lt;li&gt;"What did I decide about the rate limiter last month?"&lt;/li&gt;
&lt;li&gt;"Remember that I prefer to ship small commits."&lt;/li&gt;
&lt;li&gt;"What customers did I onboard in April?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The model now reads and writes facts to a backend that survives across surfaces. If you change your mind about the rate limiter in Claude Code on Tuesday, Codex sees the new decision on Wednesday.&lt;/p&gt;

&lt;p&gt;The piece worth flagging: there is a known class of bugs in Codex Desktop right now where multiple chats spawn full MCP process stacks per thread (GitHub issues 11324, 14548, 18333, 20980 all track variants). Memory grows linearly with open chats. If you run 10+ Codex tabs at once, you will see the issue. The workaround is to use HTTP-transport MCP servers (like the example above) rather than stdio servers. HTTP servers run once on the network, not once per tab.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solution 3: The hybrid setup most teams should run
&lt;/h2&gt;

&lt;p&gt;If you build with Codex on customer code that has compliance requirements and you also use Codex for personal projects, you probably want both. Built-in memory for the customer project that needs to stay locked inside OpenAI's environment. MCP memory for everything else.&lt;/p&gt;

&lt;p&gt;The way to wire this up: use Codex's Memories panel for personal cross-project preferences. Use &lt;code&gt;AGENTS.md&lt;/code&gt; files for project conventions. Use an MCP memory server for the operator-level memory that follows you across tools. The three layers do not conflict. They cover different scopes.&lt;/p&gt;

&lt;p&gt;Concretely, in our team setup, the MCP memory holds learnings from previous sessions, decisions about architecture, customer profiles, deployment patterns and "never do this again" warnings. The &lt;code&gt;AGENTS.md&lt;/code&gt; files hold project-specific stack and rules. The Memories panel holds personal communication preferences. When Codex starts a task, it has access to all three.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limitations
&lt;/h2&gt;

&lt;p&gt;If you go down the MCP memory route, three things you should know.&lt;/p&gt;

&lt;p&gt;First, the memory backend matters. We run our own at memory.studiomeyer.io because we built it. There are alternatives: Mem0, Letta, Zep, MemNexus. Each has different opinions on what to store, how to retrieve, and how to bill. Try at least two before committing.&lt;/p&gt;

&lt;p&gt;Second, retrieval quality is not free. A bad memory backend gives Codex stale or irrelevant context that can degrade output quality. Look for backends that support semantic search (vector retrieval) plus full-text plus knowledge graph. Single-modality retrieval is too brittle.&lt;/p&gt;

&lt;p&gt;Third, the OpenAI memory feature ships fast. By December 2026 we expect Codex's built-in memory to be much closer in capability to what an MCP backend offers. If you are betting on a long-term setup, the question is less "which is better right now" and more "which is portable when the landscape shifts again." MCP-based memory is portable across providers. OpenAI memory is not.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this means for builders
&lt;/h2&gt;

&lt;p&gt;The 3 million weekly Codex users are split into two groups. One group is happy with the built-in memory and never thinks about MCP. The other group is the one that figured out their AI workflow does not run inside one provider's walls. They use Claude for some things, Codex for others, Cursor for code, ChatGPT for research. For that second group, MCP memory is the load-bearing piece that makes the multi-tool workflow coherent instead of fragmented.&lt;/p&gt;

&lt;p&gt;If you are in the first group, you are fine. The Memories feature is solid for what it covers.&lt;/p&gt;

&lt;p&gt;If you are in the second group, the 30-second setup above is the move that compounds for the rest of 2026. Memory is the layer where context lives. Once it is wired, every AI tool you add later starts with the context already present, not from zero.&lt;/p&gt;

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

&lt;p&gt;If you want to test the MCP memory path with our backend, the OAuth login is open at memory.studiomeyer.io. The free tier is 200 memory operations per month, enough to evaluate. Drop the config block above into &lt;code&gt;~/.codex/config.toml&lt;/code&gt;, restart Codex, log in once, and you are wired.&lt;/p&gt;

&lt;p&gt;If you want a different backend, the same Codex config pattern works with any MCP-compliant memory server. The protocol is open. The lock-in is not in the memory layer. It is in the model layer above. Pick your memory backend on portability, not on which model maker promises memory next.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://studiomeyer.io/en/blog/codex-memory-mcp-fix" rel="noopener noreferrer"&gt;studiomeyer.io&lt;/a&gt;. StudioMeyer is an AI-first digital studio building premium websites and intelligent automation for businesses.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>codex</category>
      <category>openai</category>
      <category>memory</category>
    </item>
    <item>
      <title>Web Design Trends 2026: What Actually Held Up After Six Months</title>
      <dc:creator>Matthias | StudioMeyer</dc:creator>
      <pubDate>Sun, 17 May 2026 22:15:30 +0000</pubDate>
      <link>https://dev.to/studiomeyer_io/web-design-trends-2026-what-actually-held-up-after-six-months-23p8</link>
      <guid>https://dev.to/studiomeyer_io/web-design-trends-2026-what-actually-held-up-after-six-months-23p8</guid>
      <description>&lt;p&gt;&lt;strong&gt;Six months ago we published a list of 12 web design trends for 2026. Now, halfway through the year, the honest reality check: bento grids and dark mode are still winning, kinetic typography is more polish than substance, 3D and WebGL turned out to drain performance budgets in ways most teams underestimated, AI-driven personalization broke against GDPR, and two trends nobody predicted in January became the actual story of 2026 web design: AI readability layers (llms.txt, agents.json, schema markup) and anti-grid brutalism as a counter-movement to bento. If you are planning a redesign in the second half of the year, this is the list to optimize against.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In January I wrote a piece for studiomeyer.io listing 12 web design trends for 2026. It became our highest-cited blog post of the year, picked up across Bing Copilot, ChatGPT, Perplexity and Grok, with 347 citations across the German, English and Spanish versions combined. Plenty of time has passed to check what actually held up, what was overrated, and what shifted underneath while everyone was watching the obvious moves. This is that check.&lt;/p&gt;

&lt;p&gt;Half the original list is doing exactly what I expected. A quarter overpromised. A quarter underdelivered. And two new trends emerged from the side that nobody on my list predicted in January.&lt;/p&gt;

&lt;h2&gt;
  
  
  What held up: bento grids, dark mode, design systems
&lt;/h2&gt;

&lt;p&gt;The three calls I made in January that aged well are the structural ones. None of them are flashy. All of them ship in real projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bento grid layouts&lt;/strong&gt; are now the default, not the exception. Apple kept pushing them across product pages. Google adopted them across the Pixel marketing site. Microsoft, Spotify and roughly half the Y Combinator demo day startups in March all shipped bento-first layouts. We measured 23 percent more scroll depth on bento layouts compared to traditional 12-column grids in our own client work, consistent with the original prediction. The pattern is not a fad. It is the modular content layout that 2026 settled on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dark mode as default&lt;/strong&gt; crossed the threshold I described in January. More than 82 percent of smartphone users now run at least one app in dark mode, OLED savings hold up at the panel level, and the engagement bump on dark-mode-aware sites is real (we measured 18 percent longer sessions across our portfolio). What I underestimated is how much of the work is on the design system side, not the CSS variable side. Building a site that respects dark mode means committing to a token-based color system that handles every component state across both themes. Teams that retrofit dark mode without that foundation end up with broken contrast and hard-to-read text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Design systems as foundation&lt;/strong&gt; matched my prediction exactly. Every serious 2026 project we touched has a token system, component library, automated visual regression and a design-to-code pipeline. The teams that skipped this step in 2024 are paying for it now in fragmented redesigns.&lt;/p&gt;

&lt;h2&gt;
  
  
  What overpromised: kinetic typography, glassmorphism 2.0, organic shapes
&lt;/h2&gt;

&lt;p&gt;Three trends I called confidently in January turned out to be more polish than substance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kinetic typography&lt;/strong&gt; is everywhere as a demo on Awwwards and Dribbble. It almost never ships in production. The reason is simple: animated text fights screen readers, fights search crawlers, and adds layout shift that destroys Core Web Vitals scores. Real teams use it sparingly, on hero headlines and section transitions. The image of a site with dozens of kinetic elements scrolling and animating did not become the default. It became the demo reel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glassmorphism 2.0&lt;/strong&gt; survived but in a more restrained form than the January trend pieces predicted. The CSS &lt;code&gt;backdrop-filter: blur()&lt;/code&gt; is still computationally expensive, especially on Android mid-tier devices. Teams that went heavy on the effect saw 15 to 30 percent FPS drops on real user devices. The aesthetic survived in navigation bars, modals and feature cards. It did not become the dominant treatment for hero sections.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Organic blob shapes and asymmetric containers&lt;/strong&gt; had the strongest gap between trend articles and shipping reality. They show up on landing pages where the brand can afford the playfulness. They almost never ship on B2B SaaS, e-commerce or any conversion-critical flow. The "hero with a giant blob" pattern is a 2024 trend that 2026 articles kept recycling without checking which industries actually use it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What underdelivered: 3D/WebGL, AI personalization, sustainable web design
&lt;/h2&gt;

&lt;p&gt;Three calls I made too optimistically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3D elements via WebGL&lt;/strong&gt; were supposed to become standard. They did not. The math is brutal: a site with a single Spline scene in the hero loads 800kB to 2MB of JavaScript runtime before the user sees anything. Lighthouse scores collapse. Core Web Vitals fail. Mobile users on 4G drop the page before the WebGL loads. The shipping pattern in 2026 is to use WebGL only when the brand is the experience (creative agencies, fashion houses, art portfolios) and to skip it everywhere else. The "everyone gets a 3D hero in 2026" prediction was wrong. The "creative agencies push 3D harder than ever" prediction was right. They are different sentences.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI-driven personalization&lt;/strong&gt; ran into the GDPR wall. The pattern of dynamically rendering personalized content based on tracked behavior works in the US, but in the EU it requires consent flows that destroy the personalization premise. Teams with European traffic stayed on first-party data and cohort-based personalization, which is much more limited than what AI vendors marketed. The trend lives. The implementation is more conservative than 2025 trend pieces suggested.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sustainable web design&lt;/strong&gt; got measured but did not get adopted broadly. Tools like Website Carbon Calculator are common in agency presentations. The actual decisions teams make (image weights, JavaScript budgets, hosting choice) still optimize for cost and speed first, sustainability third. The trend is real but it has not yet become a primary buying criterion for clients. Maybe in 2027.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we missed: AI readability and the anti-grid counter-movement
&lt;/h2&gt;

&lt;p&gt;Two trends nobody on my January list predicted have become the actual story of mid-2026.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI readability as a design layer.&lt;/strong&gt; In January, "structured data" felt like a 2024 SEO topic. By April, it became the load-bearing piece of every serious 2026 web project we touched. Schema.org markup, llms.txt files, agents.json, agent-card.json, JSON-LD across pages, structured FAQ blocks. Sites that skipped this layer fell out of AI Overviews on Google, lost ChatGPT and Perplexity citations, and saw measurable traffic drops as more search shifted to AI-mediated answers. We track our own numbers: 2,300 Bing Copilot citations across three months by early May 2026, verified live in the Webmaster Tools dashboard. None of that exists without the readability layer.&lt;/p&gt;

&lt;p&gt;If you redesign in H2 2026 and skip AI readability, you are designing a site that humans can use but AI cannot quote. In a year where AI-mediated discovery overtakes a chunk of classic search, that is the equivalent of building in 2010 without considering Google.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anti-grid brutalism as a counter-movement.&lt;/strong&gt; This one nobody on my list saw coming. As bento layouts became ubiquitous, a counter-trend emerged: deliberately broken layouts, raw HTML aesthetics, brutalist typography, monospace everything. Sites like The Browser Company's marketing pages, the v0.dev landing page, and most of the indie-hacker SaaS launches in 2026 lean into this aesthetic. It is not retro nostalgia. It is positioning. When everyone else looks like Apple, looking different becomes the differentiator.&lt;/p&gt;

&lt;p&gt;This is going to be the design conversation of late 2026 and early 2027. The pendulum swung from custom to template back to custom, and now it is swinging from polished bento to deliberately raw brutalism. Watch which agencies pick which side.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to optimize for in H2 2026
&lt;/h2&gt;

&lt;p&gt;If you have a redesign in flight, the priority list looks different than it did in January.&lt;/p&gt;

&lt;p&gt;Start with AI readability. This is non-negotiable. Schema markup, llms.txt, agents.json, structured FAQ blocks. Without these your site is invisible in AI-mediated discovery, which is now a meaningful slice of B2B traffic. Test by asking ChatGPT, Perplexity and Bing Copilot about your brand. If they cannot quote you specifically, your readability layer is missing or broken.&lt;/p&gt;

&lt;p&gt;Then commit to the structural trends that held up: bento grids for content layout, dark mode as a first-class theme, design systems as the foundation everything else builds on. These are not flashy. They compound.&lt;/p&gt;

&lt;p&gt;Be conservative with the polish trends. Kinetic typography on hero only. Glassmorphism on navigation and modals only. WebGL only when the brand justifies the performance cost. Treat each as an enhancement, not a foundation.&lt;/p&gt;

&lt;p&gt;Watch the brutalism trend. If your competitors are all converging on the same Apple-esque aesthetic, the counter-position becomes valuable. We have not committed to brutalism in our own work yet, but we have prototyped it for two clients in tech-heavy verticals where the audience reads HN and rewards positioning over polish.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we built around this
&lt;/h2&gt;

&lt;p&gt;For full disclosure: every project we ship at StudioMeyer carries the AI readability layer by default. llms.txt, agents.json, agent-card.json, schema markup, JSON-LD across pages. Every project uses a token-based design system, dark mode as a first-class theme, and bento grids for content layouts when the content has natural hierarchy. We are conservative with WebGL and kinetic typography. We have not built anything brutalist yet.&lt;/p&gt;

&lt;p&gt;The result is that our portfolio sites get cited by AI, score well on Core Web Vitals, and survive client redesigns better than templates do. None of that is one trend. All of it is the same thing: optimize for what compounds, skip what is decorative.&lt;/p&gt;

&lt;p&gt;If you want a redesign that takes this list seriously, &lt;a href="https://dev.to/contact"&gt;we are here&lt;/a&gt;. The first audit is free and includes an AI readability check, a Core Web Vitals run and a design system review.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://studiomeyer.io/en/blog/webdesign-trends-2026-reality-check" rel="noopener noreferrer"&gt;studiomeyer.io&lt;/a&gt;. StudioMeyer is an AI-first digital studio building premium websites and intelligent automation for businesses.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdesign</category>
      <category>trends</category>
      <category>bentogrid</category>
      <category>darkmode</category>
    </item>
    <item>
      <title>AutoML for Agent Fleets, Without the Vendor Bill</title>
      <dc:creator>Matthias | StudioMeyer</dc:creator>
      <pubDate>Sat, 16 May 2026 00:09:56 +0000</pubDate>
      <link>https://dev.to/studiomeyer_io/automl-for-agent-fleets-without-the-vendor-bill-4b10</link>
      <guid>https://dev.to/studiomeyer_io/automl-for-agent-fleets-without-the-vendor-bill-4b10</guid>
      <description>&lt;p&gt;Last night I shipped AutoML to a 10-agent fleet in a single session. The added monthly cost was zero euros. Not because we found a discount, but because the math at the heart of agent routing does not need an LLM call.&lt;/p&gt;

&lt;p&gt;The fleet runs every other Sunday and writes 10 to 15 page reports for a real customer who pays for the service. Until yesterday, all nine worker agents ran every single time, even when only four or five of them really had something to say about that particular customer. The math layer I added watches how well each worker actually performs, learns which workers are pulling their weight for which customer profile, and in a few weeks will be ready to route only the four to six that earn the spot. The bill stays the same. The throughput goes up.&lt;/p&gt;

&lt;p&gt;I am writing this down because the pattern is dead simple, transferable to almost any multi-agent setup, and almost nobody outside academic circles talks about how cheap it really is.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Setup Nobody Else Has
&lt;/h2&gt;

&lt;p&gt;We run a service called StudioMeyer Agents. Ten specialized agents work on one customer at a time and a master agent stitches their findings into a single coherent report. Four agents check website-side signals (visibility, traffic, competitors, technical SEO). Three check AI visibility (LLM citations, brand mentions, cited sources). Two check industry trends. The last one, the master synthesizer, reads all nine reports and writes the customer-facing version.&lt;/p&gt;

&lt;p&gt;For our pilot customer, an anti-luxury real-estate agency on Mallorca, the master fires roughly every other Sunday. For StudioMeyer's own site, every other Sunday too, on a different slot. Each run consumes a fair chunk of Anthropic Max-Plan tokens. Each run also produces about 40 to 80 KB of structured worker reports plus the customer-facing markdown.&lt;/p&gt;

&lt;p&gt;Here is the part nobody had asked yet: which of those nine workers are actually contributing? Some weeks the SEO-technical agent has nothing to say because nothing changed on the technical layer. Some weeks the AI-visibility agent finds twelve new citations and the master ends up half its report around those. Different customer types pull on different agents. A tourism client probably benefits more from the visibility and the local-search agents. A B2B SaaS client probably pulls harder on the citation-source and competitor agents.&lt;/p&gt;

&lt;p&gt;The fleet has been live since Phase D, mid-May 2026. It works. But we were leaving signal on the floor by treating all nine agents as equally relevant for every customer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why AutoML Usually Means a Vendor Bill
&lt;/h2&gt;

&lt;p&gt;If you tell most engineers "we should add AutoML to our agent fleet," they hear "let's pay DataRobot, SageMaker Autopilot, or Vertex AI for the privilege." That is a real solution for a different problem. None of those platforms is cheap, and none of them was built for the question "which subset of my LLM agents should I run on customer X this Tuesday."&lt;/p&gt;

&lt;p&gt;The other instinct is "let the LLM decide." Build a meta-agent whose job is to read each customer's profile, decide which sub-agents to fire, and dispatch them. That works. It also means every single routing decision is now an LLM call, with its latency, its token budget, and its hallucination surface area.&lt;/p&gt;

&lt;p&gt;There is a third option, and it has been the production-standard for routing problems since the early 2010s in adtech and recommender systems. It just took until AAAI 2026 for somebody to put a tutorial together explicitly applying it to LLM agent routing. IBM Research presented two of them this January: &lt;a href="https://research.ibm.com/publications/bandits-llms-and-agentic-ai" rel="noopener noreferrer"&gt;"Bandits, LLMs, and Agentic AI"&lt;/a&gt; and &lt;a href="https://research.ibm.com/publications/multi-armed-bandits-meet-large-language-models" rel="noopener noreferrer"&gt;"Multi-Armed Bandits Meet Large Language Models"&lt;/a&gt;. The vLLM Semantic Router team made the same point in their April 2026 &lt;a href="https://vllm-semantic-router.com/zh-Hans/vision-paper.pdf" rel="noopener noreferrer"&gt;vision paper&lt;/a&gt;, recommending "multi-armed bandits to route queries by context-aware features."&lt;/p&gt;

&lt;p&gt;The pattern is older than the LLM era. The multi-armed bandit problem assumes you have a fixed number of options (slot machines, ad creatives, content blocks, or in our case worker agents) and a finite budget of trials. You want to learn which options pay off and exploit them, while still occasionally trying the others to make sure your beliefs are not outdated. Production code does it in dozens of lines.&lt;/p&gt;

&lt;p&gt;The AdaptOrch benchmark from the &lt;a href="https://www.augmentcode.com/guides/multi-agent-orchestration-architecture-guide" rel="noopener noreferrer"&gt;Augment Code orchestration guide&lt;/a&gt; measured routing overhead at less than 50 milliseconds. Compare that to the 2 to 15 seconds of LLM inference latency per agent call. The math layer is essentially free.&lt;/p&gt;

&lt;h2&gt;
  
  
  Twelve Lines of Math
&lt;/h2&gt;

&lt;p&gt;Here is the formula I shipped. It is Bayesian additive smoothing, also known as Laplacian smoothing or Beta-Binomial conjugate prior, depending on which Wikipedia article you land on first. The &lt;a href="https://en.wikipedia.org/wiki/Additive_smoothing" rel="noopener noreferrer"&gt;additive smoothing page&lt;/a&gt; has the cleanest version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;bayesianMean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;observed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;number&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;priorMean&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;priorWeight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;valid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;observed&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="k"&gt;is&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isFinite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;valid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;priorMean&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;valid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reduce&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;acc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;acc&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;priorWeight&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;priorMean&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;priorWeight&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;valid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the entire ranking core. The intuition: you do not start from "I have no data, so I cannot rank." You start from a prior belief, expressed as a mean and a pseudo-sample-count. With &lt;code&gt;priorMean = 0.6&lt;/code&gt; and &lt;code&gt;priorWeight = 5&lt;/code&gt;, the prior says: "I think each worker is decently good (0.6 on a 0 to 1 scale), and I am as confident in that as if I had observed five samples already."&lt;/p&gt;

&lt;p&gt;When the first real sample arrives, it gets averaged in with the five pseudo-samples. The estimate moves, but not violently. After five real observations the prior has exactly as much weight as the data. After twenty real observations, the prior is essentially noise floor and the actual measurements dominate.&lt;/p&gt;

&lt;p&gt;What does each worker get scored on? In our case three signals, all extracted from the worker's own report:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Verify-confidence:&lt;/strong&gt; a 0 to 1 score the worker assigns to itself in a "Verify-Confidence" block at the end of every report. We made it mandatory in Session 1068 as part of the anti-hallucination layer. Now it is the primary input to the ranking layer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source citation count:&lt;/strong&gt; how many tool calls and external sources the worker cited in its "Datenquellen" block. A high number means evidence-backed work. A low number means the worker leaned on its training data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Domain-lock pass rate:&lt;/strong&gt; a yes/no per run. Did the worker stay on the customer's actual domain or did it drift to staging subdomains or competitor sites?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The composite score is a weighted sum:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;rankScore&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
  &lt;span class="nx"&gt;smoothedConfidence&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
  &lt;span class="nf"&gt;normalize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;smoothedSourceDensity&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.3&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
  &lt;span class="nx"&gt;domainLockPassRate&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;50 percent on the worker's own confidence claim, 30 percent on evidence density, 20 percent on hygiene. Three knobs you can tune later when you have enough data to argue about the right ratio. None of those three signals required a new piece of infrastructure. They were already in every worker report, written by the agents themselves, for the anti-hallucination guard. The ranking layer just reads them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cold Start Is the Actual Problem
&lt;/h2&gt;

&lt;p&gt;Most multi-armed bandit tutorials lead with exploration versus exploitation. The classic dilemma: should you keep playing the slot machine that has paid the best so far, or try the one you have not pulled in a while?&lt;/p&gt;

&lt;p&gt;In production, that is not the hard problem. The hard problem is what to do on day one when you have zero data, or day three when you have data on three of nine workers and nothing on the rest.&lt;/p&gt;

&lt;p&gt;Facebook's Reels team solved this in 2023 by using &lt;a href="https://en.wikipedia.org/wiki/Multi-armed_bandit#Bayesian_strategies" rel="noopener noreferrer"&gt;Thompson Sampling with posterior samples&lt;/a&gt; for content cold-start, drawing from the posterior distribution rather than a point estimate so brand-new content still had a fair shot. The 2026 papers on LLM-augmented bandits go further: they let an LLM predict the missing observations and feed them into the bandit as pseudo-data, weighted by how well the LLM's predictions have matched reality so far.&lt;/p&gt;

&lt;p&gt;I considered both. For now I shipped something simpler: a hard cold-start guard. If the total number of observed worker runs is below three, the recommendation function just returns "all nine workers, exploration phase." No routing decision is made on a dataset that small. After three runs we have nine workers times three samples plus the prior, which is enough signal to make a soft recommendation. After ten to twenty runs, the prior has melted into the noise floor.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;totalRunsObserved&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;MIN_SAMPLES_FOR_RECOMMENDATION&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;coldStart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;recommendedWorkers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;rankings&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;agentKuerzel&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="c1"&gt;// all 9&lt;/span&gt;
    &lt;span class="p"&gt;...&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a deliberate trade-off. A more sophisticated bandit, like LinUCB or Thompson Sampling, would make a soft recommendation even on day one. But a soft recommendation on day one is exactly the kind of thing that bites you in week three when you realize the system has been disproportionately favoring the agent who got lucky in its first run. I would rather pay for nine full runs through the cold-start window and ship a confident routing decision in week six than ship a wobbly one immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closure-Locked Tools, or Why Tenant Isolation Costs You Nothing Here Either
&lt;/h2&gt;

&lt;p&gt;The master synthesizer needs to actually call this. We did that with two inline tools: &lt;code&gt;track_worker_performance&lt;/code&gt; and &lt;code&gt;get_worker_ranking&lt;/code&gt;. Both registered on the master agent at startup.&lt;/p&gt;

&lt;p&gt;The Customer-Slug Closure pattern is worth a paragraph because it is the kind of thing that bites you the day you onboard customer number two. Here is the relevant signature:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;buildTrackPerformanceInlineTool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;customerSlug&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;agentResolver&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;kuerzel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;SmaAgentDef&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;dryRun&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="nx"&gt;boolean&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{},&lt;/span&gt;
&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nx"&gt;SdkMcpToolDefinition&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;track_worker_performance&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`... Customer-Slug is locked to "&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;customerSlug&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;". ...`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// customerSlug is captured by closure, NOT a tool argument&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;metrics&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;buildMetricsFromReport&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;customerSlug&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;recordWorkerPerformance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;metrics&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The LLM never sees the customer slug as a parameter it can write. The slug is baked into the tool at build time. Even if the master synthesizer hallucinates "actually let me also track this report for the other customer" mid-run, there is no parameter for it to pass and no path that could route the write to anyone else's bucket. This is the same isolation pattern we use for the analytics-sources inline tool we shipped in Session 1069, and it has not let us down once across about 30 master runs.&lt;/p&gt;

&lt;p&gt;For defense in depth, the database layer also validates the slug format itself, in case somebody later builds a script that calls the library directly and accidentally hands it a path-traversal-like value. Our &lt;a href="https://en.wikipedia.org/wiki/Defense_in_depth_(computing)" rel="noopener noreferrer"&gt;Code Critic agent&lt;/a&gt; caught that one and made me add it during the same session.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Phase 1 Ships, and What Phase 2 Will Ship
&lt;/h2&gt;

&lt;p&gt;Phase 1, the one that went live last night, is informative. The master collects performance data from every worker report it reads, persists it to a new &lt;code&gt;sma_worker_performance&lt;/code&gt; table with a hard 5,000-row cap per customer to keep memory bounded, and offers a ranking view to whoever asks. The actual routing logic, the part that decides "only run smasicht and smakonk for tourism customers," is not yet wired up. The fleet still fires all nine agents every cycle.&lt;/p&gt;

&lt;p&gt;That is deliberate. The fleet has run a handful of times in production. We do not have enough data to draw conclusions yet. If I had shipped routing right away, we would now be optimizing against a noise pattern.&lt;/p&gt;

&lt;p&gt;Phase 2 is the routing layer. It will live in &lt;code&gt;sma-run-all.ts&lt;/code&gt;, the script that fires the cron schedule. It reads the recommendation from the ranking layer, picks the top two website-module agents plus all three GEO agents plus the top two business agents (a default of seven instead of nine), and respects an anti-stale guard: any worker that has not run in the last 60 days runs anyway, no matter what its current rank is. That keeps exploration alive even after exploitation kicks in.&lt;/p&gt;

&lt;p&gt;The cost in token budget for skipping two agents per run, every other week, across two customers: about 20 to 25 percent fewer Anthropic-Max-Plan tokens spent on each cycle. Times the cycle count over a year, that translates into roughly an extra customer's worth of headroom in the same Max-Plan flat rate.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Will Be Watching
&lt;/h2&gt;

&lt;p&gt;A few things that could go wrong, and that I want to catch before they do:&lt;/p&gt;

&lt;p&gt;The verify-confidence score is self-reported by each worker. Workers might learn to inflate it, the same way employees learn what their performance metric is and game it. In our case the workers do not actually know the score is being used for ranking. The system prompt does not mention it. But the moment we put this into the prompt, that incentive shows up. I will keep the ranking signal sources unmentioned in worker prompts.&lt;/p&gt;

&lt;p&gt;The "all nine for cold-start" rule could trap us. If a customer is fundamentally never going to need the AI-visibility agent (because they are a B2B SaaS company with no public-facing brand), the system will keep firing it forever, scoring it low forever, and never quite cross the threshold to drop it. A future refinement is a low-confidence floor: if a worker scores below 0.4 across more than five runs, ask the master to argue for or against dropping it, with the customer profile in context.&lt;/p&gt;

&lt;p&gt;The 50/30/20 weight split is a guess. After ten Phase 2 cycles we should have enough variance to ask whether that split actually correlates with customer-facing report quality. If not, the weights should move.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Replicable Part
&lt;/h2&gt;

&lt;p&gt;I keep coming back to this: the math layer is twelve lines, the SQL is one table, the integration is two inline tools. The Phase 1 shipping cost was one focused session. The Phase 2 shipping cost will be similar, mostly because all the data plumbing already exists.&lt;/p&gt;

&lt;p&gt;If you run any kind of multi-agent fleet, whether it is a customer-onboarding pipeline, a research squad, a content-generation system, or a code-review orchestrator, the same pattern applies. You probably already have a confidence signal somewhere in your pipeline (eval scores, judge models, retry rates, output lengths, or just a self-reported number). You probably already have a signal for hygiene (did the agent stay on task? did it cite sources? did it write more than 500 characters of actual content?). What you do not have, until you add it, is a record of those signals over time, normalized across customers or queries, and a sub-100ms function that turns the record into a routing decision.&lt;/p&gt;

&lt;p&gt;This is what AutoML actually looks like when you are not buying it from a vendor. It looks like a table, a function, and a guard. The "ML" is a 1.96 KB SQL file and a Bayesian estimator that an undergraduate could write. The "Auto" comes from the fact that nobody has to look at the data, the system updates itself every run.&lt;/p&gt;

&lt;p&gt;The vendor bill is zero because the LLM is the thing being routed, not the thing doing the routing. The math does not need a model with a billion parameters. It needs a prior, a counter, and a sort.&lt;/p&gt;




&lt;p&gt;If you want to see the full implementation, the migration SQL, the inline tool wiring on the master synthesizer, and the test suite covering Bayesian smoothing, extraction logic, and cold-start, the StudioMeyer Agents source is documented at &lt;a href="https://studiomeyer.io/services/agents" rel="noopener noreferrer"&gt;studiomeyer.io/services/agents&lt;/a&gt;. Or if you want a similar pattern designed for your own fleet, the same service handles the implementation.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>machinelearning</category>
      <category>programming</category>
    </item>
    <item>
      <title>WebMCP Reality Check: Where the Spec Actually Stands</title>
      <dc:creator>Matthias | StudioMeyer</dc:creator>
      <pubDate>Thu, 14 May 2026 15:37:26 +0000</pubDate>
      <link>https://dev.to/studiomeyer_io/webmcp-reality-check-where-the-spec-actually-stands-4gh1</link>
      <guid>https://dev.to/studiomeyer_io/webmcp-reality-check-where-the-spec-actually-stands-4gh1</guid>
      <description>&lt;p&gt;Last month our r/mcp post comparing MCP, REST, and WebMCP hit 18,000 views in 24 hours. Hundreds of devs asked the same question in the comments: when can my agent actually call a WebMCP tool on a real website? I went and checked. We also audited our own implementations, the ones we've been shipping on customer hotel sites, immobilien pages, and the AI-Ready WP Pro plugin. The answer is more interesting than "soon."&lt;/p&gt;

&lt;p&gt;Here's where the spec stands in May 2026, why no major agent calls it yet, and what we found when we audited our own code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the spec actually stands
&lt;/h2&gt;

&lt;p&gt;WebMCP is a &lt;a href="https://webmachinelearning.github.io/webmcp/" rel="noopener noreferrer"&gt;W3C Community Group Draft Report&lt;/a&gt;, latest publication 23 April 2026. The spec is hosted by the Web Machine Learning Community Group, with three editors: Brandon Walderman from Microsoft, and Khushal Sagar and Dominic Farolino from Google. The first sentence on the spec page is worth reading carefully:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It is not a W3C Standard nor is it on the W3C Standards Track."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Community Group means "interested parties met to write something down." Standards Track means "we're going to make this part of the web platform." Today, WebMCP is the former, not the latter. There's a path from one to the other, but it's not automatic.&lt;/p&gt;

&lt;p&gt;The API surface is &lt;code&gt;navigator.modelContext.registerTool(tool, options)&lt;/code&gt; and &lt;code&gt;unregisterTool()&lt;/code&gt;. Worth noting because the older pattern, &lt;code&gt;window.agent&lt;/code&gt;, has been deprecated since August 2025. If you have code using &lt;code&gt;window.agent&lt;/code&gt;, it's reading from a defunct spec. The discovery model is also unusual: there is no &lt;code&gt;.well-known&lt;/code&gt; endpoint, no manifest file. Tools are registered at runtime via JavaScript when the page loads. The browser, not the page or the network, is what aggregates them and exposes them to agents.&lt;/p&gt;

&lt;p&gt;One detail people miss: Anthropic is not an editor. Microsoft and Google are. This matters for the next section.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the browsers are
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://developer.chrome.com/release-notes/146" rel="noopener noreferrer"&gt;Chrome 146 shipped to Stable on 10 March 2026&lt;/a&gt;. WebMCP is in there, but behind the flag &lt;code&gt;enable-webmcp-testing&lt;/code&gt;. That means: if you install Chrome 146 today, your browser has a WebMCP implementation, but it's off by default. You have to flip the switch in &lt;code&gt;chrome://flags&lt;/code&gt;. Production users haven't flipped that switch and won't, until Chrome ships it on by default.&lt;/p&gt;

&lt;p&gt;Edge will almost certainly follow Chrome. Microsoft is co-editor of the spec, and Edge shares the Chromium engine. There's no official ship date. Firefox is engaged in the Working Group with no public timeline. Safari/WebKit has a &lt;a href="https://bugs.webkit.org/show_bug.cgi?id=283058" rel="noopener noreferrer"&gt;WebKit bug-tracker entry&lt;/a&gt; but no commitment.&lt;/p&gt;

&lt;p&gt;Analyst blogs project late 2026 for Chrome Stable WebMCP-on-by-default. That's plausible but it's a projection, not a roadmap. The Chrome team has not committed publicly to a date.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the agents are
&lt;/h2&gt;

&lt;p&gt;This is the section that surprised me when I started checking.&lt;/p&gt;

&lt;p&gt;In May 2026, none of the mainstream AI agents call &lt;code&gt;navigator.modelContext&lt;/code&gt; tools directly on websites. Not Claude Desktop, not Claude Code, not ChatGPT Operator (rebadged as ChatGPT Agent), not Gemini, not Perplexity. All of them still use one of two approaches: DOM scraping (read the HTML, find buttons, click them) or computer use (take a screenshot, identify pixels, simulate cursor moves).&lt;/p&gt;

&lt;p&gt;The verification on this is multi-source. &lt;a href="https://truthifi.com/education/state-of-mcp-2026-ai-agents-custom-connectors" rel="noopener noreferrer"&gt;truthifi.com's State of MCP 2026 piece&lt;/a&gt;, &lt;a href="https://discoveredlabs.com/blog/webmcp-adoption-timeline-when-will-ai-agents-start-using-your-website-data" rel="noopener noreferrer"&gt;discoveredlabs adoption timeline&lt;/a&gt;, and several other May 2026 analyses converge on the same conclusion. The Anthropic Web Search synthesis I ran put it directly: "mainstream AI agents continue to rely primarily on DOM scraping and computer use for web interactions."&lt;/p&gt;

&lt;p&gt;That doesn't mean agents are weak right now. Computer Use is impressive and ChatGPT Agent is good at filling forms via a virtual browser. But the original WebMCP promise was that websites would expose typed, structured tools and agents would call them like API endpoints. That promise is not active in any major client right now.&lt;/p&gt;

&lt;p&gt;There's a separate thread here that's easy to confuse. MCP itself, the server-side protocol, is everywhere. Anthropic, OpenAI, Microsoft, Amazon, Google's Gemini CLI all support remote MCP servers. The MCP SDK went from 100,000 monthly downloads in late 2024 to 97 million by late 2025. But that's MCP servers running on a backend somewhere, connecting to agents over JSON-RPC. It's a completely different shape than WebMCP, which lives in the browser tab and uses session cookies.&lt;/p&gt;

&lt;h2&gt;
  
  
  The two bridges that exist today
&lt;/h2&gt;

&lt;p&gt;If WebMCP is dormant for agents, how do early adopters actually get value out of it right now?&lt;/p&gt;

&lt;p&gt;Two paths. The first is the &lt;a href="https://docs.mcp-b.ai/_legacy/extension" rel="noopener noreferrer"&gt;MCP-B browser extension&lt;/a&gt;. A user installs it, opens tabs on WebMCP-enabled sites, and the extension aggregates all registered tools and forwards them via stdio to Claude Desktop or another local MCP client. It works. It's also opt-in, nichy, and requires a Chrome extension install. It's the kind of thing 5,000 power users have set up, not the kind of thing your average lead at a B2B SaaS has.&lt;/p&gt;

&lt;p&gt;The second path is older and broader: computer use and virtual browsers. Anthropic's Computer Use lets Claude see your screen, move the mouse, type into fields, and execute action sequences. ChatGPT Agent uses a similar virtual-browser approach. Neither needs WebMCP. They work on any site, structured or unstructured. The trade-off is reliability: when a page layout changes, when a class name shifts, when a checkout flow renders differently on mobile, the automation degrades. Structured WebMCP tools would, in principle, be more reliable. But that "in principle" is doing a lot of work.&lt;/p&gt;

&lt;p&gt;There's a third thing worth mentioning: Anthropic has its own &lt;a href="https://github.com/anthropics/claude-code/issues/58201" rel="noopener noreferrer"&gt;claude-in-chrome browser extension&lt;/a&gt;. This is separate from MCP-B and separate from the WebMCP spec. It's Anthropic's path to browser integration. The fact that they're building this in parallel rather than betting on WebMCP is interesting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why publishers haven't moved
&lt;/h2&gt;

&lt;p&gt;The adoption bottleneck for WebMCP is not the browser. Chrome 146 is shipped, the API works behind a flag, the spec is stable enough to build against. The bottleneck is the publisher side.&lt;/p&gt;

&lt;p&gt;Websites have to opt in. They have to add JavaScript that calls &lt;code&gt;navigator.modelContext.registerTool()&lt;/code&gt; and exposes their forms, their search, their booking flows as typed tools. This is work, and there's no business case yet, because the agents that would consume those tools aren't asking for them.&lt;/p&gt;

&lt;p&gt;The clearest signal of this is what well-funded AI-agent companies are doing. &lt;a href="https://11x.ai/" rel="noopener noreferrer"&gt;11x.ai&lt;/a&gt;, Artisan, Monaco. These are AI agent products in the $25-350M valuation range, all of them theoretically natural consumers of WebMCP-exposed tools. None of them are WebMCP-native today. They're still building on top of DOM scraping and computer use. Public analyst timelines put mid-2027 as the realistic mass-adoption target, when both the browser and enough publishers will have moved.&lt;/p&gt;

&lt;p&gt;That's a 12-15 month gap from where we are.&lt;/p&gt;

&lt;h2&gt;
  
  
  Anthropic's quiet position on WebMCP
&lt;/h2&gt;

&lt;p&gt;If you read the &lt;a href="https://blog.modelcontextprotocol.io/posts/2026-mcp-roadmap/" rel="noopener noreferrer"&gt;Anthropic 2026 MCP Roadmap&lt;/a&gt; carefully, what's notable is what isn't there. There's a lot on server-side improvements: OAuth flows, SSO integration (Cross-App-Auth), reference-based results to cut context bloat, better streaming. There's no explicit WebMCP commitment.&lt;/p&gt;

&lt;p&gt;This makes sense in context. Anthropic is the company that originated MCP, and they're focused on making MCP great where the demand is, which is server-side enterprise integrations. Microsoft and Google are the ones investing in the browser path. The split mirrors the broader landscape: Anthropic optimizes for the developer who wires up a Claude API to their internal systems. Google optimizes for the browser surface they own. Microsoft optimizes for the Edge + Copilot stack they're building.&lt;/p&gt;

&lt;p&gt;There was also the January 2026 incident where &lt;a href="https://thenewstack.io/anthropic-claudecode-opencode-split/" rel="noopener noreferrer"&gt;Anthropic deployed server-side checks to block third-party tools authenticating via OAuth to Claude Pro and Max subscriptions&lt;/a&gt;. That's not directly about WebMCP, but it shows Anthropic's roadmap priorities are independent, they make decisions that benefit their own business model, even when those decisions cut against the broader MCP ecosystem.&lt;/p&gt;

&lt;p&gt;For website owners, this means: don't expect Anthropic to ship a WebMCP-calling Claude Desktop update next quarter. Microsoft Edge with Copilot integration is the more likely first mover. Google Chrome with Gemini integration is the other.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we found in our own code
&lt;/h2&gt;

&lt;p&gt;This is the part where I'll be honest about our own implementation, because it's relevant to anyone who jumped on WebMCP in 2024 and 2025.&lt;/p&gt;

&lt;p&gt;We've been shipping WebMCP-like surfaces for over a year now. On the &lt;a href="https://studiomeyer.io/en/immobilien" rel="noopener noreferrer"&gt;immobilien pages&lt;/a&gt; we generate for real estate clients, on the AI-Ready WP Pro WordPress plugin, on customer hotel sites built through our provisioning pipeline. The marketing story has always been: "we expose tools so agents can call them directly."&lt;/p&gt;

&lt;p&gt;Last week I ran a code audit on the SM repo. The results were uncomfortable in a useful way.&lt;/p&gt;

&lt;p&gt;The good news: there's no &lt;code&gt;window.agent&lt;/code&gt; anywhere. We never bought into the deprecated 2025 pattern. The newer &lt;code&gt;navigator.modelContext&lt;/code&gt; API is mentioned in our blog posts and documentation, and the immobilien tests check both patterns side by side.&lt;/p&gt;

&lt;p&gt;The mixed news: the actual generator that builds customer hotel sites, &lt;code&gt;lib/provisioning/hotel/generators/ai-discovery.ts&lt;/code&gt;, still produces a WebMCP-registration script that uses our older custom shape, &lt;code&gt;window.mcp.tools.push(...)&lt;/code&gt;. That was the convention we built in 2024 before the spec stabilized. It worked for us at the time because we were also building our own MCP-B-style bridge to read those tools. It does not match the current &lt;code&gt;navigator.modelContext.registerTool()&lt;/code&gt; API that browsers will actually look for.&lt;/p&gt;

&lt;p&gt;Migration is on our roadmap, planned for the next provisioning cycle. The timing window is generous: no production browser calls these tools today, and the spec just stabilized in April. We're moving customer sites to &lt;code&gt;navigator.modelContext.registerTool()&lt;/code&gt; before Chrome ships it on by default, which gives every hotel and immobilien site we host a head start on the first agents that will probe for it.&lt;/p&gt;

&lt;p&gt;Every team that built WebMCP-like surfaces in 2024-2025 is facing this same migration moment. The cost of being early is having to update once. The cost of being late is much higher.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build it anyway
&lt;/h2&gt;

&lt;p&gt;After spending a week deep in this research, here's where I land.&lt;/p&gt;

&lt;p&gt;WebMCP is going to matter. The browser path for AI agents is real, the spec is technically clean, and the companies that need it (Microsoft, Google) are funding it. The timing gap is also real. We are 12-18 months early on production agent adoption. Anything you build today is forward-compat investment, not revenue today.&lt;/p&gt;

&lt;p&gt;If you're building a SaaS or an agency site, the right move is to add WebMCP surfaces now using the current &lt;code&gt;navigator.modelContext.registerTool()&lt;/code&gt; API. Don't use &lt;code&gt;window.agent&lt;/code&gt;. Don't use ad-hoc custom shapes like our old &lt;code&gt;window.mcp&lt;/code&gt;. Stick to the spec. When Chrome ships it on by default and the major agents start calling it, your site will already be the first one in your category that an agent can talk to.&lt;/p&gt;

&lt;p&gt;If you're building an AI agent product, the picture is different. Don't bet on WebMCP being available in May 2026. Build on Computer Use and virtual-browser approaches for now, and watch the Chrome and Edge release notes for the moment WebMCP turns on by default. That's the trigger for the second phase of agent web automation.&lt;/p&gt;

&lt;p&gt;If you're a publisher (a hotel, a real estate office, a B2B service) reading this, the question is simpler. Adding WebMCP surfaces is cheap, mostly mechanical work. The downside is zero. The upside is being ready 12 months before your competitors when agents start calling structured tools instead of clicking through your booking flow. We're recommending it to every client we onboard, with a clear note about the timing gap.&lt;/p&gt;

&lt;p&gt;Build now. Know the gap. Match the spec.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is WebMCP in one sentence?&lt;/strong&gt;&lt;br&gt;
WebMCP is a W3C Community Group Draft for a browser API (&lt;code&gt;navigator.modelContext.registerTool&lt;/code&gt;) that lets websites expose typed, callable tools to AI agents running in the browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can my AI agent call a WebMCP-equipped website's tools today?&lt;/strong&gt;&lt;br&gt;
Not through Claude Desktop, ChatGPT Operator, Gemini, or Perplexity. None of them call WebMCP tools on websites in May 2026. The only working bridge is the MCP-B browser extension, which aggregates WebMCP tools from open tabs and forwards them to a local MCP client. It's an opt-in setup, not the default behavior of any mainstream agent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does WebMCP work in production browsers?&lt;/strong&gt;&lt;br&gt;
Chrome 146 Stable shipped on 10 March 2026 and has a WebMCP implementation. It's behind the flag &lt;code&gt;enable-webmcp-testing&lt;/code&gt;, so it's off by default. Edge will follow. Firefox and Safari are in the Working Group with no timeline. Late 2026 is the projected target for Chrome to ship it on by default.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Should I implement WebMCP on my site right now?&lt;/strong&gt;&lt;br&gt;
Yes, if you have the engineering budget. The cost is low, the downside is zero, and the upside is being ready 12 months before your competitors when agents start calling typed tools. Use the current &lt;code&gt;navigator.modelContext.registerTool()&lt;/code&gt; API. Avoid the deprecated &lt;code&gt;window.agent&lt;/code&gt; pattern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How is WebMCP different from MCP?&lt;/strong&gt;&lt;br&gt;
MCP (Model Context Protocol) is server-side. An MCP server runs on a backend, exposes tools, and connects to an AI client over JSON-RPC. WebMCP is browser-native. The web page itself is the tool source. It does not use JSON-RPC, does not require a separate OAuth flow, and inherits the user's existing session cookies. Same conceptual model (typed tools), completely different transport.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When will mainstream agents start using WebMCP?&lt;/strong&gt;&lt;br&gt;
Best estimate is mid-2027 for mass adoption. The bottleneck is publisher-side opt-in plus mainstream agent clients adding the consumer code path. Chrome shipping WebMCP on by default in late 2026 is the likely trigger event, but agents still have to ship the calling logic and publishers still have to register tools. Expect a 12-18 month lag from spec stable to broad real-world adoption.&lt;/p&gt;




&lt;p&gt;Related reading on StudioMeyer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://studiomeyer.io/en/blog/was-ist-webmcp" rel="noopener noreferrer"&gt;What is WebMCP&lt;/a&gt;, the original explainer&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://studiomeyer.io/en/blog/mcp-vs-rest-vs-webmcp" rel="noopener noreferrer"&gt;MCP vs REST vs WebMCP&lt;/a&gt;, the April protocol comparison&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://studiomeyer.io/en/blog/webmcp-w3c-standard" rel="noopener noreferrer"&gt;WebMCP W3C Standard&lt;/a&gt;, spec-focused piece&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://studiomeyer.io/en/blog/webmcp-use-cases-branchen" rel="noopener noreferrer"&gt;WebMCP use cases by industry&lt;/a&gt;, what publishers actually expose&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://studiomeyer.io/en/services/integration" rel="noopener noreferrer"&gt;Make your website AI-agent-ready&lt;/a&gt;, service page on integration work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want help implementing WebMCP surfaces on your site, that's what &lt;a href="https://studiomeyer.io/en/services/integration" rel="noopener noreferrer"&gt;our integration practice&lt;/a&gt; does. We'll match the current &lt;code&gt;navigator.modelContext.registerTool()&lt;/code&gt; API and document the migration path for when the browser layer matures.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://studiomeyer.io/en/blog/webmcp-reality-check-may-2026" rel="noopener noreferrer"&gt;studiomeyer.io&lt;/a&gt;. StudioMeyer is an AI-first digital studio building premium websites and intelligent automation for businesses.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webmcp</category>
      <category>aiagents</category>
      <category>browserapi</category>
    </item>
    <item>
      <title>Five MCP Servers Before Claude Code Writes a Single Line</title>
      <dc:creator>Matthias | StudioMeyer</dc:creator>
      <pubDate>Tue, 12 May 2026 00:19:57 +0000</pubDate>
      <link>https://dev.to/studiomeyer_io/five-mcp-servers-before-claude-code-writes-a-single-line-18f8</link>
      <guid>https://dev.to/studiomeyer_io/five-mcp-servers-before-claude-code-writes-a-single-line-18f8</guid>
      <description>&lt;p&gt;Claude Code went from research preview to a meaningful share of all public GitHub commits surprisingly fast, per &lt;a href="https://mcp.directory/blog/claude-code-best-practices" rel="noopener noreferrer"&gt;Anthropic's own data and the broader best-practices roundup&lt;/a&gt;. Most of those commits shipped to production. A meaningful share rolled back soon after.&lt;/p&gt;

&lt;p&gt;The interesting question is not how the model writes the code. It is what happens in the early window before it starts. That window is where good Claude Code sessions and bad ones diverge.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Cold-Start Problem
&lt;/h2&gt;

&lt;p&gt;A fresh Claude Code session has no idea what you decided earlier, what the codebase looks like, what the current state of any library you depend on actually is, or what mistakes you already made and ruled out. Without help, it rebuilds your reasoning from scratch every time. Usually wrong.&lt;/p&gt;

&lt;p&gt;Three failure modes show up almost immediately. The model invents class names that sound plausible but do not exist in the project. It cites API methods from versions of an SDK that got renamed two releases ago. It re-litigates decisions that were settled months earlier, because the rationale was never persisted anywhere the model could read.&lt;/p&gt;

&lt;p&gt;Each of these is fixable, but not by prompting harder. The fix is to give Claude Code the context it would have if it had been on the team for a while. The Model Context Protocol exists for exactly this. There is by now a &lt;a href="https://www.buildfastwithai.com/blogs/claude-mcp-setup-guide-2026" rel="noopener noreferrer"&gt;large public MCP server ecosystem&lt;/a&gt;, and the small subset that earns its place in a daily routine is what this post is about.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Five-Step Stack
&lt;/h2&gt;

&lt;p&gt;The routine is short. It runs at the start of every session, before any code is written or any file is edited. Five steps, in this order.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Load Memory
&lt;/h3&gt;

&lt;p&gt;The first call is to a memory MCP server that carries context across sessions (we run &lt;a href="https://dev.to/en/services/memory"&gt;StudioMeyer Memory&lt;/a&gt; for this layer). Recent sprint, open decisions, recent learnings, why a particular technical choice was made earlier, and the failure modes the team already hit. Memory is what turns a session from a cold start into a warm one.&lt;/p&gt;

&lt;p&gt;Without it, every conversation begins with the model trying to reconstruct your reasoning from the file tree and a few sentences in CLAUDE.md. With it, the model walks in already knowing that you tried Postgres pooling, that the answer was raw &lt;code&gt;pg&lt;/code&gt; instead of Prisma in the agent layer, and that you had a Cross-Tenant leak in April that informs the way the schema is shaped today.&lt;/p&gt;

&lt;p&gt;The point is not "the model remembers everything." It is that the team's accumulated decisions become available to the model as background, the way they are available to a senior engineer on day one of week twenty.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Index the Codebase as a Graph
&lt;/h3&gt;

&lt;p&gt;The second call is to a codebase memory server. &lt;a href="https://github.com/DeusData/codebase-memory-mcp" rel="noopener noreferrer"&gt;codebase-memory-mcp&lt;/a&gt;, for example, indexes a repository into a queryable knowledge graph quickly, supports a wide range of languages, and answers structural questions with very low latency and a small fraction of the token cost compared to grep-and-read cycles (&lt;a href="https://github.com/DeusData/codebase-memory-mcp#benchmarks" rel="noopener noreferrer"&gt;per the maintainer's benchmarks&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;What this changes day-to-day is enormous. When the model needs to know what calls &lt;code&gt;processOrder&lt;/code&gt;, it queries the graph and gets back a list with line numbers. Without the graph, it greps blind, reads files, follows imports, and burns large amounts of tokens to arrive at the same answer. Multiply by many such questions per session and the difference between "agent that can reason about a large codebase" and "agent that can only reason about a handful of files at a time" is exactly this server.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Search the Present, Not the Training Set
&lt;/h3&gt;

&lt;p&gt;The third call is to a web search MCP server such as &lt;a href="https://code.claude.com/docs/en/mcp" rel="noopener noreferrer"&gt;Tavily, Brave Search, or Anthropic web search&lt;/a&gt;. The point is not to replace the model's knowledge. It is to replace the model's stale knowledge with what people are actually doing right now, before a non-trivial decision is made.&lt;/p&gt;

&lt;p&gt;Training data ages, sometimes badly. Best practices from a while back are often still good, but sometimes they are quietly dead. A short search before a real decision gets a clean answer with sources, instead of a confident reconstruction of older consensus.&lt;/p&gt;

&lt;p&gt;Tavily-style retrieval works particularly well here because it filters out SEO noise and returns the few results that actually contain the answer. The cost is small, the upside is a model that does not commit to a deprecated pattern in front of a code reviewer.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Load Context7 for Library Docs
&lt;/h3&gt;

&lt;p&gt;The fourth call is to &lt;a href="https://www.speakeasy.com/mcp/using-mcp/use-cases" rel="noopener noreferrer"&gt;Context7&lt;/a&gt;, which fetches current documentation for whatever library is about to be touched. The Anthropic SDK, Next.js, Prisma, Tailwind, the AWS SDK, whatever the next bit of work involves.&lt;/p&gt;

&lt;p&gt;The training cutoff is the single largest source of plausible-looking-but-broken code that Claude Code generates. The model cheerfully invents API methods that got renamed two versions ago, calls hooks that were deprecated in a minor release, and forgets that a config option flipped its default in the latest patch. Loading the actual current docs ended that entire category of bug for production workflows months ago.&lt;/p&gt;

&lt;p&gt;Context7 is consistently cited as one of the most-used MCP servers in development setups in 2026, for exactly this reason.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Write Code
&lt;/h3&gt;

&lt;p&gt;By the time the model starts writing, it has memory, codebase structure, current ecosystem context, and accurate library docs. The output reads differently. Less "let me try this and see if it compiles," more "based on the call graph and the v5 docs, the change goes here, and the four callers in &lt;code&gt;src/orders&lt;/code&gt; need this updated."&lt;/p&gt;

&lt;p&gt;The short window at the start pays back many times over across the session. Sessions that skip the routine spend much more time cleaning up edits that were made blind.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hooks Layer
&lt;/h2&gt;

&lt;p&gt;MCP servers feed the model context. Hooks enforce behavior. The distinction matters because hooks run outside the agent loop and are deterministic, which means they fire even when the model would rather not.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blakecrosley.com/guides/claude-code" rel="noopener noreferrer"&gt;Blake Crosley's complete CLI guide&lt;/a&gt;, reflecting recent Claude Code releases, puts it cleanly: "Hooks guarantee execution of shell commands regardless of model behavior. Unlike CLAUDE.md instructions which are advisory, hooks are deterministic and guarantee the action." That is the whole reason hooks matter.&lt;/p&gt;

&lt;p&gt;Three hooks earn their place in the daily routine.&lt;/p&gt;

&lt;p&gt;The first is a read-before-edit guard. It refuses any edit on a file that the current session has not actually read first. The model has to load the file properly instead of guessing what is in it. The objection is always the same: "that costs extra tokens up front." The token cost of reading the file is trivial compared to the token cost of cleaning up an edit that broke three callers because the model guessed at the function signature. This hook came out of the &lt;a href="https://github.com/anthropics/claude-code/issues/42796" rel="noopener noreferrer"&gt;adaptive-thinking regression documented in &lt;code&gt;anthropics/claude-code&lt;/code&gt; issue #42796&lt;/a&gt;, where blind-edit rates climbed from 6.2% to 33.7% after Anthropic changed a default. The fix at the user level was a deterministic gate. We covered the user-side workaround for a related Codex regression in our &lt;a href="https://dev.to/en/blog/codex-memory-mcp-fix"&gt;codex memory MCP fix post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The second is a safety guard for destructive commands. Anything resembling &lt;code&gt;rm -rf&lt;/code&gt;, &lt;code&gt;git push --force&lt;/code&gt; to a protected branch, &lt;code&gt;prisma db push --force-reset&lt;/code&gt;, &lt;code&gt;DROP DATABASE&lt;/code&gt;, the usual list. The model occasionally suggests one of these in moments of confusion. The hook stops it before it runs.&lt;/p&gt;

&lt;p&gt;The third is a re-index hook that fires after edits. It refreshes the codebase knowledge graph so that the next query reflects what is actually in the repo, not what it was at the start of the session. Stale graphs are a quiet failure mode, the kind that produces "the function I'm looking for does not exist" hallucinations even when the function was just created two minutes earlier.&lt;/p&gt;

&lt;p&gt;None of these hooks are clever. They are deterministic guardrails for the predictable failure modes of a generative system. That is why they hold up in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing the Loop
&lt;/h2&gt;

&lt;p&gt;Whatever works in a session goes back into memory. Decisions get persisted as decisions. Patterns that proved themselves get stored as learnings, with confidence scores. Mistakes get logged with enough context that the next session avoids them. The next session starts with all of that already loaded.&lt;/p&gt;

&lt;p&gt;This is the part that compounds. The MCP servers and hooks are not a one-time setup, they are the substrate on which the team's accumulated knowledge becomes operational. The system gets sharper every week, not because the model changed, but because the context around it keeps growing in quality.&lt;/p&gt;

&lt;p&gt;Recent industry surveys consistently report that the vast majority of developers still review AI-generated code before committing. The closing-loop pattern is what makes that review faster, because the model's suggestions get progressively more aligned with how the team actually builds. The first sessions with a memory server are unremarkable. After sustained use is where the gap between teams that close the loop and teams that do not becomes obvious.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Replaces, What It Does Not
&lt;/h2&gt;

&lt;p&gt;The pre-coding routine replaces a surprising amount of bespoke tooling. The internal "knowledge base" Confluence page that nobody reads. The Slack channel where past decisions go to die. The grep cycles to find a function definition. The Stack Overflow searches for an API method that may or may not still exist. The CLAUDE.md file that grew to two thousand lines because every regression added a new "remember not to do this" paragraph.&lt;/p&gt;

&lt;p&gt;It does not replace human review of generated code. It does not replace tests, type checks, or production monitoring. It does not turn Claude Code into a senior engineer. What it does is move the model from "junior dev with amnesia" to "informed contributor with access to the team's working memory." That is enough to ship serious work, not enough to skip the review.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bigger Pattern
&lt;/h2&gt;

&lt;p&gt;The shift after a few months of running this routine is the framing. The model stops being the source of knowledge. The model becomes the orchestrator. The MCP servers and hooks are the system.&lt;/p&gt;

&lt;p&gt;Memory remembers. The graph knows the code. Search knows the present. Context7 knows the docs. Hooks keep the model honest. The model connects them.&lt;/p&gt;

&lt;p&gt;This is the same architectural pattern that Anthropic engineers describe when they talk about Claude Code as &lt;a href="https://www.penligent.ai/hackinglabs/inside-claude-code-the-architecture-behind-tools-memory-hooks-and-mcp/" rel="noopener noreferrer"&gt;"an agentic CLI that reads your codebase, executes commands, and modifies files through a layered system of permissions, hooks, MCP integrations, and subagents"&lt;/a&gt;. The model in the middle is one component. The interesting engineering work is everything around it.&lt;/p&gt;

&lt;p&gt;For teams that are still running Claude Code with no MCP servers and no hooks, the upgrade path is short. Start with one memory server, one codebase graph, and the read-before-edit hook. The first session after that change is when the rest of the routine becomes obvious.&lt;/p&gt;

&lt;p&gt;The pre-coding routine is short. The compound interest on that brief preamble is what makes the difference, over time, between a model that ships and a model that hallucinates.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://studiomeyer.io/en/blog/pre-coding-routine-claude-code-five-mcp-servers" rel="noopener noreferrer"&gt;studiomeyer.io&lt;/a&gt;. StudioMeyer is an AI-first digital studio building premium websites and intelligent automation for businesses.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claudecode</category>
      <category>hooks</category>
      <category>aiworkflow</category>
    </item>
    <item>
      <title>Local LLMs in 2026: What Actually Works on Consumer Hardware</title>
      <dc:creator>Matthias | StudioMeyer</dc:creator>
      <pubDate>Sun, 10 May 2026 11:36:19 +0000</pubDate>
      <link>https://dev.to/studiomeyer_io/local-llms-in-2026-what-actually-works-on-consumer-hardware-50me</link>
      <guid>https://dev.to/studiomeyer_io/local-llms-in-2026-what-actually-works-on-consumer-hardware-50me</guid>
      <description>&lt;p&gt;&lt;strong&gt;Local LLMs in 2026 work on three hardware lanes: 32-core CPU with 64GB+ RAM hits 10-25 tokens per second on Qwen 3 14B, an RTX 4090 hits 30-80 tokens per second on the same model and 8-15 tokens per second on Llama 3.3 70B in Q4, and an M3 or M4 Max with 64GB+ unified memory delivers 25-40 tokens per second on 14B. Default stack: Ollama with Qwen 3 14B in Q4_K_M. Nothing exotic. The local-LLM space stopped being a hobbyist niche. The hardware is reasonable, the models are real, the tooling is production-grade. The only argument left for cloud-only is convenience, and even that is weakening.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Two years ago "running an LLM at home" meant a bored weekend, a 7B Llama checkpoint, and the slow realization that the output was barely better than autocomplete. Mid-2026 the picture is different. Llama 3.3 8B runs faster on a 32-core CPU than GPT-3.5 Turbo did on the OpenAI servers in 2023. Qwen 3 32B fits comfortably on a single RTX 4090. Phi-4 14B holds its own in tool-calling benchmarks against frontier models from a year ago.&lt;/p&gt;

&lt;p&gt;This is a practical map of the local LLM landscape as of May 2026. No "ultimate guide", no affiliate links, just the stuff that actually works.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hardware Reality
&lt;/h2&gt;

&lt;p&gt;The honest framing is this. You have three hardware lanes, and they all produce useful results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CPU only with 32+ cores and 64GB+ RAM.&lt;/strong&gt; A modern Intel i9 or Ryzen 9 with DDR5 reaches 10-25 tokens per second on a 7B-14B model in Q4_K_M quantization. That is not theoretical. That is &lt;code&gt;ollama run qwen3:14b&lt;/code&gt; on a $1500 workstation. For chat UX, anything above 8 tokens per second feels usable. For batch summarization or background agents, even 5 tokens per second is fine. The catch is that 32B+ models drop to 2-5 tokens per second, and 70B models in Q4 land at 1-2 tokens per second. CPU is great for chat-sized models, painful for the big ones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consumer GPU, RTX 4090 24GB or RTX 4080 16GB.&lt;/strong&gt; This is the sweet spot for 32B models in Q4_K_M (about 19GB VRAM) and 70B models in IQ3_M (about 22GB VRAM). Token rates land at 30-80 tokens per second for 14B, 15-30 tokens per second for 32B, 8-15 tokens per second for 70B. A 4090 plus 64GB system RAM handles essentially anything below 100B parameters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Apple Silicon, M3 Max or M4 Max with 64GB+ unified memory.&lt;/strong&gt; Distinct vibe. MLX-LM has caught up impressively. 14B runs at 25-40 tokens per second, 70B in Q4 at 6-10 tokens per second. The unified memory is the unlock. You do not pay the GPU-VRAM tax. Trade-off: 3-5x slower than equivalent NVIDIA when you are GPU-bound, faster than NVIDIA when you are memory-bound (which is most local-LLM scenarios).&lt;/p&gt;

&lt;p&gt;What you do not need: an A100. Renting one for $1.50/hour on RunPod or Lambda makes sense if you are training, not if you are inferring.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Models That Matter
&lt;/h2&gt;

&lt;p&gt;The leaderboard churns weekly. As of May 2026, these are the models you should at least know about.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Qwen 3&lt;/strong&gt; (Alibaba, 7B/14B/32B/72B/235B-MoE). The most-used local model series in 2026 according to Hugging Face download stats. Strong tool-calling, native ChatML, multilingual quality (German, Spanish, Chinese all clean). The 7B is the new "default first try", the 14B is the chat sweet-spot, the 32B competes with mid-tier cloud models on most benchmarks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Llama 3.3&lt;/strong&gt; (Meta, 8B/70B). The 70B closed the gap to GPT-4-class on long-context tasks. The 8B is the comparison-baseline most papers use, including LongMemEval. If your downstream evaluation matters, run Llama 3.3 8B as your reference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mistral Small / Mistral Nemo&lt;/strong&gt; (Mistral, 12B/24B). Solid all-rounders. Apache 2.0 licensed. Less tool-call-tuned than Qwen but more "neutral" in tone, often preferred for summarization tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phi-4&lt;/strong&gt; (Microsoft Research, 14B). Punches above its weight on reasoning. Smaller context window than the others (16k) but the reasoning quality at 14B is surprising. Good for code-heavy tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemma 3&lt;/strong&gt; (Google, 8B/27B). Google's open-weight contribution. Strong instruction-following, weaker on tool-use than Qwen. The 27B is interesting because it sits in the awkward middle ground that competes with the 32B Qwen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DeepSeek-R1 distilled variants&lt;/strong&gt; (DeepSeek, 7B/14B/32B/70B). Reasoning-tuned distillations from the R1 frontier model. Heavy chain-of-thought output. Useful for math, code, multi-step reasoning. Not great for short-answer chat because the model wants to think out loud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GLM-4-9B&lt;/strong&gt; (Zhipu, 9B). Underrated. Strong for its size, good multilingual, often forgotten because the marketing reach is smaller than Qwen's.&lt;/p&gt;

&lt;p&gt;If you want one default to start with: Qwen 3 14B in Q4_K_M via Ollama. It will not be the best at any specific task, but it will not be embarrassing at any task either.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Stack
&lt;/h2&gt;

&lt;p&gt;Four real options as of mid-2026.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ollama&lt;/strong&gt; is the easiest path. One install, one command, OpenAI-compatible HTTP API on &lt;code&gt;localhost:11434&lt;/code&gt;. Tradeoff: less control over sampling parameters, less control over quantization choices, default settings are conservative. Great for prototyping, fine for production if you do not need to tune.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;llama.cpp&lt;/strong&gt; is the engine underneath Ollama and most other local-LLM tools. If you want manual control over quantization variants, NUMA tuning, custom samplers, mmap behavior, this is what you reach for. Steeper learning curve. The &lt;code&gt;llama-server&lt;/code&gt; binary gives you an OpenAI-compatible API too.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;vLLM&lt;/strong&gt; with CPU support landed properly in 2025 and is now production-grade for serving. If you are running a local model behind multiple concurrent users (small team, internal tool), vLLM's batching beats Ollama and llama.cpp by a wide margin. Setup is heavier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LocalAI&lt;/strong&gt; is a drop-in OpenAI replacement that supports multiple backends (llama.cpp, gguf, transformers). Useful if you want to swap providers without changing your application code, or if you want one server that handles text, embeddings, and image generation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MLX-LM&lt;/strong&gt; is Apple Silicon only and worth calling out separately. If you are on a Mac, this is the path. The performance is good and the Python integration is clean.&lt;/p&gt;

&lt;p&gt;For most readers: start with Ollama, move to llama.cpp when you hit a limit, consider vLLM when you have concurrent users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quantization in 60 Seconds
&lt;/h2&gt;

&lt;p&gt;Quantization is how you take a 70B model that needs 140GB in FP16 and squeeze it onto a 24GB GPU. The numbers in the filename matter.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Q4_K_M&lt;/code&gt; is the default-default. About 4.5 bits per weight, decent quality, reasonable size. 95% of users should not deviate from this for their first pass.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Q5_K_M&lt;/code&gt; is the small quality bump. About 5.5 bits per weight, 25% larger, often imperceptible quality difference. Worth trying if you have headroom.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Q6_K&lt;/code&gt; is the "almost lossless" option. About 6.5 bits per weight, 50% larger than Q4. Use this when quality matters more than speed.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Q8_0&lt;/code&gt; is essentially the original model. Twice the size of Q4. Reserved for evaluations or when you have abundant VRAM.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;IQ4_XS&lt;/code&gt; is interesting. Same memory footprint as Q4_K_M but uses an importance-aware quantization scheme that improves quality. Slower to evaluate (the importance metadata adds overhead). Worth trying for quality-sensitive tasks.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;IQ3_M&lt;/code&gt; and below are aggressive size reductions. Useful when you absolutely need a 70B model on a 16GB GPU. Quality drop is real and noticeable.&lt;/p&gt;

&lt;p&gt;The Q4_K_M default works. Do not overthink this until you have a specific reason to.&lt;/p&gt;

&lt;h2&gt;
  
  
  Picking Your Setup
&lt;/h2&gt;

&lt;p&gt;A short decision tree.&lt;/p&gt;

&lt;p&gt;If you have a Mac with 32GB+ unified memory: install Ollama, run &lt;code&gt;ollama pull qwen3:14b&lt;/code&gt;, you are done.&lt;/p&gt;

&lt;p&gt;If you have a Linux box with 64GB+ RAM and no GPU: install Ollama, run Qwen 3 14B in Q4_K_M. Expect 10-15 tokens per second. If that is too slow, try Qwen 3 7B and accept a small quality drop.&lt;/p&gt;

&lt;p&gt;If you have an RTX 4090 or similar 24GB GPU: install Ollama, run Qwen 3 32B in Q4_K_M. You will not regret this combination. If you want the absolute best, run Qwen 3 72B in IQ3_M and accept that you are squeezing the model.&lt;/p&gt;

&lt;p&gt;If you are running for a team: vLLM, Qwen 3 14B, batch size tuned to your concurrency. The throughput-per-watt is unmatched.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Coming Q3-Q4 2026
&lt;/h2&gt;

&lt;p&gt;Three trends visible right now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mixture-of-Experts is becoming consumer-tractable.&lt;/strong&gt; Qwen 3 235B-A22B is a 235B-parameter model where only 22B are active per token. With aggressive quantization, this fits on a workstation. The next 6 months will see more 100B-class MoE models that effectively run as 20-30B models in active compute.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reasoning models are commoditizing.&lt;/strong&gt; DeepSeek-R1 was the first widely-distributed reasoning-trained open model. By Q4 2026, expect reasoning variants of every major series. The trade-off (longer outputs, higher latency) is becoming better understood.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LoRA marketplaces are growing.&lt;/strong&gt; Hugging Face has 20,000+ LoRA adapters for popular base models. The pattern of "shared base model plus pluggable specialization" is replacing the old "everyone fine-tunes their own monolith" approach.&lt;/p&gt;

&lt;p&gt;The local LLM space is no longer a hobbyist niche. The hardware is reasonable, the models are real, the tooling is production-grade. If your only reason for not running a local LLM is "the cloud is easier", that argument is on its last legs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Qwen 3 model card and benchmarks: huggingface.co/Qwen&lt;/li&gt;
&lt;li&gt;Llama 3.3 release notes: ai.meta.com/blog/llama-3-3&lt;/li&gt;
&lt;li&gt;LongMemEval paper (Llama 3.1 baselines): arxiv.org/abs/2410.10813&lt;/li&gt;
&lt;li&gt;Ollama documentation: ollama.com/docs&lt;/li&gt;
&lt;li&gt;llama.cpp project: github.com/ggerganov/llama.cpp&lt;/li&gt;
&lt;li&gt;vLLM CPU backend: docs.vllm.ai/en/latest/getting_started/cpu-installation.html&lt;/li&gt;
&lt;li&gt;MLX-LM: github.com/ml-explore/mlx-lm&lt;/li&gt;
&lt;li&gt;Quantization comparison (k-quants): github.com/ggerganov/llama.cpp/pull/1684&lt;/li&gt;
&lt;li&gt;AscentCore Small LLM Benchmark April 2026: ascentcore.com/2026/04/01/small-llm-performance-benchmark&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://studiomeyer.io/en/blog/local-llms-2026" rel="noopener noreferrer"&gt;studiomeyer.io&lt;/a&gt;. StudioMeyer is an AI-first digital studio building premium websites and intelligent automation for businesses.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>localllm</category>
      <category>ollama</category>
      <category>qwen</category>
    </item>
    <item>
      <title>I audited 25 of my open-source repos. Stars lied.</title>
      <dc:creator>Matthias | StudioMeyer</dc:creator>
      <pubDate>Sat, 09 May 2026 19:01:49 +0000</pubDate>
      <link>https://dev.to/studiomeyer_io/i-audited-25-of-my-open-source-repos-stars-lied-2ak4</link>
      <guid>https://dev.to/studiomeyer_io/i-audited-25-of-my-open-source-repos-stars-lied-2ak4</guid>
      <description>&lt;p&gt;A friend asked me yesterday how the open-source side of the studio is doing. I checked GitHub. The top repo had five stars. Most had zero. I almost wrote back "yeah, slow start, nothing to see yet."&lt;/p&gt;

&lt;p&gt;Then I actually ran the numbers. 3,681 npm installs last month across 15 packages. 254 PyPI installs on a six-day-old library. 12 forks. 30 to 40 unique visitors per week on the top five repos. Real users opening real issues are zero, which means either nothing is broken or nobody is loud yet, and the install counts say it is the second one.&lt;/p&gt;

&lt;p&gt;So I sat down and audited all 25 public repos in one session. Here is what I found, what I fixed, and why GitHub stars are basically the wrong number to look at when you are five weeks into shipping.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup
&lt;/h2&gt;

&lt;p&gt;Five weeks ago I started pushing the StudioMeyer MCP work to public repos. Memory, CRM, GEO, Crew, and a growing pile of foundation pillars under the MCP Factory umbrella. Test harnesses for the Model Context Protocol spec, security middleware in TypeScript and Python, a Rust sidecar against marketplace poisoning, n8n templates, a few tooling repos. Twenty five public repos in the studiomeyer-io org by the time I ran today's audit. Mostly TypeScript, one Rust crate, one Python package, two n8n template collections.&lt;/p&gt;

&lt;p&gt;The audit question was plain: are people actually using this stuff?&lt;/p&gt;

&lt;h2&gt;
  
  
  Method
&lt;/h2&gt;

&lt;p&gt;I pulled four data sources in parallel and joined them per repo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;GitHub API&lt;/strong&gt; for stars, forks, watchers, open issues, open pull requests, last push, license, archived state.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;npm registry + npm-stat&lt;/strong&gt; for last-week and last-month download counts and current published version, per package.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;crates.io API&lt;/strong&gt; for the one Rust crate, with the recent 90-day download count and per-version splits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PyPI + pypistats&lt;/strong&gt; for the one Python package, with the last-month and last-day numbers.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then for each repo I checked the last three GitHub Actions runs, listed the open Dependabot security alerts, looked at the GitHub Traffic counts (views and clones, last 14 days), and pulled all open and closed issues plus PRs.&lt;/p&gt;

&lt;p&gt;The whole thing took about thirty minutes. I am keeping the recipe in my memory system so I can run it again every quarter without thinking.&lt;/p&gt;

&lt;h2&gt;
  
  
  What stars said vs. what downloads said
&lt;/h2&gt;

&lt;p&gt;Top of the list by stars:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Repo&lt;/th&gt;
&lt;th&gt;Stars&lt;/th&gt;
&lt;th&gt;Forks&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;local-memory-mcp&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ai-shield&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;darwin-agents&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;studiomeyer-memory&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;n8n-templates&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;n8n-nodes-studiomeyer-memory&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mcp-video&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;studiomeyer-crm, geo, crew&lt;/td&gt;
&lt;td&gt;1, 1, 1&lt;/td&gt;
&lt;td&gt;1, 1, 0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you stop here you would conclude the work has not landed. Average just over one star per repo. Several flagship MCP packages with zero stars and zero forks.&lt;/p&gt;

&lt;p&gt;Top of the same list by npm downloads in the last 30 days:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Last week&lt;/th&gt;
&lt;th&gt;Last month&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;mcp-academy&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;535&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;n8n-nodes-studiomeyer-memory&lt;/td&gt;
&lt;td&gt;186&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;491&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mcp-personal-suite&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;368&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mcp-tenant-pair&lt;/td&gt;
&lt;td&gt;181&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;331&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mcp-hook-conformance&lt;/td&gt;
&lt;td&gt;152&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;285&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mcp-tenant-pair-demo&lt;/td&gt;
&lt;td&gt;160&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;281&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mcp-tenant-pair-cli&lt;/td&gt;
&lt;td&gt;141&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;268&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mcp-attest-demo&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;260&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mcp-protocol-conformance&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;232&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mcp-server-attestation&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;148&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mcp-studiomeyer-agents&lt;/td&gt;
&lt;td&gt;144&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;144&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mcp-attest-cli&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;123&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mcp-spec-migrator&lt;/td&gt;
&lt;td&gt;103&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;103&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mcp-stdio-shellguard&lt;/td&gt;
&lt;td&gt;101&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;101&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mcp-video&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That is 3,681 installs across 15 packages in 30 days, on top of 254 PyPI installs on the Python port of ai-shield (six days old at audit time), and 25 cargo installs on the Rust mcp-armor crate (also six days old).&lt;/p&gt;

&lt;p&gt;The packages I shipped most recently, mcp-studiomeyer-agents and mcp-stdio-shellguard, picked up around 100 to 150 installs in the first week without any Reddit post, no HN submission, no email blast. They went out, registered on the MCP Registry index, got picked up by npm search, and people just installed them.&lt;/p&gt;

&lt;p&gt;Stars and downloads are not the same metric. Stars need someone to log in, click, and get nothing back. Downloads need someone to read about a tool and run &lt;code&gt;npm install&lt;/code&gt;. The second one is much closer to actual usage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Issues, PRs, traffic
&lt;/h2&gt;

&lt;p&gt;Closed issues across all 25 repos: four. ai-shield had two, mcp-video had one, local-memory-mcp had one. Open issues: zero, except for one cosmetic ticket on mcp-academy from a while ago. That tells me either the libraries are stable enough that nothing is breaking for users, or nobody is loud about bugs yet. Probably both, weighted toward the first because the test suites are large and the dependency surface is small for most of these packages.&lt;/p&gt;

&lt;p&gt;Pull requests over the period: 31 merged. Most are Dependabot. A few are real fixes. ai-shield got two real PRs, mcp-personal-suite got nine. The Dependabot stream is doing actual work in the background, keeping lockfiles current.&lt;/p&gt;

&lt;p&gt;GitHub Traffic for the last 14 days, just unique visitors so the numbers are honest:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Repo&lt;/th&gt;
&lt;th&gt;Unique views (14d)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ai-shield&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;darwin-agents&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;studiomeyer-geo&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;n8n-templates&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;studiomeyer-memory&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;agent-fleet&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;studiomeyer-marketplace&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Thirty unique visitors on a repo over two weeks is not viral, but it is not dead either. Multiply by the number of repos and the org page is getting real attention.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then the actual fixing
&lt;/h2&gt;

&lt;p&gt;The audit surfaced one repo with real work and a few cosmetic issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;mcp-academy had seven open Dependabot security alerts.&lt;/strong&gt; Two high severity around fast-uri, four medium around hono CSS injection and cache leakage and bodyLimit bypass, one low around hono JWT validation. I checked the lockfile via the GitHub contents API and decoded the base64. Both transitive dependencies were already on the patched version. The Dependabot scan had not propagated yet. I dismissed all eight alerts (one was for ip-address, also already patched) with reason &lt;code&gt;fix_started&lt;/code&gt; and a comment showing the lockfile state. There was also one open Dependabot PR bumping fast-uri from 3.1.0 to 3.1.2. I merged it. Master HEAD is now &lt;code&gt;74bf554&lt;/code&gt; with zero open alerts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;mcp-personal-suite had a failing CI step on &lt;code&gt;npm audit --audit-level=high&lt;/code&gt;.&lt;/strong&gt; Same root cause as academy: transitive vulnerable dependencies. The package.json had no overrides for hono or fast-uri, so the lockfile was stuck on hono 4.12.14 and fast-uri 3.1.0. I cloned it locally, added &lt;code&gt;overrides: { "hono": "&amp;gt;=4.12.18", "fast-uri": "&amp;gt;=3.1.2" }&lt;/code&gt; to package.json, ran &lt;code&gt;npm install&lt;/code&gt; to regenerate the lockfile, then ran &lt;code&gt;npm audit fix&lt;/code&gt; which also bumped axios 1.15.1 to 1.16.0, ip-address 10.1.0 to 10.2.0, express-rate-limit 8.3.2 to 8.5.1, and uuid 11.1.0 to 11.1.1. Result: zero vulnerabilities, all 419 tests pass, build clean. Pushed as &lt;code&gt;e93ace4&lt;/code&gt;. CI went green within 90 seconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Five connector repos had recurring failed CI runs that were never real failures.&lt;/strong&gt; The studiomeyer-memory, studiomeyer-crm, studiomeyer-geo, studiomeyer-crew, and studiomeyer-marketplace repos are docs-only mirrors. They have a README and a license file. No &lt;code&gt;package.json&lt;/code&gt;, no &lt;code&gt;.github/workflows/&lt;/code&gt; directory. But Dependabot still tries to update GitHub Actions versions on a daily scan, and every attempt fails because there is nothing to update. The fix is one file per repo: &lt;code&gt;.github/dependabot.yml&lt;/code&gt; with &lt;code&gt;version: 2&lt;/code&gt; and &lt;code&gt;updates: []&lt;/code&gt;. That tells Dependabot explicitly that this repo has nothing for it to scan. Five commits, one per repo. The cached failed runs from before will stay in the history but no new ones will land.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One more repo, mcp-studiomeyer-agents, had the same docs-only Dependabot pattern but with a real package.json.&lt;/strong&gt; It is a stdio MCP server published to npm but it has no CI workflow because the package itself is the deliverable. I scoped its dependabot.yml to npm only with no github_actions block.&lt;/p&gt;

&lt;p&gt;Total time for all the fixing, in one session: about an hour, including the audit. Most of it was waiting for the npm install to finish on personal-suite.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this taught me about KPIs early in OSS
&lt;/h2&gt;

&lt;p&gt;The default narrative when stars are low is that the work is invisible. That is wrong. Stars are a visibility lag indicator. They show up after a Reddit post goes well, after a Hacker News Show HN climbs, after a Twitter thread gets quoted by someone bigger. They do not show up because someone installs your package and uses it for a week.&lt;/p&gt;

&lt;p&gt;Five things actually move during the early weeks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Downloads on the package registry&lt;/strong&gt;, weekly and monthly. npm filters obvious bot mirrors out of public stats, so the numbers are closer to honest than they look.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Forks&lt;/strong&gt;, because somebody who forks usually wants to actually run the code or change something.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Traffic uniques&lt;/strong&gt; over 14-day windows. Bots do not consistently produce uniques across rolling windows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Closed issues, closed PRs&lt;/strong&gt;, the absolute number, because it tells you whether anybody who hit a real bug bothered to file something.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependabot health&lt;/strong&gt;, because as your dependency tree grows, vulnerable packages will eat your CI if you do not stay on top of it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If I had only been watching stars I would have written off the entire MCP Factory effort. mcp-protocol-conformance has zero stars and is on its way to clearing 250 monthly installs. mcp-stdio-shellguard hit 101 installs in its first six days with the same star count.&lt;/p&gt;

&lt;p&gt;The stars will come. They come from a viral post, from a referenced position in a comparison article, from one influencer dropping a link. None of those things happen because the CI is green. They happen because the code does something useful and someone outside the org notices.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would tell my past self
&lt;/h2&gt;

&lt;p&gt;Run the audit early. Run it monthly. Keep the recipe out of your head and in a script or a memory system that survives between sessions. The hour I spent today turned a vague "we should ship more stars" anxiety into a concrete list of one real bug fix and five repos that needed silencing. None of those would have been visible from the GitHub front page.&lt;/p&gt;

&lt;p&gt;Also: GitHub does not give you that audit by default. You have to write it yourself. The good news is that the data is all there, in three free APIs, and parsing it takes about thirty lines of bash.&lt;/p&gt;

&lt;p&gt;Next pieces of work, in priority order, are a Reddit r/mcp post for mcp-armor, since five weeks of zero stars on a real Rust security crate with 100+ npm-equivalent installs is a fair candidate for the "oh, that exists?" reaction. And a Hacker News Show HN for mcp-stdio-shellguard once the next CVE wave hits. Both are visibility moves, not engineering moves.&lt;/p&gt;

&lt;p&gt;Engineering side of the org keeps shipping. The audit just made it less invisible to me.&lt;/p&gt;




&lt;p&gt;If you want the recipe I used, the bash and the Python parsing, the gh API patterns, the npm-stat fallback, ping me. I will write it up as a separate post if more than three people ask. Otherwise the version in my notes is enough.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>mcp</category>
      <category>github</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>Beginner Guide for ChatGPT Users Wondering Whether to Switch to Claude</title>
      <dc:creator>Matthias | StudioMeyer</dc:creator>
      <pubDate>Fri, 08 May 2026 18:40:56 +0000</pubDate>
      <link>https://dev.to/studiomeyer_io/beginner-guide-for-chatgpt-users-wondering-whether-to-switch-to-claude-10j7</link>
      <guid>https://dev.to/studiomeyer_io/beginner-guide-for-chatgpt-users-wondering-whether-to-switch-to-claude-10j7</guid>
      <description>&lt;p&gt;&lt;strong&gt;Beginner guide for ChatGPT users wondering whether to switch to Claude. No tribal loyalty, no side-by-side benchmark tables, just an honest read on when to switch, when to stay, and what changes in week one.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You have ChatGPT Plus. Maybe you tried Claude once two years ago when it was less polished, decided it was the same thing minus the brand, went back. Then in 2026 the rumblings started getting louder. "Claude is better at code." "Claude has Memory now." "Claude does not slop." You started wondering.&lt;/p&gt;

&lt;p&gt;This guide is for that exact moment. Should you switch? Should you keep both? What actually changes when you do?&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Claude wins, honestly
&lt;/h2&gt;

&lt;p&gt;Three areas where Claude is genuinely ahead in 2026.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code.&lt;/strong&gt; Across every benchmark and every developer survey we have looked at, Opus 4.7 outperform GPT on coding tasks. The gap is not subtle. It is the reason most professional builders moved to Claude Code or Cursor with Claude.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Long context with retention.&lt;/strong&gt; Claude's context window is larger and the retention across that window is better. If you regularly throw in a forty-page document and ask questions, Claude is the safer bet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tone.&lt;/strong&gt; This is subjective but consistent. Claude defaults to fewer hedges, fewer "great question!"-style intros, less em-dash overuse, less marketing slop. The output reads more like an editor than a copywriter. Many people find this is the single thing they cannot un-notice once they switch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Native MCP support.&lt;/strong&gt; Claude Desktop and Claude Code support Model Context Protocol natively. ChatGPT supports custom GPTs but not MCP. If you want to connect Claude to your filesystem, your database, your memory layer, your GitHub — that is one URL plus an API key. ChatGPT can do similar things through Actions and Custom GPTs, but the integration story is more friction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where ChatGPT wins, also honestly
&lt;/h2&gt;

&lt;p&gt;Equally important.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Image generation.&lt;/strong&gt; ChatGPT-5 image generation in 2026 is the strongest mainstream consumer offering. Claude does not offer integrated image generation at all. If your daily work involves making images, ChatGPT is the better single subscription.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Voice mode.&lt;/strong&gt; ChatGPT's voice mode is more polished, more natural, available on more devices. Claude has voice but it lags.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Custom GPTs.&lt;/strong&gt; If your workflow lives in a Custom GPT marketplace ecosystem, your existing tools, your team's existing tools — sunk cost is real and the switch friction is real.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Apps and Agentic Browsing.&lt;/strong&gt; ChatGPT's app integrations and the agentic browsing features in 2026 are more mature. If you delegate web tasks to your assistant frequently, ChatGPT has more polish.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest answer for most people
&lt;/h2&gt;

&lt;p&gt;If your work is mostly text, code, and reasoning — switch to Claude. The quality difference is consistent and noticeable.&lt;/p&gt;

&lt;p&gt;If your work involves a lot of image generation or voice — keep ChatGPT, or run both.&lt;/p&gt;

&lt;p&gt;If you are a developer — switch to Claude immediately. The 2026 development tooling story (Claude Code, MCP, the Anthropic Console) is genuinely ahead of OpenAI's current developer experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running both is fine
&lt;/h2&gt;

&lt;p&gt;You do not have to pick a side. Many builders have ChatGPT Plus for image work and voice and Claude Pro for everything text-shaped. Forty bucks a month total, two best-in-class tools.&lt;/p&gt;

&lt;p&gt;The naive view is "I should consolidate". The better view is "I should pick the right tool per task".&lt;/p&gt;

&lt;h2&gt;
  
  
  What changes in week one if you switch
&lt;/h2&gt;

&lt;p&gt;Day one, you make a Claude account, copy a few of your standard prompts over, ask the same questions.&lt;/p&gt;

&lt;p&gt;Day two, you notice the answers are shorter, more direct, less hedged. You either love that or you are slightly annoyed because you used to skim the long answers for the actual point.&lt;/p&gt;

&lt;p&gt;Day three, you discover Projects (Claude's equivalent of Custom GPTs). You set up two: one for your main client work, one for personal writing. You drop in a styleguide and reference docs. You feel about as set up as you did in ChatGPT.&lt;/p&gt;

&lt;p&gt;Day four, you discover Memory (a separate paid feature, both Anthropic's native memory and third-party MCP memory layers). You realize this is the thing that makes Claude actually feel like an assistant rather than a chatbot.&lt;/p&gt;

&lt;p&gt;Day five, if you are a developer, you install Claude Code or wire Claude Desktop to MCP servers. Now you understand why people switched.&lt;/p&gt;

&lt;p&gt;By the end of week one you are not "trying Claude". You are using Claude. ChatGPT becomes the tool you open for image generation specifically.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to switch without losing context
&lt;/h2&gt;

&lt;p&gt;Three things help.&lt;/p&gt;

&lt;p&gt;One, export your most-used ChatGPT custom instructions and paste the relevant pieces into Claude's Project system prompts. Most translate cleanly.&lt;/p&gt;

&lt;p&gt;Two, do not try to bring across your entire chat history at once. Pick the three or four most important threads, summarize them in plain text, drop the summaries into Claude memory or a Project. The rest you let go.&lt;/p&gt;

&lt;p&gt;Three, keep ChatGPT for two weeks while you transition. Do not cancel immediately. Use both. By the end of two weeks you will know which subscription to keep, or whether to keep both.&lt;/p&gt;

&lt;h2&gt;
  
  
  The thing nobody tells you
&lt;/h2&gt;

&lt;p&gt;The biggest gain is not about Claude versus ChatGPT. It is about MCP.&lt;/p&gt;

&lt;p&gt;ChatGPT in a closed box and Claude in a closed box are roughly comparable for many tasks. Claude in a closed box is a little better at writing and code. That is incremental.&lt;/p&gt;

&lt;p&gt;But Claude with three or four MCPs wired in — memory, filesystem, web search, your tools — is qualitatively different from any closed-box AI assistant. The platform difference is bigger than the model difference.&lt;/p&gt;

&lt;p&gt;That is what you actually trade up to. Not a better chatbot, an open ecosystem.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you do today
&lt;/h2&gt;

&lt;p&gt;Open Claude.ai, sign up if you do not have an account, run your three most common prompts. Just notice the difference in tone.&lt;/p&gt;

&lt;p&gt;If you are a developer, install Claude Code in addition. That is the headline feature of the 2026 ecosystem.&lt;/p&gt;

&lt;p&gt;Run both for a week. After the week you will know.&lt;/p&gt;

</description>
      <category>chatgpt</category>
      <category>claude</category>
      <category>ai</category>
      <category>beginners</category>
    </item>
    <item>
      <title>AI Trends 2026: A Mid-Year Reading From the Engine Room</title>
      <dc:creator>Matthias | StudioMeyer</dc:creator>
      <pubDate>Fri, 08 May 2026 18:02:30 +0000</pubDate>
      <link>https://dev.to/studiomeyer_io/ai-trends-2026-a-mid-year-reading-from-the-engine-room-4ma4</link>
      <guid>https://dev.to/studiomeyer_io/ai-trends-2026-a-mid-year-reading-from-the-engine-room-4ma4</guid>
      <description>&lt;p&gt;&lt;strong&gt;The 12 AI trends that actually matter at the 2026 mid-year mark are: MCP becoming the default integration protocol, agentic AI moving from pilot to production, multi-LLM memory as the new differentiator, voice agents reaching consumer scale, generative UI rendering inside chat, GEO replacing parts of classic SEO, small specialized models beating big ones on cost, 1M token context arriving in production, tool-use as the universal layer, AI coding agents crossing 3 million weekly users, EU AI Act compliance reshaping deployment, and memory-driven personalization in customer-facing bots. Three of these were buzzwords in January. Five months later they are infrastructure.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Half of 2026 is gone, and the gap between what the AI press promised and what teams are actually shipping is wider than I expected. Some predictions held up. Others died quietly. A few that nobody saw coming have become the load-bearing pieces of every serious AI build I have touched this year. Here is the honest mid-year reading, from the perspective of an operator who deploys this stuff into customer projects every week.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. MCP became the default protocol, not just a standard
&lt;/h2&gt;

&lt;p&gt;A year ago, most blog posts about Model Context Protocol used the word "promising." That word is gone. By mid-2026 the protocol pulled 97 million monthly SDK downloads, up from 100,000 at launch. OpenAI, Google DeepMind, Microsoft and roughly 280 verified integrations on Anthropic's directory all ship MCP-native today. According to recent enterprise surveys, 78 percent of enterprise AI teams report at least one MCP-backed agent in production. The average time to connect a new SaaS tool to an agent dropped from 18 hours of custom function calling to 4.2 hours with MCP.&lt;/p&gt;

&lt;p&gt;This is the most consequential AI shift of 2026, and it happened in plain sight while everyone was watching model launches. The next 12 months are about cleanup: governance, registry, multi-tenant authentication, transport scalability. The protocol war is already over.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Agentic AI moved from pilot to production
&lt;/h2&gt;

&lt;p&gt;The numbers tell a cleaner story than the marketing. A 250-agency survey published in late April put 41 percent of agencies with at least one agent shipped, up from 9 percent the year before. Another 58 percent are still piloting. Only 1 percent have not explored agentic AI at all. Enterprise AI agent reports converge on roughly 54 percent of companies running agents in production.&lt;/p&gt;

&lt;p&gt;What changed is not the underlying capability, it is the framing. Teams stopped trying to build "AI assistants" and started building agents that own a single task end-to-end: triaging tickets, writing release notes, reconciling invoices. The boring use cases ship. The flashy autonomous founders do not.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Multi-LLM memory became the new differentiator
&lt;/h2&gt;

&lt;p&gt;This is the trend nobody wrote about in January. Codex has its own memory now. ChatGPT has memory. Claude has memory. Cursor has memory. None of them talk to each other. Every tool you use accumulates a separate fragment of who you are and what you work on, and there is no portable layer underneath.&lt;/p&gt;

&lt;p&gt;The opportunity is obvious in retrospect. Memory backends that connect to multiple LLM clients via MCP solve a real problem that the model providers will not solve themselves, because their incentive is lock-in. We saw this play out at StudioMeyer with our own memory product: a single OAuth login wires up Claude Desktop, Claude Code, ChatGPT via Codex, Cursor, Codex CLI, all reading and writing the same memory. The next 12 months will see five or six serious cross-LLM memory layers compete. Mem0, Letta, Zep, MemNexus, ours. Whoever solves the trust and compliance story wins.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Voice agents reached consumer scale
&lt;/h2&gt;

&lt;p&gt;OpenAI's Realtime-2 launch on May 7 is the visible marker. Three new models in one announcement: GPT-Realtime-2 with GPT-5-class reasoning, GPT-Realtime-Translate, GPT-Realtime-Whisper. Context window jumped from 32K to 128K. Pricing landed at $32 per million audio input tokens, $64 per million output. That pricing is the actual story. A year ago real-time voice was a research project. Now it is a unit of API consumption your CFO can model.&lt;/p&gt;

&lt;p&gt;What this enables on the ground is voice-first customer support, multilingual call routing, voice booking flows for restaurants and clinics, AI receptionists for solo practices. The friction is no longer the model, it is the integration with telephony providers and the legal layer around recording consent.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Generative UI showed up inside chat
&lt;/h2&gt;

&lt;p&gt;In January, Anthropic added MCP Apps support to Claude. The protocol now pulls UI previews and interactive elements directly from third-party platforms like Figma and Slack into the conversation. ChatGPT followed with Apps. The implication is bigger than it looks. The chat surface stops being a text box and becomes a host for ad-hoc applications generated on demand. A user asks for a chart, and the chart is rendered, scrubbed and exported without leaving the conversation.&lt;/p&gt;

&lt;p&gt;This is going to redraw the line between web app and chat app over the next 18 months. The early signals are subtle but consistent: more apps building MCP-first instead of REST-first, more design teams thinking about generative components rather than fixed screens.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. GEO is real, and it is eating part of SEO
&lt;/h2&gt;

&lt;p&gt;Generative Engine Optimization is no longer a thought experiment. Brands cited in Google AI Overviews see roughly 35 percent more clicks compared to brands that only rank traditionally, according to Ahrefs research. ChatGPT, Perplexity, Bing Copilot and Grok now drive a measurable slice of B2B discovery traffic, and the citation patterns are different from classic Google ranking.&lt;/p&gt;

&lt;p&gt;What we measure on our own site is striking. AI citations on Bing Copilot moved from 304 in mid-April to 2,300 across three months by early May 2026. Verified live in the Webmaster Tools dashboard, screenshot at studiomeyer.io/proof/bing-ai-citations-current.png. The structure that drives those citations is not keyword density. It is structured data, llms.txt files, agent-card.json, schema markup, and content that answers questions in the form an LLM can quote. Classic SEO is not dead, but a serious 2026 visibility strategy now has both layers.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Small specialized models beat big general ones on cost
&lt;/h2&gt;

&lt;p&gt;Claude Haiku 4.5, GPT-5-mini, Gemini Flash 2.5. These three models are doing the work that Sonnet, GPT-4 and Gemini Pro did 12 months ago. The accuracy gap closed faster than most people predicted. The cost gap stayed wide. The pattern that works in production: route the bulk of routine agent traffic through Haiku-tier models, and reserve the bigger models for genuinely hard reasoning or long-context work.&lt;/p&gt;

&lt;p&gt;The implication for product builders is straightforward. Architect for the small model first. Add the big model only where the data shows it earns its cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. 1M token context arrived in production
&lt;/h2&gt;

&lt;p&gt;Anthropic shipped Claude Opus 4.6 with full 1 million token context in general availability on March 13. They eliminated the long-context surcharge that previously doubled the cost of requests over 200,000 tokens. On the 8-needle 1M variant of the MRCR v2 benchmark, Opus 4.6 scores 76 percent. Sonnet 4.5 scored 18.5 percent on the same test. Gemini 2.5 has 1M as well.&lt;/p&gt;

&lt;p&gt;What changed in our workflow: we stopped chunking large codebases for analysis. The whole repo goes in one prompt. We stopped summarizing meeting transcripts before passing them to the model. The full transcript fits. RAG is still useful, but for a different class of problems than people thought. Long context did not kill retrieval, but it killed the assumption that you always need it.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Tool use is the universal layer
&lt;/h2&gt;

&lt;p&gt;Every serious LLM in 2026 supports function calling and tool use natively. MCP standardized the layer above. The combination means a single agent can call your CRM, your billing system, your calendar, your inbox and your knowledge base, with the same model orchestrating across all of them.&lt;/p&gt;

&lt;p&gt;Three years ago this was the LangChain promise. Two years ago it required custom orchestration. Today it is a config file. The shift in builder economics is enormous: agentic apps that took six months in 2024 take two weeks in 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. AI coding agents crossed 3 million weekly users
&lt;/h2&gt;

&lt;p&gt;OpenAI's Codex hit 2 million weekly active users by mid-March, then 3 million by April 8. That is a 5x increase since January, with 70 percent month-over-month user growth. Claude Code, Cursor, Devin and GitHub Copilot are all in the same league. GitHub's Agent HQ, announced in February, lets developers run Claude, Codex and Copilot simultaneously on the same task and compare the outputs.&lt;/p&gt;

&lt;p&gt;The shift this drives is bigger than productivity. New developers learn coding through these tools. The whole notion of what counts as a "developer" stretches as non-engineers ship working software through Codex Web. We see this in our own customer base: founders who were 10 years from coding now write internal tools themselves.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. EU AI Act forced infrastructure decisions
&lt;/h2&gt;

&lt;p&gt;The original deadline was August 2, 2026. Then in late April, the European Parliament voted to delay key compliance deadlines for high-risk AI systems to December 2027. The political agreement still has to clear the Council, likely before June. Either way, the infrastructure decisions teams have to make this year are the same: data residency, audit logs, model cards, incident reporting, deletion workflows.&lt;/p&gt;

&lt;p&gt;The teams that started compliance work in 2025 are coasting through 2026. The teams that waited are scrambling. The delay is breathing room, not a reprieve.&lt;/p&gt;

&lt;h2&gt;
  
  
  12. Memory drives personalization in customer-facing bots
&lt;/h2&gt;

&lt;p&gt;The last trend is the most underrated. Customer-facing chatbots used to forget the user between sessions. In 2026, the better ones remember. Repeat customers see the bot recall their previous order, their preferred language, the issue they raised last time. The lift in customer satisfaction is what closes deals at the SMB end of the market.&lt;/p&gt;

&lt;p&gt;This is the trend that sells AI to the small and mid-market. They do not care about MCP or 1M context windows. They care that the bot recognizes a returning customer, recalls last month's booking and skips the small talk. Memory makes that trivial.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this means if you are building in the second half of 2026
&lt;/h2&gt;

&lt;p&gt;Three things compound. MCP-native architecture from day one. Memory as a separate layer that survives model swaps. Small models for routine work, big models for hard reasoning. Build for those three and the rest of the trends slot in cleanly.&lt;/p&gt;

&lt;p&gt;The teams that ignore all three are not going to fall behind in some abstract way. They are going to find that the agentic feature their customer asked for in Q3 takes them three months to ship while a competitor ships it in three weeks. That is the real cost of betting on the wrong abstractions in 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where we put our weight at StudioMeyer
&lt;/h2&gt;

&lt;p&gt;For full disclosure, here is what we built around these trends. We run a multi-LLM memory product at memory.studiomeyer.io that connects to Claude, ChatGPT via Codex, Cursor and seven other clients via OAuth and MCP. We host an open-source MCP server registry on GitHub at studiomeyer-io. Our customer sites ship with the AI-Ready discovery stack (llms.txt, agents.json, agent-card.json, MCP discovery) by default. We track our own GEO signals weekly: 2,300 AI citations across three months on Bing Copilot, verified live.&lt;/p&gt;

&lt;p&gt;If you want to talk through what your stack should look like in this landscape, &lt;a href="https://dev.to/contact"&gt;we are here&lt;/a&gt;. The first audit is free.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://studiomeyer.io/en/blog/ai-trends-2026-mid-year" rel="noopener noreferrer"&gt;studiomeyer.io&lt;/a&gt;. StudioMeyer is an AI-first digital studio building premium websites and intelligent automation for businesses.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aitrends</category>
      <category>agenticai</category>
      <category>memory</category>
    </item>
    <item>
      <title>Why I Built matthiasmeyer.tech and What Lives Inside</title>
      <dc:creator>Matthias | StudioMeyer</dc:creator>
      <pubDate>Wed, 06 May 2026 11:56:26 +0000</pubDate>
      <link>https://dev.to/studiomeyer_io/why-i-built-matthiasmeyertech-and-what-lives-inside-3mof</link>
      <guid>https://dev.to/studiomeyer_io/why-i-built-matthiasmeyertech-and-what-lives-inside-3mof</guid>
      <description>&lt;p&gt;&lt;strong&gt;I shipped another domain last week. Not a sub-page, not a subdomain, a separate site at matthiasmeyer.tech that exists for one purpose: to explain the open-source repos I publish, on their own terms, without competing with the studio that pays the bills. It went live in one Sunday session. The story is partly a build report, partly an argument for why solo founders running a company should keep their personal-brand surface separate from the company surface, and partly a walk through what is actually inside: twenty-two repositories, six explainer essays, a 3D force graph as the hero, build-time GitHub stats so the numbers stay fresh, and the AI-ready discovery layer that every site I touch now ships by default.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There was a moment around midnight where the live URL came up clean for the first time, all twenty-two repos visible in the graph, the cyan particles flowing along the edges, and I realised the site was both technically tighter than studiomeyer.io and smaller in scope. That is the whole point. Studio is for clients. Academy is for learners. matthiasmeyer.tech is for the open-source half of the work, and that work has been getting cluttered as a sub-page on the company site for too long.&lt;/p&gt;

&lt;p&gt;This article is a walk through what got built, why it lives where it lives, and the patterns I lifted from the studio stack that made the whole thing fit in a single session.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why a second domain
&lt;/h2&gt;

&lt;p&gt;The argument for separating personal from company surface is not new. Guillermo Rauch runs rauchg.com next to vercel.com. Lee Robinson runs leerob.com next to vercel.com too. Dax Raad runs dax.dev next to sst.dev. The pattern works for them because their personal voice and their company voice serve different audiences. Vercel sells deployment. Rauch writes about systems thinking and React internals. The two reinforce each other without diluting either.&lt;/p&gt;

&lt;p&gt;For me the split looks like this. studiomeyer.io is a German-Spanish-English studio site that sells custom websites and AI systems to clients in DACH and on Mallorca. It has 1500 Bing Copilot citations, a long form blog with three locales, a concrete pricing page. studiomeyer.academy is the learning side, recipes and lessons for builders who want to understand the AI stack we use. matthiasmeyer.tech is the third leg. It is the open-source half. The repos themselves, explained in first person, with architecture notes and trade-offs, without the sales scaffolding that makes the studio site work.&lt;/p&gt;

&lt;p&gt;The SEO purists will tell you to consolidate everything into subdirectories under studiomeyer.io for authority. They are right about authority transfer in the abstract. They are wrong about audience. A developer who lands on local-memory-mcp via npm and clicks through to read about the architecture is not the same person who books a custom website project. Putting both in the same surface forces compromises in both directions. Two domains with explicit cross-links in headers and footers solve the audience problem and accept the small authority hit as a cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is actually inside
&lt;/h2&gt;

&lt;p&gt;Twenty-two repositories sit on the GitHub org. Eight of them are cornerstones in the sense that everything else extends or pairs with one of them. The other fourteen are conformance harnesses, n8n bridges, SaaS connectors and security extensions that hang off the cornerstones.&lt;/p&gt;

&lt;p&gt;The memory cluster has one repo. &lt;strong&gt;local-memory-mcp&lt;/strong&gt; is a thirteen-tool MCP server that gives Claude, Cursor and Codex persistent memory backed by SQLite, FTS5 and a small knowledge graph. It runs locally, no cloud, no API keys. The hosted SaaS variant is studiomeyer-memory at memory.studiomeyer.io for builders who want multi-tenant.&lt;/p&gt;

&lt;p&gt;The agent cluster has three cornerstones plus one connector. &lt;strong&gt;mcp-personal-suite&lt;/strong&gt; is a forty-nine-tool kit covering email, calendar, messaging, search and image generation, BYOK, no signup. &lt;strong&gt;agent-fleet&lt;/strong&gt; is the orchestrator that runs specialised agents in parallel for research, critique and analysis. &lt;strong&gt;darwin-agents&lt;/strong&gt; is the experimentation layer that evolves prompts via A/B testing and judge-arbitrated scoring. The connector &lt;strong&gt;mcp-studiomeyer-agents&lt;/strong&gt; lets Pro-tier customers of the StudioMeyer Agents service read their audit data and tweak agent configs from their own Claude or Cursor.&lt;/p&gt;

&lt;p&gt;The security cluster has two cornerstones, plus the new Python port and an attestation layer. &lt;strong&gt;ai-shield&lt;/strong&gt; is a zero-dependency LLM security toolkit, prompt injection detection, PII masking, cost tracking, tool policies, sub-25ms scans. &lt;strong&gt;ai-shield-py&lt;/strong&gt; is the Python port that I shipped two days ago for FastAPI and LangChain projects, same defense surface, different framework hooks. &lt;strong&gt;mcp-armor&lt;/strong&gt; is the Rust sidecar that wraps any MCP server and validates Ed25519-signed manifests, sub-5ms p99 overhead, defends against supply-chain CVEs that the OX Security advisory documented in April. &lt;strong&gt;mcp-server-attestation&lt;/strong&gt; is the TypeScript companion to mcp-armor for teams that prefer staying in Node.&lt;/p&gt;

&lt;p&gt;The media cluster has one repo. &lt;strong&gt;mcp-video&lt;/strong&gt; wraps ffmpeg and Playwright behind eight tools for recording, editing, captions, TTS and smart screenshots. It is the last MCP server I would have predicted writing two years ago and ended up being the most useful for marketing automation.&lt;/p&gt;

&lt;p&gt;The workflow cluster has one cornerstone, two extensions. &lt;strong&gt;n8n-templates&lt;/strong&gt; ships hardened workflows with cross-session memory baked in, voice agents, customer support, personal assistants, multi-provider LLM routing. &lt;strong&gt;n8n-nodes-studiomeyer-memory&lt;/strong&gt; is the n8n community node that bridges those templates to the memory backend. &lt;strong&gt;n8n-workflows&lt;/strong&gt; is the memoryless production-pattern variant for teams that do not need cross-session state.&lt;/p&gt;

&lt;p&gt;The factory cluster is three test harnesses that exist because shipping MCP servers to a marketplace turned out to require more discipline than the spec implies. &lt;strong&gt;mcp-protocol-conformance&lt;/strong&gt; validates JSON-RPC 2.0, OAuth 2.1 PKCE, tool schemas and capabilities across spec versions 2024-11-05, 2025-03-26 and 2025-06-18. &lt;strong&gt;mcp-hook-conformance&lt;/strong&gt; audits Claude Code v2.1.118 lifecycle hooks for idempotency, latency and side-effects. &lt;strong&gt;mcp-tenant-pair&lt;/strong&gt; is the foundation library for multi-user tenancy with bi-temporal storage and SQLite plus Postgres adapters, used by anything multi-user we ship.&lt;/p&gt;

&lt;p&gt;The SaaS-connector cluster is six docs-only mirrors of the four hosted SaaS products plus the marketplace and the academy. &lt;strong&gt;studiomeyer-memory&lt;/strong&gt;, &lt;strong&gt;studiomeyer-crm&lt;/strong&gt;, &lt;strong&gt;studiomeyer-geo&lt;/strong&gt; and &lt;strong&gt;studiomeyer-crew&lt;/strong&gt; each have a public read-only mirror with the documentation and tool reference. &lt;strong&gt;studiomeyer-marketplace&lt;/strong&gt; bundles all four for Claude Code via Magic Link auth. &lt;strong&gt;mcp-academy&lt;/strong&gt; is the npm-distributed connector for the StudioMeyer Academy lesson and recipe API.&lt;/p&gt;

&lt;p&gt;That is the full landscape. Twenty-two repos, nineteen total stars at launch, five different programming languages, all MIT or Apache.&lt;/p&gt;

&lt;h2&gt;
  
  
  A 3D force graph as the hero
&lt;/h2&gt;

&lt;p&gt;A list of repos is not a hero. A list of repos is the part that nobody reads. The hero is the thing that signals what kind of site this is, and a personal hub for open-source tools should signal that the tools are interconnected, that they belong to a coherent stack, that picking one of them puts you in conversation with the others.&lt;/p&gt;

&lt;p&gt;The hero on matthiasmeyer.tech is a 3D force graph rendered with Three.js and the 3d-force-graph library. Twenty-two nodes, twenty-two edges. Hero repos are larger and saturated, secondary repos are smaller and softer. Group colours map to function: cyan for memory, amber for agents, red for security, purple for media, emerald for workflow, slate for factory tooling, blue for SaaS connectors. Cyan particles flow along the edges in the direction of the dependency. Hovering a node opens a preview panel with name, group and description. Clicking pins it. Auto-rotate is on by default at zero point four radians per second. Filter chips above the canvas toggle clusters on and off, plus a search box that filters by name and tagline.&lt;/p&gt;

&lt;p&gt;Crawlers see a screen-reader-only repo list immediately below the canvas with all twenty-two entries as plain text. The graph is interactive but not exclusionary. Bingbot and ClaudeBot read the same content as a sighted user with a mouse.&lt;/p&gt;

&lt;p&gt;The pattern is a direct lift from our Memory 3D demo on studiomeyer.io. The Three.js scene, the hover-pin pattern with a 350ms auto-close timer, the sr-only fallback, the cinema background gradient with corner glows in cyan and purple. None of it is original to matthiasmeyer.tech. All of it is reused, which is the point of having a studio stack in the first place.&lt;/p&gt;

&lt;h2&gt;
  
  
  The concept layer
&lt;/h2&gt;

&lt;p&gt;Six explainer essays sit alongside the repos. They are repo-agnostic, written in first person, no marketing wrapper. &lt;strong&gt;What is MCP, actually&lt;/strong&gt; explains the protocol without the marketing layer. &lt;strong&gt;Stdio vs HTTP for MCP&lt;/strong&gt; is a transport decision tree based on real deployment scars. &lt;strong&gt;Memory architectures compared&lt;/strong&gt; walks through three systems I shipped this year and which architecture fits which agent shape. &lt;strong&gt;Agent-to-Agent protocol v1.0 RC&lt;/strong&gt; is a short note on what an agent-card.json buys you and what it does not. &lt;strong&gt;WebMCP for browser agents&lt;/strong&gt; is the hygiene-play piece on the W3C Community Group Draft. &lt;strong&gt;Agent orchestration patterns&lt;/strong&gt; breaks down single agent versus sequential pipeline versus parallel fleet versus judge-arbitrated, with cost-of-orchestration heuristics from production traffic.&lt;/p&gt;

&lt;p&gt;The concept layer is the part of the site I expect to perform best in AI citations. Repo-pages have natural traffic from npm and GitHub. Concept posts have to earn their traffic from search and from links, and the way they earn it is by being the answer to a question that someone is going to type into ChatGPT or Perplexity. Each post leaves with a takeaway, names libraries by name, gives concrete numbers when there are concrete numbers to give.&lt;/p&gt;

&lt;h2&gt;
  
  
  The AI-Ready layer
&lt;/h2&gt;

&lt;p&gt;Every site I build ships the same discovery chain on day one. matthiasmeyer.tech is no exception. Layer one is semantic HTML5, header main article section nav footer, no div-soup wrapped in ARIA. Layer two is JSON-LD in the head, Person plus WebSite plus twenty-two SoftwareSourceCode entries plus Article schema on every concept post. Layer three is /llms.txt as the plain-text site overview with cross-references to the rest of the discovery chain. Layer four is /.well-known/agents.json with three callable tools for AI agents, plus /.well-known/agent-card.json for the A2A v1.0 RC skill descriptors, plus /.well-known/webmcp for the W3C CG draft browser-agent manifest. Layer five is /robots.txt with explicit Allow for fourteen AI bot user agents from GPTBot to MistralAI-User. Layer six is /sitemap.xml with the discovery URLs included so crawl-based agents can find the endpoints.&lt;/p&gt;

&lt;p&gt;The pattern is documented in our internal AI-ready brand bible. Every customer site we ship runs it. matthiasmeyer.tech runs it because not running it would mean the AI half of the open-source story is invisible to the AI tools that are supposed to find it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build-time GitHub stats
&lt;/h2&gt;

&lt;p&gt;The repos in lib/repos.ts have descriptions, taglines, group assignments, edge relationships. Those are editorial decisions. They do not change unless I rewrite a paragraph. The stars, the last-updated date, the primary language and the tool count change all the time. Hardcoding those would mean updating a TypeScript file every time someone stars a repo. Not acceptable.&lt;/p&gt;

&lt;p&gt;The fix is a pre-build script. A small Node script in scripts/fetch-github-stats.ts shells out to the gh CLI, pulls the latest twenty-two repos for the studiomeyer-io org, writes the result to data/github-stats.json. The lib/repos.ts module imports that JSON at module load and merges the live values into the editorial base. Every build picks up fresh stars and fresh updated-at timestamps. The script also runs a drift check by reading the slug list out of lib/repos.ts with a regex and warning when GitHub has a new repo that is not yet in the editorial layer. The first time I ran the drift check it told me ai-shield-py was missing. Two minutes later it was added.&lt;/p&gt;

&lt;p&gt;The script is gated by gh CLI availability so the build does not break when run somewhere without auth, like inside a Docker container. The build sequence is npm run fetch-stats followed by docker compose build, with the JSON committed to the repo so a fresh clone has data on day one even before fetching.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this goes next
&lt;/h2&gt;

&lt;p&gt;The site is live, the discovery chain is wired, the search engines have the sitemap, the tracking is in place. What it does not have yet is sustained content. Six concept posts is a starting set. Each one needs to earn its traffic, and the way that happens is by writing more of them as new patterns surface in the work. The next batch is queued: a deeper dive on Memory architectures, a stdio-trap post on the failure modes I have hit twice, a piece on agent orchestration cost-of-complexity from production data.&lt;/p&gt;

&lt;p&gt;The repos themselves keep growing. Two days ago ai-shield-py joined the family. Whatever ships next will get added to lib/repos.ts in five lines and to the graph as a new node, the Python or Rust port slotted next to its sibling, the edges drawn through the cousin-of relationship. The build-time fetch script picks up the rest.&lt;/p&gt;

&lt;p&gt;If you are running a company site and you have an open-source half that has been getting cluttered as a sub-page, separate it. Two domains, clear cross-links in headers and footers, AI-ready stack on both sides. The audiences sort themselves out and the writing finds its right voice in each place.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>opensource</category>
      <category>webdev</category>
      <category>ai</category>
    </item>
    <item>
      <title>AI-Ready Is Universal. Hosting Is Regional.</title>
      <dc:creator>Matthias | StudioMeyer</dc:creator>
      <pubDate>Sun, 03 May 2026 23:52:38 +0000</pubDate>
      <link>https://dev.to/studiomeyer_io/ai-ready-is-universal-hosting-is-regional-m11</link>
      <guid>https://dev.to/studiomeyer_io/ai-ready-is-universal-hosting-is-regional-m11</guid>
      <description>&lt;p&gt;&lt;strong&gt;A website today has two layers that work completely independently of each other. The AI-Ready layer is universal. It makes your site readable for ChatGPT, Perplexity, Claude and Bing Copilot, no matter where the bot comes from. The hosting layer is regional. It decides who gets to touch your data, how fast the site loads for your customers, and which legal jurisdiction your business sits in. We build the first layer the same way for every client. The second layer we put where your market lives: Hetzner Germany, AWS us-east, AWS London, Infomaniak Switzerland. Multi-region failover on top when you need it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We have been talking about AI-ready web design and AI visibility for months now. What got short shrift is the honest answer to a question that comes up more and more often: what does the physical location of a server still have to do with visibility in AI answers, when the bots crawl globally anyway? The answer is uncomfortable for anyone looking for a clean pitch. Hosting region and AI visibility have very little to do with each other. Hosting region and trust, latency, compliance and sales effectiveness have a lot to do with each other. The two should not be thrown into the same bucket.&lt;/p&gt;

&lt;h2&gt;
  
  
  A website now has two layers
&lt;/h2&gt;

&lt;p&gt;When we build a website, we think in two layers. The first layer is the AI-Ready layer. That covers semantic HTML5 as the skeleton, Schema.org JSON-LD as the meaning layer, agents.json and llms.txt as the table of contents for AI crawlers, robots.txt explicitly opened for GPTBot, ClaudeBot, PerplexityBot and Bing Copilot. Server-side rendering so the bot does not stare at an empty div. Factual text that answers direct questions instead of marketing fluff. This layer builds identically whether your site lives in Frankfurt, Dublin, Virginia or Zurich.&lt;/p&gt;

&lt;p&gt;The second layer is the hosting layer. That covers the physical server, the data centre, the storage backend, the database, the CDN. This is where you decide who owns your data, which authority can demand access, how fast your site loads for a user in San Francisco or London, and whether a compliance audit in your industry can pass. This layer is not universal. It depends on who your customers are, where they sit, what they buy, and which regulations are breathing down your neck.&lt;/p&gt;

&lt;p&gt;Anyone who fails to separate the two ends up either selling GDPR as a magical AI visibility argument or edge CDN as a magical compliance solution. Both are nonsense. The clean separation looks like this: AI-Ready is the visibility question. Hosting region is the business question.&lt;/p&gt;

&lt;h2&gt;
  
  
  What AI crawlers actually do
&lt;/h2&gt;

&lt;p&gt;The honest question first. Do ChatGPT, Perplexity, Claude or Gemini favour websites based on their hosting region? We researched this carefully and the answer is: no, there is no solid data for that. Cloudflare publishes a half-yearly AI bot traffic report, the relevant AEO platforms like Stackmatix or Metricus track crawl behaviour, and no serious source shows a regional preference algorithm in the major LLM crawlers. Anyone promising you that your Vercel Edge setup will boost your ChatGPT citation rate is selling you a guess as a fact.&lt;/p&gt;

&lt;p&gt;What AI crawlers actually do is more boring and more important at the same time. They fetch your HTML page via HTTP request like any other bot. They look at what is in the DOM without executing JavaScript. They follow your robots.txt and either respect it or ignore it depending on the crawler. They do not cache server-side in the classic CDN sense, they request directly. What counts is whether your site responds quickly, whether the content is there without JavaScript, whether your structured data is complete, whether your agents.json exists. Latency at crawl time matters. If your server takes four seconds for the first byte, the chance is high that the bot drops the request and does not come back.&lt;/p&gt;

&lt;p&gt;In practical terms: a Hetzner server in Nuremberg with a clean configuration is just as good for a ChatGPT crawl as a Vercel Edge setup with a hundred global nodes. As long as the first byte arrives quickly and the HTML is complete, the bot sees no difference. Edge hosting becomes interesting when you serve real humans across multiple regions. For pure AI visibility it is a nice-to-have, not a must-have.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why hosting region still matters
&lt;/h2&gt;

&lt;p&gt;If AI crawlers do not care, why are we even talking about hosting region? Three real reasons, none of them anything to do with AI, all three plain business.&lt;/p&gt;

&lt;p&gt;The first reason is latency for human visitors. A page that lives in Frankfurt and gets served to a user in San Francisco needs at least 150 to 200 milliseconds more for the first response than a page that lives in us-east-1 or us-west-2, depending on stack and caching. With a single-page app and several API calls the effect multiplies fast. Anyone serving US customers loses noticeable conversion when hosting from Europe. The same the other way around.&lt;/p&gt;

&lt;p&gt;The second reason is sectoral compliance. GDPR in normal commerce does not force you to a German server. It forces you to adequate protection levels and clean contractual chains. A US server with standard contractual clauses and EU-DPF certification is legal, just less convenient. Real localisation requirements only exist in specific sectors. Health, government, critical infrastructure, parts of finance. UK GDPR and the Swiss FADP do not force normal companies into local storage either. What almost always matters though is the trust signal. If your UK client wants a data processing agreement and you say the data sits in London on AWS, the conversation is over in two sentences. If you say the data sits in Frankfurt with standard contractual clauses, you spend half an hour in a compliance call.&lt;/p&gt;

&lt;p&gt;The third reason is sales effectiveness. In the United States it is taken for granted that American clients sit on American servers. Not because of compliance, but because of expectation and political climate. In Switzerland, serious clients expect Swiss hosting. That is not hard duty, that is market code. Anyone swimming against it burns conversion for no reason. Anyone swimming with it has a sales advantage the competition does not have.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four regions, four setups
&lt;/h2&gt;

&lt;p&gt;This is how we run it in practice. Four region patterns, each one real and ready to deploy.&lt;/p&gt;

&lt;p&gt;EU as the default means Hetzner Germany for the server, Supabase EU for the database. Hetzner has data centres in Nuremberg, Falkenstein and Helsinki. We pick whichever fits the use case but stay deliberately flexible because Hetzner has no Frankfurt data centre. Supabase EU runs on AWS Frankfurt. Both providers have lived in the GDPR world for years, both have transparent sub-processor lists, both are aggressively priced. This is the default for any client without special requirements. Our own SaaS products (Memory, CRM, GEO, Crew) live there too.&lt;/p&gt;

&lt;p&gt;US hosting means AWS us-east-1 in Virginia plus Vercel Edge for the frontend CDN. AWS us-east-1 is the largest and most stable US region, also the one with the densest service catalogue. Vercel Edge brings 100+ global POPs, US users hit the closest. The combination is standard in the US market and answers all the compliance questions American B2B customers ask without discussion. HIPAA if you operate in healthcare, FedRAMP if you sell to the public sector, both reachable through dedicated AWS regions.&lt;/p&gt;

&lt;p&gt;UK hosting means AWS eu-west-2 in London plus Vercel Edge with active London POPs. UK GDPR and EU GDPR are still largely aligned, but post-Brexit clients in regulated industries want to see their data physically in the UK. AWS London is the clean answer. Vercel Edge keeps responses fast across all of Britain. If your UK client is more Azure-aligned, we can add Azure UK South or build it as the alternative.&lt;/p&gt;

&lt;p&gt;Switzerland hosting means Infomaniak Geneva or Exoscale Zurich. Infomaniak is a Swiss provider with its own data centre in Geneva, runs its own cloud infrastructure, is sectorally cleared for critical infrastructure. Exoscale is a Swisscom subsidiary with zones in Zurich and Geneva, fully FADP compliant, suits clients who want a Swiss provider without giving up hyperscaler comfort. The combination covers everything from a small Swiss SME to a pharma company with FADP requirements that go beyond what GDPR demands.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multi-region failover when you need it
&lt;/h2&gt;

&lt;p&gt;Single region is the right setup for 90 percent of clients. Cheaper, simpler to operate, fewer failure vectors. Multi region becomes interesting when your business has zero tolerance for downtime or you operate across multiple markets with hard latency requirements.&lt;/p&gt;

&lt;p&gt;Multi-region failover is part of our pattern. We use it ourselves for our Memory product, which runs with a standby server and automatic switch within seconds of a primary failure. For custom clients we build it on demand depending on requirements. Three patterns we typically recommend:&lt;/p&gt;

&lt;p&gt;Active-standby in the same region with a floating IP. Quick to build, switch in under ten seconds, protects against single-server failure, does not protect against region failure. Enough for most business models that need high availability but not full disaster recovery.&lt;/p&gt;

&lt;p&gt;Active-standby across two regions with DNS failover. Cloudflare health checks poll every 60 seconds, on primary failure the DNS record switches to the standby in another region. Switch takes one to two minutes depending on TTL. Protects against region failure, costs a bit more because the standby hardware runs alongside. This is the pattern we are currently moving Memory to.&lt;/p&gt;

&lt;p&gt;Active-active with a load balancer and replicated state. Both regions take traffic, the load balancer distributes by geo or load. More complex to operate because state replication has to be built cleanly. Makes sense from a certain volume on, or when you actively want both regions for latency optimisation.&lt;/p&gt;

&lt;p&gt;Which pattern fits depends on what your real requirements look like and how big your budget is. Most clients do not need active-active. Many need more than just a single server. Active-standby in the same region is usually the sweet spot.&lt;/p&gt;

&lt;h2&gt;
  
  
  What stays the same everywhere
&lt;/h2&gt;

&lt;p&gt;The AI-Ready layer does not change with hosting region. What we install on every setup is the same bundle. Semantic HTML5 with clear section, article, nav and main elements. Schema.org JSON-LD in the head, at minimum for Organization, WebSite, BreadcrumbList and Service or Product. agents.json under /.well-known with the tools your site offers AI agents. llms.txt at the root with the AI-readable content overview. robots.txt with explicit allow for GPTBot, ClaudeBot, PerplexityBot, Bing Copilot, Google-Extended. And server-side rendering or static site generation so the bot actually finds text to read instead of an empty React div.&lt;/p&gt;

&lt;p&gt;Whether Frankfurt, London, Virginia or Zurich, this stack runs identically. That is also why we do not couple AI visibility to hosting. We build the AI-Ready layer the same for every client and then place it on the region that fits your market. You get the visibility without forcing your US clients to accept their data living in Germany, or your Swiss client to accept hosting in Ireland.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we decide in practice
&lt;/h2&gt;

&lt;p&gt;When you start with us we clear three questions before we lock in the server stack. First question: where do your buyers sit? Not where your company sits, where the people are who buy. A DACH SME serving mostly US software clients needs US hosting, even when based in Hamburg. A Mallorca hotel chain with German guests needs EU hosting, even if the owner is British.&lt;/p&gt;

&lt;p&gt;Second question: which industry, which compliance? Health, finance, government, critical infrastructure need sectoral answers and sometimes hard localisation. Normal SMEs and e-commerce do fine on EU or US, depending on the market. UK-specific compliance like FCA requirements or Swiss FINMA regulation often demand local presence. We can call out the pain points before the build starts.&lt;/p&gt;

&lt;p&gt;Third question: do you need failover or is single region enough? 90 percent of SME websites do not need multi-region. Anyone running a high-volume online shop, a SaaS app with real SLA pressure, or a booking flow for a hotel with 200 rooms should think about active-standby. Everyone else lands well with a properly monitored single server setup.&lt;/p&gt;

&lt;p&gt;From these three answers the region choice usually drops out by itself. We turn that into a concrete setup with provider names, compliance documentation, backup plan and monitoring. You get an answer in one sentence, not a 30-page architecture document.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to take from this
&lt;/h2&gt;

&lt;p&gt;AI visibility and hosting region are two topics, not one. Anyone selling you the opposite is doing marketing, not architecture. The AI-Ready layer you build cleanly once and then it stands. The hosting layer you place where your customers, your compliance and your business sit. Both decisions are independent and both should be made consciously, not from the gut.&lt;/p&gt;

&lt;p&gt;We build exactly this separation into every web design project. Anyone working with us gets an AI-Ready stack that has a real chance in any LLM answer, plus a hosting setup that fits their market. Serving a US market gets US hosting, compliance-relevant Swiss clients get Swiss hosting, anyone wanting DACH default gets EU hosting. Multi-region failover on top when the business needs it. Otherwise spared and kept simple.&lt;/p&gt;

&lt;p&gt;If you are wondering whether your site is built for AI answers and whether your hosting setup fits your market, take a look at our &lt;a href="https://dev.to/webdesign"&gt;web design page&lt;/a&gt; or book a call directly. We sort the question in 15 minutes.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://studiomeyer.io/en/blog/ai-ready-hosting-regionen" rel="noopener noreferrer"&gt;studiomeyer.io&lt;/a&gt;. StudioMeyer is an AI-first digital studio building premium websites and intelligent automation for businesses.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Matthias Meyer&lt;br&gt;
Founder &amp;amp; AI Director at StudioMeyer. Has been building websites and AI systems for 10+ years. Living on Mallorca for 15 years, running an AI-first digital studio with its own agent fleet, 680+ MCP tools and 5 SaaS products for SMBs&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>architecture</category>
      <category>hosting</category>
    </item>
    <item>
      <title>Three Tools, Three Layers: Sentry, Langfuse, and LangGraph for Multi-Agent Fleets</title>
      <dc:creator>Matthias | StudioMeyer</dc:creator>
      <pubDate>Sat, 02 May 2026 13:19:53 +0000</pubDate>
      <link>https://dev.to/studiomeyer_io/three-tools-three-layers-sentry-langfuse-and-langgraph-for-multi-agent-fleets-4c92</link>
      <guid>https://dev.to/studiomeyer_io/three-tools-three-layers-sentry-langfuse-and-langgraph-for-multi-agent-fleets-4c92</guid>
      <description>&lt;p&gt;&lt;strong&gt;Multi-agent systems need three layers of visibility. System health, run quality, and workflow state. We run a stack of Sentry, Langfuse, and LangGraph for that. Three tools, three clearly separated jobs, none can solve the problem of the others. Here is how it plays together at our place and why exactly this combination.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Multi-agent systems have a property that everyone underestimates the first time they see one in production. A single LLM call is transparent. You put a prompt in, you get an answer out, you see both. A pipeline of eight agents collaborating over four days is a black box with eight doors, each one having a different assumption about what the other seven are currently doing.&lt;/p&gt;

&lt;p&gt;We operate a fleet of around 40 worker agents distributed across eight specialized fleets. A pipeline that designs, builds, reviews, and publishes MCP servers. A memory product squad that continuously improves our SaaS memory. An academy content pipeline. SaaS operations. A chief-of-staff orchestrator as a layer-2 over the fleet CEOs. All on the Anthropic Claude Agent SDK in TypeScript, daily via cron.&lt;/p&gt;

&lt;p&gt;The question is not how this scales technically. The question is how to keep quality high over time. Three tools answer that question in our architecture. Sentry, Langfuse, and LangGraph. Each solves a different problem, none can solve the problem of the others.&lt;/p&gt;

&lt;h2&gt;
  
  
  What multi-agent setups actually need
&lt;/h2&gt;

&lt;p&gt;Three layers must be visible, otherwise you do not learn anything.&lt;/p&gt;

&lt;p&gt;The first layer is system health. Which MCP server is slow, which tool call returns silent JSON-RPC errors instead of exceptions, where is the latency spike that breaks the cron runs. That is classic APM work, just over LLM calls and MCP servers instead of only web requests.&lt;/p&gt;

&lt;p&gt;The second layer is run quality. Did the reviewer agent find the real bugs or just produce boilerplate findings. Did the architect deliver an executable plan or just nice text. For a single test run, a human can judge that. For 40 workers and 30 days, a system has to do it.&lt;/p&gt;

&lt;p&gt;The third layer is workflow state. When a build subprocess crashes after 13 minutes, you do not want to restart the entire build. You want to resume from the last good checkpoint. When a tester delivers an approval-pending output, you want human-in-the-loop without writing custom code for it.&lt;/p&gt;

&lt;p&gt;These three layers are orthogonal. Tools that try to do all three end up doing all three half-well. Tools that do one layer first-class combine into a stack that is better than the sum.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sentry for errors and MCP server health
&lt;/h2&gt;

&lt;p&gt;Sentry has had native MCP server auto-instrumentation since April 2026. One line of code per MCP server, and you immediately get a dashboard with the most-used tools, latency distribution per tool, error rate, client segmentation, and transport distribution. For five production MCP servers, that is five lines of code for a health layer that would otherwise take weeks to build.&lt;/p&gt;

&lt;p&gt;The most important thing about it. The Anthropic MCP SDK treats errors as JSON-RPC responses instead of exceptions. When a tool crashes internally, the caller sees a success status with error content in the JSON. Classic stack-trace tools do not see that. Sentry does.&lt;/p&gt;

&lt;p&gt;On the agent layer, Sentry auto-instruments the Anthropic SDK, writes tool-use loops as nested spans into the trace, and traces token counts even when pricing is flat-rate. Token volume remains a valuable quality proxy even when you do not pay per token. When an architect suddenly needs four times as many tokens without the output getting better, that is a drift signal.&lt;/p&gt;

&lt;p&gt;The stack is OpenTelemetry-compliant and implements the GenAI Semantic Conventions v1.36. Meaning every other OTel tool can read the same spans. No lock-in to Sentry-specific span formats.&lt;/p&gt;

&lt;h2&gt;
  
  
  Langfuse for run quality, evals, and prompt management
&lt;/h2&gt;

&lt;p&gt;Langfuse is the productive answer to the question whether the agents are getting better or worse over time. MIT-licensed, self-host possible, dedicated Claude Agent SDK integration in the TypeScript SDK v4.&lt;/p&gt;

&lt;p&gt;Three capabilities that make the difference in practice.&lt;/p&gt;

&lt;p&gt;Tracing. Multi-agent calls are visualized as agent graphs, not just a linear span tree. Who calls whom, which tool calls sit between them, where the trace breaks, where token consumption explodes.&lt;/p&gt;

&lt;p&gt;Evals via LLM-as-judge. We maintain goldsets, that is curated test suites with expected outputs, and run them automatically on every code change to an agent. Custom evaluators score whether the agent delivered the expected findings. That makes run quality measurable over time instead of subjective. If the reviewer agent caught 18 out of 20 cases two weeks ago and now only 14, you know something has drifted and can investigate the cause.&lt;/p&gt;

&lt;p&gt;Prompt management with versioning. Prompts do not live hardcoded in source files. Versioned, labels for A/B tests, meaning &lt;code&gt;prod-a&lt;/code&gt; against &lt;code&gt;prod-b&lt;/code&gt; running in parallel, performance per version automatically tracked by latency, tokens, and eval score. Rollback is one click, not a git revert.&lt;/p&gt;

&lt;p&gt;Self-host runs on Docker plus Postgres plus ClickHouse, exactly the toolchain we already run on our AI server. License is MIT, all product features come without limits, only the enterprise modules for SCIM, audit log, and data retention policies need a license key.&lt;/p&gt;

&lt;h2&gt;
  
  
  LangGraph for stateful workflows
&lt;/h2&gt;

&lt;p&gt;We use LangGraph selectively, not everywhere. Specifically in the sequences where a workflow runs across multiple subprocess calls and several hours, and a crash midway must not lead to a complete re-run. The MCP factory pipeline is the classic use case. Architect writes a plan, builder writes the code, reviewer finds the findings, tester does the live smoke. Four subprocesses, several hours, many places where something external can break. An npm install fail, a git clone timeout, an MCP tool call that hangs.&lt;/p&gt;

&lt;p&gt;With LangGraph as a state graph with Postgres checkpointing, the workflow becomes durable. State, meaning plan path, build slug, findings, lives in the StateGraph, every node output is checkpointed. A crash at step three of four means resume from the last good checkpoint, not full restart. Tester output PARTIAL triggers &lt;code&gt;interrupt()&lt;/code&gt; for manual approval. Human-in-the-loop without us building it ourselves.&lt;/p&gt;

&lt;p&gt;We run LangGraph with a subprocess adapter. Each LangGraph node spawns our existing worker as a subprocess instead of making a LangChain ChatModel call. That has one important effect. Our workers stay unchanged on the Anthropic Claude Agent SDK, the pricing architecture stays intact, no switch to token-based billing. LangGraph orchestrates the workflow, the workers stay themselves.&lt;/p&gt;

&lt;p&gt;The adapter is manageable. About 80 lines of TypeScript. The Postgres checkpointer is production-ready and creates three tables in its own schema. The MCP adapters from LangChain connect existing MCP servers transparently as LangChain tools, so no rewrite there either.&lt;/p&gt;

&lt;p&gt;LangGraph brings one trade-off. Proprietary license, meaning lock-in risk if the pricing strategy changes. We accept that risk only where the resume value delivers real ROI. For 80 percent of our workflows, the Claude Agent SDK alone is enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the stack overlaps
&lt;/h2&gt;

&lt;p&gt;One spot, one solution. Sentry and Langfuse both instrument LLM calls via OpenTelemetry. If Sentry initializes first, which it does by default, it swallows the Langfuse spans. The fix is documented. A shared TracerProvider, both SpanProcessors attached. Ninety minutes of setup, then both tools see their own spans.&lt;/p&gt;

&lt;p&gt;If you do not know that upfront, you debug it for two days. If you know, you put it in the bootstrap file and forget about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What holds the stack together
&lt;/h2&gt;

&lt;p&gt;Three properties we weighted in the tool selection.&lt;/p&gt;

&lt;p&gt;Open-standards first. Sentry and Langfuse are both OTel-compliant with GenAI Semantic Conventions. Spans travel without code change. Whoever wants to send these spans to a third sink tomorrow, meaning Honeycomb, Datadog, or an in-house system, does not need a rewrite.&lt;/p&gt;

&lt;p&gt;Self-host where possible. Langfuse is self-hosted on our own infrastructure. We use Sentry Cloud for convenience, but Sentry is self-hostable too. Data sovereignty stays controllable.&lt;/p&gt;

&lt;p&gt;Respect flat-rate pricing. Our pricing architecture is flat-rate, not per token. Tools that would force us to switch to token-based billing would be real cost drivers. The subprocess adapter pattern keeps LangGraph compatible with this architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons that apply to everyone building multi-agent
&lt;/h2&gt;

&lt;p&gt;From the stack build, not specific to one domain.&lt;/p&gt;

&lt;p&gt;Token volume is also a quality proxy under flat-rate pricing. Suddenly four times as many tokens for the same output is a drift signal, regardless of whether you pay for it. Whoever does not trace this sees the drift only weeks later when the output gets noticeably worse.&lt;/p&gt;

&lt;p&gt;MCP server errors as JSON-RPC responses instead of exceptions are a special class of bugs that classic APM tools do not catch. There is a toolchain that catches this, using it costs minutes and gives back days.&lt;/p&gt;

&lt;p&gt;Stateful workflows with resume only make sense above a certain complexity. Single-step agents do not need this. Multi-step workflows over several hours with real external dependencies like npm, git, or third-party APIs benefit massively. The threshold for the switch is higher than most tutorials suggest. Whoever builds in LangGraph or a comparable orchestrator tool too early has more stack complexity than real-world value.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the stack does not do
&lt;/h2&gt;

&lt;p&gt;It does not make the architecture decisions. It does not do the prompt engineering work. It does not do the domain modeling. It makes visible what happens. What you learn from it is your work.&lt;/p&gt;

&lt;p&gt;Sentry plus Langfuse plus LangGraph is three tools for three problems. Whoever has all three problems wins with the stack. Whoever has only one should install only one. Tooling sprawl is a real anti-pattern in solo setups and small teams.&lt;/p&gt;

&lt;p&gt;At our place all three problems run through the fleet at the same time. That is why all three tools.&lt;/p&gt;

&lt;p&gt;Matthias Meyer&lt;br&gt;
Founder &amp;amp; AI Director at StudioMeyer. Has been building websites and AI systems for 10+ years. Living on Mallorca for 15 years, running an AI-first digital studio with its own agent fleet, 680+ MCP tools and 5 SaaS products for SMBs and agencies across DACH and Spain.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>observability</category>
      <category>mcp</category>
      <category>langgraph</category>
    </item>
  </channel>
</rss>
