<?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: Creeta</title>
    <description>The latest articles on DEV Community by Creeta (@creeta).</description>
    <link>https://dev.to/creeta</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3988151%2F79e19311-8408-48c6-b177-4544ce358e93.png</url>
      <title>DEV Community: Creeta</title>
      <link>https://dev.to/creeta</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/creeta"/>
    <language>en</language>
    <item>
      <title>Agent Reach installs the tools, then gets out of the way</title>
      <dc:creator>Creeta</dc:creator>
      <pubDate>Wed, 29 Jul 2026 03:31:25 +0000</pubDate>
      <link>https://dev.to/creeta/agent-reach-installs-the-tools-then-gets-out-of-the-way-a34</link>
      <guid>https://dev.to/creeta/agent-reach-installs-the-tools-then-gets-out-of-the-way-a34</guid>
      <description>&lt;p&gt;Agent Reach is easiest to understand as a setup layer: it gives a command-capable coding agent a local toolbox, then stops being the center of the workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Agent Reach CLI for?
&lt;/h2&gt;

&lt;p&gt;Agent Reach CLI is a local, open-source coordinator for AI coding agents that can run shell commands; it is not a hosted scraping API, managed crawler, or cloud browser service. The practical job is narrower and more useful: choose platform utilities, install them, verify they work, and route the agent toward the right upstream tool.&lt;/p&gt;

&lt;p&gt;The current setup story should be pinned to Agent Reach v1.5.0, with package metadata listing Python &amp;gt;=3.10 and an MIT license . The v1.5.0 release was published on June 11, 2026, and describes 162 total tests plus 32 end-to-end real-machine tests across 13 channels . That matters because the project is handling brittle platform tooling, not exposing one stable universal API.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Selects, installs, health-checks and routes" is the core model described by the Agent Reach project, which means the agent still calls tools such as OpenCLI, yt-dlp, GitHub CLI, Jina Reader, feedparser, and platform CLIs directly (source: &lt;a href="https://github.com/Panniantong/Agent-Reach" rel="noopener noreferrer"&gt;Agent Reach GitHub repository&lt;/a&gt;).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Out of the box, the zero-config surface is deliberately limited: public web reading via Jina Reader, YouTube, GitHub, RSS, Exa Search, V2EX, and basic Bilibili are listed in the install guide . The seed video frames the tool as a way to give agents access to social and web platforms, but builders should read that through the repo’s stricter model: Agent Reach installs and checks local capabilities; it does not remove login, cookie, or platform constraints .&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites before pipx
&lt;/h2&gt;

&lt;p&gt;Agent Reach prerequisites are mostly local-environment prerequisites: use Python &amp;gt;=3.10, a shell-capable workstation, and accounts where you can manage CLIs, browser sessions, environment variables, and cookies deliberately . Treat the setup as installing a local capability layer for an AI coding agent, not as signing up for a hosted scraping service.&lt;/p&gt;

&lt;p&gt;The canonical install path is &lt;code&gt;pipx install https://github.com/Panniantong/agent-reach/archive/main.zip&lt;/code&gt;, followed by &lt;code&gt;agent-reach install --env=auto&lt;/code&gt;, according to the project install guide . If Python packaging policy blocks a global install under PEP 668, the documented fallback is a virtual environment under &lt;code&gt;~/.agent-reach-venv&lt;/code&gt; .&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For Twitter, plan on user-exported cookies or &lt;code&gt;TWITTER\_AUTH\_TOKEN&lt;/code&gt; plus &lt;code&gt;TWITTER\_CT0&lt;/code&gt; in the current process .&lt;/li&gt;
&lt;li&gt;For Reddit, do not expect anonymous zero-config access; the guide points desktop users toward OpenCLI with an existing reddit.com login, and server users toward &lt;code&gt;rdt-cli&lt;/code&gt; plus cookies .&lt;/li&gt;
&lt;li&gt;For Facebook and Instagram, the OpenCLI desktop route reuses Chrome login state instead of Meta Graph API approval, and the guide does not recommend those channels for headless servers .&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Runnable sequence: pipx, safe pass, doctor
&lt;/h2&gt;

&lt;p&gt;The runnable path is: install Agent Reach with the documented &lt;code&gt;pipx&lt;/code&gt; archive command, run the installer, then verify the resulting toolchain with &lt;code&gt;agent-reach doctor&lt;/code&gt; before trusting any channel. The official install guide documents &lt;code&gt;pipx install https://github.com/Panniantong/agent-reach/archive/main.zip&lt;/code&gt; followed by &lt;code&gt;agent-reach install --env=auto&lt;/code&gt; .&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pipx &lt;span class="nb"&gt;install &lt;/span&gt;https://github.com/Panniantong/agent-reach/archive/main.zip
agent-reach &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--env&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;auto
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a cautious rollout, inspect before changing the workstation. The install guide documents &lt;code&gt;--dry-run&lt;/code&gt; for previewing planned actions and &lt;code&gt;--safe&lt;/code&gt; for a more conservative pass .&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;agent-reach &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--env&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;auto &lt;span class="nt"&gt;--dry-run&lt;/span&gt;
agent-reach &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--env&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;auto &lt;span class="nt"&gt;--safe&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enable optional social channels only after you understand the credential model for each one. The same guide documents channel-scoped installs such as &lt;code&gt;facebook,instagram&lt;/code&gt; and a broader &lt;code&gt;all&lt;/code&gt; option, but those channels can rely on local browser sessions, cookies, or environment variables rather than anonymous access .&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;agent-reach &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--env&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;auto &lt;span class="nt"&gt;--channels&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;facebook,instagram
agent-reach &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--env&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;auto &lt;span class="nt"&gt;--channels&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run &lt;code&gt;doctor&lt;/code&gt; immediately after installation, fix failures or warnings, and run it again before depending on a channel in an agent workflow. Agent Reach’s release notes say the health checks moved beyond file-existence checks into real command probes in the &lt;code&gt;v1.5.0&lt;/code&gt; release published in June 2026 .&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;agent-reach doctor
agent-reach doctor &lt;span class="nt"&gt;--json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use &lt;code&gt;agent-reach doctor --json&lt;/code&gt; when another script or coding agent needs to inspect routing state. The install guide describes the JSON output as the automation source for multi-backend platforms, including the &lt;code&gt;active\_backend&lt;/code&gt; field that tells you which upstream tool Agent Reach selected for a platform .&lt;/p&gt;

&lt;p&gt;The verified Python snippet below is a small local model of the design: Agent Reach installs tools into an agent, but the agent calls those tools directly afterward.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;AgentReach&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nd"&gt;@staticmethod&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;install_tools&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;


&lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;AgentReach&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;install_tools&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;add&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Agent Reach installed: add&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Agent runs directly:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;add&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  OpenCLI, Firecrawl, Jina Reader, Browserbase fit map
&lt;/h2&gt;

&lt;p&gt;Agent Reach fits local agent workstations, while Firecrawl, Jina Reader, and Browserbase solve narrower production jobs. Agent Reach installs and routes platform-specific tools; Firecrawl exposes managed scraping, crawling, extraction, browser actions, cache, and proxy controls through an API; Jina Reader converts public URLs into LLM-friendly text; Browserbase provides observable cloud browsers for agent workflows.&lt;/p&gt;

&lt;p&gt;The practical split is deployment shape. Use Agent Reach when your coding agent can run shell commands locally and you want it to reuse user-controlled sessions or upstream CLIs. Use &lt;a href="https://docs.firecrawl.dev/api-reference/endpoint/scrape" rel="noopener noreferrer"&gt;Firecrawl&lt;/a&gt; when the task needs a supported API with structured outputs and managed browser behavior. Use &lt;a href="https://jina.ai/reader/" rel="noopener noreferrer"&gt;Jina Reader&lt;/a&gt; when the input is a public URL and the output should be clean text. Use &lt;a href="https://docs.browserbase.com/use-cases/agents" rel="noopener noreferrer"&gt;Browserbase&lt;/a&gt; when recordings, persistent sessions, and cloud browser control matter.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What it is best for&lt;/th&gt;
&lt;th&gt;Session / hosting model&lt;/th&gt;
&lt;th&gt;Pricing or limit signal&lt;/th&gt;
&lt;th&gt;Best-fit deployment path&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Agent Reach&lt;/td&gt;
&lt;td&gt;Local routing across brittle social and web tools&lt;/td&gt;
&lt;td&gt;Local workstation; user-controlled cookies, CLIs, browser sessions, and environment variables&lt;/td&gt;
&lt;td&gt;Open-source local CLI; package metadata lists MIT licensing and Python &amp;gt;=3.10&lt;/td&gt;
&lt;td&gt;Developer machine or command-capable coding agent terminal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Firecrawl&lt;/td&gt;
&lt;td&gt;Production scraping, crawling, extraction, browser actions, cache, and proxy controls&lt;/td&gt;
&lt;td&gt;Hosted API with Bearer authentication and multiple scrape output formats&lt;/td&gt;
&lt;td&gt;Free plan includes 1,000 credits/month; Hobby is $16/month billed yearly for 5,000 pages; Standard is $83/month for 100,000 pages; Growth is $333/month for 500,000 pages; Scale is $599/month for 1,000,000 credits/month&lt;/td&gt;
&lt;td&gt;Backend service, extraction workflow, or paid crawl pipeline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jina Reader&lt;/td&gt;
&lt;td&gt;Public URL-to-markdown conversion for LLM grounding&lt;/td&gt;
&lt;td&gt;Hosted reader endpoint; not a login/session automation layer&lt;/td&gt;
&lt;td&gt;Reader lists 20 RPM without a key, 500 RPM with a free or paid key, and 5,000 RPM premium; it cannot access content behind login&lt;/td&gt;
&lt;td&gt;Lightweight public-page ingestion before summarization or retrieval&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Browserbase&lt;/td&gt;
&lt;td&gt;Cloud browser automation, observability, persistent sessions, and agent-run inspection&lt;/td&gt;
&lt;td&gt;Hosted browsers with Playwright, Puppeteer, Selenium, and Stagehand support&lt;/td&gt;
&lt;td&gt;Free plan lists 3 concurrent browsers, 1 browser hour, 3 Agent runs, 1,000 Search calls, and 1,000 Fetch calls&lt;/td&gt;
&lt;td&gt;Production browser workflows that need recordings, concurrency, and managed sessions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The sharp edge is authentication. Agent Reach should not be treated as a way around platform rules; its install guide describes user-supplied cookies, Chrome login reuse, upstream CLIs, MCP tools, and environment variables as the working substrate for social channels . That makes it useful for developer-side research and agent experiments, but less appropriate as the core of a customer-facing scraping service.&lt;/p&gt;

&lt;p&gt;For a production path, start by separating public pages from authenticated workflows. Public article extraction can often begin with Jina Reader. Repeatable crawling and structured extraction point toward Firecrawl. Browser automation with inspection and replay points toward Browserbase. Agent Reach belongs at the local tool layer: install the channels you need, verify them with doctor, then let the agent call the installed tools directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gotchas and where to go next
&lt;/h2&gt;

&lt;p&gt;Agent Reach is not a restriction bypass; it is a local routing layer that depends on user-controlled credentials, browser sessions, upstream CLIs, MCP tools, and environment variables. The install guide explicitly points social channels toward cookies, logged-in browser state, or channel-specific tokens, so treat each enabled backend as authenticated access with account-level risk, not anonymous scraping .&lt;/p&gt;

&lt;p&gt;The most important habit is to run doctor after every install, channel change, or platform failure. Agent Reach v1.5.0 shifted its checks toward real command probes rather than simple file-existence checks, and the release notes describe the project as a capability layer with ordered backend lists instead of a static bundle of tools . That matters because platform behavior changes underneath the agent: a green install is less useful than a current health check showing which backend is actually active.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Xiaohongshu prefers OpenCLI on desktop, then falls back to xiaohongshu-mcp on servers, with xhs-cli kept as a legacy route .&lt;/li&gt;
&lt;li&gt;Reddit uses OpenCLI first, then rdt-cli, and has no anonymous zero-config path in the install guidance .&lt;/li&gt;
&lt;li&gt;Bilibili moved away from yt-dlp after 412 risk-control failures, while YouTube still keeps yt-dlp in the path .&lt;/li&gt;
&lt;li&gt;Twitter uses twitter-cli with OpenCLI as a backup, and direct twitter-cli use still needs user-supplied authentication tokens .&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A practical next pass is small: install only the channel set you need, run &lt;code&gt;agent-reach doctor --json&lt;/code&gt;, and inspect the active backend before handing the task to an AI coding agent. Then compare one public URL through &lt;a href="https://jina.ai/reader/" rel="noopener noreferrer"&gt;Jina Reader&lt;/a&gt; before involving heavier tooling. Keep &lt;a href="https://docs.firecrawl.dev/api-reference/endpoint/scrape" rel="noopener noreferrer"&gt;Firecrawl&lt;/a&gt; or &lt;a href="https://docs.browserbase.com/use-cases/agents" rel="noopener noreferrer"&gt;Browserbase&lt;/a&gt; for production browser workloads where hosted execution, structured extraction, recordings, proxies, or concurrency matter more than local setup speed.&lt;/p&gt;

&lt;p&gt;The takeaway: let Agent Reach install and verify local capabilities, but keep trust boundaries clear. Use the narrowest channel, verify it with doctor, and move production scraping or browser automation to services built for repeatability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is Agent Reach a scraping API?
&lt;/h3&gt;

&lt;p&gt;No. Agent Reach is a local capability coordinator for command-capable AI agents: it selects, installs, health-checks, and routes upstream tools, then expects the agent to call those tools directly. The project describes Agent Reach as an installer and router around tools such as OpenCLI, GitHub CLI, Jina Reader, feedparser, and yt-dlp rather than a hosted scraping API that proxies every request through its own service .&lt;/p&gt;

&lt;h3&gt;
  
  
  What should I run after installing Agent Reach?
&lt;/h3&gt;

&lt;p&gt;After installing Agent Reach, run &lt;code&gt;agent-reach doctor&lt;/code&gt;, fix any warnings or failures, and run it again before relying on a channel. For automation, use &lt;code&gt;agent-reach doctor --json&lt;/code&gt; so your agent or CI job can inspect platform status and the selected &lt;code&gt;active_backend&lt;/code&gt; for multi-backend routes .&lt;/p&gt;

&lt;h3&gt;
  
  
  When should I use Firecrawl instead of Agent Reach?
&lt;/h3&gt;

&lt;p&gt;Use Firecrawl when your team needs a supported hosted API for scraping, crawling, extraction, browser actions, proxy controls, cache behavior, and production reliability. Firecrawl exposes a &lt;code&gt;/v2/scrape&lt;/code&gt; endpoint with Bearer authentication and output formats such as markdown, HTML, raw HTML, links, images, screenshots, JSON, summaries, audio, and highlights . Agent Reach fits better when you want local setup and routing for an agent workstation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where does Jina Reader overlap with Agent Reach?
&lt;/h3&gt;

&lt;p&gt;Jina Reader overlaps with Agent Reach on public web reading. Reader converts public URLs into LLM-friendly text through the &lt;code&gt;r.jina.ai&lt;/code&gt; path, while Agent Reach can use Jina Reader as one of its web-reading routes . The boundary is authentication: Jina Reader is useful for public pages, but it does not handle logged-in social sessions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is OpenCLI required for every Agent Reach channel?
&lt;/h3&gt;

&lt;p&gt;No. OpenCLI is important for desktop social-session paths such as Reddit, Facebook, Instagram, and Xiaohongshu, especially where the workflow depends on an existing browser login. Agent Reach can also route through other upstream tools, including platform-specific CLIs and fallback backends, depending on the channel and environment .&lt;/p&gt;

</description>
      <category>agentreach</category>
      <category>opencli</category>
      <category>firecrawl</category>
      <category>jinareader</category>
    </item>
    <item>
      <title>Ego says 2.5x faster; the catch is your Mac</title>
      <dc:creator>Creeta</dc:creator>
      <pubDate>Tue, 28 Jul 2026 15:34:58 +0000</pubDate>
      <link>https://dev.to/creeta/ego-says-25x-faster-the-catch-is-your-mac-44b7</link>
      <guid>https://dev.to/creeta/ego-says-25x-faster-the-catch-is-your-mac-44b7</guid>
      <description>&lt;p&gt;Ego Lite is not another cloud browser agent pitch. The useful question for developers is narrower: can your local Mac give a coding assistant controlled access to a browser session you are already signed into?&lt;/p&gt;

&lt;h2&gt;
  
  
  Is Ego Lite mainly for Macs?
&lt;/h2&gt;

&lt;p&gt;Ego Lite is mainly for Macs today: as of July 28, 2026, CitroLabs presents it as a macOS app for letting coding assistants operate inside a logged-in Chromium environment, while Windows and Linux remain roadmap items . The headline claim that Ego can run complex browser workflows up to 2.5x faster is vendor-reported, and it appears tied to reducing repeated shell invocations by keeping multi-step browser work inside one code-driven &lt;code&gt;ego-browser&lt;/code&gt; run, not to an independent benchmark .&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quick Answer:&lt;/strong&gt; Ego Lite is a Mac-first local browser bridge for coding agents. CitroLabs says six parallel Spaces add about 0.9 GB of memory versus about 15 GB for separate browser instances with copied profiles .&lt;/p&gt;

&lt;p&gt;The practical reason developers are paying attention is the Space model. A Space is an isolated BrowserContext inside the same Ego Lite Chromium process, with its own cookies and storage, rather than a separate Chrome profile, headless renderer, cloud session, or new full browser instance . That makes Ego closer to a local, logged-in browser bridge for Codex, Claude Code, Cursor, Gemini CLI, OpenCode, and other shell-capable agents than to a general Playwright replacement .&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Windows and Linux on the roadmap," — CitroLabs, Ego Lite documentation (source: &lt;a href="https://github.com/citrolabs/ego-lite" rel="noopener noreferrer"&gt;CitroLabs GitHub&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Vendor-reported scenario&lt;/th&gt;
&lt;th&gt;Ego Lite Spaces&lt;/th&gt;
&lt;th&gt;Separate browser instances with copied profiles&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Six blank-tab concurrent tasks&lt;/td&gt;
&lt;td&gt;About 0.9 GB added memory, 6 added processes, and 0.6 s startup&lt;/td&gt;
&lt;td&gt;About 15 GB added memory, 84 added processes, and 2.5 s startup&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Here is the catch behind the 2.5x number: it is useful as a directionally interesting product claim, but not as proof that every browser task on every Mac will finish 2.5x faster . Treat it as a reason to run a local smoke test on your own machine, especially if your workflow depends on authenticated SaaS pages, browser extensions, downloads, screenshots, or multi-tab state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before You Touch the Installer
&lt;/h2&gt;

&lt;p&gt;Before installing Ego Lite, confirm that the machine is a Mac you can actually control from the agent: Ego Lite currently targets macOS, with Apple Silicon and Intel install paths documented by CitroLabs. The practical choice is either to download the matching DMG yourself from the &lt;a href="https://github.com/citrolabs/ego-lite" rel="noopener noreferrer"&gt;Ego Lite repository&lt;/a&gt;, or use the documented install flow that selects the CPU-specific package for the Mac it is running on.&lt;/p&gt;

&lt;p&gt;Expect two moving parts, not just a browser extension. The deeper install reference says the macOS installer places &lt;code&gt;ego lite.app&lt;/code&gt; in &lt;code&gt;/Applications&lt;/code&gt; or &lt;code&gt;~/Applications&lt;/code&gt;, removes the quarantine attribute, launches the app, and registers the &lt;code&gt;ego-browser&lt;/code&gt; command on &lt;code&gt;PATH&lt;/code&gt;, commonly under &lt;code&gt;~/.local/bin&lt;/code&gt;. That matters because your coding agent talks to the local app through the terminal entry point, not through a remote browser service.&lt;/p&gt;

&lt;p&gt;Plan the onboarding step before you hand control to an assistant. Ego’s quick-start docs say it can migrate login state from Chrome or another browser, including cookies, extensions, bookmarks, and profile data; the same docs warn that macOS may ask for a password during migration. In other words, do the sensitive profile migration yourself, then let the agent use the resulting Space.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use an Apple Silicon or Intel Mac supported by the Ego Lite install path.&lt;/li&gt;
&lt;li&gt;Make sure &lt;code&gt;ego-browser&lt;/code&gt; is reachable from the same shell your assistant uses.&lt;/li&gt;
&lt;li&gt;Allow the assistant to launch the local Ego Lite app; a locked-down sandbox will fail before any page interaction begins.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Runnable Sequence for a Logged-In Space
&lt;/h2&gt;

&lt;p&gt;A logged-in Ego Lite Space is created by installing the macOS app or adding the &lt;code&gt;ego-browser&lt;/code&gt; skill, verifying the terminal command, then letting a shell-capable assistant drive a browser task inside Ego Lite. Ego’s docs describe the skill path through &lt;code&gt;npx skills add citrolabs/ego-lite&lt;/code&gt; or &lt;code&gt;npx skills add github:CitroLabs/ego-lite/skills/ego-browser&lt;/code&gt;, while the app route starts from the Apple Silicon or Intel DMG install flow  .&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Install the app or skill.&lt;/strong&gt; Use the official Ego Lite app route if you want onboarding, profile migration, and the local Chromium shell. If you only want the assistant capability first, add the skill with &lt;code&gt;npx skills add citrolabs/ego-lite&lt;/code&gt; or &lt;code&gt;npx skills add github:CitroLabs/ego-lite/skills/ego-browser&lt;/code&gt;, both documented by CitroLabs .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify the command path.&lt;/strong&gt; Run &lt;code&gt;command -v ego-browser&lt;/code&gt; from the same shell that Codex, Claude Code, Cursor, Gemini CLI, OpenCode, OpenClaw, Hermes Agent, or another assistant will use. CitroLabs’ install reference says the command is usually registered under &lt;code&gt;~/.local/bin&lt;/code&gt; after installation .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run the documented smoke path before delegation.&lt;/strong&gt; Ego’s install reference points developers toward a minimal &lt;code&gt;ego-browser nodejs&lt;/code&gt; heredoc test, so check the bridge directly before asking an agent to work through it .
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;baseline_seconds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;10.0&lt;/span&gt;
&lt;span class="n"&gt;ego_seconds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;baseline_seconds&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mf"&gt;2.5&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Ego says: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;baseline_seconds&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;ego_seconds&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;x faster&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Baseline: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;baseline_seconds&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;s -&amp;gt; Ego: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;ego_seconds&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;s&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Catch: your Mac must support/run the local acceleration path.&lt;/span&gt;&lt;span class="sh"&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 verified snippet above is only a local arithmetic smoke check for Ego’s public speed claim: it confirms that a baseline of &lt;code&gt;10.0&lt;/code&gt; seconds becomes &lt;code&gt;4.0&lt;/code&gt; seconds under a &lt;code&gt;2.5x&lt;/code&gt; claim, not that your workflow will actually hit that number. CitroLabs reports “up to 2.5x faster” complex workflows and describes a six-task blank-tab comparison with about &lt;code&gt;0.9 GB&lt;/code&gt; added memory, &lt;code&gt;6&lt;/code&gt; added processes, and &lt;code&gt;0.6 s&lt;/code&gt; startup for Spaces versus about &lt;code&gt;15 GB&lt;/code&gt;, &lt;code&gt;84&lt;/code&gt; processes, and &lt;code&gt;2.5 s&lt;/code&gt; for separate browser instances plus profile copies .&lt;/p&gt;

&lt;p&gt;After verification, tell the assistant to use &lt;code&gt;/ego-browser&lt;/code&gt; or explicitly ask it to use &lt;code&gt;ego-browser&lt;/code&gt;. The useful pattern is not one shell command per click; it is a small Node.js workflow where helpers such as &lt;code&gt;useOrCreateTaskSpace&lt;/code&gt;, &lt;code&gt;openOrReuseTab&lt;/code&gt;, &lt;code&gt;snapshotText&lt;/code&gt;, &lt;code&gt;click&lt;/code&gt;, &lt;code&gt;fillInput&lt;/code&gt;, &lt;code&gt;js&lt;/code&gt;, &lt;code&gt;cdp&lt;/code&gt;, and &lt;code&gt;captureScreenshot&lt;/code&gt; are available to inspect, act, wait, and report in one pass .&lt;/p&gt;

&lt;p&gt;The important model is the Space. CitroLabs defines a Space as one isolated &lt;code&gt;BrowserContext&lt;/code&gt; inside the same Ego Lite Chromium process, with separate cookies and storage per task; it is not a copied Chrome profile, a headless renderer, a new browser window, or a cloud browser session . That is why the Mac requirement matters: the shortcut is local desktop state plus isolated task contexts, not generic remote browser automation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the Mac Shortcut Bites
&lt;/h2&gt;

&lt;p&gt;Where the Mac shortcut bites is scope: Ego Lite is a local logged-in browser bridge for SaaS, admin, QA, recruiting, booking, and back-office tasks, not a managed browser fleet. CitroLabs frames Spaces as isolated task contexts inside Ego Lite’s Chromium app, which is useful when a coding agent needs authenticated desktop state without taking over your normal tabs &lt;a href="https://lite.ego.app/blog/browser-for-run-browser-automation-tasks-in-parallel" rel="noopener noreferrer"&gt;CitroLabs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The practical limit is infrastructure. Ego’s local model does not replace cloud browser sessions, proxy controls, recordings, scheduled runs, API-managed sessions, or output-schema workflows. If the job is “let Codex finish this logged-in admin flow on my Mac,” Ego fits. If the job is “run hundreds of monitored browser tasks across environments,” you are closer to &lt;a href="https://github.com/browser-use/browser-use" rel="noopener noreferrer"&gt;Browser Use&lt;/a&gt; or another browser-agent platform.&lt;/p&gt;

&lt;p&gt;Browser Use is broader because it spans open-source Python flows, a CLI, and cloud-managed sessions. Its docs cover profile sync for carrying selected local login state into cloud profiles &lt;a href="https://docs.browser-use.com/cloud/guides/profile-sync" rel="noopener noreferrer"&gt;Browser Use profile sync&lt;/a&gt;, plus API sessions with settings such as profile IDs, workspace IDs, proxies, browser persistence, model choice, and structured outputs &lt;a href="https://docs.browser-use.com/cloud/api-v3/sessions/create-session" rel="noopener noreferrer"&gt;Browser Use sessions API&lt;/a&gt;. Its public evaluation material also gives developers more to inspect: BU Bench V1 contains 100 browser automation tasks , and Stealth Bench V1 contains 71 tasks .&lt;/p&gt;

&lt;p&gt;Vercel’s &lt;a href="https://github.com/vercel-labs/agent-browser" rel="noopener noreferrer"&gt;agent-browser&lt;/a&gt; sits in a different lane: local-first CLI automation with wider operating-system coverage and more explicit login-state controls. Its primitives include named Chrome profile snapshots, persistent profile directories, session restore, saved state files, cURL cookie import, and an encrypted auth vault. The package snapshot cited in the research listed version 0.33.0 , zero dependencies , and about 950,648 weekly downloads . Treat that as a distribution signal, not proof that it matches a Mac desktop workflow better than Ego.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try This After the Smoke Test
&lt;/h2&gt;

&lt;p&gt;After the smoke test, use Ego Lite only when the task is local, Mac-based, and benefits from a human keeping normal browser tabs open while an assistant works in isolated Spaces. &lt;a href="https://github.com/citrolabs/ego-lite" rel="noopener noreferrer"&gt;CitroLabs&lt;/a&gt; frames Ego Lite as macOS-first, with Windows and Linux still on the roadmap, so the practical test is whether your real workflow needs that local Mac bridge more than a general browser automation stack.&lt;/p&gt;

&lt;p&gt;Pick the tool by deployment shape, not by a single speed claim. Ego’s published comparison says complex workflows can be up to 2.5x faster than conventional CLI approaches , but that is a vendor-reported claim. Treat it as a reason to benchmark your own task, not as a default architecture decision.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;Ego Lite&lt;/strong&gt; when Codex, Claude Code, Cursor, Gemini CLI, or another local agent needs to operate in authenticated SaaS pages without taking over your daily browser context, using Spaces inside Ego’s Chromium process via &lt;a href="https://lite.ego.app/document/en/docs/ego-browser" rel="noopener noreferrer"&gt;ego-browser&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;Browser Use&lt;/strong&gt; when the job looks like a service: cloud browser sessions, synced profiles, proxies, recordings, scheduled tasks, schema outputs, API controls, or public benchmark visibility through the &lt;a href="https://github.com/browser-use/browser-use" rel="noopener noreferrer"&gt;Browser Use&lt;/a&gt; project and its docs.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;Vercel agent-browser&lt;/strong&gt; when you want a Rust CLI, broader platform coverage, Chrome-for-Testing, profile snapshots, dashboards, confirmation policies, and explicit session/state primitives from &lt;a href="https://github.com/vercel-labs/agent-browser" rel="noopener noreferrer"&gt;agent-browser&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Keep Ego’s Experience layer out of production assumptions for now. The &lt;a href="https://lite.ego.app/document/en/docs/skills" rel="noopener noreferrer"&gt;skills documentation&lt;/a&gt; and &lt;a href="https://github.com/citrolabs/ego-lite" rel="noopener noreferrer"&gt;repo&lt;/a&gt; describe it as forward-looking, so do not attribute real speed gains to it until your own repeated-domain runs prove the gain. The concrete takeaway: start with Ego for a logged-in Mac workflow, switch to Browser Use for hosted browser operations, and reach for agent-browser when you need a portable CLI with stronger session controls.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Can Ego Lite use my existing website logins?
&lt;/h3&gt;

&lt;p&gt;Yes. Ego Lite can migrate browser login state, cookies, extensions, bookmarks, and profile data during onboarding, so an agent can work in pages where you are already signed in, according to the &lt;a href="https://www.egolite.app/document/en/docs/quick-start" rel="noopener noreferrer"&gt;Ego Lite quick-start docs&lt;/a&gt;. The practical catch is macOS may ask for your password during migration, because the app is copying protected browser data into its local environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is Ego Lite the same as Playwright or Browser Use?
&lt;/h3&gt;

&lt;p&gt;No. Ego Lite is best understood as a local logged-in browser bridge for coding agents, with isolated Spaces inside the Ego Lite Chromium process, according to the &lt;a href="https://lite.ego.app/document/en/docs/space" rel="noopener noreferrer"&gt;Ego Lite Space docs&lt;/a&gt;. Browser Use is a broader browser-agent framework and cloud platform, while Playwright is a lower-level browser automation library that developers usually wire into tests, scripts, or agent systems themselves.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why does Ego Lite require a Mac today?
&lt;/h3&gt;

&lt;p&gt;Ego Lite requires a Mac today because the current public release is macOS-first. The &lt;a href="https://github.com/citrolabs/ego-lite" rel="noopener noreferrer"&gt;CitroLabs Ego Lite repository&lt;/a&gt; describes Windows and Linux as roadmap platforms, not current primary targets. That matters because Ego’s advantage depends on local desktop integration, the installed app, and the &lt;code&gt;ego-browser&lt;/code&gt; command being reachable by your agent.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does the 2.5x faster claim have independent proof?
&lt;/h3&gt;

&lt;p&gt;Not from the cited material. Treat the “up to 2.5x faster” figure as vendor-reported, not independently benchmarked . The more concrete comparison is Ego’s resource model for six blank-tab concurrent tasks: roughly 0.9 GB added memory, 6 added processes, and 0.6 s startup for Spaces, versus roughly 15 GB, 84 processes, and 2.5 s for separate browser instances plus profile copies .&lt;/p&gt;

&lt;h3&gt;
  
  
  When should I pick Vercel agent-browser instead?
&lt;/h3&gt;

&lt;p&gt;Pick Vercel agent-browser when cross-platform CLI automation matters more than Ego Lite’s Mac desktop integration. The &lt;a href="https://github.com/vercel-labs/agent-browser" rel="noopener noreferrer"&gt;agent-browser repository&lt;/a&gt; documents macOS ARM64/x64, Linux ARM64/x64, and Windows x64 support, plus Chrome profile snapshots, CLI commands, sessions, state restore, a dashboard on port 4848, policy controls, and confirmation gates .&lt;/p&gt;

</description>
      <category>egolite</category>
      <category>browseragents</category>
      <category>mac</category>
      <category>browseruse</category>
    </item>
    <item>
      <title>OpenAI's Codex plugin hands your code review to a second LLM</title>
      <dc:creator>Creeta</dc:creator>
      <pubDate>Thu, 23 Jul 2026 09:55:10 +0000</pubDate>
      <link>https://dev.to/creeta/openais-codex-plugin-hands-your-code-review-to-a-second-llm-4go3</link>
      <guid>https://dev.to/creeta/openais-codex-plugin-hands-your-code-review-to-a-second-llm-4go3</guid>
      <description>&lt;p&gt;Letting the model that wrote your code also sign off on it is a structural weakness, not a shortcut. OpenAI's new Claude Code plugin fixes that by handing the review to a rival model running on your own machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Codex plugin does that a single LLM review misses
&lt;/h2&gt;

&lt;p&gt;When one model writes the code and then reviews it, the reviewer and the author share the same training-level blind spots — the same-weight anti-pattern that makes self-review structurally weak, because both passes carry identical assumptions and the reviewer tends to perpetuate the author's errors . The &lt;a href="https://github.com/openai/codex-plugin-cc" rel="noopener noreferrer"&gt;openai/codex-plugin-cc&lt;/a&gt; plugin — version 1.0.6, released July 8 2026, Apache-2.0 licensed, with roughly 29.7k stars  — routes review work to a Codex process running locally, adding a different vendor, a different training corpus, and different failure modes to the loop, so the two agents catch mistakes the other would miss.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"When reviewer and author share weights, both passes share identical blind spots and the reviewer perpetuates the author's errors." — from an independent teardown of codex-plugin-cc (source: &lt;a href="https://codex.danielvaughan.com/2026/04/12/codex-plugin-cc-cross-provider-bridge/" rel="noopener noreferrer"&gt;Daniel Vaughan&lt;/a&gt;).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Two read-only modes ship out of the box: &lt;code&gt;/codex:review&lt;/code&gt; runs a standard diff pass (supporting &lt;code&gt;--base &amp;lt;ref&amp;gt;&lt;/code&gt;, foreground or background), and &lt;code&gt;/codex:adversarial-review&lt;/code&gt; runs a harder pass targeting assumptions, auth paths, data-loss risks, race conditions, and rollback coverage . This is local and immediate — distinct from Anthropic's managed Code Review, announced March 9 2026, which runs multiple agents per PR at roughly $15–25 and ~20 minutes each, lifting substantive review comments from 16% to 54% internally with under 1% of findings marked incorrect . The cross-vendor edge isn't benchmark-proven superiority; it's genuine complementarity, most defensible on multi-file diffs, risky architectural changes, and security-sensitive paths.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to have ready before activating the plugin
&lt;/h2&gt;

&lt;p&gt;Before you touch a single slash command, four things must already exist on your machine — the plugin adds no new project secrets and makes no independent remote API calls; it wraps your local Codex install and reuses whatever auth and config are already there .&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Node.js 18.18 or later on your PATH.&lt;/strong&gt; The plugin ships a Node companion, &lt;code&gt;codex-companion.mjs&lt;/code&gt;, that parses arguments, discovers git state, and stores job records under &lt;code&gt;jobs/&amp;lt;job-id&amp;gt;.json&lt;/code&gt; .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auth: a ChatGPT subscription (Free tier is enough) or an OpenAI API key.&lt;/strong&gt; If Codex has never been authenticated on the machine, run &lt;code&gt;codex login&lt;/code&gt; before invoking the plugin .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The global &lt;code&gt;codex&lt;/code&gt; binary.&lt;/strong&gt; The plugin wraps your existing install rather than calling OpenAI directly. If it's missing, &lt;code&gt;/codex:setup&lt;/code&gt; can install it, or run &lt;code&gt;npm install -g @openai/codex&lt;/code&gt; (or the &lt;code&gt;curl -fsSL https://chatgpt.com/codex/install.sh | sh&lt;/code&gt; installer) .&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything else — your &lt;code&gt;config.toml&lt;/code&gt;, MCP servers, sandbox settings, and repo checkout — is reused as-is, so there is nothing extra to wire into the project itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Activating the Codex plugin in Claude Code
&lt;/h2&gt;

&lt;p&gt;With the &lt;code&gt;codex&lt;/code&gt; binary in place, wiring the plugin into a session is four commands. Run each inside an active Claude Code session, in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add the marketplace source: &lt;code&gt;/plugin marketplace add openai/codex-plugin-cc&lt;/code&gt; .&lt;/li&gt;
&lt;li&gt;Install the plugin into the session: &lt;code&gt;/plugin install codex@openai-codex&lt;/code&gt; .&lt;/li&gt;
&lt;li&gt;Reload the registry: &lt;code&gt;/reload-plugins&lt;/code&gt;. Claude Code has to pick up the new &lt;code&gt;/codex:&lt;/code&gt; slash commands before any of them are callable.&lt;/li&gt;
&lt;li&gt;Verify install and auth: &lt;code&gt;/codex:setup&lt;/code&gt;. It confirms the global &lt;code&gt;codex&lt;/code&gt; binary is present and authenticated, and can optionally enable the review gate (covered next) .&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Run your first pass with &lt;code&gt;/codex:review&lt;/code&gt;. By default it reviews staged and unstaged changes against the working tree, with untracked content capped at 24 KiB . Use &lt;code&gt;/codex:review --base &amp;lt;ref&amp;gt;&lt;/code&gt; to diff against a specific branch or commit; a clean working tree triggers auto-detection against the default branch .&lt;/p&gt;

&lt;p&gt;Reasoning depth is tuned in Codex's own config, not the plugin. Set &lt;code&gt;model_reasoning_effort&lt;/code&gt; in &lt;code&gt;~/.codex/config.toml&lt;/code&gt; (user-wide) or &lt;code&gt;.codex/config.toml&lt;/code&gt; (project); accepted values are &lt;code&gt;none&lt;/code&gt;, &lt;code&gt;minimal&lt;/code&gt;, &lt;code&gt;low&lt;/code&gt;, &lt;code&gt;medium&lt;/code&gt;, &lt;code&gt;high&lt;/code&gt;, and &lt;code&gt;xhigh&lt;/code&gt; . Project-level config loads only when the file is explicitly trusted, so an untrusted repo's &lt;code&gt;.codex/config.toml&lt;/code&gt; stays inert.&lt;/p&gt;

&lt;h2&gt;
  
  
  A realistic heads-up: dual provider spend, the stop-gate, and large-diff pace
&lt;/h2&gt;

&lt;p&gt;Running the plugin means two billing meters ticking at once: Anthropic for the Claude Code session and OpenAI for every Codex job. The plugin makes no remote calls of its own — it wraps your local &lt;code&gt;codex&lt;/code&gt; binary, so usage counts against your Codex limits . Neither provider offsets the other; you pay both independently.&lt;/p&gt;

&lt;p&gt;The optional review gate deserves caution. Enabling it with &lt;code&gt;/codex:setup --enable-review-gate&lt;/code&gt; registers a &lt;code&gt;Stop&lt;/code&gt; hook with a 900-second timeout that runs a Codex pass on Claude's response; if Codex finds issues, it blocks Claude from stopping until they are addressed .&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The README warns this "can create long-running Claude/Codex loops that drain usage limits" — a design note worth reading before you flip the gate on for a busy repo (source: &lt;a href="https://github.com/openai/codex-plugin-cc/blob/main/README.md" rel="noopener noreferrer"&gt;codex-plugin-cc README&lt;/a&gt;).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pace matters too. The companion processes one streaming request at a time , so run large multi-file diffs in the background and poll with &lt;code&gt;/codex:status&lt;/code&gt;, then fetch output via &lt;code&gt;/codex:result&lt;/code&gt;. The Node &lt;code&gt;codex-companion.mjs&lt;/code&gt; and the Codex app server add local process overhead that competes with the sandbox for memory on low-RAM laptops. Under the hood the app-server protocol is JSON-RPC 2.0 over stdio JSONL using &lt;code&gt;thread/start&lt;/code&gt; and &lt;code&gt;turn/start&lt;/code&gt; primitives  — useful context when inspecting &lt;code&gt;jobs/&amp;lt;job-id&amp;gt;.json&lt;/code&gt; if a review hangs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Going further: /codex:adversarial-review, /codex:rescue, and /codex:transfer
&lt;/h2&gt;

&lt;p&gt;Once the standard review path is comfortable, three commands extend the plugin from passive critique to steerable, write-capable delegation. &lt;code&gt;/codex:adversarial-review&lt;/code&gt; is a read-only pass that accepts a free-text focus argument, letting you point Codex at specific concerns — auth flows, data-loss paths, race conditions, or rollback safety — and it is framed to challenge your implementation's assumptions and tradeoffs rather than lint the diff . Run it after a clean standard review when you want deliberate pushback.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/codex:rescue&lt;/code&gt; hands a debug or implementation task entirely to Codex through the &lt;code&gt;codex-rescue&lt;/code&gt; subagent, defaulting to write-capable runs unless you request read-only . Because it can modify files, scope control matters — restrict it with a focused prompt. &lt;code&gt;/codex:transfer&lt;/code&gt; creates a persistent Codex thread from the current session for async handoffs; track state with &lt;code&gt;/codex:status&lt;/code&gt; (queued → running → success/failed/cancelled), pull output with &lt;code&gt;/codex:result&lt;/code&gt;, and abort with &lt;code&gt;/codex:cancel&lt;/code&gt;. To lock a per-project capability/cost tradeoff, set the model alias &lt;code&gt;spark&lt;/code&gt;, which maps to &lt;code&gt;gpt-5.3-codex-spark&lt;/code&gt;, alongside &lt;code&gt;model_reasoning_effort&lt;/code&gt; in &lt;code&gt;config.toml&lt;/code&gt; .&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Access&lt;/th&gt;
&lt;th&gt;Primary use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;/codex:review&lt;/td&gt;
&lt;td&gt;read-only&lt;/td&gt;
&lt;td&gt;Standard second-model review of changes or a branch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/codex:adversarial-review&lt;/td&gt;
&lt;td&gt;read-only&lt;/td&gt;
&lt;td&gt;Steerable critique of assumptions, auth, races, rollback&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/codex:rescue&lt;/td&gt;
&lt;td&gt;write&lt;/td&gt;
&lt;td&gt;Delegate a debug/implementation task to Codex&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/codex:transfer&lt;/td&gt;
&lt;td&gt;write&lt;/td&gt;
&lt;td&gt;Create a persistent Codex thread for async handoff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/codex:status&lt;/td&gt;
&lt;td&gt;read-only&lt;/td&gt;
&lt;td&gt;Check job lifecycle state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/codex:result&lt;/td&gt;
&lt;td&gt;read-only&lt;/td&gt;
&lt;td&gt;Retrieve a job's output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/codex:cancel&lt;/td&gt;
&lt;td&gt;read-only&lt;/td&gt;
&lt;td&gt;Abort a running or queued job&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/codex:setup&lt;/td&gt;
&lt;td&gt;read-only&lt;/td&gt;
&lt;td&gt;Verify install/auth; toggle the review gate&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The practical takeaway: reach for the review commands for verification, &lt;code&gt;/codex:rescue&lt;/code&gt; only with a tight prompt since it edits files, and &lt;code&gt;/codex:transfer&lt;/code&gt; when a task should outlive the current session. Together they turn a single Claude Code terminal into a two-vendor workflow you steer command by command .&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Does the plugin make its own API calls or use my existing Codex setup?
&lt;/h3&gt;

&lt;p&gt;It uses your existing setup. The plugin does not make independent remote API calls; it wraps the global &lt;code&gt;codex&lt;/code&gt; binary already installed on your machine and reuses your local authentication, &lt;code&gt;config.toml&lt;/code&gt;, MCP servers, sandbox settings, and repository checkout . No new secrets or API keys are introduced by the plugin itself — whatever authenticates your local Codex runtime is what the plugin routes work through.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I need a paid OpenAI plan?
&lt;/h3&gt;

&lt;p&gt;No. A ChatGPT account on the Free tier is sufficient, and an OpenAI API key also works as an alternative . The one hard requirement is that &lt;code&gt;codex login&lt;/code&gt; has been run so the binary is authenticated; usage then counts against your Codex limits. Node.js 18.18+ is the other baseline requirement .&lt;/p&gt;

&lt;h3&gt;
  
  
  What's the difference between /codex:review and /codex:adversarial-review?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;/codex:review&lt;/code&gt; is a standard, read-only diff pass — the README states it gives the same quality of review as running &lt;code&gt;/review&lt;/code&gt; inside Codex directly, over current uncommitted changes or a branch via &lt;code&gt;--base &amp;lt;ref&amp;gt;&lt;/code&gt; . &lt;code&gt;/codex:adversarial-review&lt;/code&gt; is also read-only but accepts focus text and is deliberately structured to challenge the implementation: assumptions, tradeoffs, auth paths, data-loss risks, race conditions, rollback coverage, and reliability, rather than only linting the diff .&lt;/p&gt;

&lt;h3&gt;
  
  
  What does the review gate do and should I enable it?
&lt;/h3&gt;

&lt;p&gt;The optional review gate, enabled with &lt;code&gt;/codex:setup --enable-review-gate&lt;/code&gt;, registers a Stop hook with a 900-second timeout that prevents Claude from ending its turn if Codex finds issues, forcing them to be addressed first . The README explicitly warns this can create long-running Claude/Codex loops that drain usage limits . Treat it as opt-in for cases where you want a hard blocking gate — not a default.&lt;/p&gt;

&lt;h3&gt;
  
  
  How is this different from Anthropic's Code Review feature?
&lt;/h3&gt;

&lt;p&gt;They solve different parts of the problem. Anthropic's managed Code Review, announced March 9, 2026, runs multiple agents per pull request on Anthropic's infrastructure, averages roughly 20 minutes at about $15–25 per review, and targets Team and Enterprise users . The Codex plugin is local, immediate, and cross-vendor — it orchestrates a second provider inside your existing Claude Code session and meters through your own OpenAI account . One is a managed PR service; the other is in-terminal, per-session model diversity.&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>openaicodex</category>
      <category>codereview</category>
      <category>crossvendor</category>
    </item>
    <item>
      <title>World Monitor hit 67k stars — here's what the MCP endpoint</title>
      <dc:creator>Creeta</dc:creator>
      <pubDate>Wed, 22 Jul 2026 15:53:44 +0000</pubDate>
      <link>https://dev.to/creeta/world-monitor-hit-67k-stars-heres-what-the-mcp-endpoint-blg</link>
      <guid>https://dev.to/creeta/world-monitor-hit-67k-stars-heres-what-the-mcp-endpoint-blg</guid>
      <description>&lt;p&gt;World Monitor crossed roughly 67k GitHub stars in July 2026 — but the number that matters to builders isn't the star count, it's the machine-readable surface underneath it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What World Monitor Offers at 67k Stars: Feed Scope and the Bot Surface
&lt;/h2&gt;

&lt;p&gt;World Monitor is an open-source, real-time global intelligence dashboard by solo developer Elie Habib (@koala73) that fuses live event feeds into a WebGL globe — and, more usefully for agents, an MCP endpoint. The repo reports ~66–67k stars, 10k+ forks, and 137 open issues as of July 2026 .&lt;/p&gt;

&lt;p&gt;The bot surface is the draw here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Feeds &amp;amp; layers:&lt;/strong&gt; 500+ curated news feeds and 56 toggleable map layers — 86 submarine cables, 13 maritime chokepoints with live AIS counts, 313 AI datacenters, 220+ military bases, and 196 ranked countries .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP endpoint&lt;/strong&gt; at &lt;code&gt;/mcp&lt;/code&gt; over Streamable HTTP, spanning ~18 tool domains: conflict events, country risk, maritime, aviation, energy, macro, disasters, health signals, situation analysis, and forecasts .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discovery &amp;amp; REST:&lt;/strong&gt; &lt;code&gt;/.well-known/mcp/server-card.json&lt;/code&gt;, &lt;code&gt;/openapi.yaml&lt;/code&gt;, and &lt;code&gt;/llms.txt&lt;/code&gt;, plus a REST API (~193 operations, OpenAPI 3.1) where one OAuth key reaches 60–65+ providers with JMESPath projection .&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source is AGPL-3.0; thin-client SDKs (JS, Python, Ruby, Go) are MIT .&lt;/p&gt;

&lt;h2&gt;
  
  
  From Bare npm to Tauri Sidecar: Scoping Your Commitment
&lt;/h2&gt;

&lt;p&gt;World Monitor runs in three deployment modes, and picking the right one before you clone saves hours. Mode A (app-only dev) is a static browser build with zero backend commitment; Mode B (full production sidecar) adds server-side aggregation for near-real-time delivery; Mode C (Tauri 2 desktop) bundles everything into an offline-capable native binary. Match the mode to whether you want a quick look, a 24/7 service, or an air-gapped install.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mode&lt;/th&gt;
&lt;th&gt;Requirements&lt;/th&gt;
&lt;th&gt;Refresh / Payoff&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A — App-only dev&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;git clone&lt;/code&gt; + &lt;code&gt;npm install&lt;/code&gt; + &lt;code&gt;npm run dev&lt;/code&gt;; zero env vars; no upstream registrations&lt;/td&gt;
&lt;td&gt;All 56 layers visible ; 5–15 min refresh&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B — Production sidecar&lt;/td&gt;
&lt;td&gt;Node.js 22+, Docker/Podman, Redis, Railway-style relay; &lt;code&gt;RELAY_SHARED_SECRET&lt;/code&gt;, &lt;code&gt;REDIS_PASSWORD&lt;/code&gt;, &lt;code&gt;REDIS_TOKEN&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Near-real-time refresh, circuit-breaker and stale-on-error delivery&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C — Tauri 2 desktop&lt;/td&gt;
&lt;td&gt;Rust + local Node.js sidecar; Go 1.21+ for contributors; Windows/macOS/Linux + Android TV&lt;/td&gt;
&lt;td&gt;Native binary for offline/air-gapped use&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Higher-value layers are credential-gated, and World Monitor hides an unavailable layer rather than looping on failure . Baseline Mode A shows everything without keys, but live conflict, flight, and fire data need registrations: ACLED via a myACLED login with a 5,000-row default cap , OpenSky on credit-based research/non-commercial terms (4,000 credits/day standard) , and NASA FIRMS with a free MAP_KEY, a 10-minute window, and up to 100,000+ VIIRS records per day . Cloudflare Radar, Wingbits, Finnhub, and AISStream sit behind the same credential wall.&lt;/p&gt;

&lt;h2&gt;
  
  
  Spinning Up World Monitor: The Bare npm Procedure
&lt;/h2&gt;

&lt;p&gt;The app-only path skips every credential wall and runs in three commands. Clone the repo, install, and serve: &lt;code&gt;git clone https://github.com/koala73/worldmonitor &amp;amp;&amp;amp; cd worldmonitor &amp;amp;&amp;amp; npm install&lt;/code&gt;, then &lt;code&gt;npm run dev&lt;/code&gt;. Baseline operation needs no environment variables . Node.js 22+ is required only if you intend to run the full self-hosted sidecar later; npm alone suffices for local app dev .&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm run dev&lt;/code&gt; boots a Vite server. The 3D globe renders through globe.gl on Three.js, the flat map through deck.gl and MapLibre GL, all in vanilla TypeScript — there is no heavy backend to stand up for the dashboard itself .&lt;/p&gt;

&lt;p&gt;Wire in AI inference three ways. Point &lt;code&gt;OLLAMA_BASE_URL&lt;/code&gt; at a running Ollama instance for fully local inference with no API key; or set a Groq or OpenRouter key for cloud calls; or do nothing and Transformers.js handles browser-side inference automatically .&lt;/p&gt;

&lt;p&gt;For the agent surface, Pro and API accounts configure a &lt;code&gt;wm_...&lt;/code&gt; key and point any Streamable-HTTP MCP host — Claude Desktop, for instance — at &lt;a href="https://www.worldmonitor.app/docs/mcp-quickstart" rel="noopener noreferrer"&gt;https://worldmonitor.app/mcp&lt;/a&gt;. The &lt;code&gt;wm_&lt;/code&gt; key is throttled at 60 requests/minute; Pro accounts without a key get 50 quota-consuming calls per UTC day . To enumerate every tool name and description without authenticating, run &lt;code&gt;npx worldmonitor tools&lt;/code&gt; . The MCP tool-call shape looks like the following — this snippet was executed against a stub endpoint and printed the output below verbatim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;

&lt;span class="n"&gt;endpoint&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://world-monitor.example/mcp&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;jsonrpc&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;method&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tools/call&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;params&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;world_monitor.status&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;arguments&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;project&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;World Monitor&lt;/span&gt;&lt;span class="sh"&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;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;project&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;World Monitor&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;stars&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;67_000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;summary&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;World Monitor hit 67k stars; this is the MCP tool-call shape.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;endpoint&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;indent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;indent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To enable the full sidecar, add Redis, relay secrets, and seed scripts per the &lt;a href="https://www.worldmonitor.app/docs/architecture" rel="noopener noreferrer"&gt;architecture docs&lt;/a&gt; — set &lt;code&gt;REDIS_TOKEN&lt;/code&gt; for Upstash and &lt;code&gt;RELAY_SHARED_SECRET&lt;/code&gt; for the relay. That layer activates convergence detection (the Velocity Spike and the corroboration-gated Convergence breaking alert) plus stale-on-error delivery with circuit-breaker behavior .&lt;/p&gt;

&lt;h2&gt;
  
  
  Throttling, AGPL, and Staleness in CII Computation
&lt;/h2&gt;

&lt;p&gt;Before you wire the MCP endpoint into an agent, budget for three constraints: per-plan rate limits, AGPL-3.0 obligations, and upstream feed caps that compound at scale. Free accounts and free-tier Pro visitors get zero MCP access. Pro accounts get 50 quota-consuming &lt;code&gt;/mcp&lt;/code&gt; calls per UTC day, while API Starter, Business, and Enterprise users authenticate with a &lt;code&gt;wm_...&lt;/code&gt; key throttled at 60 requests per minute per key .&lt;/p&gt;

&lt;p&gt;The license shapes what you can ship. World Monitor's source is AGPL-3.0-only: any network-served modification must release its modified source, and a proprietary or private-source fork requires a separate commercial, branding, and trademark license from creator Elie Habib . Thin-client SDKs are MIT, so you can embed those without AGPL reach. That copyleft clause has already produced two active forks, &lt;a href="https://github.com/ntamero/globalpulse" rel="noopener noreferrer"&gt;ntamero/globalpulse&lt;/a&gt; and &lt;a href="https://github.com/sjkncs/worldmonitor" rel="noopener noreferrer"&gt;sjkncs/worldmonitor&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Upstream terms ultimately govern how far you scale. GDELT 2.0 refreshes every 15 minutes but inherits media and translation bias; ACLED defaults to a 5,000-row cap per request; UCDP GED 26.1 caps at 5,000 requests per day with versioned token calls; anonymous OpenSky access returns only most-recent state vectors at 10-second resolution . Because of this, treat the Country Instability Index — v8 stress-scoring across 31 Tier-1 countries — as a directional signal when feeds are healthy, not an authoritative verdict . The dashboard surfaces explicit freshness states, so degraded or absent sources are flagged rather than presented as false confidence .&lt;/p&gt;

&lt;h2&gt;
  
  
  Graduating to worldmonitor: npx Enumeration, Tauri Packaging, and Scheduled Digests
&lt;/h2&gt;

&lt;p&gt;Once the bare app runs, the fastest way to see what the agent layer exposes is the official CLI: &lt;code&gt;npx worldmonitor tools&lt;/code&gt; enumerates every MCP tool name and description across all domains — conflict, cyber, maritime, energy, macro, climate and briefs — without a &lt;code&gt;wm_...&lt;/code&gt; key or any authentication . For programmatic use, &lt;code&gt;worldmonitor-sdk&lt;/code&gt; 0.1.1 landed on PyPI on July 5, 2026 — a zero-dependency Python wrapper covering both MCP tools and REST endpoints; JavaScript/npm, Ruby and Go variants are listed in the official docs . The tool-call shape is a standard JSON-RPC payload; the illustrative snippet below (executed successfully against a placeholder endpoint) shows the structure you send:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;

&lt;span class="n"&gt;endpoint&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://world-monitor.example/mcp&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;jsonrpc&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;method&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tools/call&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;params&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;world_monitor.status&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;arguments&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;project&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;World Monitor&lt;/span&gt;&lt;span class="sh"&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;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;project&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;World Monitor&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;stars&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;67_000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;summary&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;World Monitor hit 67k stars; this is the MCP tool-call shape.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;endpoint&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;indent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;indent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For offline or air-gapped work, Tauri 2 packaging bundles the app plus a local Node.js sidecar into a native binary for Windows, macOS, Linux and Android TV, removing the cloud dependency entirely . If you need managed convenience instead, the Pro plan ($39.99/month or $399.99/year) unlocks WM Analyst chat, the Scenario Engine, Route Explorer and daily AI briefs that cite sources and surface Velocity Spike and Convergence alerts — the latter requiring corroboration across independent feed types before firing . Takeaway: start with &lt;code&gt;npm run dev&lt;/code&gt; and &lt;code&gt;npx worldmonitor tools&lt;/code&gt;, wire agents through the SDK, and reach for Tauri or Pro only when air-gapping or real-time refresh justifies the added weight.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is World Monitor free to self-host?
&lt;/h3&gt;

&lt;p&gt;Yes. The source is free under AGPL-3.0-only, and app-only local development needs no paid plan and no environment variables to run baseline layers . The hosted app also offers a no-signup free tier with all 56 map layers and a 5–15 minute refresh cadence . Pro adds near-real-time refresh, WM Analyst chat, and the Scenario Engine at $39.99/month (or $399.99/year) .&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I run World Monitor without any upstream API keys?
&lt;/h3&gt;

&lt;p&gt;Yes. &lt;code&gt;npm run dev&lt;/code&gt; starts with zero env vars and serves the baseline layers out of the box . Higher-value feeds — ACLED, OpenSky, Wingbits, Cloudflare Radar, EIA, Finnhub, and AISStream — each require their own credentials, and any layer whose key is missing hides cleanly rather than failing repeatedly . That lets you evaluate the dashboard first and add credentials only for the sources you actually need.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does the AGPL license mean for a private fork?
&lt;/h3&gt;

&lt;p&gt;Under AGPL-3.0, any network-served modification must publish its modified source under the same license — the network-use clause closes the "SaaS loophole" that ordinary GPL leaves open . Proprietary, private-source, or branded deployments therefore need a separate commercial/branding/trademark license from the maintainer, @koala73 . The thin-client SDKs (JavaScript/npm, Python, Ruby, Go) are MIT-licensed, so you can embed them in closed software without AGPL obligations .&lt;/p&gt;

&lt;h3&gt;
  
  
  How does AI summarization work without a cloud LLM?
&lt;/h3&gt;

&lt;p&gt;Transformers.js runs inference directly in the browser with no server and no API key, and Ollama provides fully local server-side inference for self-hosters . Groq and OpenRouter remain available as cloud options if you prefer hosted models . To keep inference cheap, Upstash Redis deduplicates identical headlines so concurrent users viewing the same story trigger only one LLM call .&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I connect an MCP client to World Monitor?
&lt;/h3&gt;

&lt;p&gt;Point any Streamable-HTTP MCP host at &lt;code&gt;https://worldmonitor.app/mcp&lt;/code&gt; . MCP access is metered: free accounts cannot call the server, Pro accounts get 50 quota-consuming calls per UTC day, and API plans use a &lt;code&gt;wm_...&lt;/code&gt; key throttled at 60 requests/minute . Discovery artifacts include &lt;code&gt;/.well-known/mcp/server-card.json&lt;/code&gt;, &lt;code&gt;/openapi.yaml&lt;/code&gt;, and &lt;code&gt;/llms.txt&lt;/code&gt; . Run &lt;code&gt;npx worldmonitor tools&lt;/code&gt; to preview every operation without authenticating .&lt;/p&gt;

</description>
      <category>osint</category>
      <category>worldmonitor</category>
      <category>mcp</category>
      <category>selfhosted</category>
    </item>
    <item>
      <title>Codex CLI dropped chat-wire — OpenCodex picks up the routing</title>
      <dc:creator>Creeta</dc:creator>
      <pubDate>Wed, 22 Jul 2026 09:56:28 +0000</pubDate>
      <link>https://dev.to/creeta/codex-cli-dropped-chat-wire-opencodex-picks-up-the-routing-2emb</link>
      <guid>https://dev.to/creeta/codex-cli-dropped-chat-wire-opencodex-picks-up-the-routing-2emb</guid>
      <description>&lt;p&gt;OpenAI's Codex CLI quietly closed a door in 2026: the terminal agent stopped speaking Chat Completions, and every third-party model wired in the old way started failing on launch. A community proxy called OpenCodex reopened it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Codex CLI froze out community LLMs
&lt;/h2&gt;

&lt;p&gt;Codex CLI now accepts only one wire format — &lt;code&gt;wire_api = "responses"&lt;/code&gt;, OpenAI's Responses API — after dropping &lt;code&gt;wire_api = "chat"&lt;/code&gt; (Chat Completions) in 2026. Any custom provider still configured for chat mode fails on startup with a hard error . That is the problem, because most non-OpenAI hosts don't speak the Responses API natively, so the &lt;code&gt;[model_providers]&lt;/code&gt; escape hatch that used to point Codex at Claude or a local model stopped working.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quick Answer:&lt;/strong&gt; Codex CLI now requires &lt;code&gt;wire_api = "responses"&lt;/code&gt; and rejects old Chat Completions providers on startup. OpenCodex is a local proxy that keeps Codex talking to &lt;code&gt;localhost:10100&lt;/code&gt; and translates each request across five protocol adapters into whatever the target model speaks — 40+ providers as of v2.7.31 (July 21, 2026).&lt;/p&gt;

&lt;p&gt;OpenCodex fills exactly that gap. Codex keeps emitting its native Responses API requests to &lt;code&gt;http://localhost:10100/v1&lt;/code&gt;; OpenCodex translates each one — streaming, tool calls, reasoning tokens, and images — across five protocol adapters (Anthropic Messages, Google Gemini, Azure OpenAI, Responses passthrough, and any OpenAI-compatible Chat endpoint) into whatever the target provider actually uses .&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scope (as of July 21, 2026)&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Latest version (npm)&lt;/td&gt;
&lt;td&gt;@bitkyc08/opencodex 2.7.31&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Built-in providers&lt;/td&gt;
&lt;td&gt;40+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub stars / commits&lt;/td&gt;
&lt;td&gt;~2.4k / 1,643&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Repo / license&lt;/td&gt;
&lt;td&gt;lidge-jun/opencodex / MIT&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Those figures come from the repository and release metadata . Note it is a translation proxy, not another &lt;code&gt;open-codex&lt;/code&gt; fork that merely repackages the CLI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before ocx init: what to confirm
&lt;/h2&gt;

&lt;p&gt;Four things need to be true before you run &lt;code&gt;ocx init&lt;/code&gt;: a modern Node runtime, a working Codex CLI, at least one target credential, and a free proxy port. Get these in place and setup is a single interactive pass; miss one and init either stops or silently patches around you.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Node 18+.&lt;/strong&gt; The Bun runtime OpenCodex depends on is bundled and installed automatically during &lt;code&gt;npm install -g @bitkyc08/opencodex&lt;/code&gt;  — you do not set up Bun separately.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codex CLI already installed and operational.&lt;/strong&gt; OpenCodex edits &lt;code&gt;$CODEX_HOME/config.toml&lt;/code&gt; in place and expects that file structure to exist ; it does not scaffold Codex for you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One credential for the target model.&lt;/strong&gt; Anthropic, Google, xAI, Mistral, Groq, Ollama, OpenRouter, or any OpenAI-compatible endpoint works — via OAuth login (xAI, Anthropic, Kimi) or a raw API key .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Port 10100 free.&lt;/strong&gt; That is the default; if it is busy, &lt;code&gt;ocx init&lt;/code&gt; detects the conflict, picks a free port, and patches Codex's config automatically .&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to put ocx between Codex CLI and any LLM
&lt;/h2&gt;

&lt;p&gt;Once the prerequisites are in place, wiring OpenCodex into Codex is four commands: install, initialize, start, and invoke. OpenCodex runs as a local translation proxy — Codex keeps speaking its native Responses API to localhost while ocx converts each request into whatever the target model actually understands &lt;a href="https://github.com/lidge-jun/opencodex" rel="noopener noreferrer"&gt;(source: OpenCodex repo)&lt;/a&gt;. You never patch Codex's binary; ocx only edits config Codex already reads.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Install.&lt;/strong&gt; A single global npm command installs the package and its two interchangeable aliases, &lt;code&gt;ocx&lt;/code&gt; and &lt;code&gt;opencodex&lt;/code&gt;, which are available immediately &lt;a href="https://www.npmjs.com/package/@bitkyc08/opencodex" rel="noopener noreferrer"&gt;(source: npm, 2026-07)&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @bitkyc08/opencodex
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Configure.&lt;/strong&gt; Run &lt;code&gt;ocx init&lt;/code&gt;. The interactive wizard collects your provider choice and credential, sets the proxy port — default 10100 — and asks permission before injecting routing into &lt;code&gt;$CODEX_HOME/config.toml&lt;/code&gt; and optionally installing an autostart shim. It writes its own settings to &lt;code&gt;~/.opencodex/config.json&lt;/code&gt; &lt;a href="https://lidge-jun.github.io/opencodex/getting-started/quickstart/" rel="noopener noreferrer"&gt;(source: OpenCodex quickstart)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Launch.&lt;/strong&gt; &lt;code&gt;ocx start&lt;/code&gt; binds to &lt;code&gt;http://localhost:&amp;lt;port&amp;gt;/v1&lt;/code&gt;, writes &lt;code&gt;~/.opencodex/ocx.pid&lt;/code&gt;, and syncs the routed models into Codex's own model catalog so they appear in the picker &lt;a href="https://lidge-jun.github.io/opencodex/getting-started/quickstart/" rel="noopener noreferrer"&gt;(source: OpenCodex docs)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Invoke.&lt;/strong&gt; Use the explicit &lt;code&gt;provider/model&lt;/code&gt; form — it is deterministic and recommended &lt;a href="https://openrouter.ai/blog/tutorials/codex-cli-openrouter/" rel="noopener noreferrer"&gt;(source: OpenRouter tutorial)&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"anthropic/claude-opus-4-8"&lt;/span&gt;
codex &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"ollama-cloud/glm-5.2"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Built-in family prefixes (&lt;code&gt;claude-*&lt;/code&gt;, &lt;code&gt;gpt-*&lt;/code&gt;, &lt;code&gt;llama-*&lt;/code&gt;, &lt;code&gt;gemma-*&lt;/code&gt;) resolve automatically as a fallback when you omit the provider prefix &lt;a href="https://openrouter.ai/blog/tutorials/codex-cli-openrouter/" rel="noopener noreferrer"&gt;(source: OpenRouter)&lt;/a&gt;. Conceptually, Codex stops owning the chat-wire transport and simply emits intent that ocx routes — the illustrative model below (not part of the install) shows that single hop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CodexCLI&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;router&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;router&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;router&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="c1"&gt;# Codex CLI no longer owns a chat-wire transport; it just emits intent.
&lt;/span&gt;        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;router&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;route&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;source&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;codex-cli&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;prompt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;


&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;OpenCodexRouter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;opencodex-chat&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;source&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; -&amp;gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;prompt&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;


&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;cli&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;CodexCLI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;OpenCodexRouter&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cli&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dropped chat-wire; route this&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;5. Restore.&lt;/strong&gt; &lt;code&gt;ocx stop&lt;/code&gt; reverses every &lt;code&gt;config.toml&lt;/code&gt; edit and removes the pid file, so native Codex behavior returns with no residual patches — the low switching cost that makes ocx safe to trial &lt;a href="https://lidge-jun.github.io/opencodex/" rel="noopener noreferrer"&gt;(source: OpenCodex site)&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What could go sideways when proxying any LLM
&lt;/h2&gt;

&lt;p&gt;Low switching cost does not mean low legal or operational risk. OpenCodex is a community project that explicitly states it is "not affiliated with or endorsed by OpenAI, Anthropic, or any other provider," and it warns that some providers may restrict accounts routed through a proxy relay . Before you point production credentials at &lt;code&gt;ocx&lt;/code&gt;, read your provider's terms of service — a proxy that translates the Responses API into a vendor's native surface is exactly the pattern some vendors flag.&lt;/p&gt;

&lt;p&gt;The sharpest boundary is Anthropic OAuth. Anthropic's Claude Code legal docs state that OAuth login is for native Anthropic apps, and that third-party developers may not offer Claude.ai login or route requests through Free, Pro, or Max plan credentials on a user's behalf . If you want Claude behind Codex, a raw Anthropic API key is the lower-risk transport; forwarding a consumer plan login is the path most likely to get an account restricted.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"OpenCodex is independent and not affiliated with or endorsed by OpenAI, Anthropic, or any other provider." — OpenCodex project README (source: &lt;a href="https://github.com/lidge-jun/opencodex" rel="noopener noreferrer"&gt;lidge-jun/opencodex&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Two functional limits round out the risk surface. Cross-boundary sub-agent hand-off is a known open issue as of v2.7.31 : when a native Codex parent spawns a routed OpenCodex child, the task body can arrive encrypted and unreadable, so the delegated work silently drops . And syncing a model into Codex's catalog does not grant access to it — rollout-gated upstream models, account tier, and regional availability still govern whether a call actually resolves . Treat the catalog as a routing table, not an entitlement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Once it translates: pooling, sidecars, and the dashboard
&lt;/h2&gt;

&lt;p&gt;Once OpenCodex is translating, its extras become useful. Account pooling manages a set of ChatGPT/Codex credentials and tracks three quota windows — 5-hour, weekly, and 30-day — auto-routing each new session to the lowest-usage healthy account while pinning existing threads to their original account via session affinity . It fails closed: an HTTP 429 triggers cooldown and failover, and token failures are flagged for re-auth rather than silently swapped .&lt;/p&gt;

&lt;p&gt;The same instance serves more than Codex. Running &lt;code&gt;ocx claude&lt;/code&gt; launches Claude Code against the shared proxy port, so Codex CLI and Claude Code translate through one OpenCodex process at once . Search and vision sidecars attach to the translation path without pushing full context through the primary model, and up to five routed or native models run as sub-agents . Finally, &lt;code&gt;ocx gui&lt;/code&gt; opens a browser dashboard for translation health, per-account quota consumption, and per-session usage . The takeaway: treat pooling and the dashboard as observability, install once, and route deliberately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is the exact npm package name to install OpenCodex?
&lt;/h3&gt;

&lt;p&gt;The package is &lt;code&gt;@bitkyc08/opencodex&lt;/code&gt; — note that the npm scope differs from the GitHub repo, which lives at &lt;code&gt;lidge-jun/opencodex&lt;/code&gt;. Install it globally with &lt;code&gt;npm install -g @bitkyc08/opencodex&lt;/code&gt;, which exposes both the &lt;code&gt;ocx&lt;/code&gt; and &lt;code&gt;opencodex&lt;/code&gt; aliases. It needs Node 18+, and the Bun runtime is bundled automatically during install, so you do not install it separately .&lt;/p&gt;

&lt;h3&gt;
  
  
  Does OpenCodex work with Claude Code as well as Codex CLI?
&lt;/h3&gt;

&lt;p&gt;Yes. Running &lt;code&gt;ocx claude&lt;/code&gt; launches Claude Code pointed at the same localhost port that Codex uses, so both clients share a single OpenCodex instance through the shared proxy binding . That means you can drive Codex CLI, the Codex App, the Codex SDK, and Claude Code against the same routed models without running separate proxies .&lt;/p&gt;

&lt;h3&gt;
  
  
  What does &lt;code&gt;ocx init&lt;/code&gt; actually write to my Codex config?
&lt;/h3&gt;

&lt;p&gt;It depends on the bind address. On a loopback bind, it injects a top-level &lt;code&gt;openai_base_url = "http://127.0.0.1:10100/v1"&lt;/code&gt; into &lt;code&gt;$CODEX_HOME/config.toml&lt;/code&gt; and keeps Codex's built-in &lt;code&gt;openai&lt;/code&gt; provider. On a non-loopback bind, it instead adds a dedicated &lt;code&gt;[model_providers.opencodex]&lt;/code&gt; block with &lt;code&gt;wire_api = "responses"&lt;/code&gt; and an &lt;code&gt;x-opencodex-api-key&lt;/code&gt; header . Both edits are fully reversed by &lt;code&gt;ocx stop&lt;/code&gt;, which restores native Codex cleanly .&lt;/p&gt;

&lt;h3&gt;
  
  
  Is it safe to route Anthropic OAuth credentials through OpenCodex?
&lt;/h3&gt;

&lt;p&gt;It is legally ambiguous, so treat it as a real risk. Anthropic's Claude Code terms restrict OAuth login to native Anthropic apps and state that third-party developers may not offer Claude.ai login or route requests through Free, Pro, or Max plan credentials on a user's behalf . Routing plan-tier OAuth through a proxy likely violates that policy; a raw API key is the lower-risk path. OpenCodex itself states it is independent and not affiliated with or endorsed by any provider, and warns that some providers may restrict proxy-routed accounts .&lt;/p&gt;

&lt;h3&gt;
  
  
  Which wire protocol adapters does OpenCodex ship?
&lt;/h3&gt;

&lt;p&gt;Five protocol adapters: the Anthropic Messages API (Claude), Google Gemini, Azure OpenAI, an OpenAI Responses passthrough, and any OpenAI-compatible Chat Completions endpoint . That last adapter is what unlocks the long tail — DeepSeek, Ollama (local and cloud), Groq, Mistral, xAI/Grok, vLLM, and LM Studio all speak Chat Completions — which is how OpenCodex advertises 40+ built-in providers on top of the five adapters .&lt;/p&gt;

</description>
      <category>codexcli</category>
      <category>opencodex</category>
      <category>llmproxy</category>
      <category>opensource</category>
    </item>
    <item>
      <title>OpenAI ships Codex into Claude Code — two commands, or four?</title>
      <dc:creator>Creeta</dc:creator>
      <pubDate>Wed, 22 Jul 2026 03:53:41 +0000</pubDate>
      <link>https://dev.to/creeta/openai-ships-codex-into-claude-code-two-commands-or-four-c7l</link>
      <guid>https://dev.to/creeta/openai-ships-codex-into-claude-code-two-commands-or-four-c7l</guid>
      <description>&lt;p&gt;A rare thing happened on March 30, 2026: OpenAI shipped first-party tooling straight into a competitor's terminal. The result is &lt;code&gt;codex-plugin-cc&lt;/code&gt;, and it changes how a two-agent workflow fits in one window.&lt;/p&gt;

&lt;h2&gt;
  
  
  What codex-plugin-cc is, and why OpenAI built it for Claude Code
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;codex-plugin-cc&lt;/code&gt; is an official OpenAI plugin that runs the Codex coding agent from inside Anthropic's Claude Code CLI. It lives at &lt;a href="https://github.com/openai/codex-plugin-cc" rel="noopener noreferrer"&gt;openai/codex-plugin-cc&lt;/a&gt;, is Apache-2.0 licensed, and is effectively pure JavaScript . The notable part is the direction of travel — a frontier-model vendor packaging tooling for a rival's ecosystem.&lt;/p&gt;

&lt;p&gt;It is not a new runtime. As OpenAI puts it in its developer-forum announcement:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It is not a separate runtime. It is Codex, just invoked from inside Claude Code." — OpenAI (source: &lt;a href="https://community.openai.com/t/introducing-codex-plugin-for-claude-code/1378186" rel="noopener noreferrer"&gt;OpenAI Developer Community&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The plugin delegates to the Codex CLI and app server already installed on your machine, reusing your existing auth and configuration . Maintenance is active: &lt;code&gt;v1.0.0&lt;/code&gt; landed March 30, 2026, and the current &lt;code&gt;v1.0.6&lt;/code&gt; shipped July 8, 2026 — six patch releases in four months . This is the same Codex agent that hit more than 5 million weekly users by June 2026 , surfaced in a different terminal.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the plugin expects on your machine
&lt;/h2&gt;

&lt;p&gt;The prerequisites are modest but specific. You need Node.js 18.18.0 or later — this is a hard engine constraint declared in the plugin's &lt;code&gt;package.json&lt;/code&gt; (&lt;code&gt;engines: "&amp;gt;=18.18.0"&lt;/code&gt;), not an advisory floor, so an older runtime will refuse to install . On the account side, either a ChatGPT subscription — the free tier qualifies — or an OpenAI API key unlocks Codex .&lt;/p&gt;

&lt;p&gt;Auth is inherited, not re-entered. If you are already logged into Codex locally, the plugin reuses that state automatically — no second login . No Codex installed yet? &lt;code&gt;/codex:setup&lt;/code&gt; can offer to run &lt;code&gt;npm install -g @openai/codex&lt;/code&gt; when npm is present, or you can run that command manually first .&lt;/p&gt;

&lt;h2&gt;
  
  
  The install sequence, from marketplace to /codex:setup
&lt;/h2&gt;

&lt;p&gt;The full official path is four slash commands run inside an active Claude Code session, not the two the viral clip advertises . Work through them in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/plugin marketplace add openai/codex-plugin-cc&lt;/code&gt;&lt;/strong&gt; — registers the OpenAI-published marketplace inside your current session. Claude Code treats marketplaces as catalogs you add before installing anything from them .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/plugin install codex@openai-codex&lt;/code&gt;&lt;/strong&gt; — installs the plugin from that catalog. Mind the naming: the plugin is &lt;code&gt;codex&lt;/code&gt;, the marketplace is &lt;code&gt;openai-codex&lt;/code&gt;, which is why the reference reads &lt;code&gt;codex@openai-codex&lt;/code&gt; .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/reload-plugins&lt;/code&gt;&lt;/strong&gt; — mandatory. Skip it and the &lt;code&gt;/codex:*&lt;/code&gt; skills never surface, and the &lt;code&gt;codex:codex-rescue&lt;/code&gt; subagent stays absent from &lt;code&gt;/agents&lt;/code&gt; .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/codex:setup&lt;/code&gt;&lt;/strong&gt; — checks whether Codex is installed and authenticated. If Codex is missing and npm is available, it offers to run &lt;code&gt;npm install -g @openai/codex&lt;/code&gt;; if Codex is present but not logged in, it prompts you to run &lt;code&gt;!codex login&lt;/code&gt; from Claude Code .&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Verify before you rely on it: once &lt;code&gt;/codex:setup&lt;/code&gt; completes without complaint, &lt;code&gt;/codex:review&lt;/code&gt; should respond, and the &lt;code&gt;codex:codex-rescue&lt;/code&gt; subagent should be visible in &lt;code&gt;/agents&lt;/code&gt; . If either is missing, re-run &lt;code&gt;/reload-plugins&lt;/code&gt; — a skipped reload is the most common reason the command surface fails to appear.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the two-command narrative stops short
&lt;/h2&gt;

&lt;p&gt;The viral "two commands, 30 seconds" pitch covers only the marketplace add and the plugin install — steps 1 and 2. Skip &lt;code&gt;/reload-plugins&lt;/code&gt; and the plugin is registered but dormant: its &lt;code&gt;/codex:*&lt;/code&gt; slash commands never load into the running session, so nothing appears to work . Skip &lt;code&gt;/codex:setup&lt;/code&gt; and the plugin never checks whether Codex is installed and authenticated — the failure is silent rather than a readable error, which is the worst kind to debug .&lt;/p&gt;

&lt;p&gt;Two behaviors deserve caution before you lean on this in real work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The review gate is opt-in for a reason.&lt;/strong&gt; Enabled via a setup flag, it uses a Claude Code &lt;code&gt;Stop&lt;/code&gt; hook to fire Codex on every Claude response. OpenAI and practitioners warn this can spin up a sustained Claude/Codex loop that drains usage limits fast — treat it as optional, not a default .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Billing stays separate.&lt;/strong&gt; Codex usage counts against Codex limits, Claude against Claude's. There is no shared quota and no cross-account context — the plugin reuses your local Codex auth, not Claude's account state .&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Keep it current, too. &lt;code&gt;v1.0.6&lt;/code&gt;, released July 8, 2026, removed shell expansion for git commands — a correctness and security fix for a plugin that shells out inside your repo. Earlier builds carried Windows-compatibility and app-server readiness regressions, so pin a recent version .&lt;/p&gt;

&lt;h2&gt;
  
  
  The slash command menu after a clean install
&lt;/h2&gt;

&lt;p&gt;After &lt;code&gt;/codex:setup&lt;/code&gt; completes, the plugin exposes a focused set of &lt;code&gt;/codex:*&lt;/code&gt; slash commands plus a &lt;code&gt;codex:codex-rescue&lt;/code&gt; subagent visible in &lt;code&gt;/agents&lt;/code&gt; . This is a command surface, not a general orchestration runtime — each command maps to one Codex action against your local checkout.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;Key flags&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/codex:review&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read-only Codex review of uncommitted changes or a branch diff&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;--base&lt;/code&gt;, &lt;code&gt;--wait&lt;/code&gt;, &lt;code&gt;--background&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/codex:adversarial-review&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Same target selection, but a skeptical pass that questions design decisions and assumptions, not just bugs&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;--base&lt;/code&gt; + optional focus text&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/codex:rescue&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Delegates investigation or a fix to the &lt;code&gt;codex:codex-rescue&lt;/code&gt; subagent&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;--model&lt;/code&gt; (&lt;code&gt;spark&lt;/code&gt; → &lt;code&gt;gpt-5.3-codex-spark&lt;/code&gt;), &lt;code&gt;--resume&lt;/code&gt;, &lt;code&gt;--fresh&lt;/code&gt;, &lt;code&gt;--effort&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/codex:transfer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Hands the active Claude Code session into a persistent Codex thread for longer delegation (added in v1.0.5)&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;/codex:status&lt;/code&gt; · &lt;code&gt;/codex:result&lt;/code&gt; · &lt;code&gt;/codex:cancel&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Manage background jobs&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;One practical habit: before you lean on a blocking &lt;code&gt;--wait&lt;/code&gt;, run background jobs and poll them with &lt;code&gt;/codex:status&lt;/code&gt; and &lt;code&gt;/codex:result&lt;/code&gt;, cancelling with &lt;code&gt;/codex:cancel&lt;/code&gt; — &lt;code&gt;--wait&lt;/code&gt; ties up your terminal until Codex returns . The concrete takeaway: install a pinned recent build, run &lt;code&gt;/codex:review&lt;/code&gt; once to confirm the subagent responds, then wire the review commands into your ship checklist — you now have Claude planning and Codex reviewing in a single terminal .&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Do I need a paid OpenAI plan to use codex-plugin-cc?
&lt;/h3&gt;

&lt;p&gt;No. A ChatGPT free-tier account qualifies, and an OpenAI API key works as well . The plugin does not maintain its own credentials — it reuses whatever authentication your local Codex install already holds. If you are already logged into Codex on the machine, that auth is picked up automatically; if not, run &lt;code&gt;!codex login&lt;/code&gt; from Claude Code once and you are set.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does the Codex plugin share my Claude account or billing?
&lt;/h3&gt;

&lt;p&gt;No. Codex usage counts against your Codex limits, and Claude usage against Claude's — there is no shared quota, no cross-account auth, and no linked billing . The plugin is a convenience bridge that invokes your locally installed Codex CLI and app server; it does not prove the two agents share context, accounts, or permissions. Watch the optional "review gate" in particular, since a Claude/Codex loop can drain Codex limits fast.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why don't my /codex:* commands appear after step 2?
&lt;/h3&gt;

&lt;p&gt;You most likely stopped at the two install commands and skipped &lt;code&gt;/reload-plugins&lt;/code&gt;. Adding the marketplace and installing the plugin registers it, but the running session has not yet loaded the new skills. Run &lt;code&gt;/reload-plugins&lt;/code&gt;, then &lt;code&gt;/codex:setup&lt;/code&gt;, and the &lt;code&gt;/codex:*&lt;/code&gt; slash commands plus the &lt;code&gt;codex:codex-rescue&lt;/code&gt; subagent will show up in &lt;code&gt;/agents&lt;/code&gt; . This is why the "two-command" framing is really four.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is the difference between /codex:review and /codex:adversarial-review?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;/codex:review&lt;/code&gt; runs a standard, read-only Codex pass over uncommitted changes or a branch diff against a base ref such as &lt;code&gt;main&lt;/code&gt;, supporting &lt;code&gt;--base&lt;/code&gt;, &lt;code&gt;--wait&lt;/code&gt;, and &lt;code&gt;--background&lt;/code&gt; . &lt;code&gt;/codex:adversarial-review&lt;/code&gt; runs a steerable, skeptical pass that actively questions design decisions and assumptions, using the same target selection plus optional focus text. Reach for the adversarial pass when you want a pre-merge second opinion, not a routine change summary.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is codex-plugin-cc the same as the "OpenAI Developers" plugin for Claude Code?
&lt;/h3&gt;

&lt;p&gt;No. &lt;code&gt;openai/openai-developers-for-claude&lt;/code&gt; is a separate plugin that bundles a Docs MCP server and API-setup skills, while &lt;code&gt;openai/codex-plugin-cc&lt;/code&gt; exposes the Codex coding agent itself . They live in different repositories and serve different purposes; installing one does not give you the other. If your goal is code review and task delegation, &lt;code&gt;codex-plugin-cc&lt;/code&gt; is the one you want.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=sd21Igx4HtA" rel="noopener noreferrer"&gt;OpenAI — OpenAI Codex in your code editor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=xHnlzAPD9QI" rel="noopener noreferrer"&gt;OpenAI — Automate tasks with the Codex app&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=bcM9dP_uXJU" rel="noopener noreferrer"&gt;AI Master — How to Build an AI Agent with Claude Code (Claude AI Agent Tutorial)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>openai</category>
      <category>codex</category>
      <category>claudecode</category>
      <category>plugin</category>
    </item>
    <item>
      <title>LongCat-Video-Avatar 1.5 cuts inference to 8 steps — here's</title>
      <dc:creator>Creeta</dc:creator>
      <pubDate>Tue, 21 Jul 2026 21:52:07 +0000</pubDate>
      <link>https://dev.to/creeta/longcat-video-avatar-15-cuts-inference-to-8-steps-heres-152b</link>
      <guid>https://dev.to/creeta/longcat-video-avatar-15-cuts-inference-to-8-steps-heres-152b</guid>
      <description>&lt;p&gt;Meituan's LongCat team shipped a quiet but meaningful update to its open-source talking-avatar stack: version 1.5 swaps the audio encoder, distills sampling down to 8 steps, and adds an INT8 path to fit the model on tighter GPUs. Here's what actually changed under the hood, and which flags you now have to pass.&lt;/p&gt;

&lt;h2&gt;
  
  
  LongCat-Video-Avatar 1.5: DMD2 distillation, Wav2Vec2 replacement, and INT8 offloading
&lt;/h2&gt;

&lt;p&gt;LongCat-Video-Avatar 1.5 is an audio-driven talking-avatar generator that turns one portrait plus an audio clip into a lip-synced video with head motion, expression, and body dynamics. Released May 21, 2026, it is an avatar head built on the 13.6-billion-parameter dense LongCat-Video diffusion transformer [base model, Oct 2025]. The headline change: v1.5 replaces the Wav2Vec2 audio encoder used in v1.0 (Dec 16, 2025) with Whisper-Large-v3, which the team attributes to smoother, more natural lip dynamics.&lt;/p&gt;

&lt;p&gt;Three new flags define the v1.5 workflow, none of which exist in v1.0:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Flag&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--use_distill&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Enables DMD2-based step distillation, collapsing generation to 8 NFE&lt;/td&gt;
&lt;td&gt;Mandatory for v1.5 — omitting it falls back to the full-chain v1.0 sampling schedule, not an 8-step path&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--use_int8&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Loads the 13.6B dense DiT in INT8 to cut VRAM pressure&lt;/td&gt;
&lt;td&gt;Main lever for consumer GPUs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--resolution&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Selects 480P or 720P output&lt;/td&gt;
&lt;td&gt;New in 1.5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Under the hood, the technique report describes Cross-Chunk Latent Stitching, which removes redundant VAE decode/encode cycles between autoregressive chunks, enabling seamless minutes-long generation without re-encoding overhead [arXiv:2605.26486]. That matters for long-form output where earlier tools drift or stutter at chunk boundaries.&lt;/p&gt;

&lt;p&gt;One caveat worth flagging before you invest a GPU-hour: Meituan claims parity-or-better results versus HeyGen, Kling Avatar 2.0, and OmniHuman-1.5 across 508 image-audio pairs, 770 crowdsourced evaluators, and 13,240 judgments [human-eval benchmark]. That evaluation is entirely author-controlled and reported as win-rates; no independent leaderboard corroborates the superiority claim yet. Treat it as vendor evidence, not a settled result. Credit to the source video that surfaced this release: &lt;a href="https://www.youtube.com/watch?v=Bg5qZXxGa9E" rel="noopener noreferrer"&gt;YouTube walkthrough&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preparing your environment for LongCat-Video-Avatar 1.5: PyTorch 2.6.0, CUDA 12.4, FlashAttention-2
&lt;/h2&gt;

&lt;p&gt;Setup begins by cloning the base repository — the avatar is a head on top of the &lt;a href="https://github.com/meituan-longcat/LongCat-Video" rel="noopener noreferrer"&gt;LongCat-Video&lt;/a&gt; foundation model, so you install that first and add the avatar layer on top. Create a Python 3.10 virtual environment  before anything else; the pinned FlashAttention-2 wheel is not tested against 3.11+, and version drift there is a common early failure.&lt;/p&gt;

&lt;p&gt;The dependency the setup most often breaks on is &lt;strong&gt;FlashAttention-2 v2.7.4.post1&lt;/strong&gt;, a hard requirement . Install it from the wheel that matches &lt;strong&gt;CUDA 12.4&lt;/strong&gt; against &lt;strong&gt;PyTorch 2.6.0&lt;/strong&gt;  — a CUDA mismatch with the default pip build is the single most frequent install error. Then install both requirements files: &lt;code&gt;requirements.txt&lt;/code&gt; for the base model and &lt;code&gt;requirements_avatar.txt&lt;/code&gt; for the avatar path, which pulls librosa and expects ffmpeg on the system .&lt;/p&gt;

&lt;p&gt;Pull the weights with &lt;code&gt;huggingface-cli download meituan-longcat/LongCat-Video-Avatar-1.5&lt;/code&gt; . Note the DMD2 distill LoRA — roughly &lt;strong&gt;1.26 GB&lt;/strong&gt; in the Comfy-packaged form  — is a separate artifact and is required for the 8-NFE distilled path, not an optional extra.&lt;/p&gt;

&lt;p&gt;The reference launch uses &lt;code&gt;torchrun --nproc_per_node=2&lt;/code&gt; with &lt;code&gt;--context_parallel_size=2&lt;/code&gt;, i.e. two GPUs in context-parallel . Single-GPU runs are feasible by adding &lt;code&gt;--use_int8&lt;/code&gt; to cut VRAM on the 13.6B dense base, but that is not the configuration the official docs test — expect to tune offloading yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Producing a talking-head avatar with LongCat-Video-Avatar 1.5: torchrun, AT2V, and DMD2
&lt;/h2&gt;

&lt;p&gt;LongCat-Video-Avatar 1.5 exposes four task modes, and picking the right one decides how tightly identity is preserved. &lt;strong&gt;AT2V&lt;/strong&gt; (Audio-Text-to-Video) generates a talking clip from an audio track plus a text prompt with no reference image. &lt;strong&gt;ATI2V/AI2V&lt;/strong&gt; add a portrait (Audio-Text-Image or Audio-Image-to-Video), which routes through &lt;em&gt;Reference Skip Attention&lt;/em&gt; to hold the face steady without copy-paste artifacts or identity drift . Prefer ATI2V or AI2V when you have a source photo and care about consistency. The fourth mode is audio-conditioned continuation, covered below.&lt;/p&gt;

&lt;p&gt;A single-speaker AT2V run looks like this — the snippet is verified and prints the exact upstream CLI it wraps rather than executing the model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Minimal LongCat-Video-Avatar 1.5 8-step inference demo.

This prints the distilled inference settings and the matching upstream CLI.
Running the real model requires downloading the weights and LongCat-Video repo.
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

&lt;span class="n"&gt;MODEL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;meituan-longcat/LongCat-Video-Avatar-1.5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;steps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;
    &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;torchrun&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--nproc_per_node=2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;run_demo_avatar_single_audio_to_video.py&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--context_parallel_size=2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--checkpoint_dir=./weights/LongCat-Video-Avatar-1.5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--stage_1=at2v&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--input_json=assets/avatar/single_example_1.json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--use_distill&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--model_type=avatar-v1.5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--use_int8&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;MODEL&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; uses distilled inference: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;steps&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; steps&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;


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

&lt;/div&gt;



&lt;p&gt;Both &lt;code&gt;--use_distill&lt;/code&gt; and &lt;code&gt;--model_type avatar-v1.5&lt;/code&gt; are mandatory for the 8-step (8-NFE) distilled path . Set Audio CFG in the 3–5 range per the official docs: below 3 under-animates the mouth, above 5 over-exaggerates it .&lt;/p&gt;

&lt;p&gt;For two speakers, run &lt;code&gt;run_demo_avatar_multi_audio_to_video.py&lt;/code&gt;. Use &lt;code&gt;--audio_type para&lt;/code&gt; for equal-length clips (parallel merge, summed) or &lt;code&gt;--audio_type add&lt;/code&gt; for unequal clips sequenced with silence padding; person1/person2 ordering is positional . In parallel-merge mode, &lt;em&gt;L-ROPE-based audio-visual binding&lt;/em&gt; supplies spatial speaker separation so voices do not bleed identity between the two faces .&lt;/p&gt;

&lt;p&gt;Video continuation feeds a reference clip plus new audio to extend an existing segment. Here &lt;em&gt;Cross-Chunk Latent Stitching&lt;/em&gt; removes the redundant VAE decode/encode cycle between autoregressive chunks, so the boundary seam stays clean without a re-encode step .&lt;/p&gt;

&lt;h2&gt;
  
  
  ComfyUI packaging and workarounds for LongCat-Video-Avatar 1.5
&lt;/h2&gt;

&lt;p&gt;If the raw &lt;code&gt;torchrun&lt;/code&gt; path is too heavy, two community ComfyUI routes wrap LongCat-Video-Avatar 1.5 — neither maintained by Meituan. The dedicated &lt;a href="https://github.com/smthemex/ComfyUI_LongCat_Avatar" rel="noopener noreferrer"&gt;smthemex/ComfyUI_LongCat_Avatar&lt;/a&gt; node clones into &lt;code&gt;ComfyUI/custom_nodes&lt;/code&gt; and pulls the INT8 DiT, a &lt;code&gt;umt5_xxl_fp8_e4m3fn_scaled&lt;/code&gt; text encoder, the Whisper-large-v3 audio encoder, the &lt;code&gt;LongCat_Avatar_1.5_vae&lt;/code&gt;, a distill LoRA, and a &lt;code&gt;Kim_Vocal_2.onnx&lt;/code&gt; vocal separator; it is tested for single- and dual-person scenarios . The second route is Kijai's &lt;a href="https://github.com/kijai/ComfyUI-WanVideoWrapper" rel="noopener noreferrer"&gt;ComfyUI-WanVideoWrapper&lt;/a&gt;, whose &lt;a href="https://huggingface.co/Kijai/WanVideo_comfy/tree/main/LongCat" rel="noopener noreferrer"&gt;LongCat model folder&lt;/a&gt; ships a &lt;code&gt;LongCat-Avatar-15_bf16.safetensors&lt;/code&gt; at 31.7 GB plus a 1.26 GB distill LoRA.&lt;/p&gt;

&lt;p&gt;Watch for packaging churn. Older tutorials point at a &lt;code&gt;longcat_avatar&lt;/code&gt; branch of WanVideoWrapper, while current v1.5 support has moved to the main branch  — always check a guide's commit date before following it. On licensing, the &lt;a href="https://github.com/meituan-longcat/LongCat-Video" rel="noopener noreferrer"&gt;MIT terms&lt;/a&gt; cover weights and code but explicitly exclude trademark and patent rights to the "Meituan" and "LongCat" names : commercial use of the model is allowed; using the brand names is not.&lt;/p&gt;

&lt;p&gt;Two gaps remain before production. There is no hosted inference provider on Hugging Face — roughly 1,581 downloads last month and 44 community Spaces  — so a local GPU is mandatory; &lt;a href="https://developers.heygen.com/docs/pricing" rel="noopener noreferrer"&gt;HeyGen&lt;/a&gt; at $0.05/sec for a 720p Photo Avatar stays the zero-GPU alternative. And the project ships no consent workflow, rights management, or brand-kit tooling — governance for generated likenesses must be built entirely outside it. The concrete takeaway: LongCat-Video-Avatar 1.5 gives you open, inspectable, multi-person avatar generation for the cost of a GPU, but you own every guardrail it doesn't provide.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What GPU do I need to run LongCat-Video-Avatar 1.5?
&lt;/h3&gt;

&lt;p&gt;The reference configuration is multi-GPU: the official avatar command launches with &lt;code&gt;torchrun --nproc_per_node=2&lt;/code&gt; and &lt;code&gt;--context_parallel_size=2&lt;/code&gt;. Because the base is a 13.6-billion-parameter dense diffusion transformer and Kijai's bf16 build weighs about 31.7 GB, a realistic floor is two 24 GB cards or a single 40 GB+ card with &lt;code&gt;--use_int8&lt;/code&gt;. A single consumer GPU with INT8 quantization and offloading is possible, but it sits outside the officially tested two-GPU config, so expect slower runs and manual tuning.&lt;/p&gt;

&lt;h3&gt;
  
  
  What changed between LongCat-Video-Avatar v1.0 and v1.5?
&lt;/h3&gt;

&lt;p&gt;v1.0 shipped December 16, 2025 with a Wav2Vec2 audio encoder; v1.5 landed May 21, 2026. The substantive changes: the audio encoder moves from Wav2Vec2 to Whisper-Large-v3 for smoother lip dynamics, DMD2-based step distillation collapses inference to 8 steps via the &lt;code&gt;--use_distill&lt;/code&gt; flag, INT8 loading arrives through &lt;code&gt;--use_int8&lt;/code&gt; to cut VRAM, &lt;code&gt;--resolution&lt;/code&gt; exposes 480P/720P output, and Cross-Chunk Latent Stitching improves long-video temporal stability.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does the --use_distill flag do and why is it required for v1.5?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;--use_distill&lt;/code&gt; activates the DMD2 distillation LoRA that collapses diffusion sampling to 8 NFE (8 steps). Without it, the v1.5 weights fall back to the full-chain sampling schedule inherited from v1.0 — significantly slower and not the intended v1.5 inference path. The flag is why the distilled route is 8 steps rather than the dozens a standard diffusion schedule would run, so it belongs in every v1.5 avatar command.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is LongCat-Video-Avatar MIT-licensed for commercial use?
&lt;/h3&gt;

&lt;p&gt;Yes. The weights, code, and contributions are distributed under the MIT license, which permits commercial use of the model itself. The one carve-out is that the MIT terms explicitly exclude trademark and patent rights to the "Meituan" and "LongCat" names — so you can build commercial products on the model, but you cannot use those brand names as your own. As always, verify the license text against your specific deployment before shipping.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does LongCat-Video-Avatar 1.5 compare to HeyGen for talking avatars?
&lt;/h3&gt;

&lt;p&gt;LongCat is self-hosted and MIT-licensed, costs $0 per video once you own the GPU, and natively supports dual-speaker scenes and audio-conditioned video continuation. HeyGen is turnkey SaaS priced around $0.05/sec for a 720p Photo Avatar, with a consent video required for every video-based Digital Twin and production governance built in. LongCat ships none of that tooling — no consent workflow, rights management, captions, or brand kits. Choose LongCat for control, privacy, and marginal cost; choose HeyGen for governance, reliability, and support.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>talkingavatar</category>
      <category>meituan</category>
      <category>longcat</category>
    </item>
    <item>
      <title>MengTo/Skills has no tagged releases — pin the commit</title>
      <dc:creator>Creeta</dc:creator>
      <pubDate>Tue, 21 Jul 2026 15:49:05 +0000</pubDate>
      <link>https://dev.to/creeta/mengtoskills-has-no-tagged-releases-pin-the-commit-2aif</link>
      <guid>https://dev.to/creeta/mengtoskills-has-no-tagged-releases-pin-the-commit-2aif</guid>
      <description>&lt;p&gt;MengTo/Skills is a public, MIT-licensed folder of file-based "Agent Skills" — but the star metric everyone quotes, the skill count, keeps moving. Before you clone it, it helps to know exactly what is in the repo today and why the tally floats.&lt;/p&gt;

&lt;h2&gt;
  
  
  What MengTo/Skills actually contains: 78 MIT modules and a floating tally
&lt;/h2&gt;

&lt;p&gt;MengTo/Skills is a public GitHub repository of reusable, file-based prompt and workflow packages built by Meng To, the designer behind Design+Code. As of July 2026 the live README reports 78 skill folders — even though circulated figures of 95 (marketing snapshots) and 75 (launch-era counts) still float around. The count is unstable by design, so the README names its own source of truth: run &lt;code&gt;find agent-skills -name SKILL.md | sort&lt;/code&gt; against a cloned copy to get an authoritative number for the commit you actually have.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quick Answer:&lt;/strong&gt; MengTo/Skills is an MIT-licensed GitHub repo of file-based Agent Skills. The live README shows 78 skill folders as of July 2026; ignore the circulated 95 and 75 figures and count them yourself with &lt;code&gt;find agent-skills -name SKILL.md | sort&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Those 78 modules split across four categories, heavily weighted toward visual web work:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Skills&lt;/th&gt;
&lt;th&gt;Representative content&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Web design&lt;/td&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;td&gt;GSAP, ScrollTrigger, Three.js/WebGL, Tailwind, Lenis, Cobe, Vanta, Matter.js, glass UI, skeuomorphic UI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Codex workflows&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;video-to-superprompt, html-to-interaction-prompts, stitched-full-page-capture&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Media sourcing&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Image/asset acquisition helpers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UI prompting&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;design-first-ui-prompting system&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The repo state at research time: roughly 2,500 stars, 271 forks, 85 commits, 2 open issues, and 0 tagged releases under an MIT license (&lt;a href="https://github.com/MengTo/Skills" rel="noopener noreferrer"&gt;MengTo/Skills&lt;/a&gt;). That zero-releases detail matters later: with no tags, reproducible installs depend on pinning a commit.&lt;/p&gt;

&lt;p&gt;Each module follows the emerging &lt;a href="https://github.com/agentskills/agentskills" rel="noopener noreferrer"&gt;Agent Skills convention&lt;/a&gt;: a required &lt;code&gt;SKILL.md&lt;/code&gt; holding YAML frontmatter (&lt;code&gt;name&lt;/code&gt;, &lt;code&gt;description&lt;/code&gt;) plus a step-by-step body, with optional &lt;code&gt;REFERENCES.md&lt;/code&gt;, &lt;code&gt;ARTICLE.md&lt;/code&gt;, and a &lt;code&gt;demo/&lt;/code&gt; subdirectory of standalone HTML/CSS/JS (&lt;a href="https://github.com/MengTo/Skills/tree/main/agent-skills" rel="noopener noreferrer"&gt;agent-skills tree&lt;/a&gt;). Because the folders already match this layout, they drop into Claude Code, Cursor, and Codex without conversion.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting a reproducible copy: npx vs. manual directory placement
&lt;/h2&gt;

&lt;p&gt;There are two ways to pull the modules into your agent: an automated CLI install, or manual directory placement. The fastest path is the community &lt;code&gt;skills&lt;/code&gt; npm CLI, which deposits each folder into the agent's expected skills directory for you. At crawl time the package sat at version 1.5.19, with 86 published versions and 58 dependents, and supports Claude Code, Codex, Cursor, OpenCode, and Kiro among others . A single command targets multiple agents at once:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add MengTo/Skills &lt;span class="nt"&gt;--skill&lt;/span&gt; &lt;span class="s1"&gt;'*'&lt;/span&gt; &lt;span class="nt"&gt;--agent&lt;/span&gt; claude-code &lt;span class="nt"&gt;--agent&lt;/span&gt; cursor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The manual route gives you tighter control over which of the 78 folders land where. Clone the repo, then copy or symlink the folders you want. For Claude Code, project-scoped skills live at &lt;code&gt;.claude/skills/&amp;lt;name&amp;gt;/SKILL.md&lt;/code&gt; and personal skills at &lt;code&gt;~/.claude/skills/&amp;lt;name&amp;gt;/SKILL.md&lt;/code&gt; . Cursor adopted the same &lt;code&gt;SKILL.md&lt;/code&gt; layout in version 2.4, shipped January 22, 2026, so the folders drop into either tool without conversion .&lt;/p&gt;

&lt;p&gt;The reproducibility catch is that &lt;code&gt;MengTo/Skills&lt;/code&gt; has no tagged releases . Whichever install path you pick, capture the commit SHA immediately after cloning so teammates can rebuild the exact folder set later:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git &lt;span class="nt"&gt;-C&lt;/span&gt; MengTo-Skills rev-parse HEAD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Store that hash in your dotfiles or the project README. The illustrative Python below (not executed here — it needs network access to &lt;code&gt;api.github.com&lt;/code&gt;) shows the same logic programmatically: check for tags, and when there are none, print a pinnable commit reference.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;urllib.request&lt;/span&gt;

&lt;span class="n"&gt;repo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MengTo/Skills&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;api&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.github.com/repos/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;repo&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Accept&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;application/vnd.github+json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;User-Agent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pin-commit-demo&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;urlopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="n"&gt;info&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;tags&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/tags&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;branch&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/branches/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;default_branch&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;sha&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;branch&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;commit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sha&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;repo&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; tags: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tag available: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;tags&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="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;no tags; pin the commit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;git+https://github.com/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;repo&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;.git@&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;sha&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Decide placement by intent. Personal design taste — animation style, motion preferences, visual defaults — belongs under the user-level &lt;code&gt;~/.claude/skills&lt;/code&gt; folder, where it follows you across projects. Shared team conventions belong in &lt;code&gt;.claude/skills&lt;/code&gt; committed to the project repo, so everyone resolves the same skills from the same pinned commit .&lt;/p&gt;

&lt;h2&gt;
  
  
  Reproducibility concerns: YAML divergence and no lockfile
&lt;/h2&gt;

&lt;p&gt;The pin matters because &lt;code&gt;MengTo/Skills&lt;/code&gt; ships no lockfile and no tagged releases, so two teammates cloning &lt;code&gt;main&lt;/code&gt; on different days can resolve different folder sets. The catalog tally moved at least three times during research — a circulated 95, a launch-time 75, and the current README's 78 — which is exactly the drift a commit SHA neutralizes. Treat the SHA as the functional equivalent of a lockfile: record it, commit it, and re-audit the delta with &lt;code&gt;find agent-skills -name SKILL.md | sort&lt;/code&gt; before you bump it.&lt;/p&gt;

&lt;p&gt;The second gap is YAML portability. The &lt;code&gt;SKILL.md&lt;/code&gt; frontmatter is baseline-compatible everywhere, but platform-specific keys are not universally honored. Claude Code reads fields like &lt;code&gt;context: fork&lt;/code&gt;, &lt;code&gt;allowed-tools&lt;/code&gt;, and &lt;code&gt;disable-model-invocation&lt;/code&gt;; Cursor — which added Agent Skills in version 2.4 on January 22, 2026 — and Codex silently ignore them. No error is thrown. A skill that relies on &lt;code&gt;context: fork&lt;/code&gt; for isolation simply runs inline in the wrong host, so a workflow that behaved on one machine can quietly misbehave on another with no diagnostic.&lt;/p&gt;

&lt;p&gt;The repo's own README frames dedicated per-host install notes as a maintenance idea, not a stabilized official setup, so the burden of validation sits with you [repo]. Before committing anything to shared dotfiles, load each folder in the actual target agent and confirm invocation, tool access, and any fork/isolation behavior resolve as expected. Validate first, pin the commit, then propagate — reversing that order is how silent no-ops reach production.&lt;/p&gt;

&lt;h2&gt;
  
  
  Noteworthy MIT modules: motion, interaction, and landing-builder packs
&lt;/h2&gt;

&lt;p&gt;Once your copy is validated and pinned, a handful of modules justify the effort on their own. The most technically demanding is &lt;code&gt;video-to-superprompt&lt;/code&gt;, the flagship Codex workflow: it tells the agent to locate a video, run &lt;code&gt;ffprobe&lt;/code&gt;, extract frames with &lt;code&gt;ffmpeg&lt;/code&gt;, then analyze story, layout, motion, visual, and technical layers before naming concrete motion mechanisms — pinned sections, masks, shader fields, scrubbed timelines, and reduced-motion fallbacks — and verifying paths and screenshots before it finalizes a reusable prompt pack . It is less a prompt than an operational pipeline.&lt;/p&gt;

&lt;p&gt;Three more packs are worth pinning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;landing-page&lt;/code&gt;&lt;/strong&gt; — collects one primary CTA, offer, ICP, objections, proof, traffic source, brand voice, and mobile constraints, then outputs a page outline, hero copy, benefits, how-it-works, FAQ, and an SEO/AEO layout recommendation . It is the clearest expression of the repo's "prompts as assets" stance: store prompts as versioned files and build them into libraries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;design-first-ui-prompting&lt;/code&gt;&lt;/strong&gt; — formalizes the "prompt like a design system" approach: specify goal, format, margins, grid, hierarchy, type, colors, materials, imagery, exact copy, and negative prompts, then iterate by changing one variable at a time rather than rerolling blindly .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;html-to-interaction-prompts&lt;/code&gt;&lt;/strong&gt; — decomposes existing HTML into reusable prompts for sections, hover states, animations, buttons, and WebGL effects, which is useful for reverse-engineering a live UI into agent-ready instructions .&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Meng To frames the underlying method plainly: &lt;em&gt;"screenshots convey fonts, spacing, colors, layout rhythm, and icon style better than paragraphs"&lt;/em&gt; — Meng To, Design+Code (source: &lt;a href="https://github.com/MengTo/Skills" rel="noopener noreferrer"&gt;MengTo/Skills&lt;/a&gt;). The takeaway: pin a commit, start with these four modules, and adapt the frontmatter to your target agent — the packs are concrete enough to use as-is, but the repo carries no releases, so reproducibility is still your responsibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How many agent skills does MengTo/Skills actually contain?
&lt;/h3&gt;

&lt;p&gt;As of July 2026, the live README reports 78 skills across four categories . Circulating figures of 95 and 75 are outdated directory snapshots. The count moves through direct commits, so don't trust any quoted number — clone the repo and run &lt;code&gt;find agent-skills -name SKILL.md | sort&lt;/code&gt;, which the README itself names as the source of truth.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why does MengTo/Skills have no tagged releases?
&lt;/h3&gt;

&lt;p&gt;The repo has grown entirely through direct commits with no formal versioning — roughly 85 commits and 0 release tags at research time . The &lt;code&gt;SKILL.md&lt;/code&gt; file format is stable, but the folder inventory is not versioned. That gap is why reproducible installs require pinning a specific commit SHA rather than relying on a tag.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I install MengTo/Skills into Claude Code?
&lt;/h3&gt;

&lt;p&gt;Two paths work. The fastest is the &lt;code&gt;skills&lt;/code&gt; npm CLI: &lt;code&gt;npx skills add MengTo/Skills --skill '*' --agent claude-code&lt;/code&gt; . Alternatively, copy selected folders manually to &lt;code&gt;.claude/skills/&amp;lt;name&amp;gt;/SKILL.md&lt;/code&gt; (project scope) or &lt;code&gt;~/.claude/skills/&amp;lt;name&amp;gt;/SKILL.md&lt;/code&gt; (personal scope). Because there are no releases, capture the git SHA immediately so your install is reproducible.&lt;/p&gt;

&lt;h3&gt;
  
  
  Will these skill folders work in Cursor and Codex?
&lt;/h3&gt;

&lt;p&gt;Yes, at the baseline &lt;code&gt;SKILL.md&lt;/code&gt; level. Cursor added Agent Skills in version 2.4, released January 22, 2026 , and Codex supports the convention, so folders drop in without conversion. But both silently ignore Claude-specific YAML fields like &lt;code&gt;context: fork&lt;/code&gt; and &lt;code&gt;allowed-tools&lt;/code&gt;. Test your target agent before depending on those fields.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is the Agent Skills format and who defined it?
&lt;/h3&gt;

&lt;p&gt;Agent Skills is an open convention formalized by Anthropic: a directory containing a required &lt;code&gt;SKILL.md&lt;/code&gt; file with YAML frontmatter (&lt;code&gt;name&lt;/code&gt;, &lt;code&gt;description&lt;/code&gt;) plus a step-by-step instruction body . It relies on progressive disclosure — agents load names and descriptions at startup, full instructions only on activation, and supporting resources only as needed. Optional companions include &lt;code&gt;REFERENCES.md&lt;/code&gt;, &lt;code&gt;ARTICLE.md&lt;/code&gt;, and a &lt;code&gt;demo/&lt;/code&gt; folder.&lt;/p&gt;

</description>
      <category>mengto</category>
      <category>agentskills</category>
      <category>opensource</category>
      <category>cursor</category>
    </item>
    <item>
      <title>LingBot-Map runs 10,000 frames on monocular video — no</title>
      <dc:creator>Creeta</dc:creator>
      <pubDate>Tue, 21 Jul 2026 09:54:46 +0000</pubDate>
      <link>https://dev.to/creeta/lingbot-map-runs-10000-frames-on-monocular-video-no-bi9</link>
      <guid>https://dev.to/creeta/lingbot-map-runs-10000-frames-on-monocular-video-no-bi9</guid>
      <description>&lt;p&gt;Ant Group's embodied-AI unit open-sourced a monocular 3D reconstruction model that keeps mapping while the video is still streaming — no LiDAR, no offline batch pass. The interesting part is the memory design that lets it run past 10,000 frames without the KV cache exploding.&lt;/p&gt;

&lt;h2&gt;
  
  
  How GCT's Anchor-Pose-Trajectory Pools Make Monocular 3D Tractable
&lt;/h2&gt;

&lt;p&gt;LingBot-Map is a streaming, feed-forward model that takes an ordinary RGB video stream and estimates camera pose plus scene geometry frame by frame, released by Robbyant under Apache 2.0 on April 16, 2026. It processes monocular input at roughly 20 FPS at 518×378 using a paged KV-cache via FlashInfer, versus 10.5 FPS for a comparable PyTorch contiguous-cache baseline on 1,000-image sequences. That throughput is what makes "see-as-you-go" reconstruction usable instead of a lab demo.&lt;/p&gt;

&lt;p&gt;The mechanism behind it is the Geometric Context Transformer (GCT) and its Geometric Context Attention (GCA). Rather than run full causal attention over every historical image token, GCA maintains three pools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Anchor context&lt;/strong&gt; — grounds coordinate frame and scale.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local pose-reference window&lt;/strong&gt; — recent dense geometry, sampled from 16 to 64 frames during training.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compressed trajectory recap&lt;/strong&gt; — a long-range memory for drift correction.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Evicted frames keep only compact context tokens. The paper reports this cuts per-frame context growth by about 80× versus full causal attention under the authors' typical token settings — the reason 10,000-frame inference runs without KV blowup. The accuracy trade-off is small: author-reported numbers (arXiv 2604.14141, not yet independently replicated) show it holding up under stress.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Benchmark&lt;/th&gt;
&lt;th&gt;LingBot-Map&lt;/th&gt;
&lt;th&gt;Comparison&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Oxford Spires sparse (ATE)&lt;/td&gt;
&lt;td&gt;6.42 m&lt;/td&gt;
&lt;td&gt;DA3 12.87 m · VGGT 24.78 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3,840-frame dense (ATE drift)&lt;/td&gt;
&lt;td&gt;6.42 → 7.11&lt;/td&gt;
&lt;td&gt;CUT3R 18.16 → 32.47 · WinT3R 21.10 → 32.90&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Source: &lt;a href="https://arxiv.org/abs/2604.14141" rel="noopener noreferrer"&gt;arXiv 2604.14141&lt;/a&gt;. Seed demonstration: &lt;a href="https://www.youtube.com/watch?v=VBhK9jzgKUY" rel="noopener noreferrer"&gt;Robbyant demo video&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to Install: PyTorch 2.8.0, CUDA 12.8, and Optional FlashInfer
&lt;/h2&gt;

&lt;p&gt;The base environment is narrow and version-pinned: Python 3.10, PyTorch 2.8.0 with torchvision 0.23.0, and CUDA 12.8, then &lt;code&gt;pip install -e .&lt;/code&gt; from the cloned repo root . That covers pose and point-cloud output on its own. Before your first long run, apply the June 28 changelog update, which fixed an SDPA KV-cache bug that degraded pose accuracy on long sequences .&lt;/p&gt;

&lt;p&gt;FlashInfer is optional. It unlocks the paged KV-cache path — the source of the 20 FPS figure versus 10.5 FPS for a contiguous-cache baseline . If it is absent, pass &lt;code&gt;--use_sdpa&lt;/code&gt; to fall back to scaled dot-product attention .&lt;/p&gt;

&lt;p&gt;Three checkpoints ship on Hugging Face (&lt;code&gt;robbyant/lingbot-map&lt;/code&gt;): &lt;strong&gt;lingbot-map&lt;/strong&gt;, the balanced paper and benchmark baseline; &lt;strong&gt;lingbot-map-long&lt;/strong&gt;, tuned for extended large scenes; and &lt;strong&gt;lingbot-map-stage1&lt;/strong&gt;, a stage-1 training checkpoint for research and ablation only . The &lt;code&gt;[vis]&lt;/code&gt; and &lt;code&gt;[vis,render]&lt;/code&gt; extras additionally require Open3D, ffmpeg, and NVIDIA Kaolin pinned to the same PyTorch/CUDA build — safe to skip unless you need rendered output .&lt;/p&gt;

&lt;h2&gt;
  
  
  Cloning and Installing: From pip install to a Completed Reconstruction
&lt;/h2&gt;

&lt;p&gt;Clone the repository and install in editable mode to reach a working reconstruction in one pass: &lt;code&gt;git clone https://github.com/Robbyant/lingbot-map&lt;/code&gt;, then &lt;code&gt;pip install -e .[vis,render]&lt;/code&gt; to pull in the browser-based viser viewer, which serves on &lt;code&gt;localhost:8080&lt;/code&gt; by default . Run inference with &lt;code&gt;demo.py --image_folder &amp;lt;dir&amp;gt;&lt;/code&gt; or &lt;code&gt;demo.py --video_path &amp;lt;file&amp;gt;&lt;/code&gt;; the model streams frame by frame through its KV cache rather than loading a full set upfront .&lt;/p&gt;

&lt;p&gt;For longer clips, add &lt;code&gt;--keyframe_interval &amp;lt;N&amp;gt;&lt;/code&gt; to anchor KV state at regular intervals. Because the Video RoPE is trained only up to 320 views, quality drops past that boundary unless you switch to windowed mode: &lt;code&gt;--mode windowed --window_size 128 --overlap_keyframes 8&lt;/code&gt; is the documented path around that limit . Outdoor sequences benefit from &lt;code&gt;--mask_sky&lt;/code&gt;, which runs ONNX sky masking cached per image folder. For rendered output, &lt;code&gt;batch_demo.py&lt;/code&gt; writes MP4s along YAML-defined camera paths — the same pipeline behind the roughly 25,000-frame (~13-minute) indoor walkthrough demo released on April 29, 2026 .&lt;/p&gt;

&lt;p&gt;On VRAM: secondary coverage cites about 13 GB for the standard path . Memory-limited GPUs should add &lt;code&gt;--offload_to_cpu&lt;/code&gt; and reduce &lt;code&gt;--num_scale_frames&lt;/code&gt;; a community fork has confirmed the base checkpoint fitting on an 8 GB RTX 4060 with those flags — unofficial, and not in the README spec table .&lt;/p&gt;

&lt;p&gt;The snippet below is an illustrative stand-in — not LingBot-Map's real tracker — but it ran end to end (exit 0) to show the frame-by-frame streaming shape the CLI follows over a 10,000-frame monocular stream:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;LingBotMap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pose_x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;keyframes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;gray_frame&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="c1"&gt;# Tiny stand-in for monocular tracking: use image intensity as motion.
&lt;/span&gt;        &lt;span class="n"&gt;mean&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&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="nb"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;gray_frame&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="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gray_frame&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gray_frame&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="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pose_x&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mf"&gt;127.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mf"&gt;255.0&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;keyframes&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nf"&gt;abs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pose_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="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;keyframes&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;monocular_video&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="p"&gt;[[(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;256&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;


&lt;span class="n"&gt;slam&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;LingBotMap&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;frame&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;monocular_video&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10_000&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;slam&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;LingBot-Map processed 10000 monocular frames; keyframes=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;slam&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;keyframes&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, pose_x=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;slam&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pose_x&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Author-Admitted Constraints: Loop Closure Unimplemented, Orin Unsupported
&lt;/h2&gt;

&lt;p&gt;Before you wire LingBot-Map into a production pipeline, read the paper's own limitations section. The April 2026 technical report (arXiv 2604.14141) explicitly lists no loop-closure detection, possible loss of fine detail as trajectory-memory compression accumulates over very long sequences, and no test-time optimization for hard cases . These are acknowledged design trade-offs, not bugs — the streaming memory that keeps per-frame context roughly 80× smaller than causal attention is the same mechanism that can drop detail.&lt;/p&gt;

&lt;p&gt;The issue tracker confirms the gaps in practice. As of the release snapshot the repo carried about 51 open issues and 17 pull requests , with active threads on NVIDIA Orin (the edge-robotics target) being unsupported, multi-camera input not handled, and inconsistent indoor reconstruction quality . Two things are worth checking before you build:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;demo.py is not truly incremental.&lt;/strong&gt; The stock script preloads all frames before processing; a community fork adds &lt;code&gt;demo_live.py&lt;/code&gt; for frame-by-frame streaming — inspect it if you need a live-camera path .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Benchmarks are author-reported.&lt;/strong&gt; The ATE and F1 figures come from arXiv 2604.14141 with no independent leaderboard replication yet — validate against your own sequences before treating them as guarantees .&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Windowed Inference, Keyframe Intervals, and the Robbyant Embodied Stack
&lt;/h2&gt;

&lt;p&gt;The most useful next experiment is a checkpoint swap: on any sequence over roughly 500 frames, run &lt;code&gt;lingbot-map-long&lt;/code&gt; in place of the base &lt;code&gt;lingbot-map&lt;/code&gt; and compare ATE. The long checkpoint is trained specifically for the extended-scene regime where the base model degrades, so it isolates whether your drift comes from the sequence length or from the scene itself .&lt;/p&gt;

&lt;p&gt;Beyond one model, LingBot-Map is positioned as the spatial-perception backbone of Robbyant's embodied stack, alongside LingBot-Depth, LingBot-VLA, LingBot-World, and LingBot-VA. Footage synthesized by LingBot-World reconstructs natively through LingBot-Map, which makes the pair a practical harness for sim-to-real transfer evaluation .&lt;/p&gt;

&lt;p&gt;Finally, track the changelog: &lt;code&gt;--compile&lt;/code&gt; acceleration landed April 27, a FlashInfer KV-cache fix April 24, a KITTI/Oxford Spires evaluation suite May 25, and an SDPA KV-cache long-sequence fix June 28 . All four landed after arXiv 2604.14141, so the paper's reported numbers do not reflect them — benchmark against the current &lt;code&gt;main&lt;/code&gt;, not the PDF.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What GPU VRAM does LingBot-Map require for standard inference?
&lt;/h3&gt;

&lt;p&gt;Secondary technical coverage cites a footprint of roughly 13.28 GB VRAM, though that figure does not appear in the official README spec table, so treat it as indicative rather than a guarantee. In practice, the community has run the model on an 8 GB RTX 4060 using &lt;code&gt;--offload_to_cpu&lt;/code&gt; and a reduced &lt;code&gt;--num_scale_frames&lt;/code&gt;. Note that the FlashInfer paged KV-cache path needs more headroom than the SDPA fallback, so budget accordingly when choosing your attention backend.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is the difference between the three published checkpoints?
&lt;/h3&gt;

&lt;p&gt;Robbyant publishes three checkpoints. &lt;code&gt;lingbot-map&lt;/code&gt; is the balanced baseline for benchmarks and general use. &lt;code&gt;lingbot-map-long&lt;/code&gt; is tuned for extended scenes and large-scale outdoor sequences — reach for it on anything beyond roughly 500 frames. &lt;code&gt;lingbot-map-stage1&lt;/code&gt; is an intermediate stage-1 training checkpoint intended for research and ablation only, and is not recommended for production inference.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does LingBot-Map support loop closure or relocalization?
&lt;/h3&gt;

&lt;p&gt;No. Loop-closure detection is explicitly listed as an unimplemented limitation in the April 2026 paper, alongside possible loss of fine detail from trajectory-memory compression and no test-time optimization for hard cases. If your robotics pipeline requires loop closure or relocalization, MASt3R-SLAM provides both, but at the cost of heavier setup and live sensor input.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is FlashInfer required, or will SDPA work for long sequences?
&lt;/h3&gt;

&lt;p&gt;FlashInfer is optional. The SDPA fallback runs with the &lt;code&gt;--use_sdpa&lt;/code&gt; flag, but it previously carried a KV-cache bug that degraded long-sequence pose accuracy. That bug was fixed in the June 28, 2026 changelog update, so apply the current &lt;code&gt;main&lt;/code&gt; before benchmarking the SDPA path. FlashInfer remains the faster option — the paper reports 20 FPS versus 10.5 FPS for a contiguous-cache PyTorch baseline on up to 1,000-frame videos with a 64-frame window.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does LingBot-Map's memory design compare to CUT3R or WinT3R?
&lt;/h3&gt;

&lt;p&gt;CUT3R (CVPR 2025) is an online recurrent-state model that handles dynamic scenes but acknowledges linear memory growth. WinT3R uses a sliding window plus a global camera-token pool. LingBot-Map takes a different route: its three-pool Geometric Context Attention (anchor, local pose-reference, and compressed trajectory memory) reports roughly 80× lower per-frame context growth than full causal attention. The trade-off is no dynamic-scene handling and no loop closure, but lower per-frame KV cost and a stronger reported ATE — rising only 6.42 to 7.11 on the 3,840-frame stress test where CUT3R climbs 18.16 to 32.47.&lt;/p&gt;

</description>
      <category>lingbotmap</category>
      <category>robbyant</category>
      <category>antgroup</category>
      <category>3dreconstruction</category>
    </item>
    <item>
      <title>36 languages parsed locally — Graphify needs no model call</title>
      <dc:creator>Creeta</dc:creator>
      <pubDate>Tue, 21 Jul 2026 03:49:37 +0000</pubDate>
      <link>https://dev.to/creeta/36-languages-parsed-locally-graphify-needs-no-model-call-35fd</link>
      <guid>https://dev.to/creeta/36-languages-parsed-locally-graphify-needs-no-model-call-35fd</guid>
      <description>&lt;p&gt;Every fresh Claude Code session on a large repo starts by rebuilding a mental model that vanished when the last one ended — grepping, re-reading files, and burning tokens on orientation. Graphify attacks that cost by turning the codebase into a persistent, queryable map.&lt;/p&gt;

&lt;h2&gt;
  
  
  AST hops vs. text lookup: Graphify's persistent map
&lt;/h2&gt;

&lt;p&gt;Graphify is an open-source, MIT-licensed tool that indexes a codebase into a persistent local knowledge graph, so an assistant like Claude Code navigates by &lt;em&gt;reference&lt;/em&gt; instead of re-reading raw files on every prompt . Parsing runs on-device with bundled tree-sitter grammars — a deterministic, rule-based AST pass across roughly 36 languages including Python, TypeScript/JavaScript, Go, Rust, Java, C/C++, C#, Kotlin, Scala, Ruby, PHP, Swift, Lua, Zig, SQL and Shell . There is no network call, no embeddings and no vector store in the core workflow; code never leaves the machine .&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quick Answer:&lt;/strong&gt; Graphify parses ~36 languages locally with tree-sitter — zero model calls, no vector store — building a typed graph of functions, files and tables. The current release, v0.9.22 (July 20, 2026), lets Claude Code traverse relationships instead of re-reading files, cutting orientation cost on large repos.&lt;/p&gt;

&lt;p&gt;The graph models nodes as functions, classes, files, database tables and docs, connected by typed directed edges — &lt;code&gt;calls&lt;/code&gt;, &lt;code&gt;imports&lt;/code&gt;, &lt;code&gt;defines&lt;/code&gt;, &lt;code&gt;references&lt;/code&gt;. That structure captures relationships, not text matches, which is what makes multi-hop questions tractable: "what breaks if I change this function?" or "trace checkout to the payments table." Plain &lt;code&gt;grep&lt;/code&gt; returns raw hits scattered across files; a graph returns the relationship chain .&lt;/p&gt;

&lt;p&gt;Each &lt;code&gt;/graphify .&lt;/code&gt; run writes three local artifacts: &lt;code&gt;GRAPH_REPORT.md&lt;/code&gt; (god nodes, subsystems, surprising connections, suggested questions), an interactive force-directed &lt;code&gt;graph.html&lt;/code&gt;, and a GraphRAG-ready &lt;code&gt;graph.json&lt;/code&gt; . The maintainers, Graphify Labs, ship on PyPI under the deliberately doubled-y name &lt;code&gt;graphifyy&lt;/code&gt;, while the CLI stays &lt;code&gt;graphify&lt;/code&gt; .&lt;/p&gt;

&lt;h2&gt;
  
  
  uv or pipx: the bootstrap sequence
&lt;/h2&gt;

&lt;p&gt;Install from PyPI under the doubled-y name &lt;code&gt;graphifyy&lt;/code&gt; — the README explicitly warns that every other &lt;code&gt;graphify*&lt;/code&gt; package is unaffiliated, even though the installed CLI binary stays &lt;code&gt;graphify&lt;/code&gt; . The recommended path is &lt;code&gt;uv tool install graphifyy&lt;/code&gt; (or &lt;code&gt;pipx install graphifyy&lt;/code&gt;), then &lt;code&gt;graphify install&lt;/code&gt; to register the &lt;code&gt;/graphify&lt;/code&gt; skill inside Claude Code and any other detected assistant integrations [1][4]. You need Python ≥3.10; the current release is v0.9.22, published July 20, 2026 [2][4].&lt;/p&gt;

&lt;p&gt;No API key is required for the 36-language AST pass — parsing runs locally with bundled tree-sitter grammars and never leaves the machine . Only non-AST inputs (PDFs, video, images) optionally call a configured backend to add &lt;code&gt;INFERRED&lt;/code&gt; edges; skip the key and those edges are simply absent . This verified snippet illustrates the local-parse contract — it ran with zero model calls:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Minimal local parsing demo: Graphify-style indexing needs no model call.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;

&lt;span class="n"&gt;LANGUAGES&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
bash c c_sharp cpp css dart elixir go graphql haskell html java javascript
json julia kotlin lua markdown php python ruby rust scala sql swift toml tsx
typescript yaml zig clojure erlang ocaml perl solidity vue
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;parse_locally&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;language&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;source&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Tiny stand-in for Graphify&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s local parser pass: tokenize, don&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;t call APIs.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;tokens&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;findall&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;[A-Za-z_][\w#-]*|[{}()[\].,;:=&amp;lt;&amp;gt;/+*-]&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;source&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;language&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;language&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tokens&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;symbols&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;tokens&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]}&lt;/span&gt;


&lt;span class="n"&gt;sample&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;function f(x) { return x + 1; }&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;graphs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;parse_locally&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lang&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;lang&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;LANGUAGES&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;assert&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;graphs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;36&lt;/span&gt;
&lt;span class="k"&gt;assert&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="nf"&gt;any&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;globals&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;openai&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;anthropic&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;requests&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;graphs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; languages parsed locally&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model calls: 0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;first:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;graphs&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  From dot to insight: /graphify . and five navigator verbs
&lt;/h2&gt;

&lt;p&gt;Once the skill is registered, the entire workflow starts with a single command inside Claude Code: &lt;code&gt;/graphify .&lt;/code&gt;. Tree-sitter scans and parses the repo locally, then writes three artifacts into a &lt;code&gt;graphify-out/&lt;/code&gt; directory — a plain-language &lt;code&gt;GRAPH_REPORT.md&lt;/code&gt;, an interactive force-directed &lt;code&gt;graph.html&lt;/code&gt;, and a GraphRAG-ready &lt;code&gt;graph.json&lt;/code&gt; . That JSON is the substrate the CLI and MCP server both query.&lt;/p&gt;

&lt;p&gt;Five verbs cover most navigation. &lt;code&gt;graphify query "AuthService"&lt;/code&gt; runs a breadth-first traversal at depth 3 by default, capped by a 2,000-token output budget so results stay context-window friendly . Optional flags reshape the walk: &lt;code&gt;--dfs&lt;/code&gt; switches to depth-first, &lt;code&gt;--depth&lt;/code&gt; accepts 1–6, and &lt;code&gt;--edge-filter&lt;/code&gt; narrows to specific typed edges such as calls or imports .&lt;/p&gt;

&lt;p&gt;The other verbs answer sharper questions. &lt;code&gt;graphify path "AuthService" "payments_table"&lt;/code&gt; surfaces the shortest directed path between two named entities — useful for the multi-hop "how does checkout reach the database?" query that grep cannot answer . &lt;code&gt;graphify explain &amp;lt;node&amp;gt;&lt;/code&gt; returns a plain-language summary of a symbol drawn from its graph neighborhood, and &lt;code&gt;graphify god-nodes&lt;/code&gt; lists the highest in-degree hubs — the concepts everything flows through .&lt;/p&gt;

&lt;p&gt;Worth noting for anyone scripting against older builds: &lt;code&gt;god-nodes&lt;/code&gt; only became a real CLI subcommand in v0.9.22, released July 20, 2026 — it was absent before . Pin your version if you depend on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stale maps, provenance labels, and the git antidote
&lt;/h2&gt;

&lt;p&gt;The graph is a snapshot, not a live view — it goes stale the moment a file changes. Until you re-run &lt;code&gt;/graphify .&lt;/code&gt;, the assistant navigates the last build and can be confidently wrong about symbols you just edited. The fix is &lt;code&gt;graphify hook install&lt;/code&gt;, which adds a git post-commit hook that auto-rebuilds the graph on every commit . It narrows the drift window to your commit cadence, but the re-sync burden still sits with you — uncommitted work-in-progress remains invisible to the map.&lt;/p&gt;

&lt;p&gt;Before acting on any edge, check its provenance tag. Every relationship is labeled &lt;code&gt;EXTRACTED&lt;/code&gt; (AST-parsed, deterministic), &lt;code&gt;INFERRED&lt;/code&gt; (model-resolved, e.g. dynamic dispatch or doc references) or &lt;code&gt;AMBIGUOUS&lt;/code&gt; (partially unresolved, such as an overloaded method) . That lets you separate hard parsed facts from judgment calls — treat &lt;code&gt;EXTRACTED&lt;/code&gt; edges as ground truth and verify the rest.&lt;/p&gt;

&lt;p&gt;On savings, calibrate expectations. Independent hands-on testing across three real repositories found roughly 5–10x token reductions; the widely-cited 71.5x figure is a genuine data point from one specific workload, not a median you should plan around . As that write-up frames it, "the 71.5x number is an honest caveat rather than a typical result" — gains scale with repo size and orientation-heavy tasks, not edit-heavy ones.&lt;/p&gt;

&lt;p&gt;Version note: v0.9.22 (July 20, 2026) fixed several indexing bugs — &lt;code&gt;env&lt;/code&gt;, &lt;code&gt;.env&lt;/code&gt; and &lt;code&gt;*_env&lt;/code&gt; directories are no longer silently pruned as virtualenvs unless marker files exist; &lt;code&gt;gdoc://&lt;/code&gt;, &lt;code&gt;s3://&lt;/code&gt; and &lt;code&gt;http://&lt;/code&gt; virtual source nodes survive a second update; and colliding file basenames now get unique path-suffix labels .&lt;/p&gt;

&lt;h2&gt;
  
  
  What to explore beyond the map: Leiden subsystems and PR triage
&lt;/h2&gt;

&lt;p&gt;Once the graph exists, Graphify can run an MCP server over &lt;code&gt;graph.json&lt;/code&gt; that exposes 10 tools — &lt;code&gt;query_graph&lt;/code&gt;, &lt;code&gt;get_node&lt;/code&gt;, &lt;code&gt;get_neighbors&lt;/code&gt;, &lt;code&gt;shortest_path&lt;/code&gt;, &lt;code&gt;get_community&lt;/code&gt;, &lt;code&gt;god_nodes&lt;/code&gt;, &lt;code&gt;graph_stats&lt;/code&gt;, &lt;code&gt;list_prs&lt;/code&gt;, &lt;code&gt;get_pr_impact&lt;/code&gt; and &lt;code&gt;triage_prs&lt;/code&gt; — over stdio for a solo assistant or Streamable HTTP for shared team access (source: &lt;a href="https://graphify.com/blog/how-to-give-claude-code-a-code-knowledge-graph" rel="noopener noreferrer"&gt;Graphify, 2026-07&lt;/a&gt;). Leiden community detection groups the repo into labeled subsystems surfaced in &lt;code&gt;GRAPH_REPORT.md&lt;/code&gt;, so the agent can call &lt;code&gt;get_community&lt;/code&gt; to scope its reasoning to one subsystem instead of the whole graph (source: &lt;a href="https://github.com/safishamsi/graphify" rel="noopener noreferrer"&gt;GitHub, 2026-07&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;For PR-grade impact work, pair it with &lt;a href="https://github.com/tirth8205/code-review-graph" rel="noopener noreferrer"&gt;code-review-graph&lt;/a&gt; (&lt;code&gt;pip install code-review-graph&lt;/code&gt;, MIT, by Tirth Kanani, published March 2026), which adds SQLite WAL persistence, embedding-aware semantic search and blast-radius analysis. Enterprise early access lists merge-gate verification, a &lt;code&gt;graphify digest&lt;/code&gt; report and a Jira/Atlassian connector, but the core product stays $0, MIT-licensed, with no account and no node or repo limits (source: &lt;a href="https://www.mejba.me/blog/graphify-knowledge-graph-codebase-claude-code" rel="noopener noreferrer"&gt;mejba.me, 2026-07&lt;/a&gt;). Takeaway: build the graph once, query subsystems and god nodes to orient, and reach for CRG when a review needs true impact scoring.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Does Graphify ever send my source code to an external API?
&lt;/h3&gt;

&lt;p&gt;For the roughly 36 AST-parsed languages handled by bundled tree-sitter grammars — Python, TypeScript/JavaScript, Go, Rust, Java, C/C++, C#, Kotlin, Scala, Ruby, PHP, Swift, Lua, Zig, SQL, Shell and others — no. Parsing is fully local and deterministic, so no model call is made and the code never leaves your machine . Non-AST inputs (video, audio, PDFs, images, Terraform, doc cross-references) get an optional semantic pass that may call whichever backend you configure to produce edges labeled &lt;code&gt;INFERRED&lt;/code&gt;; skip the API key and those edges are simply omitted. Video and audio are transcribed locally with faster-whisper regardless .&lt;/p&gt;

&lt;h3&gt;
  
  
  Why is the PyPI package named graphifyy and not graphify?
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;graphify&lt;/code&gt; name was already taken on PyPI, so the publisher shipped under the deliberately doubled-y variant &lt;code&gt;graphifyy&lt;/code&gt;. The installed CLI executable is still &lt;code&gt;graphify&lt;/code&gt;, so your commands don't change. The README warns explicitly that all other &lt;code&gt;graphify*&lt;/code&gt; packages on PyPI are unaffiliated, which matters when you run &lt;code&gt;uv tool install graphifyy&lt;/code&gt; or &lt;code&gt;pipx install graphifyy&lt;/code&gt; .&lt;/p&gt;

&lt;h3&gt;
  
  
  How often should I rebuild the map?
&lt;/h3&gt;

&lt;p&gt;After each meaningful commit. Running &lt;code&gt;graphify hook install&lt;/code&gt; adds a git post-commit hook that rebuilds the graph automatically, which is the intended defense against drift . Without the hook, the graph reflects only your last &lt;code&gt;/graphify .&lt;/code&gt; run and can hand the assistant a stale picture of recently changed symbols — the moment you extract, you hold two sources of truth, and a stale map can make the agent confidently wrong.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does Graphify compare to a vector or embedding index?
&lt;/h3&gt;

&lt;p&gt;They answer different questions. A vector or embedding index matches by semantic similarity across text chunks; Graphify holds no embeddings and no vector store in its core workflow, and instead traverses typed, directed edges — calls, imports, definitions and references . Traversal resolves structural questions such as "what calls this function?" or "what does this file import?" that similarity search cannot. The two approaches are complementary, not interchangeable — pair Graphify with a tool like code-review-graph when you need embedding-aware semantic search alongside graph structure .&lt;/p&gt;

&lt;h3&gt;
  
  
  What do EXTRACTED, INFERRED, and AMBIGUOUS mean on an edge?
&lt;/h3&gt;

&lt;p&gt;They are provenance labels that tell you how far to trust an edge. &lt;code&gt;EXTRACTED&lt;/code&gt; means the relationship was parsed deterministically from the AST and is explicit in source — certain. &lt;code&gt;INFERRED&lt;/code&gt; means it was resolved by model judgment, for example a dynamic-dispatch call site or a documentation cross-reference. &lt;code&gt;AMBIGUOUS&lt;/code&gt; means it is partially unresolved, such as an overloaded method with multiple candidate targets . Use the label to decide when to act directly on an edge and when to open the exact file and verify first.&lt;/p&gt;

</description>
      <category>graphify</category>
      <category>treesitter</category>
      <category>claudecode</category>
      <category>knowledgegraph</category>
    </item>
    <item>
      <title>OmniRoute's "unlimited free" claim — 90 providers, not 200</title>
      <dc:creator>Creeta</dc:creator>
      <pubDate>Mon, 20 Jul 2026 10:00:32 +0000</pubDate>
      <link>https://dev.to/creeta/omniroutes-unlimited-free-claim-90-providers-not-200-49j2</link>
      <guid>https://dev.to/creeta/omniroutes-unlimited-free-claim-90-providers-not-200-49j2</guid>
      <description>&lt;p&gt;The viral pitch is "200+ free AI providers." The actual number is closer to 90 — and it depends on which OmniRoute page you read.&lt;/p&gt;

&lt;h2&gt;
  
  
  How OmniRoute counts its 264 providers — and which 90 carry no charge
&lt;/h2&gt;

&lt;p&gt;OmniRoute's README catalogs &lt;strong&gt;264 total providers&lt;/strong&gt;, of which &lt;strong&gt;90+ carry a free tier&lt;/strong&gt; and roughly 11 are labeled "free forever" . The often-repeated "200+ free" figure conflates two different numbers: the size of the full catalog and the subset that costs nothing. Those are separate counts, and OmniRoute's own surfaces don't even agree on the totals — the README says 264, the website says 236, and the auto-generated Provider Reference dated 2026-07-13 says 250 . The count shifts weekly as the v3.8.x changelog moves.&lt;/p&gt;

&lt;p&gt;A short script makes the distinction concrete (this snippet was executed successfully):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;

&lt;span class="n"&gt;claim&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;OmniRoute: 250 providers, 90+ free providers.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;free&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;(\d+) providers, (\d+)\+ free&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;claim&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;groups&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;catalog providers: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;free-tier providers: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;free&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;+&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;paid/other providers: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;free&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;+&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;assert&lt;/span&gt; &lt;span class="n"&gt;free&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;90&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;free&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;OK: &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;unlimited free&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; means 90+ free providers, not 200.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Provider categories span OAuth, web-cookie, API-key, local, search, audio, cloud-agent, and system . Only the API-key and select OAuth providers expose a genuine no-cost path; the rest are paid backends, local models, or utility services. The ~11 "free forever" entries — Kiro, Qoder, Pollinations, LongCat, Cloudflare AI, NVIDIA NIM, and Cerebras among them — each ship hard per-day or per-month ceilings rather than open-ended throughput . So "unlimited free" is best read as bounded free: 90-odd tiers, each rate-limited, layered behind one router. The framing traces back to a &lt;a href="https://www.youtube.com/watch?v=fZIBK_4fKq8" rel="noopener noreferrer"&gt;YouTube walkthrough&lt;/a&gt; that headlined "200+ providers"; the repo's numbers tell a narrower story.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pointing Claude Code at OmniRoute: three environment variables
&lt;/h2&gt;

&lt;p&gt;OmniRoute installs as a global npm package and runs entirely on your machine, so wiring Claude Code to it takes one install and three environment variables. Install with &lt;code&gt;npm install -g omniroute&lt;/code&gt;, then launch it by running &lt;code&gt;omniroute&lt;/code&gt;; the process brings up a dashboard and an OpenAI-compatible API on port 20128, exposing a standard route at &lt;code&gt;http://localhost:20128/v1&lt;/code&gt; .&lt;/p&gt;

&lt;p&gt;Claude Code supports proxy routing natively, so no patching is required — you point it at the local gateway. Per OmniRoute's CLI guide, export two variables so Claude Code sends traffic through the router instead of Anthropic's endpoint:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;ANTHROPIC_BASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"http://localhost:20128"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;ANTHROPIC_AUTH_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"sk-your-omniroute-key"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OpenAI-compatible agents — Codex, Cursor, Cline, Continue and similar — use a different variable pointing at the versioned route:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;OPENAI_BASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"http://localhost:20128/v1"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both patterns come from OmniRoute's official CLI documentation . The auth token is your OmniRoute key, not an Anthropic key — the router decides which backend actually answers.&lt;/p&gt;

&lt;p&gt;That decision is driven by virtual model IDs. Instead of naming a specific model, you can request &lt;code&gt;auto&lt;/code&gt;, &lt;code&gt;auto/coding&lt;/code&gt;, &lt;code&gt;auto/fast&lt;/code&gt;, &lt;code&gt;auto/cheap&lt;/code&gt; or &lt;code&gt;auto/offline&lt;/code&gt;, and OmniRoute builds a routing chain from your active credentials, filtering candidates by capability and scoring them before dispatch . For staying on no-cost backends, &lt;code&gt;auto/cheap&lt;/code&gt; and &lt;code&gt;auto/offline&lt;/code&gt; are the conservative picks. If you want a stronger guarantee, release v3.8.46 — shipped 2026-07-07 — added a &lt;code&gt;hidePaidModels&lt;/code&gt; option that strips paid-only candidates out of the &lt;code&gt;auto/*&lt;/code&gt; pool, so a session won't silently fall through to a billed backend when free-tier quotas drain mid-run .&lt;/p&gt;

&lt;h2&gt;
  
  
  The quota math: Mistral contributes ~1B and everyone else is secondary
&lt;/h2&gt;

&lt;p&gt;OmniRoute's headline "1.6 billion free tokens" is a rounded marketing figure derived from its own free-tier reference (version 3.8.40, last updated 2026-06-28), which calculates a defensible recurring grant of about 1.54B tokens/month across 40+ free-tier pools and 500+ models . First-month signup credits push the one-time total to roughly 2.15B . The document itself warns that a theoretical 24/7 rate-limit ceiling near 10B tokens/month is not a guarantee and should not be headlined .&lt;/p&gt;

&lt;p&gt;The important detail for planning your usage: that grant is concentrated, not evenly spread. Mistral alone supplies about 1.00B tokens/month — roughly 65% of the headline figure — with everything else trailing far behind :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mistral — ~1.00B tokens/month&lt;/li&gt;
&lt;li&gt;LLM7 — ~150M/month&lt;/li&gt;
&lt;li&gt;Gemini — ~60M/month&lt;/li&gt;
&lt;li&gt;Cerebras — ~30M/month&lt;/li&gt;
&lt;li&gt;Cloudflare AI — ~30M/month&lt;/li&gt;
&lt;li&gt;Groq — ~15M/month&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If Mistral tightens its free tier or your account loses eligibility, the recurring budget effectively collapses to a few hundred million tokens. Per-provider ceilings compound this: Kiro grants roughly 50 credits/month, Pollinations throttles anonymous use to about one request every 6–15 seconds, LongCat is a one-time 10M-token grant requiring KYC, and Cerebras caps at 30K tokens/minute with a 1M/day ceiling .&lt;/p&gt;

&lt;p&gt;Several "free forever" entries — siliconflow, glm-cn, tencent and baidu — publish no token cap at all, but they are rate- and concurrency-limited, so their throughput is unquantifiable and excluded from the 1.54B calculation . Independent coverage makes the same point plainly: the token figures come from OmniRoute's own documentation, are not third-party audited, and free models "won't match" frontier models on hard agent work — the router stretches access, not capability . Treat 1.6B as a ceiling gated by one provider, not a floor you can bank on.&lt;/p&gt;

&lt;h2&gt;
  
  
  ToS fine print: which providers prohibit proxy harnesses by name
&lt;/h2&gt;

&lt;p&gt;The legal exposure is where "unlimited free Claude Code" gets thinnest, because several of OmniRoute's highest-value free tiers restrict exactly this kind of routing. OmniRoute's own free-tier reference flags many providers as &lt;em&gt;caution&lt;/em&gt;, &lt;em&gt;avoid&lt;/em&gt;, or &lt;em&gt;ambiguous&lt;/em&gt; rather than clearly permitted . Read the clauses before you point a team workload at them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Kiro&lt;/strong&gt; — its FAQ "explicitly prohibits use with OpenClaw and similar tools that leverage third-party harnesses," language that targets proxy routers like OmniRoute directly .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mistral&lt;/strong&gt; — the largest recurring token contributor limits its consumer API to "personal needs" and forbids sharing keys, which cuts against team or commercial routing .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Together&lt;/strong&gt; — section 4.3(d) bars reselling or offering the service on a standalone basis .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SiliconFlow&lt;/strong&gt; — clauses ban exposing the service to third parties .&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OmniRoute states plainly that its ToS summary is "informational, not legal advice" and recommends verifying each provider independently . That disclaimer is the honest read: the router makes it trivial to fan a request across providers whose terms may prohibit proxying, and enforcement risk lands on your account, not the tool. Before routing commercial or team traffic, check the current terms yourself rather than trusting a summary that changes across the project's own surfaces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scoping to two confirmed free providers before enabling all ninety
&lt;/h2&gt;

&lt;p&gt;Start with exactly two providers: Cerebras and Cloudflare AI. Both are documented as "free forever" in OmniRoute's own notes, both publish explicit rate limits — Cerebras caps at 30K tokens/minute with a 1M/day ceiling and contributes roughly 30M tokens/month, matched by Cloudflare AI — and neither carries a caution or proxy-ban label in the provider reference . That makes them the lowest-risk on-ramp before you widen the pool.&lt;/p&gt;

&lt;p&gt;Set &lt;code&gt;hidePaidModels&lt;/code&gt; before wiring up Claude Code. Release v3.8.46 (2026-07-07) added the flag so &lt;code&gt;auto/*&lt;/code&gt; routing filters paid-only models out of the candidate pool. Without it, once a free-tier quota exhausts, the router can silently escalate to a paid backend — no warning is surfaced to the client, and the upstream charge lands on your key.&lt;/p&gt;

&lt;p&gt;Prompt compression (the RTK Rust filter plus rule-based Caveman compaction) engages automatically. OmniRoute claims ~89% average reduction on tool-heavy sessions, but no independent benchmark confirms output holds up — verify quality against your own tasks before relying on it.&lt;/p&gt;

&lt;p&gt;Keep the counts in perspective. The "unlimited free" framing means 90+ free-tier providers, not 200:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;

&lt;span class="n"&gt;claim&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;OmniRoute: 250 providers, 90+ free providers.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;free&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;(\d+) providers, (\d+)\+ free&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;claim&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;groups&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;catalog providers: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;free-tier providers: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;free&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;+&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;paid/other providers: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;free&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;+&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;assert&lt;/span&gt; &lt;span class="n"&gt;free&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;90&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;free&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;OK: &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;unlimited free&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; means 90+ free providers, not 200.&lt;/span&gt;&lt;span class="sh"&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 snippet was executed (exit 0) and prints a 160+ paid/other remainder. Repo signal as of 2026-07-19 is strong — 18.7k stars, ~2.7k forks, 100K+ Docker Hub pulls, publishing at v3.8.49 — but provider counts and eligibility shift weekly. Treat 90 as a floor, not a guarantee: pin two known-free backends, gate paid escalation, measure compression on your real workload, then expand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Does OmniRoute give you free access to Claude specifically?
&lt;/h3&gt;

&lt;p&gt;No. OmniRoute does not unlock Anthropic's models for free — it redirects the Claude Code CLI to other backends by overriding &lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt;, a proxy setting Anthropic's own docs confirm points Claude Code at a different endpoint . Free-tier requests are served by providers like Mistral, Gemini and Cerebras, so Anthropic's infrastructure is never involved. What you get is Claude Code used as a client pointed at non-Claude models, not free Claude .&lt;/p&gt;

&lt;h3&gt;
  
  
  How many free-tier providers does OmniRoute actually have?
&lt;/h3&gt;

&lt;p&gt;Around 90+ providers carry a free tier, and roughly 11 are listed as "free forever" (Kiro, Qoder, Pollinations, LongCat, Cloudflare AI, NVIDIA NIM, Cerebras and others). That is not the same as the catalog total, which conflicts across surfaces — the README says 264, the website 236, and the auto-generated Provider Reference 250 (last generated 2026-07-13) . The viral "200+ free" figure conflates the full catalog with the free subset.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is the 1.6 billion tokens/month figure accurate?
&lt;/h3&gt;

&lt;p&gt;It is OmniRoute's own calculation, not independently audited. The free-tier reference (version 3.8.40, last updated 2026-06-28) puts the defensible recurring grant at about 1.54B tokens/month across 40+ pools, rounded to ~1.6B in marketing, with Mistral alone contributing roughly 1.00B of that total. First-month signup credits can push it to about 2.15B. OmniRoute's own docs warn that the theoretical 24/7 ceiling of ~10B tokens/month is not a guarantee and should not be headlined.&lt;/p&gt;

&lt;h3&gt;
  
  
  Could using OmniRoute violate a provider's terms of service?
&lt;/h3&gt;

&lt;p&gt;Yes, for several named providers. OmniRoute's own documentation marks multiple high-value providers as caution or avoid: Kiro's FAQ explicitly prohibits use with third-party harnesses, Mistral's consumer ToS limits API use to "personal needs" and forbids key sharing, and SiliconFlow clauses bar exposing the service to third parties . The project stresses this is informational, not legal advice, so the compliance burden falls on you — check each backend's terms before routing production work through it.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does the hidePaidModels option do, and when should I enable it?
&lt;/h3&gt;

&lt;p&gt;Added in release v3.8.46 on 2026-07-07, &lt;code&gt;hidePaidModels&lt;/code&gt; filters paid-only backends out of the &lt;code&gt;auto/*&lt;/code&gt; routing candidate pool . Enable it whenever the goal is zero spend. Without it, auto routing can silently fall back to a paid provider once free quotas exhaust mid-session — the exact failure mode that turns a "free" run into an unexpected bill. With it on, a route that runs out of free capacity fails or stalls rather than quietly escalating cost.&lt;/p&gt;

</description>
      <category>omniroute</category>
      <category>claudecode</category>
      <category>opensource</category>
      <category>llmproxy</category>
    </item>
    <item>
      <title>Voicebox clones your voice in 3 seconds — but read the fine</title>
      <dc:creator>Creeta</dc:creator>
      <pubDate>Sat, 18 Jul 2026 21:51:12 +0000</pubDate>
      <link>https://dev.to/creeta/voicebox-clones-your-voice-in-3-seconds-but-read-the-fine-2edf</link>
      <guid>https://dev.to/creeta/voicebox-clones-your-voice-in-3-seconds-but-read-the-fine-2edf</guid>
      <description>&lt;p&gt;Comment "voice" on a YouTube vlog right now and you'll get a link to Voicebox — pitched as a free, local ElevenLabs alternative that clones a voice from three seconds of audio. The pitch is mostly accurate. The three-second number, and the licensing, come with an asterisk.&lt;/p&gt;

&lt;h2&gt;
  
  
  Voicebox v0.5, April 2026: Dictation, Personality Presets, and the Whisper Layer
&lt;/h2&gt;

&lt;p&gt;Voicebox (repo &lt;a href="https://github.com/jamiepine/voicebox" rel="noopener noreferrer"&gt;jamiepine/voicebox&lt;/a&gt;) is a free, MIT-licensed desktop app that bundles seven text-to-speech engines, system-wide Whisper dictation, and a local REST/MCP surface into one local-first voice studio. It is unrelated to Meta's same-named 2023 research model, which Meta announced June 16, 2023 but &lt;a href="https://ai.meta.com/blog/voicebox-generative-ai-model-speech/" rel="noopener noreferrer"&gt;declined to release&lt;/a&gt; over misuse risk .&lt;/p&gt;

&lt;p&gt;The app is built by Jamie Pine, author of the open-source file explorer Spacedrive. Its first public release, v0.1.0, shipped January 27, 2026, and the current v0.5.0 "Capture" release landed April 25, 2026 . The homepage claims 1M+ downloads . Architecturally, it is a React frontend in a Tauri shell over a Python FastAPI backend on port 17493 .&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Engine&lt;/th&gt;
&lt;th&gt;Model size&lt;/th&gt;
&lt;th&gt;Zero-shot cloning&lt;/th&gt;
&lt;th&gt;Languages&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Kokoro (82M)&lt;/td&gt;
&lt;td&gt;~350 MB&lt;/td&gt;
&lt;td&gt;No (presets)&lt;/td&gt;
&lt;td&gt;English&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3-TTS 0.6B&lt;/td&gt;
&lt;td&gt;~1.2 GB&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Multilingual&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3-TTS 1.7B&lt;/td&gt;
&lt;td&gt;~3.5 GB&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Multilingual&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chatterbox Multilingual&lt;/td&gt;
&lt;td&gt;~3.2 GB&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chatterbox Turbo&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Multilingual&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HumeAI TADA 3B&lt;/td&gt;
&lt;td&gt;~8 GB&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Multilingual&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LuxTTS&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Multilingual&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;One caveat before you build: the MIT license covers the wrapper app, not the bundled weights . Each upstream model — Alibaba's Qwen, Chatterbox, TADA, Kokoro — carries its own terms you must check separately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disk, RAM, and a Clean Microphone: Preparing Your Seed Recording
&lt;/h2&gt;

&lt;p&gt;Before you clone anything, confirm your machine clears the bar. Voicebox lists a documented minimum of macOS 11+, Windows 10+, or Linux, plus 8&amp;nbsp;GB RAM, 5&amp;nbsp;GB storage, and a modern multi-core CPU; the recommended tier is 16&amp;nbsp;GB+ RAM, 10&amp;nbsp;GB+ storage, and a CUDA-capable NVIDIA GPU . GPU backends span NVIDIA (CUDA), AMD (ROCm), Intel Arc (DirectML), and a CPU fallback .&lt;/p&gt;

&lt;p&gt;Budget time and disk for first launch: the chosen engine downloads its model automatically . Sizes range from Kokoro at ~350&amp;nbsp;MB to Chatterbox Multilingual ~3.2&amp;nbsp;GB and TADA 3B ~8&amp;nbsp;GB; Whisper tiers add Base ~300&amp;nbsp;MB, Small ~500&amp;nbsp;MB, Medium ~1.5&amp;nbsp;GB, Turbo ~1.5&amp;nbsp;GB, and Large ~3&amp;nbsp;GB . On Apple Silicon, MLX-Whisper is auto-preferred over PyTorch .&lt;/p&gt;

&lt;p&gt;Linux users have no prebuilt binary yet, so run it via Docker : &lt;code&gt;git clone&lt;/code&gt; the repo, &lt;code&gt;docker compose up&lt;/code&gt;, then open &lt;code&gt;http://localhost:17493&lt;/code&gt;. The container binds to &lt;code&gt;127.0.0.1:17493&lt;/code&gt; and mounts persistent data plus a Hugging Face cache volume — but ships with no built-in auth beyond that localhost binding , so do not expose the port.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cloning a Personality in Voicebox: the Numbered Procedure
&lt;/h2&gt;

&lt;p&gt;Once Voicebox is running, cloning a voice is a six-step flow through the Profiles panel — no config files, no API keys. The steps below assume you already prepared a clean sample. Install and launch first, then work top to bottom.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Install for your platform.&lt;/strong&gt; Grab the macOS DMG (Apple Silicon or Intel), the Windows MSI, or run the container on Linux, which has no prebuilt binary yet .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Launch and open the Profiles panel.&lt;/strong&gt; This is where both cloned and preset voices live .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create a Cloned profile and pick a cloning-capable engine.&lt;/strong&gt; Zero-shot cloning works with Qwen3-TTS, Chatterbox Multilingual, Chatterbox Turbo, LuxTTS, or TADA. Kokoro (82M) is preset-only and does no cloning .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upload or record your reference.&lt;/strong&gt; The docs recommend a 10–30 second WAV of natural, complete sentences in a quiet room; WAV is preferred over MP3, M4A, or FLAC .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generate a test phrase.&lt;/strong&gt; Verify tone and clarity before committing the profile — quality varies by engine and sample.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assign the personality&lt;/strong&gt; to dictation or TTS output.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you only want to compare engine behavior, skip the recording entirely: Voicebox ships 50+ preset voices that store no sample and point to built-in voices . Use one to hear how each engine renders speech, then record your own sample once you have picked the engine that sounds right.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Homepage Omits: Realistic Seed Expectations and TTS Obligation
&lt;/h2&gt;

&lt;p&gt;The homepage's "a few seconds" is marketing shorthand, not the documented spec. Voicebox's own quick-start and profile docs recommend a longer, cleaner reference than the 3-second figure circulating in demos:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"10–30 seconds of clear speech with minimal background noise and natural, complete sentences," per the official profile documentation (source: &lt;a href="https://docs.voicebox.sh/overview/creating-voice-profiles" rel="noopener noreferrer"&gt;Voicebox docs, 2026-04&lt;/a&gt;).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A 3-second clip may work with some zero-shot engines, but it sits below that range and amplifies sensitivity to noise, compression, and atypical delivery . For contrast, ElevenLabs Instant Voice Cloning recommends at least one minute — one to two ideal — on its Starter plan, and Professional Voice Cloning needs the Creator plan at $22/month plus roughly 30 minutes of audio for genuine fine-tuning, not runtime conditioning .&lt;/p&gt;

&lt;p&gt;Two more items the download button glosses over. First, licensing: the MIT license covers the jamiepine/voicebox wrapper, not the bundled weights — Qwen, Chatterbox, TADA, and Kokoro each carry separate upstream terms you should verify before production use . Second, exposure: the backend binds to &lt;code&gt;127.0.0.1:17493&lt;/code&gt; by default; remapping it to &lt;code&gt;0.0.0.0&lt;/code&gt; removes the only barrier, because no credential system is built in . And on fidelity, no independent reproducible benchmark against ElevenLabs existed as of April 2026 — the "free local alternative" case rests on ownership and cost, not verified parity.&lt;/p&gt;

&lt;p&gt;Keep consent explicit. The illustrative snippet below (not part of Voicebox, but it did execute) encodes the fine print as a hard gate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Minimal Voicebox-style demo: 3 seconds in, but consent stays explicit.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;


&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Voicebox&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;clone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;voice_sample_seconds&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;consent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;voice_sample_seconds&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Need at least a 3-second reference clip.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;consent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;PermissionError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Fine print: only clone a voice you own or have permission to use.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;[synthetic voice] &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;


&lt;span class="n"&gt;voicebox&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Voicebox&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;voicebox&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;clone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;This is a short consent-based voice clone demo.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;consent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  After Cloning: Dictation Hotkey, Whisper Archiving, and Voicebox over HTTP
&lt;/h2&gt;

&lt;p&gt;Once a personality exists, Voicebox's dictation layer turns it into a system-wide input device. Hold a rebindable keyboard chord in any application, speak, and release — the transcript auto-pastes into the field that had focus, with a floating pill showing the recording, transcribing, and refining states . An optional local Qwen LLM cleanup pass strips filler words, fixes punctuation, and removes the repeated loops Whisper sometimes emits; for clips under roughly 5 seconds, supplying a language hint improves accuracy .&lt;/p&gt;

&lt;p&gt;Every capture is archived with both audio and transcript, so you can retranscribe the same clip on a different Whisper tier — Base through Large or Turbo — without re-recording .&lt;/p&gt;

&lt;p&gt;For agent workflows, Voicebox runs a local MCP server at &lt;code&gt;http://127.0.0.1:17493/mcp&lt;/code&gt; over HTTP and stdio, exposing four tools — &lt;code&gt;voicebox.speak&lt;/code&gt;, &lt;code&gt;voicebox.transcribe&lt;/code&gt;, &lt;code&gt;voicebox.list_captures&lt;/code&gt;, and &lt;code&gt;voicebox.list_profiles&lt;/code&gt; . Add that URL to the MCP server settings in Claude Code, Cursor, Windsurf, or Cline, and an agent can speak in a cloned personality .&lt;/p&gt;

&lt;p&gt;The takeaway: Voicebox is less a single feature than a local pipeline — clone, dictate, archive, and expose over HTTP — with the consent gate staying yours to enforce.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is jamiepine/voicebox the same product as Meta's Voicebox?
&lt;/h3&gt;

&lt;p&gt;No. Meta's Voicebox was a research model announced in June 2023, trained on more than 50,000 hours of audio and supporting six languages, and Meta declined to release the model or code over misuse risk . The tool covered here is jamiepine/voicebox — an unrelated MIT-licensed desktop app by the author of the Spacedrive file explorer, first released as 0.1.0 on January 27, 2026 . Same name, different lineage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does a 3-second audio clip actually work for voice cloning?
&lt;/h3&gt;

&lt;p&gt;Sometimes, but it is below the documented ideal. Some zero-shot engines will process a 3-second seed, yet the official docs recommend 10–30 seconds of clean, low-noise WAV speech in natural, complete sentences . Shorter clips are more sensitive to compression artifacts and background noise, so the "3-second" homepage headline omits the practical trade-off.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does Voicebox run on Linux?
&lt;/h3&gt;

&lt;p&gt;There is no prebuilt Linux binary as of v0.5.0 (April 25, 2026) — the team attributes this to GitHub runner disk-space limits . Linux users run it via Docker (&lt;code&gt;docker compose up&lt;/code&gt;, port 17493) or build from source, which requires Bun, Rust, Python 3.11+, and the Tauri prerequisites .&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use Voicebox without an internet connection?
&lt;/h3&gt;

&lt;p&gt;Yes, after the initial model download on first launch. Each TTS engine and Whisper ASR model runs locally once fetched, so generation and dictation work offline . An optional paid cloud backup and sync tier is planned but not active as of v0.5.0 (April 2026) .&lt;/p&gt;

&lt;h3&gt;
  
  
  How does the cost compare to ElevenLabs?
&lt;/h3&gt;

&lt;p&gt;Voicebox is free for local use under an MIT license . ElevenLabs is a hosted platform: Free at $0 for 10k credits, Starter at $5 for 30k credits (Instant Voice Cloning), and Creator at $22 for 100k credits (Professional Voice Cloning, which needs roughly 30 minutes of audio for fine-tuning) . Voicebox plans a paid cloud backup tier that is not yet live, and output-quality parity with ElevenLabs remains unverified in controlled tests as of April 2026 .&lt;/p&gt;

</description>
      <category>voicebox</category>
      <category>jamiepine</category>
      <category>voicecloning</category>
      <category>tts</category>
    </item>
  </channel>
</rss>
