<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    
    <title>GitHub TypeScript Monthly Trending Repositories</title>
    <description>Monthly Trending Repositories of TypeScript on GitHub</description>
    
    <pubDate>Mon, 10 Aug 2026 07:38:05 GMT</pubDate>
    <link>https://mshibanami.github.io/GitHubTrendingRSS</link>
    
    <item>
      <title>diegosouzapw/OmniRoute</title>
      <link>https://github.com/diegosouzapw/OmniRoute</link>
      <description>&lt;p&gt;Never stop coding. Free MIT AI gateway: one endpoint, 290+ providers (90+ free), 500+ models — Kimi, Claude, GPT, OpenAI, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline &amp; Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 500+ contributors&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/screenshots/MainOmniRoute.png&quot; alt=&quot;OmniRoute Dashboard&quot; width=&quot;820&quot; /&gt; 
 &lt;br /&gt; 
 &lt;br /&gt; 
 &lt;h1&gt;🚀 OmniRoute — The Free AI Gateway&lt;/h1&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/diagrams/readme-hero.svg?sanitize=true&quot; width=&quot;100%&quot; alt=&quot;OmniRoute — Never stop coding. Every AI tool → 291 providers — 90+ free — through one endpoint. Claude Code, Codex, Cursor, Cline, Copilot &amp;amp; Antigravity into FREE Claude / GPT / Gemini with auto-fallback. RTK + Caveman stacked compression saves 15–95% tokens (~89% avg) — never hit limits. 291 AI providers · 90+ free tiers · ~1.53B free tokens/mo · 19 routing strategies · $0 to start.&quot; /&gt; 
&lt;/div&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h2&gt;💰 ~1.53B Free Tokens / Month&lt;/h2&gt; 
&lt;/div&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Stacking free tiers by hand is painful — dozens of SDKs, dozens of rate limits, and no idea how much you actually have. OmniRoute aggregates the &lt;strong&gt;documented&lt;/strong&gt; free tiers of &lt;strong&gt;43 provider pools / 516 models&lt;/strong&gt; into one honest number and shows it live on the dashboard (&lt;code&gt;/dashboard/free-tiers&lt;/code&gt;).&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/diagrams/free-tier-budget.svg?sanitize=true&quot; width=&quot;100%&quot; alt=&quot;OmniRoute free-tier budget card: ~1.53B free tokens per month steady, up to ~2.15B in the first month with signup credits, from the documented free tiers of 43 provider pools / 516 models behind one endpoint. Honest pool-deduped math — each shared pool counted once (counting every rate limit 24/7 would read ~10B; not published), 15 providers ToS-flagged so you decide. Budget bar of the countable free pools with per-model grid (Mistral Large 3 1B, GPT-4o mini 150M, Gemini 2.5 Flash 60M … Claude Sonnet 4.5 25K), one-time first-month signup credits (vertex 300M, agentrouter 200M, predibase 25M, together 25M, glm-cn 20M, doubao 15M, ai21 10M, longcat 10M, deepseek 5M, hyperbolic 5M, nscale 5M), plus permanently-free no-token-cap providers (SiliconFlow, Z.AI GLM-Flash, Kilo, OpenCode Zen, baidu …) and a $10 OpenRouter top-up unlocking +24M/mo — surfaced separately so they never inflate the headline. Live used/remaining on /dashboard/free-tiers.&quot; /&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Animated summary of the live &lt;code&gt;/dashboard/free-tiers&lt;/code&gt; page. Full methodology (pool dedupe, credit tiers, provider terms): &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/reference/FREE_TIERS.md&quot;&gt;docs/reference/FREE_TIERS.md&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt; 
 &lt;p&gt;&lt;sub&gt;These figures are re-audited every two weeks against the live catalog and &lt;strong&gt;move both ways&lt;/strong&gt; — a provider ends a free tier and the number drops; a new one lands and it climbs. We publish what the catalog actually computes, never a rounded-up best case.&lt;/sub&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h3&gt; &lt;p&gt;⭐ Star the repo if OMNIROUTE helped you save money and make your work easier.&lt;/p&gt; &lt;/h3&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/diegosouzapw/OmniRoute&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/diegosouzapw/OmniRoute?style=social&quot; alt=&quot;Stars&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://trendshift.io/repositories/23589&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/23589&quot; alt=&quot;diegosouzapw%2FOmniRoute | Trendshift&quot; style=&quot;width: 250px; height: 55px;&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.star-history.com/diegosouzapw/omniroute&quot;&gt;&lt;img src=&quot;https://api.star-history.com/badge?repo=diegosouzapw/OmniRoute&amp;amp;theme=dark&quot; alt=&quot;Star History Rank&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;h3&gt;💬 Join the community&lt;/h3&gt; 
 &lt;p&gt;&lt;strong&gt;👋 Follow the maintainer — get new providers, releases &amp;amp; tips first:&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://www.linkedin.com/in/diegosouzapw/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Follow_Diego_on-LinkedIn-0A66C2?style=for-the-badge&amp;amp;logo=linkedin&amp;amp;logoColor=white&quot; alt=&quot;Follow Diego on LinkedIn&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/diegosouzapw&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/followers/diegosouzapw?style=for-the-badge&amp;amp;logo=github&amp;amp;logoColor=white&amp;amp;label=Follow%20on%20GitHub&amp;amp;color=181717&quot; alt=&quot;Follow @diegosouzapw on GitHub&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://discord.gg/U47eFqAXCn&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&amp;amp;logo=discord&amp;amp;logoColor=white&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://t.me/omnirouteOficial&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Telegram-26A5E4?style=for-the-badge&amp;amp;logo=telegram&amp;amp;logoColor=white&quot; alt=&quot;Telegram&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/WhatsApp_Global-25D366?style=for-the-badge&amp;amp;logo=whatsapp&amp;amp;logoColor=white&quot; alt=&quot;WhatsApp Global&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://chat.whatsapp.com/LTSpdFhXTxjH4R6CCNiKWz&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/WhatsApp_Brasil-25D366?style=for-the-badge&amp;amp;logo=whatsapp&amp;amp;logoColor=white&quot; alt=&quot;WhatsApp Brasil&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://omniroute.online&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Website-omniroute.online-blue?logo=google-chrome&amp;amp;logoColor=white&quot; alt=&quot;Website&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Questions, provider tips, roadmap &amp;amp; support → &lt;a href=&quot;https://discord.gg/U47eFqAXCn&quot;&gt;Discord&lt;/a&gt; · &lt;a href=&quot;https://t.me/omnirouteOficial&quot;&gt;Telegram&lt;/a&gt; · WhatsApp &lt;a href=&quot;https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t&quot;&gt;🌍 Global&lt;/a&gt; / &lt;a href=&quot;https://chat.whatsapp.com/LTSpdFhXTxjH4R6CCNiKWz&quot;&gt;🇧🇷 Brasil&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
 &lt;br /&gt; 
 &lt;h2&gt;🧩 Available&lt;/h2&gt; 
 &lt;p&gt;&lt;a href=&quot;https://www.npmjs.com/package/omniroute&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/omniroute?color=cb3837&amp;amp;logo=npm&quot; alt=&quot;npm version&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://img.shields.io/npm/dm/omniroute?label=npm/month&amp;amp;color=cb3837&amp;amp;logo=npm&quot; alt=&quot;NPM Monthly&quot; /&gt; &lt;a href=&quot;https://hub.docker.com/r/diegosouzapw/omniroute&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/v/diegosouzapw/omniroute?label=Docker%20Hub&amp;amp;logo=docker&amp;amp;color=2496ED&quot; alt=&quot;Docker Hub&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square&quot; alt=&quot;License: MIT&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://img.shields.io/docker/pulls/diegosouzapw/omniroute?label=docker%20pulls&amp;amp;logo=docker&amp;amp;color=2496ED&quot; alt=&quot;Docker Pulls&quot; /&gt; &lt;img src=&quot;https://img.shields.io/github/downloads/diegosouzapw/omniroute/total?style=flat&amp;amp;label=electron%20downloads&amp;amp;logo=electron&amp;amp;color=47848F&quot; alt=&quot;Electron Downloads&quot; /&gt;&lt;/p&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td align=&quot;right&quot;&gt;&lt;b&gt;🚀 Start&lt;/b&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-quick-start&quot;&gt;🚀 Quick Start&lt;/a&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-more-install-methods--docker-source-pnpm-arch&quot;&gt;📦 Install&lt;/a&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-works-the-second-you-install-it--no-keys-no-config&quot;&gt;🆓 Zero-config&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td align=&quot;right&quot;&gt;&lt;b&gt;💡 Learn&lt;/b&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-the-promise&quot;&gt;💥 The Promise&lt;/a&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-why-omniroute&quot;&gt;🤔 Why OmniRoute&lt;/a&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-what-sets-omniroute-apart&quot;&gt;🏆 What Sets Apart&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td align=&quot;right&quot;&gt;&lt;b&gt;⚙️ Features&lt;/b&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-combos--the-flagship&quot;&gt;🎯 Combos&lt;/a&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-291-ai-providers--90-free&quot;&gt;🌐 Providers&lt;/a&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-full-cli--a2a--mcp&quot;&gt;🔌 CLI &amp;amp; MCP&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td align=&quot;right&quot;&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#%EF%B8%8F-save-1595-tokens--automatically&quot;&gt;🗜️ Compression&lt;/a&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#%EF%B8%8F-where-omniroute-runs--anywhere&quot;&gt;🖥️ Where It Runs&lt;/a&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-private--local-first&quot;&gt;🔒 Private&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td align=&quot;right&quot;&gt;&lt;b&gt;👀 See it&lt;/b&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-omniroute-in-action&quot;&gt;🎬 In Action&lt;/a&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-whats-new&quot;&gt;✨ What&#39;s New&lt;/a&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-compatible-clis--coding-agents&quot;&gt;🤖 Compatible CLIs&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td align=&quot;right&quot;&gt;&lt;b&gt;💚 Support&lt;/b&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-support-omniroute&quot;&gt;💚 Support / Donate&lt;/a&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-community--help&quot;&gt;💬 Community&lt;/a&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-sponsors&quot;&gt;💖 Sponsors&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td align=&quot;right&quot;&gt;&lt;b&gt;📦 Project&lt;/b&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#%EF%B8%8F-tech-stack&quot;&gt;🛠️ Tech Stack&lt;/a&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-documentation&quot;&gt;📖 Docs&lt;/a&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-500-contributors&quot;&gt;👥 Contributors&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
&lt;/div&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;b&gt;🌐 In 43 languages&lt;/b&gt; 
 &lt;br /&gt;
 &lt;br /&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/us.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;English (en)&quot; title=&quot;English (en)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/pt-BR/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/br.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Português — Brasil (pt-BR)&quot; title=&quot;Português — Brasil (pt-BR)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/pt/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/pt.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Português (pt)&quot; title=&quot;Português (pt)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/es/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/es.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Español (es)&quot; title=&quot;Español (es)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/fr/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/fr.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Français (fr)&quot; title=&quot;Français (fr)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/it/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/it.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Italiano (it)&quot; title=&quot;Italiano (it)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/de/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/de.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Deutsch (de)&quot; title=&quot;Deutsch (de)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/nl/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/nl.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Nederlands (nl)&quot; title=&quot;Nederlands (nl)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/ru/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/ru.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Русский (ru)&quot; title=&quot;Русский (ru)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/uk-UA/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/ua.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Українська (uk-UA)&quot; title=&quot;Українська (uk-UA)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/pl/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/pl.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Polski (pl)&quot; title=&quot;Polski (pl)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/cs/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/cz.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Čeština (cs)&quot; title=&quot;Čeština (cs)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/sk/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/sk.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Slovenčina (sk)&quot; title=&quot;Slovenčina (sk)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/ro/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/ro.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Română (ro)&quot; title=&quot;Română (ro)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/hu/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/hu.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Magyar (hu)&quot; title=&quot;Magyar (hu)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/bg/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/bg.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Български (bg)&quot; title=&quot;Български (bg)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/da/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/dk.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Dansk (da)&quot; title=&quot;Dansk (da)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/fi/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/fi.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Suomi (fi)&quot; title=&quot;Suomi (fi)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/no/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/no.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Norsk (no)&quot; title=&quot;Norsk (no)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/sv/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/se.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Svenska (sv)&quot; title=&quot;Svenska (sv)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/zh-CN/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/cn.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;中文 — 简体 (zh-CN)&quot; title=&quot;中文 — 简体 (zh-CN)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/zh-TW/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/tw.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;中文 — 繁體 (zh-TW)&quot; title=&quot;中文 — 繁體 (zh-TW)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/ja/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/jp.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;日本語 (ja)&quot; title=&quot;日本語 (ja)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/ko/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/kr.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;한국어 (ko)&quot; title=&quot;한국어 (ko)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/th/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/th.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;ไทย (th)&quot; title=&quot;ไทย (th)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/vi/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/vn.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Tiếng Việt (vi)&quot; title=&quot;Tiếng Việt (vi)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/id/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/id.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Bahasa Indonesia (id)&quot; title=&quot;Bahasa Indonesia (id)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/ms/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/my.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Bahasa Melayu (ms)&quot; title=&quot;Bahasa Melayu (ms)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/phi/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/ph.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Filipino (phi)&quot; title=&quot;Filipino (phi)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/in/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/in.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;हिन्दी (in)&quot; title=&quot;हिन्दी (in)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/hi/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/in.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;हिन्दी (hi)&quot; title=&quot;हिन्दी (hi)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/gu/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/in.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;ગુજરાતી (gu)&quot; title=&quot;ગુજરાતી (gu)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/mr/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/in.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;मराठी (mr)&quot; title=&quot;मराठी (mr)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/ta/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/in.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;தமிழ் (ta)&quot; title=&quot;தமிழ் (ta)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/te/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/in.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;తెలుగు (te)&quot; title=&quot;తెలుగు (te)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/bn/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/bd.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;বাংলা (bn)&quot; title=&quot;বাংলা (bn)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/ur/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/pk.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;اردو (ur)&quot; title=&quot;اردو (ur)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/fa/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/ir.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;فارسی (fa)&quot; title=&quot;فارسی (fa)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/ar/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/sa.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;العربية (ar)&quot; title=&quot;العربية (ar)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/he/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/il.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;עברית (he)&quot; title=&quot;עברית (he)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/tr/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/tr.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Türkçe (tr)&quot; title=&quot;Türkçe (tr)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/az/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/az.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Azərbaycan (az)&quot; title=&quot;Azərbaycan (az)&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/i18n/sw/README.md&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/flags/tz.svg?sanitize=true&quot; width=&quot;30&quot; alt=&quot;Kiswahili (sw)&quot; title=&quot;Kiswahili (sw)&quot; /&gt;&lt;/a&gt; 
&lt;/div&gt; 
&lt;br /&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h2&gt;🆓 Works the second you install it — no keys, no config&lt;/h2&gt; 
&lt;/div&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/diagrams/works-zero-config.svg?sanitize=true&quot; width=&quot;100%&quot; alt=&quot;Works the second you install it — zero config. Three steps: 1. Install — npm i -g omniroute, server boots on localhost:20128. 2. Point your tool at http://localhost:20128/v1 — any OpenAI-compatible tool (Claude Code, Cursor, Cline). 3. It answers — call model auto for an instant reply, with no API key, no signup, no configuration. Keyless free providers OpenCode Free and Felo are pre-wired into the auto combo, so a fresh install responds out of the box.&quot; /&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Fresh install, zero credentials — `auto` already works:
curl http://localhost:20128/v1/chat/completions \
  -H &quot;Content-Type: application/json&quot; \
  -d &#39;{&quot;model&quot;:&quot;auto&quot;,&quot;messages&quot;:[{&quot;role&quot;:&quot;user&quot;,&quot;content&quot;:&quot;Hello!&quot;}]}&#39;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;sub&gt;Prefer a specific free backend? Call it directly, e.g. &lt;code&gt;oc/…&lt;/code&gt; (OpenCode Free) or &lt;code&gt;felo/…&lt;/code&gt; (Felo). Then graduate to &lt;code&gt;auto&lt;/code&gt; and let OmniRoute pick.&lt;/sub&gt;&lt;/p&gt; 
&lt;p&gt;&lt;sub&gt;📦 Copy-paste quickstart scripts for &lt;strong&gt;Python, Node.js, PHP, and cURL&lt;/strong&gt; → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/examples/quickstart/&quot;&gt;&lt;code&gt;examples/quickstart/&lt;/code&gt;&lt;/a&gt;&lt;/sub&gt;&lt;/p&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h1&gt;💥 The Promise&lt;/h1&gt; 
&lt;/div&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/diagrams/promise-pillars.svg?sanitize=true&quot; width=&quot;100%&quot; alt=&quot;The Promise — One endpoint. 291 providers. Never stop building — OmniRoute picks the cheapest one that works. Six pillars: Never hit limits (auto-fallback across 291 providers in milliseconds, zero downtime) · Save up to 95% tokens (RTK + Caveman stacked compression cuts 15–95%, ~89% avg on tool-heavy sessions) · $0 to start (90+ free tiers, 40+ free forever — no card needed) · Every tool works (33 coding agents through one config) · One endpoint (OpenAI ↔ Claude ↔ Gemini ↔ Responses API at /v1) · Production-grade (circuit breakers, TLS stealth, MCP 105 tools, A2A, memory, guardrails, evals — 25,000+ tests).&quot; /&gt; 
&lt;br /&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h1&gt;🤔 Why OmniRoute?&lt;/h1&gt; 
&lt;/div&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/diagrams/why-pain-fix.svg?sanitize=true&quot; width=&quot;100%&quot; alt=&quot;Why OmniRoute — stop juggling 10 dashboards, dead API keys and surprise bills. Ten daily pains vs fixes: quota expiring unused → maximize subscriptions; rate limits mid-coding → 4-tier auto-fallback (Subscription → API → Cheap → Free); tool outputs burning tokens → RTK + Caveman compression (15–95%); expensive APIs → cost-optimized routing; every tool its own setup → one endpoint, one dashboard; AI blocked → 3-level proxy + TLS stealth; dead keys → 3-layer resilience (circuit breakers, key cooldown, model lockout); team sharing one subscription → key pools with fair-share quotas; prompts through someone&#39;s cloud → local-first with AES-256-GCM encrypted keys; no spend visibility → live analytics (usage, quota, savings, p95 latency).&quot; /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/diagrams/tier-cascade.svg?sanitize=true&quot; width=&quot;100%&quot; alt=&quot;OmniRoute request flow: your IDE or CLI (Claude Code, Cursor, Cline…) calls one local endpoint (http://localhost:20128/v1); the OmniRoute Smart Router (RTK + Caveman compression, 19 routing strategies, circuit breakers, TLS stealth, MCP, A2A, guardrails) auto-falls back across 4 provider tiers — Tier 1 Subscription (Claude Code, Codex, Copilot), quota out? Tier 2 API Key (DeepSeek, Groq, xAI), budget hit? Tier 3 Cheap (GLM $0.5, MiniMax $0.2), budget hit? Tier 4 Free (Kiro, Qoder, Pollinations) — always on.&quot; /&gt; 
&lt;/div&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h2&gt;🤝 Supported by our Open Source Friends&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.kimi.com/code?aff=omniroute&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/sponsors/kimi-k3-banner.png&quot; width=&quot;100%&quot; alt=&quot;Kimi K3 — Open Frontier Intelligence · 2.8T parameters · 1M-token context&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Want to join as an Open Source Friend?&lt;/strong&gt; These are the companies that back open source and help keep OmniRoute moving — and we say publicly where every token they give us goes. Reach out: &lt;a href=&quot;mailto:diegosouza.pw@outlook.com&quot;&gt;diegosouza.pw@outlook.com&lt;/a&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt; &lt;a href=&quot;https://www.kimi.com/code?aff=omniroute&quot;&gt; 
     &lt;picture&gt; 
      &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;public/providers/kimi-logomark-dark.svg&quot; /&gt; 
      &lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/kimi-logomark-light.svg?sanitize=true&quot; width=&quot;64&quot; alt=&quot;Kimi (Moonshot AI)&quot; /&gt; 
     &lt;/picture&gt; &lt;/a&gt; &lt;br /&gt;&lt;b&gt;Kimi&lt;/b&gt;&lt;br /&gt;&lt;sub&gt;Moonshot AI&lt;/sub&gt;&lt;br /&gt;&lt;br /&gt; &lt;img src=&quot;https://img.shields.io/badge/Founding_Friend-1783FF?style=flat-square&quot; alt=&quot;Founding Open Source Friend&quot; /&gt; &lt;/td&gt; 
   &lt;td&gt; Thanks to &lt;b&gt;Kimi (Moonshot AI)&lt;/b&gt;, our founding Open Source Friend, for backing this project! Kimi is the AI lab behind the open-weight K2 and K3 model families — &lt;b&gt;Kimi K3&lt;/b&gt; delivers a 1M-token context window, native vision and frontier-level coding at a fraction of closed-model prices, and works out of the box with Claude Code, Codex and every coding tool OmniRoute serves. &lt;br /&gt;&lt;br /&gt; &lt;b&gt;What Kimi&#39;s support powers:&lt;/b&gt; Kimi&#39;s API credits power OmniRoute&#39;s AI-validated release pipeline — the &lt;i&gt;merge validation powered by Kimi K3&lt;/i&gt; stage that reviews every pull request before it ships — plus day-to-day feature development. First-class Kimi support ships on both rails: the direct &lt;a href=&quot;https://platform.kimi.ai?aff=omniroute&quot;&gt;Kimi API&lt;/a&gt; (&lt;code&gt;kimi-k3&lt;/code&gt;) and the &lt;a href=&quot;https://www.kimi.com/code?aff=omniroute&quot;&gt;Kimi Code coding plan&lt;/a&gt; (OAuth and API key). OmniRoute is also the first Brazilian open-source project in Kimi&#39;s support program. &lt;a href=&quot;https://platform.kimi.ai?aff=omniroute&quot;&gt;&lt;b&gt;Get a Kimi API key →&lt;/b&gt;&lt;/a&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt; &lt;a href=&quot;https://cheaperinference.com/?utm_source=omniroute&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/cheaperinference.svg?sanitize=true&quot; width=&quot;64&quot; alt=&quot;Cheaper Inference&quot; /&gt; &lt;/a&gt; &lt;br /&gt;&lt;b&gt;Cheaper Inference&lt;/b&gt;&lt;br /&gt;&lt;sub&gt;cheaperinference.com&lt;/sub&gt;&lt;br /&gt;&lt;br /&gt; &lt;img src=&quot;https://img.shields.io/badge/Open_Source_Friend-31f889?style=flat-square&amp;amp;labelColor=04170d&quot; alt=&quot;Open Source Friend&quot; /&gt; &lt;/td&gt; 
   &lt;td&gt; Thanks to &lt;b&gt;Cheaper Inference&lt;/b&gt;, an OmniRoute Open Source Friend, for backing this project! Cheaper Inference is a cost-ranked gateway that resells 42 frontier models — Claude, GPT-5.x, Gemini, Kimi K3, GLM, DeepSeek, Grok and MiniMax — behind one OpenAI-compatible endpoint, routing each request to the cheapest eligible provider without ever charging above the model maker&#39;s list price. &lt;br /&gt;&lt;br /&gt; &lt;b&gt;First-class support in OmniRoute:&lt;/b&gt; Chat Completions, the native &lt;code&gt;/v1/responses&lt;/code&gt; endpoint, vision, tool calling and 3 image models (&lt;code&gt;grok-imagine&lt;/code&gt;, &lt;code&gt;nano-banana-pro&lt;/code&gt;, &lt;code&gt;nano-banana-2&lt;/code&gt;, reachable as &lt;code&gt;cheaperinference/&amp;lt;model&amp;gt;&lt;/code&gt;). &lt;a href=&quot;https://cheaperinference.com/?utm_source=omniroute&quot;&gt;&lt;b&gt;Get an API key →&lt;/b&gt;&lt;/a&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;p&gt;&lt;sub&gt;Links tagged &lt;code&gt;aff=omniroute&lt;/code&gt; are partner links. They fund the project at no extra cost to you.&lt;/sub&gt;&lt;/p&gt; 
&lt;br /&gt; 
&lt;details open&gt; 
 &lt;summary&gt;&lt;sub&gt;&lt;b&gt;🎟️ Affiliates Promo&lt;/b&gt; — free signup coupons from providers we don&#39;t sponsor (click to expand)&lt;/sub&gt;&lt;/summary&gt; 
 &lt;p&gt;&lt;sub&gt;&lt;i&gt;This section is for referral/coupon codes only. Sponsored partnerships live in &lt;b&gt;🤝 Supported by our Open Source Friends&lt;/b&gt; above. OmniRoute has no sponsorship or partnership with the providers listed here — these are public coupons anyone can use.&lt;/i&gt;&lt;/sub&gt;&lt;/p&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; width=&quot;120&quot;&gt; &lt;a href=&quot;https://agentrouter.org/register?aff=70LM&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/agentrouter.png&quot; width=&quot;32&quot; alt=&quot;AgentRouter&quot; /&gt; &lt;/a&gt; &lt;br /&gt;&lt;sub&gt;&lt;b&gt;AgentRouter&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;agentrouter.org&lt;/sub&gt; &lt;/td&gt; 
    &lt;td&gt; &lt;sub&gt;&lt;b&gt;&lt;a href=&quot;https://agentrouter.org/register?aff=70LM&quot;&gt;AgentRouter&lt;/a&gt;&lt;/b&gt; — affiliate signup · &lt;b&gt;$100 free credits&lt;/b&gt; on signup (free server, expect higher latency — best for testing, not production). First-class support in OmniRoute since &lt;b&gt;v3.8.50&lt;/b&gt;: Chat Completions, the Anthropic-compatible wire format and the OpenAI-compatible path. Available models include &lt;code&gt;claude-opus-4-8&lt;/code&gt;, &lt;code&gt;claude-opus-5&lt;/code&gt;, &lt;code&gt;gpt-5.6-sol&lt;/code&gt; and more. &lt;b&gt;&lt;a href=&quot;https://agentrouter.org/register?aff=70LM&quot;&gt;Grab your $100 →&lt;/a&gt;&lt;/b&gt;&lt;/sub&gt; &lt;br /&gt;&lt;br /&gt; &lt;sub&gt;⚠️ &lt;i&gt;Affiliate link — OmniRoute has no sponsorship or partnership with this provider.&lt;/i&gt;&lt;/sub&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;p&gt;&lt;sub&gt;Know another provider with a generous free signup coupon that benefits OmniRoute users? Open an issue and we&#39;ll add it here.&lt;/sub&gt;&lt;/p&gt; 
&lt;/details&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h2&gt;🎯 Combos — The Flagship&lt;/h2&gt; 
&lt;/div&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/diagrams/strategies-grid.svg?sanitize=true&quot; width=&quot;100%&quot; alt=&quot;All 19 combo routing strategies animated — one tile per strategy: priority, fill-first, weighted, round-robin, p2c, least-used, random, strict-random, cost-optimized, headroom, reset-window, reset-aware, context-relay, context-optimized, cache-optimized, lkgp, auto, fusion, pipeline. See the table above for what each one does.&quot; /&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;A &lt;strong&gt;combo&lt;/strong&gt; is a chain of models OmniRoute routes across &lt;strong&gt;automatically&lt;/strong&gt;. Quota runs out, a provider fails, or costs spike — the combo silently slides to the next model. &lt;strong&gt;This is what makes OmniRoute unbreakable.&lt;/strong&gt; 🛡️&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;⚡ Zero-config — just use &lt;code&gt;auto&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;No combo to create. Set your model to &lt;code&gt;auto&lt;/code&gt; (or a variant) and OmniRoute builds a virtual combo from your connected providers, scored live:&lt;/p&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;th align=&quot;left&quot;&gt;Model ID&lt;/th&gt;
   &lt;th align=&quot;left&quot;&gt;What it optimizes for&lt;/th&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;code&gt;auto&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;🎯 Balanced default (LKGP — sticks to your last good provider)&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;code&gt;auto/coding&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;🧑‍💻 Quality-first weights for code generation&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;code&gt;auto/fast&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;⚡ Lowest latency first&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;code&gt;auto/cheap&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;💰 Cheapest per token first&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;code&gt;auto/offline&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;🔋 Most quota / rate-limit headroom first&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;code&gt;auto/smart&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;🔭 Quality-first + 10% exploration to discover better models&lt;/td&gt;
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h2&gt;&lt;/h2&gt; 
&lt;h3&gt;🔀 Or build your own — 19 routing strategies&lt;/h3&gt; 
&lt;p&gt;All &lt;strong&gt;19&lt;/strong&gt; strategies — mix &amp;amp; match per combo step:&lt;/p&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;th&gt;#&lt;/th&gt; 
   &lt;th align=&quot;left&quot;&gt;Strategy&lt;/th&gt; 
   &lt;th align=&quot;left&quot;&gt;What it does&lt;/th&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;1&lt;/td&gt; 
   &lt;td nowrap&gt;&lt;code&gt;priority&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;First-target ordered list — drain each before the next 🥇&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;2&lt;/td&gt; 
   &lt;td nowrap&gt;&lt;code&gt;fill-first&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Fill each target&#39;s quota fully before moving on&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;3&lt;/td&gt; 
   &lt;td nowrap&gt;&lt;code&gt;weighted&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Weighted random by per-target weight&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt; 
   &lt;td nowrap&gt;&lt;code&gt;round-robin&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Cycle through targets in order&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;5&lt;/td&gt; 
   &lt;td nowrap&gt;&lt;code&gt;p2c&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Power-of-two-choices random load balancing&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;6&lt;/td&gt; 
   &lt;td nowrap&gt;&lt;code&gt;least-used&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Pick the target with the lowest current load&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;7&lt;/td&gt; 
   &lt;td nowrap&gt;&lt;code&gt;random&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Uniform random pick (deduplicated)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;8&lt;/td&gt; 
   &lt;td nowrap&gt;&lt;code&gt;strict-random&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Random without de-duplicating repeats 🎲&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;9&lt;/td&gt; 
   &lt;td nowrap&gt;&lt;code&gt;cost-optimized&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Minimize $ per request from live catalog pricing 💸&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;10&lt;/td&gt; 
   &lt;td nowrap&gt;&lt;code&gt;headroom&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Pick the target with the most remaining quota&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;11&lt;/td&gt; 
   &lt;td nowrap&gt;&lt;code&gt;reset-window&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Prefer the target whose quota window resets soonest&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;12&lt;/td&gt; 
   &lt;td nowrap&gt;&lt;code&gt;reset-aware&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Rank by quota reset time — short windows first 📊&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;13&lt;/td&gt; 
   &lt;td nowrap&gt;&lt;code&gt;context-relay&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Hand off context across targets for long conversations 🧠&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;14&lt;/td&gt; 
   &lt;td nowrap&gt;&lt;code&gt;context-optimized&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Pick the best fit for the current context size&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;15&lt;/td&gt; 
   &lt;td nowrap&gt;&lt;code&gt;cache-optimized&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Pin each reusable prompt prefix to the same account — maximize prompt-cache hits 🎯&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;16&lt;/td&gt; 
   &lt;td nowrap&gt;&lt;code&gt;lkgp&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Last-Known-Good Path — sticky to the last successful target&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;17&lt;/td&gt; 
   &lt;td nowrap&gt;&lt;code&gt;auto&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;12-factor live scoring across every connection 🤖&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;18&lt;/td&gt; 
   &lt;td nowrap&gt;&lt;code&gt;fusion&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Fan out to a panel of models + a judge synthesizes one answer 🧬&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt;19&lt;/td&gt; 
   &lt;td nowrap&gt;&lt;code&gt;pipeline&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Chain steps — each target&#39;s output feeds the next one 🔗&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;p&gt;&lt;sub&gt;The Auto-Combo engine scores every candidate on &lt;strong&gt;12 factors&lt;/strong&gt; (health, quota, cost, latency, success rate, freshness…) — see &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/routing/AUTO-COMBO.md&quot;&gt;&lt;code&gt;docs/routing/AUTO-COMBO.md&lt;/code&gt;&lt;/a&gt;.&lt;/sub&gt;&lt;/p&gt; 
&lt;h2&gt;&lt;/h2&gt; 
&lt;h3&gt;🧱 Resilience is built in (3 independent layers)&lt;/h3&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/diagrams/resilience-layers.svg?sanitize=true&quot; width=&quot;100%&quot; alt=&quot;OmniRoute resilience — 3 independent self-healing layers, the right layer for the right failure. Layer 1 provider circuit breaker (whole provider): trips only on 408/5xx, thresholds OAuth 3× / API-key 5× / local 2×, resets 60s/30s/15s into a HALF-OPEN probe, lazy recovery; while OPEN the combo reroutes to the next provider. Layer 2 connection cooldown (one key/account): base 5s OAuth / 3s API-key, exponential ×2 backoff with anti-thundering-herd guard, 429 honors Retry-After, success clears all error state; one cooling key is skipped while sibling keys keep serving. Layer 3 model lockout (one model): per-model 429, local 404 or mode denials lock just that model — never the whole connection. Terminal states (banned, expired, credits exhausted) are for the operator, not cooldowns.&quot; /&gt; 
&lt;p&gt;&lt;sub&gt;📖 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/routing/AUTO-COMBO.md&quot;&gt;Auto-Combo Engine&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/architecture/RESILIENCE_GUIDE.md&quot;&gt;Resilience Guide&lt;/a&gt;&lt;/sub&gt;&lt;/p&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h2&gt;🏆 What Sets OmniRoute Apart&lt;/h2&gt; 
&lt;/div&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/diagrams/comparison-table.svg?sanitize=true&quot; width=&quot;100%&quot; alt=&quot;What sets OmniRoute apart — comparison table vs 9router, OpenRouter, CLIProxyAPI and LiteLLM across 13 capabilities. OmniRoute: 291 providers, 90+ free providers built-in, 19 routing strategies, 12-engine token compression, built-in MCP server with 105 tools, A2A agent protocol, persistent memory, guardrails, cloud agents, TLS fingerprint stealth, Desktop/Termux/PWA, 43 i18n UI locales, 100% MIT self-hosted. OmniRoute is the only one with the full set; competitors show a mix of checks, partials and crosses. Verified from each project&#39;s docs.&quot; /&gt; 
&lt;p&gt;&lt;sub&gt;📊 Full methodology &amp;amp; per-feature detail vs 9router, OpenRouter, CLIProxyAPI &amp;amp; LiteLLM → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md&quot;&gt;&lt;code&gt;docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md&lt;/code&gt;&lt;/a&gt;&lt;/sub&gt;&lt;/p&gt; 
&lt;br /&gt; 
&lt;h2&gt;💚 Support OmniRoute&lt;/h2&gt; 
&lt;p&gt;OmniRoute is MIT-licensed and maintained in the open. If it saves you time or money, here&#39;s how to keep it independent — pick whatever fits you. Sponsorship never affects routing priority; it buys visibility, not ranking.&lt;/p&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;td nowrap&gt;⭐ &lt;b&gt;Star the repo&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Free — genuinely helps visibility&lt;/td&gt;
   &lt;td&gt;&lt;a href=&quot;https://github.com/diegosouzapw/OmniRoute&quot;&gt;Star OmniRoute&lt;/a&gt;&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;🐙 &lt;b&gt;GitHub Sponsors&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;One-off or monthly · zero platform fee&lt;/td&gt;
   &lt;td&gt;&lt;a href=&quot;https://github.com/sponsors/diegosouzapw&quot;&gt;github.com/sponsors/diegosouzapw&lt;/a&gt;&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;☕ &lt;b&gt;Ko-fi&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Quick one-off tip, no signup for the donor&lt;/td&gt;
   &lt;td&gt;&lt;a href=&quot;https://ko-fi.com/diegosouzapw&quot;&gt;ko-fi.com/diegosouzapw&lt;/a&gt;&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;🧋 &lt;b&gt;Buy Me a Coffee&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Small, informal gesture&lt;/td&gt;
   &lt;td&gt;&lt;a href=&quot;https://www.buymeacoffee.com/diegosouzapw&quot;&gt;buymeacoffee.com/diegosouzapw&lt;/a&gt;&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;🖐 &lt;b&gt;Liberapay&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Recurring · non-profit · open source&lt;/td&gt;
   &lt;td&gt;&lt;a href=&quot;https://liberapay.com/diegosouzapw&quot;&gt;liberapay.com/diegosouzapw&lt;/a&gt;&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;🇧🇷 &lt;b&gt;PIX&lt;/b&gt; (Brazil)&lt;/td&gt;
   &lt;td&gt;Instant, no fees&lt;/td&gt;
   &lt;td&gt;key &amp;amp; QR below&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;₿ &lt;b&gt;Crypto&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;BTC · ETH · USDT-TRC20 · USDC-Solana&lt;/td&gt;
   &lt;td&gt;addresses below&lt;/td&gt;
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;🇧🇷 PIX&lt;/strong&gt; — instant, no fees (Brazil)&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/assets/pix-qr.png&quot; width=&quot;140&quot; align=&quot;right&quot; alt=&quot;OmniRoute PIX QR code&quot; /&gt; 
&lt;p&gt;Key (random): &lt;code&gt;5d865059-bc44-483a-962d-43ceb80126eb&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;Pix copia-e-cola:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;00020101021126580014br.gov.bcb.pix01365d865059-bc44-483a-962d-43ceb80126eb5204000053039865802BR5922OMNIROUTE CONTRIBUICAO6006BRASIL62070503***630475DD
&lt;/code&gt;&lt;/pre&gt; 
&lt;br clear=&quot;right&quot; /&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;₿ Crypto&lt;/b&gt; — BTC · ETH · USDT-TRC20 · USDC-Solana (click to expand)&lt;/summary&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;₿ BTC&lt;/b&gt;&lt;/td&gt;
    &lt;td nowrap&gt;Bitcoin (SegWit)&lt;/td&gt;
    &lt;td&gt;&lt;code&gt;bc1qh00smz004sy85wyl28v77tenkt3ckl6eaep7fd&lt;/code&gt;&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;Ξ ETH&lt;/b&gt;&lt;/td&gt;
    &lt;td nowrap&gt;Ethereum (ERC20)&lt;/td&gt;
    &lt;td&gt;&lt;code&gt;0x64Cf6B68A6Ff34288e89172950a2d00102337a84&lt;/code&gt;&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;₮ USDT&lt;/b&gt;&lt;/td&gt;
    &lt;td nowrap&gt;Tron (TRC20)&lt;/td&gt;
    &lt;td&gt;&lt;code&gt;TKAF41JpuQrHbKTnsQa9svJE2T192Hvsc2&lt;/code&gt;&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;$ USDC&lt;/b&gt;&lt;/td&gt;
    &lt;td nowrap&gt;Solana&lt;/td&gt;
    &lt;td&gt;&lt;code&gt;2emNNZzVVWQc3FQ2wk9M6qXUQmW8AKdjjL174fXR28Tu&lt;/code&gt;&lt;/td&gt;
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;p&gt;&lt;sub&gt;⚠️ Send each coin only on the network shown — sending on the wrong network can lose the funds.&lt;/sub&gt;&lt;/p&gt; 
&lt;/details&gt; 
&lt;p&gt;🐛 Found a bug or have feedback? Open a &lt;a href=&quot;https://github.com/diegosouzapw/OmniRoute/discussions&quot;&gt;Discussion&lt;/a&gt;.&lt;/p&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h2&gt;✨ What&#39;s New&lt;/h2&gt; 
&lt;/div&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Recent highlights from &lt;strong&gt;v3.8.20 → v3.8.49&lt;/strong&gt;. Full history in &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/CHANGELOG.md&quot;&gt;&lt;code&gt;CHANGELOG.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;🗜️ Compression hardening&lt;/strong&gt; — default-on inflation guard, Caveman packs for DE / FR / JA + Chinese (wényán), RTK filters for Gradle &amp;amp; .NET. → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/compression/COMPRESSION_ENGINES.md&quot;&gt;Compression&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;💸 Honest flat-rate cost&lt;/strong&gt; — subscription / coding-plan providers read &lt;strong&gt;$0&lt;/strong&gt; in cost analytics; budget, quota &amp;amp; routing keep estimating. → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/reference/API_REFERENCE.md&quot;&gt;API Reference&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;⚖️ Quota-Share routing&lt;/strong&gt; — split a shared account&#39;s quota fairly across pooled keys, work-conserving so idle slices are lent out. → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/architecture/RESILIENCE_GUIDE.md&quot;&gt;Resilience Guide&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;🤖 One-command CLI/agent setup&lt;/strong&gt; — &lt;code&gt;setup-*&lt;/code&gt; configures 12+ coding tools; &lt;code&gt;omniroute launch&lt;/code&gt; / &lt;code&gt;launch-codex&lt;/code&gt; are zero-config. → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/guides/CLI-INTEGRATIONS.md&quot;&gt;CLI Integrations&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;🛰️ Remote mode&lt;/strong&gt; — drive a remote OmniRoute with scoped tokens (&lt;code&gt;connect&lt;/code&gt; / &lt;code&gt;contexts&lt;/code&gt; / &lt;code&gt;tokens&lt;/code&gt;) + an &lt;code&gt;antigravity&lt;/code&gt; OAuth helper for VPS installs. → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/guides/REMOTE-MODE.md&quot;&gt;Remote Mode&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;🧭 Smarter auto-routing&lt;/strong&gt; — &lt;code&gt;auto/&amp;lt;category&amp;gt;:&amp;lt;tier&amp;gt;&lt;/code&gt; combos, &lt;strong&gt;Fusion&lt;/strong&gt; (model panel + judge), task-aware routing, per-request model / mode / USD-budget overrides. → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/routing/AUTO-COMBO.md&quot;&gt;Auto-Combo&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;🗜️ Pluggable compression&lt;/strong&gt; — 12 composable engines + Compression Studios: LLMLingua-2, two-tier Ultra, omniglyph, per-step fidelity gate, GCF v3.2, drag-reorder editor. → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/compression/COMPRESSION_ENGINES.md&quot;&gt;Compression&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;🕵️ Transparent MITM decrypt (TPROXY)&lt;/strong&gt; — capture CLIs that ignore proxy env vars, with a per-SNI CA + trust-store installer. → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/security/MITM-TPROXY-DECRYPT.md&quot;&gt;MITM/TPROXY&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;💸 Cost telemetry everywhere&lt;/strong&gt; — &lt;code&gt;X-OmniRoute-*&lt;/code&gt; cost/usage headers on every endpoint, cache-HIT savings header, per-key USD spend quotas. → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/reference/API_REFERENCE.md&quot;&gt;API Reference&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;🧠 Memory you control&lt;/strong&gt; — off by default, opt-in int8 vector quantization + typed decay, per-request &lt;code&gt;x-omniroute-no-memory&lt;/code&gt;. → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/frameworks/MEMORY.md&quot;&gt;Memory&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;🛡️ Security&lt;/strong&gt; — prompt-injection guard on every LLM route (red-team suite), opt-in credential-masking guardrail (redacts leaked API keys/secrets in both directions), free DuckDuckGo last-resort web search, and an optional OIDC login gate for the dashboard (password login always stays available). → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/security/GUARDRAILS.md&quot;&gt;Guardrails&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;🖼️ New endpoints&lt;/strong&gt; — &lt;code&gt;/v1/ocr&lt;/code&gt; (Mistral OCR) and &lt;code&gt;/v1/audio/translations&lt;/code&gt; (Whisper-style) round out the media surface. → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/reference/API_REFERENCE.md&quot;&gt;API Reference&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;🎨 Image / video / audio generation&lt;/strong&gt; — one API for media: xAI Grok Imagine &amp;amp; Novita AI video, ComfyUI, Freepik, Adobe Firefly, Microsoft Designer, Google Imagen, Segmind, EdgeTTS. → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/reference/API_REFERENCE.md&quot;&gt;API Reference&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;🌍 Deployment &amp;amp; ops&lt;/strong&gt; — reverse-proxy &lt;code&gt;basePath&lt;/code&gt;, browser-language auto-detect, per-key device tracking, root-less MITM trust, zh-TW localization. → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/reference/ENVIRONMENT.md&quot;&gt;Environment&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;🤝 More providers &amp;amp; agents&lt;/strong&gt; — Cursor Cloud Agent, Grok Build (xAI) with browser + OAuth login, Ollama first-class card, Claude Opus 5 &amp;amp; Sonnet 5, Kimi official partnership (Code/Web/Moonshot), Zed, Requesty, SenseNova, Yuanbao, Agnes AI… and a refreshed &lt;strong&gt;291-provider catalog&lt;/strong&gt;. → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/reference/PROVIDER_REFERENCE.md&quot;&gt;Providers&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;📡 Routing transparency&lt;/strong&gt; — every response carries an &lt;code&gt;X-OmniRoute-Decision&lt;/code&gt; header naming the strategy/provider/latency that served it, a new &lt;code&gt;cache-optimized&lt;/code&gt; combo strategy + Auto-Combo &lt;code&gt;cacheAffinity&lt;/code&gt; factor route repeat requests back to the connection holding the cached prefix, and a read-only &lt;code&gt;/v1/auto-combo/{channel}/candidates&lt;/code&gt; endpoint exposes an &lt;code&gt;auto/*&lt;/code&gt; channel&#39;s live candidate pool. → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/routing/AUTO-COMBO.md&quot;&gt;Auto-Combo&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;⚡ Local performance &amp;amp; infra&lt;/strong&gt; — one-click local Redis, Cloudflare Workers / Deno Deploy relay deployers, Bifrost &amp;amp; Mux as supervised embedded services. → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/frameworks/EMBEDDED-SERVICES.md&quot;&gt;Embedded Services&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h2&gt;🤖 Compatible CLIs &amp;amp; Coding Agents&lt;/h2&gt; 
 &lt;blockquote&gt; 
  &lt;p&gt;One config — &lt;code&gt;http://localhost:20128/v1&lt;/code&gt; — and &lt;strong&gt;every&lt;/strong&gt; AI IDE or CLI runs on free &amp;amp; low-cost models.&lt;/p&gt; 
 &lt;/blockquote&gt; 
 &lt;div align=&quot;center&quot;&gt; 
  &lt;table&gt; 
   &lt;tbody&gt;
    &lt;tr&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;a href=&quot;https://github.com/anthropics/claude-code&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/claude.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Claude Code&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Claude Code&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/a&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;a href=&quot;https://github.com/openai/codex&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/codex.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Codex CLI&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Codex CLI&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/a&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;
      &lt;picture&gt;
       &lt;source media=&quot;(prefers-color-scheme:dark)&quot; srcset=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.91.0/dark/cline.png&quot; /&gt;
       &lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/cline.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Cline&quot; /&gt;
      &lt;/picture&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Cline&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;a href=&quot;https://github.com/Kilo-Org/kilocode&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/kilocode.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Kilo Code&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Kilo Code&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/a&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;a href=&quot;https://github.com/Zoo-Code-Org/Zoo-Code&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/zoocode.png&quot; width=&quot;40&quot; alt=&quot;Zoo Code&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Zoo Code&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/a&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/continue.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Continue&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Continue&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/cli-generic.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Aider&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Aider&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/cli-generic.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;ForgeCode&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;ForgeCode&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/cli-generic.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;jcode&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;jcode&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/deepseek.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;DeepSeek TUI&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;DeepSeek TUI&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/cli-generic.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;CodeWhale&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;CodeWhale&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;a href=&quot;https://github.com/anomalyco/opencode&quot;&gt;
       &lt;picture&gt;
        &lt;source media=&quot;(prefers-color-scheme:dark)&quot; srcset=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.91.0/dark/opencode.png&quot; /&gt;
        &lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/opencode.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;OpenCode&quot; /&gt;
       &lt;/picture&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;OpenCode&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/droid.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Factory Droid&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Factory Droid&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/copilot.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;GitHub Copilot CLI&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Copilot CLI&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/cursor.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Cursor CLI&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Cursor CLI&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/cli-generic.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Smelt&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Smelt&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/cli-generic.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Pi (pi-coding-agent)&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Pi&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/grok.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Grok Build (xAI)&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Grok Build&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;
      &lt;picture&gt;
       &lt;source media=&quot;(prefers-color-scheme:dark)&quot; srcset=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.91.0/dark/nousresearch.png&quot; /&gt;
       &lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/nousresearch.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Hermes Agent (Nous Research)&quot; /&gt;
      &lt;/picture&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Hermes Agent&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/openclaw.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;OpenClaw&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;OpenClaw&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;
      &lt;picture&gt;
       &lt;source media=&quot;(prefers-color-scheme:dark)&quot; srcset=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.91.0/dark/goose.png&quot; /&gt;
       &lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/goose.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Goose&quot; /&gt;
      &lt;/picture&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Goose&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/cli-generic.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Open Interpreter&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Open Interpreter&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/cli-generic.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Warp AI&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Warp AI&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
     &lt;td align=&quot;center&quot; width=&quot;76&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/cli-generic.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Agent Deck&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Agent Deck&lt;/b&gt;&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
    &lt;/tr&gt; 
   &lt;/tbody&gt;
  &lt;/table&gt; 
 &lt;/div&gt; 
 &lt;div align=&quot;center&quot;&gt; 
  &lt;b&gt;＋ also works with&lt;/b&gt; · Kiro · Command Code · Antigravity · Windsurf · AMP · 
  &lt;b&gt;any OpenAI-compatible tool&lt;/b&gt; 
 &lt;/div&gt; 
 &lt;p&gt;&lt;sub&gt;📖 Per-tool setup for all 33 tools (25 CLI Code&#39;s + 8 CLI Agents) → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/reference/CLI-TOOLS.md&quot;&gt;&lt;code&gt;docs/reference/CLI-TOOLS.md&lt;/code&gt;&lt;/a&gt; · 🧩 OpenCode plugin → &lt;a href=&quot;https://www.npmjs.com/package/@omniroute/opencode-provider&quot;&gt;&lt;code&gt;@omniroute/opencode-provider&lt;/code&gt;&lt;/a&gt;&lt;/sub&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h2&gt;🌐 291 AI Providers — 90+ Free&lt;/h2&gt; 
&lt;/div&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;The most complete catalog of any open-source router: &lt;strong&gt;291 providers&lt;/strong&gt;, &lt;strong&gt;90+ with a free tier&lt;/strong&gt;, &lt;strong&gt;40+ free forever&lt;/strong&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h3&gt;🏢 Every major lab — through one endpoint&lt;/h3&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; width=&quot;80&quot;&gt;
     &lt;picture&gt;
      &lt;source media=&quot;(prefers-color-scheme:dark)&quot; srcset=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.91.0/dark/openai.png&quot; /&gt;
      &lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/openai.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;OpenAI&quot; /&gt;
     &lt;/picture&gt;&lt;br /&gt;&lt;sub&gt;OpenAI&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;80&quot;&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/claude-color.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Anthropic&quot; /&gt;&lt;br /&gt;&lt;sub&gt;Anthropic&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;80&quot;&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/gemini-color.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Gemini&quot; /&gt;&lt;br /&gt;&lt;sub&gt;Gemini&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;80&quot;&gt;
     &lt;picture&gt;
      &lt;source media=&quot;(prefers-color-scheme:dark)&quot; srcset=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.91.0/dark/grok.png&quot; /&gt;
      &lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/grok.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;xAI Grok&quot; /&gt;
     &lt;/picture&gt;&lt;br /&gt;&lt;sub&gt;xAI Grok&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;80&quot;&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/deepseek-color.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;DeepSeek&quot; /&gt;&lt;br /&gt;&lt;sub&gt;DeepSeek&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;80&quot;&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/mistral-color.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Mistral&quot; /&gt;&lt;br /&gt;&lt;sub&gt;Mistral&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; width=&quot;80&quot;&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/qwen-color.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Qwen&quot; /&gt;&lt;br /&gt;&lt;sub&gt;Qwen&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;80&quot;&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/meta-color.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Meta Llama&quot; /&gt;&lt;br /&gt;&lt;sub&gt;Meta Llama&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;80&quot;&gt;
     &lt;picture&gt;
      &lt;source media=&quot;(prefers-color-scheme:dark)&quot; srcset=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.91.0/dark/groq.png&quot; /&gt;
      &lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/groq.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Groq&quot; /&gt;
     &lt;/picture&gt;&lt;br /&gt;&lt;sub&gt;Groq&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;80&quot;&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/nvidia-color.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;NVIDIA&quot; /&gt;&lt;br /&gt;&lt;sub&gt;NVIDIA&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;80&quot;&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/minimax-color.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;MiniMax&quot; /&gt;&lt;br /&gt;&lt;sub&gt;MiniMax&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;80&quot;&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/cohere-color.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Cohere&quot; /&gt;&lt;br /&gt;&lt;sub&gt;Cohere&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; width=&quot;80&quot;&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/perplexity-color.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Perplexity&quot; /&gt;&lt;br /&gt;&lt;sub&gt;Perplexity&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;80&quot;&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/huggingface-color.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Hugging Face&quot; /&gt;&lt;br /&gt;&lt;sub&gt;HuggingFace&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;80&quot;&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/together-color.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Together&quot; /&gt;&lt;br /&gt;&lt;sub&gt;Together&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;80&quot;&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/fireworks-color.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Fireworks&quot; /&gt;&lt;br /&gt;&lt;sub&gt;Fireworks&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;80&quot;&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/cloudflare-color.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Cloudflare&quot; /&gt;&lt;br /&gt;&lt;sub&gt;Cloudflare&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;80&quot;&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/baidu-color.svg?sanitize=true&quot; width=&quot;40&quot; alt=&quot;Baidu&quot; /&gt;&lt;br /&gt;&lt;sub&gt;Baidu&lt;/sub&gt;&lt;br /&gt;&lt;sub&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/sub&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;p&gt;&lt;sub&gt;…and 220+ more — every icon resolves live from the dashboard&#39;s provider catalog. 📖 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/reference/PROVIDER_REFERENCE.md&quot;&gt;Provider Reference&lt;/a&gt;&lt;/sub&gt;&lt;/p&gt; 
 &lt;br /&gt; 
 &lt;h3&gt;🆓 Free Forever — $0, no card&lt;/h3&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/opencode.svg?sanitize=true&quot; width=&quot;42&quot; alt=&quot;OpenCode Zen&quot; /&gt;&lt;br /&gt;&lt;b&gt;OpenCode Zen&lt;/b&gt;&lt;br /&gt;&lt;sub&gt;DeepSeek V4, Nemotron 3&lt;br /&gt;No token cap&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/kilocode.svg?sanitize=true&quot; width=&quot;42&quot; alt=&quot;Kilo Code&quot; /&gt;&lt;br /&gt;&lt;b&gt;Kilo Code&lt;/b&gt;&lt;br /&gt;&lt;sub&gt;Auto-router, Tencent Hy3&lt;br /&gt;Free forever&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/requesty.svg?sanitize=true&quot; width=&quot;42&quot; alt=&quot;Requesty&quot; /&gt;&lt;br /&gt;&lt;b&gt;Requesty&lt;/b&gt;&lt;br /&gt;&lt;sub&gt;GPT-OSS 120B, Nemotron&lt;br /&gt;Free forever&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/siliconcloud-color.svg?sanitize=true&quot; width=&quot;42&quot; alt=&quot;SiliconFlow&quot; /&gt;&lt;br /&gt;&lt;b&gt;SiliconFlow&lt;/b&gt;&lt;br /&gt;&lt;sub&gt;DeepSeek V3.2 / R1&lt;br /&gt;Free tier&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/zhipu.svg?sanitize=true&quot; width=&quot;42&quot; alt=&quot;Z.AI GLM&quot; /&gt;&lt;br /&gt;&lt;b&gt;Z.AI GLM&lt;/b&gt;&lt;br /&gt;&lt;sub&gt;GLM-4.7 / 4.5-Flash&lt;br /&gt;Free forever&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/baidu.svg?sanitize=true&quot; width=&quot;42&quot; alt=&quot;Baidu ERNIE&quot; /&gt;&lt;br /&gt;&lt;b&gt;Baidu ERNIE&lt;/b&gt;&lt;br /&gt;&lt;sub&gt;ERNIE 4.0&lt;br /&gt;Free forever&lt;/sub&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/npm/@lobehub/icons-static-svg@1.91.0/icons/qoder-color.svg?sanitize=true&quot; width=&quot;42&quot; alt=&quot;Qoder AI&quot; /&gt;&lt;br /&gt;&lt;b&gt;Qoder AI&lt;/b&gt;&lt;br /&gt;&lt;sub&gt;Qwen3-Max, Kimi-K2&lt;br /&gt;Unlimited FREE&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/pollinations.svg?sanitize=true&quot; width=&quot;42&quot; alt=&quot;Pollinations&quot; /&gt;&lt;br /&gt;&lt;b&gt;Pollinations&lt;/b&gt;&lt;br /&gt;&lt;sub&gt;GPT, Llama, Claude&lt;br /&gt;No key needed&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/cloudflare.svg?sanitize=true&quot; width=&quot;42&quot; alt=&quot;Cloudflare AI&quot; /&gt;&lt;br /&gt;&lt;b&gt;Cloudflare AI&lt;/b&gt;&lt;br /&gt;&lt;sub&gt;50+ models&lt;br /&gt;10K neurons/day&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/nvidia.svg?sanitize=true&quot; width=&quot;42&quot; alt=&quot;NVIDIA NIM&quot; /&gt;&lt;br /&gt;&lt;b&gt;NVIDIA NIM&lt;/b&gt;&lt;br /&gt;&lt;sub&gt;GLM, MiniMax&lt;br /&gt;~40 RPM free&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/cerebras.svg?sanitize=true&quot; width=&quot;42&quot; alt=&quot;Cerebras&quot; /&gt;&lt;br /&gt;&lt;b&gt;Cerebras&lt;/b&gt;&lt;br /&gt;&lt;sub&gt;GLM 4.7, GPT-OSS&lt;br /&gt;1M tokens/day&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;150&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/public/providers/openrouter.svg?sanitize=true&quot; width=&quot;42&quot; alt=&quot;OpenRouter&quot; /&gt;&lt;br /&gt;&lt;b&gt;OpenRouter&lt;/b&gt;&lt;br /&gt;&lt;sub&gt;:free models&lt;br /&gt;+$10 → higher RPM&lt;/sub&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;p&gt;📖 Full machine-readable catalog → &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/reference/PROVIDER_REFERENCE.md&quot;&gt;&lt;code&gt;docs/reference/PROVIDER_REFERENCE.md&lt;/code&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;br /&gt; 
&lt;/div&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h2&gt;🖥️ Where OmniRoute Runs — Anywhere&lt;/h2&gt; 
&lt;/div&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Same app, your machine, your rules. From a global npm install to &lt;strong&gt;your phone&lt;/strong&gt; via Termux.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;th align=&quot;left&quot;&gt;Platform&lt;/th&gt;
   &lt;th align=&quot;left&quot;&gt;Install&lt;/th&gt;
   &lt;th align=&quot;left&quot;&gt;Highlights&lt;/th&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;📦 &lt;b&gt;npm (global)&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;code&gt;npm install -g omniroute&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;One command, any OS&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;🐳 &lt;b&gt;Docker&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;code&gt;docker run … diegosouzapw/omniroute&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Multi-arch &lt;b&gt;AMD64 + ARM64&lt;/b&gt;&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;🖥️ &lt;b&gt;Desktop (Electron)&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;code&gt;npm run electron:build&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Native window + system tray — &lt;b&gt;Windows / macOS / Linux&lt;/b&gt;&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;💪 &lt;b&gt;ARM&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;native &lt;code&gt;arm64&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Raspberry Pi, ARM servers, Apple Silicon&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;📱 &lt;b&gt;Android (Termux)&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;code&gt;pkg install nodejs &amp;amp;&amp;amp; npx -y omniroute&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Runs &lt;b&gt;on your phone&lt;/b&gt;, 24/7, no root&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;📲 &lt;b&gt;PWA&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&quot;Add to Home Screen&quot;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Fullscreen, offline, installable from browser&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;🧩 &lt;b&gt;OpenCode plugin&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;code&gt;@omniroute/opencode-provider&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Native OpenCode integration&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;🛠️ &lt;b&gt;From source&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;code&gt;npm install &amp;amp;&amp;amp; npm run dev&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Hack on it, contribute&lt;/td&gt;
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;p&gt;&lt;sub&gt;📖 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/guides/DOCKER_GUIDE.md&quot;&gt;Docker Guide&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/electron/README.md&quot;&gt;Desktop&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/guides/TERMUX_GUIDE.md&quot;&gt;Termux&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/guides/PWA_GUIDE.md&quot;&gt;PWA&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/frameworks/OPENCODE.md&quot;&gt;OpenCode&lt;/a&gt;&lt;/sub&gt;&lt;/p&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h2&gt;🔒 Private &amp;amp; Local-First&lt;/h2&gt; 
&lt;/div&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/diagrams/privacy-local.svg?sanitize=true&quot; width=&quot;100%&quot; alt=&quot;Private and local-first — your keys, your machine, your data; OmniRoute is a local proxy that never phones home. Eleven guarantees: runs 100% on your hardware (0 cloud hops), zero telemetry by default, credentials encrypted at rest (AES-256-GCM), no account or sign-up, hardened gateway (API-key scoping, IP filtering, rate limits, prompt-injection guard), loopback-only process routes, upstream header scrubbing, strictly opt-in PII redaction, sanitized errors that never leak internals, a local audit trail in your own SQLite, and MIT-licensed fully open-source code.&quot; /&gt; 
&lt;p&gt;&lt;sub&gt;📖 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/architecture/AUTHZ_GUIDE.md&quot;&gt;Authorization&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/security/GUARDRAILS.md&quot;&gt;Guardrails&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/security/COMPLIANCE.md&quot;&gt;Compliance&lt;/a&gt;&lt;/sub&gt;&lt;/p&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h2&gt;🔌 Full CLI + A2A &amp;amp; MCP&lt;/h2&gt; 
&lt;/div&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Beyond the server, OmniRoute is a &lt;strong&gt;full command-line cockpit&lt;/strong&gt; with &lt;strong&gt;80+ commands&lt;/strong&gt;, plus open agent protocols so an AI agent can drive it &lt;strong&gt;on its own&lt;/strong&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;⌨️ A real CLI (not just &lt;code&gt;start&lt;/code&gt;)&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;omniroute               # serve gateway + dashboard (port 20128)
omniroute chat          # interactive TUI chat client (slash: /model /combo /skill /memory)
omniroute setup         # guided first-run wizard
omniroute doctor        # diagnose providers, ports, native deps
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;🛰️ Remote mode — run the CLI here, OmniRoute on a VPS&lt;/h3&gt; 
&lt;p&gt;OmniRoute on a server? Drive it from your laptop with the &lt;strong&gt;same CLI&lt;/strong&gt;. Log in once with a scoped access token; every command then targets the remote.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;omniroute connect 192.168.0.15            # password → scoped token, saved as a context
omniroute models list                     # ← runs against the REMOTE server
omniroute configure codex                 # ← picks a remote model, writes a local Codex profile
omniroute tokens create --name ci --scope read   # mint narrower tokens for other machines
omniroute contexts use default            # ← switch back to the local server
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Tokens are scoped &lt;code&gt;read&lt;/code&gt; / &lt;code&gt;write&lt;/code&gt; / &lt;code&gt;admin&lt;/code&gt;; process-spawning routes stay loopback-only. &lt;sub&gt;📖 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/guides/REMOTE-MODE.md&quot;&gt;Remote Mode&lt;/a&gt;&lt;/sub&gt;&lt;/p&gt; 
&lt;div align=&quot;left&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/diagrams/cli-terminal.svg?sanitize=true&quot; width=&quot;50%&quot; alt=&quot;Animated terminal demoing the OmniRoute CLI — omniroute providers list, omniroute combo list, omniroute health — cycling over the 80+ command surface: providers · oauth · keys · combo · nodes · models · cache · compression · cost · usage · quota · health · resilience · telemetry · logs · audit · mcp · a2a · cloud · memory · skills · eval · tunnel · backup · sync · webhooks · policy · pricing · translator · simulate …&quot; /&gt; 
&lt;/div&gt; 
&lt;h3&gt;🤝 Connect an agent — and it controls OmniRoute itself&lt;/h3&gt; 
&lt;p&gt;Expose OmniRoute over &lt;strong&gt;MCP&lt;/strong&gt;, &lt;strong&gt;A2A&lt;/strong&gt;, a &lt;strong&gt;REST API&lt;/strong&gt;, &lt;strong&gt;webhooks&lt;/strong&gt; or a &lt;strong&gt;remote CLI&lt;/strong&gt; — any capable agent (or your own code) gets the keys to the whole gateway: routing, providers, combos, cache, compression, memory — autonomously. HTTP endpoints below are served under &lt;code&gt;http://localhost:20128&lt;/code&gt;.&lt;/p&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;th align=&quot;left&quot;&gt;Interface&lt;/th&gt;
   &lt;th align=&quot;left&quot;&gt;Endpoint / command&lt;/th&gt;
   &lt;th align=&quot;left&quot;&gt;Use it for&lt;/th&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;🧰 &lt;b&gt;MCP (stdio)&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;code&gt;omniroute --mcp&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Plug into Claude Desktop, Cursor, any MCP client&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;🌊 &lt;b&gt;MCP (HTTP)&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;code&gt;/api/mcp/stream&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Remote MCP — &lt;b&gt;105 tools&lt;/b&gt;, 31 scopes, full audit trail&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;📡 &lt;b&gt;MCP (SSE)&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;code&gt;/api/mcp/sse&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Streaming MCP transport&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;🤝 &lt;b&gt;A2A&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;code&gt;/.well-known/agent.json&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Agent-to-agent, &lt;b&gt;JSON-RPC 2.0&lt;/b&gt; + SSE, 6 skills&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;🌐 &lt;b&gt;REST API&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;code&gt;/v1/*&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;OpenAI-compatible — chat, embeddings, images, audio, OCR&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;🔔 &lt;b&gt;Webhooks&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;code&gt;/api/webhooks&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Push events (usage, quota, errors, routing) to your URL&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;🛰️ &lt;b&gt;Remote CLI&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;code&gt;omniroute connect 
     &lt;host&gt;&lt;/host&gt;&lt;/code&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Drive a remote instance with scoped access tokens&lt;/td&gt;
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Give Claude Code the full OmniRoute toolset over MCP:
claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp/stream
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;sub&gt;📖 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/frameworks/MCP-SERVER.md&quot;&gt;MCP Server&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/frameworks/A2A-SERVER.md&quot;&gt;A2A Server&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/frameworks/AGENT_PROTOCOLS_GUIDE.md&quot;&gt;Agent Protocols&lt;/a&gt;&lt;/sub&gt;&lt;/p&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h2&gt;🗜️ Save 15–95% Tokens — Automatically&lt;/h2&gt; 
&lt;/div&gt; 
&lt;h3&gt;📖 How it works — pipeline, architecture &amp;amp; savings math&lt;/h3&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/diagrams/compression-pipeline.svg?sanitize=true&quot; width=&quot;100%&quot; alt=&quot;OmniRoute compression pipeline: a client request of 10,000 tokens passes through 12 stacked engines — Session-Dedup, CCR, Lite, RTK, Responses Tool Output, Headroom, Relevance, Caveman, Aggressive, LLMLingua-2, Ultra, OmniGlyph — and reaches the provider at about 1,080 tokens, up to 95% saved. Code, URLs and JSON are always preserved byte-perfect.&quot; /&gt; 
&lt;p&gt;Default stacked combo runs &lt;code&gt;RTK → Caveman&lt;/code&gt;. When both act on the same tool/context payload, savings compound:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-txt&quot;&gt;combined = 1 − (1 − RTK) × (1 − Caveman_input)
average  = 1 − (1 − 0.80) × (1 − 0.46) = 89.2%
range    = 78.4 – 94.6%
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Code blocks, URLs, JSON and structured data are &lt;strong&gt;always protected&lt;/strong&gt; by the preservation engine.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Why use many tokens when few tokens do the trick?&lt;/strong&gt; Every request passes through OmniRoute&#39;s compression pipeline &lt;strong&gt;transparently&lt;/strong&gt; — no client changes. It&#39;s now a &lt;strong&gt;stack of 12 composable engines&lt;/strong&gt; that run in order and mix &amp;amp; match per routing combo — building on ideas from &lt;a href=&quot;https://github.com/rtk-ai/rtk&quot;&gt;RTK&lt;/a&gt;, &lt;a href=&quot;https://github.com/JuliusBrussee/caveman&quot;&gt;Caveman&lt;/a&gt; (⭐ 90K+), &lt;a href=&quot;https://github.com/microsoft/LLMLingua&quot;&gt;LLMLingua-2&lt;/a&gt;, and &lt;a href=&quot;https://github.com/leninejunior/troglodita&quot;&gt;Troglodita&lt;/a&gt; (PT-BR).&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;🧱 The 12-engine stack&lt;/h3&gt; 
&lt;p&gt;Engines run in pipeline order; each is independently toggleable and configurable per combo:&lt;/p&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;th align=&quot;center&quot;&gt;#&lt;/th&gt;
   &lt;th align=&quot;left&quot;&gt;Engine&lt;/th&gt;
   &lt;th align=&quot;left&quot;&gt;What it does&lt;/th&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;center&quot; nowrap&gt;1&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;b&gt;Session-Dedup&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Drops content repeated across turns (content-addressed, cross-turn)&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;center&quot; nowrap&gt;2&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;b&gt;CCR&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Archives large blocks behind retrieve markers, fetched on demand&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;center&quot; nowrap&gt;3&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;b&gt;Lite&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Whitespace + image-URL trimming (latency-light baseline)&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;center&quot; nowrap&gt;4&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;b&gt;RTK&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Smart tool-result filtering, dedup &amp;amp; truncation (command-aware)&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;center&quot; nowrap&gt;5&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;b&gt;Responses Tool Output&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Lossless-first JSON + bounded diagnostic compression for shell/patch/search/build outputs (Responses API)&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;center&quot; nowrap&gt;6&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;b&gt;Headroom&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Lossless tabular compaction of JSON arrays (~30%) via a vendored &lt;b&gt;GCF&lt;/b&gt; codec&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;center&quot; nowrap&gt;7&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;b&gt;Relevance&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Extractive sentence scoring against the last user query&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;center&quot; nowrap&gt;8&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;b&gt;Caveman&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Rule-based prose compression (~65–75% on output)&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;center&quot; nowrap&gt;9&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;b&gt;Aggressive&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Summarization + progressive aging of old turns&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;center&quot; nowrap&gt;10&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;b&gt;LLMLingua-2&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;ML semantic pruning via MobileBERT ONNX — code-safe, async&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;center&quot; nowrap&gt;11&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;b&gt;Ultra&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Heuristic token pruning with an optional small-model (SLM) tier&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;center&quot; nowrap&gt;12&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;b&gt;OmniGlyph&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Experimental context-as-image encoding routed to Claude Fable 5 (most aggressive; opt-in)&lt;/td&gt;
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;p&gt;Code blocks, URLs and structured data are &lt;strong&gt;always preserved&lt;/strong&gt; byte-perfect. &lt;strong&gt;One-click presets&lt;/strong&gt; combine the engines:&lt;/p&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;th align=&quot;left&quot;&gt;Mode&lt;/th&gt;
   &lt;th align=&quot;left&quot;&gt;Savings&lt;/th&gt;
   &lt;th align=&quot;left&quot;&gt;Best for&lt;/th&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;🪶 &lt;b&gt;Lite&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;~15%&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Always-on safe default&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;🪨 &lt;b&gt;Standard (Caveman)&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;~30%&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Daily coding&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;⚡ &lt;b&gt;Aggressive&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;~50%&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Long tool-heavy sessions&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;🔥 &lt;b&gt;Ultra&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;~75%&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Maximum savings&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;🧰 &lt;b&gt;RTK&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;60–90%&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Shell/test/build/git output&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;🔗 &lt;b&gt;Stacked (RTK → Caveman)&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot; nowrap&gt;&lt;b&gt;78–95%&lt;/b&gt;&lt;/td&gt;
   &lt;td align=&quot;left&quot;&gt;Mixed prompts + tool logs&lt;/td&gt;
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Real example — Standard mode:&lt;/strong&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Before (69 tokens):&lt;/strong&gt; &lt;em&gt;&quot;The reason your React component is re-rendering is likely because you&#39;re creating a new object reference on each render cycle. When you pass an inline object as a prop, React&#39;s shallow comparison sees it as a different object every time, which triggers a re-render. I would recommend using useMemo to memoize the object.&quot;&lt;/em&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;After (19 tokens):&lt;/strong&gt; &lt;em&gt;&quot;New object ref each render. Inline object prop = new ref = re-render. Wrap in useMemo.&quot;&lt;/em&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Same answer. 72% fewer tokens. Zero accuracy loss.&lt;/strong&gt; ✅&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;strong&gt;PT-BR example — &lt;a href=&quot;https://github.com/leninejunior/troglodita&quot;&gt;Troglodita&lt;/a&gt; mode:&lt;/strong&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Antes (42 tokens):&lt;/strong&gt; &lt;em&gt;&quot;O problema é que o componente está re-renderizando porque uma nova referência de objeto está sendo criada em cada ciclo de renderização. Eu recomendaria usar useMemo.&quot;&lt;/em&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Depois (12 tokens):&lt;/strong&gt; &lt;em&gt;&quot;Re-render: ref nova cada ciclo (objeto inline recriado). Usar &lt;code&gt;useMemo&lt;/code&gt;.&quot;&lt;/em&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Mesma resposta. ~70% menos tokens. Precisão técnica intacta.&lt;/strong&gt; ✅&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;br /&gt; 
&lt;h3&gt;🎚️ Beyond the engines — output styles, the adaptive dial &amp;amp; per-request control&lt;/h3&gt; 
&lt;p&gt;The 12 engines above shrink what goes &lt;strong&gt;in&lt;/strong&gt;. Three more layers shape &lt;strong&gt;how&lt;/strong&gt;, &lt;strong&gt;when&lt;/strong&gt;, and what comes &lt;strong&gt;out&lt;/strong&gt;:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;🪄 Output Styles&lt;/strong&gt; &lt;em&gt;(output-axis steering)&lt;/em&gt; — inject deterministic, cache-safe response-shaping instructions; combinable, each at &lt;code&gt;lite&lt;/code&gt; / &lt;code&gt;full&lt;/code&gt; / &lt;code&gt;ultra&lt;/code&gt; intensity. Adding a style is a one-line registry entry: 
  &lt;ul&gt; 
   &lt;li&gt;&lt;strong&gt;Terse prose&lt;/strong&gt; — drop filler / articles / hedging; keep technical substance exact.&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Less code&lt;/strong&gt; — &quot;lazy senior dev&quot; YAGNI: smallest working change, no unrequested scaffolding.&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Terse CJK (文言)&lt;/strong&gt; — classical-Chinese ultra-terse style (locale-gated to &lt;code&gt;zh&lt;/code&gt;).&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;🎯 Adaptive context-budget&lt;/strong&gt; &lt;em&gt;(the dial)&lt;/em&gt; — instead of one on/off token threshold, escalate the cheapest, most-lossless engines only as far as needed to &lt;strong&gt;fit the model&#39;s context window&lt;/strong&gt;. Policy: &lt;code&gt;reserve-output&lt;/code&gt; (default, model-aware) · &lt;code&gt;percentage&lt;/code&gt; · &lt;code&gt;absolute&lt;/code&gt;. Mode: &lt;code&gt;floor&lt;/code&gt; (guarantee fit) · &lt;code&gt;replace-autotrigger&lt;/code&gt; (your explicit choice wins) · &lt;code&gt;off&lt;/code&gt; (legacy threshold).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;🎛️ Where compression is decided&lt;/strong&gt; &lt;em&gt;(precedence, high → low)&lt;/em&gt; — per-request &lt;code&gt;x-omniroute-compression&lt;/code&gt; header › routing-combo override › active named profile › adaptive / auto-trigger › panel default › off. The applied plan echoes back in the &lt;code&gt;X-OmniRoute-Compression: &amp;lt;mode&amp;gt;; source=&amp;lt;source&amp;gt;&lt;/code&gt; response header.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Auto-trigger by token threshold, flip on the adaptive dial, pin a named profile, set a one-off per request, or assign a pipeline per routing combo — whichever fits the workload. An opt-in offline &lt;strong&gt;eval harness&lt;/strong&gt; (&lt;code&gt;npm run eval:compression&lt;/code&gt;) scores fidelity vs. savings on a pinned corpus before you promote a change.&lt;/p&gt; 
&lt;p&gt;📖 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/compression/COMPRESSION_GUIDE.md&quot;&gt;&lt;code&gt;COMPRESSION_GUIDE.md&lt;/code&gt;&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/compression/RTK_COMPRESSION.md&quot;&gt;&lt;code&gt;RTK_COMPRESSION.md&lt;/code&gt;&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/compression/COMPRESSION_ENGINES.md&quot;&gt;&lt;code&gt;COMPRESSION_ENGINES.md&lt;/code&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h1&gt;⚡ Quick Start&lt;/h1&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;strong&gt;1) Install &amp;amp; run&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install -g omniroute
omniroute
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;💡 See &lt;code&gt;npm warn ERESOLVE&lt;/code&gt; or peer-dep warnings? &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/getting-started/TROUBLESHOOTING.md#npm-install-warnings-eresolve--peer--deprecated&quot;&gt;They&#39;re harmless&lt;/a&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Dashboard at &lt;code&gt;http://localhost:20128&lt;/code&gt; · API at &lt;code&gt;http://localhost:20128/v1&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2) Connect a FREE provider (no signup)&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Dashboard → &lt;strong&gt;Providers&lt;/strong&gt; → connect &lt;strong&gt;Kiro AI&lt;/strong&gt; (free Claude, ~50 credits/month per account) or &lt;strong&gt;OpenCode Free&lt;/strong&gt; (no auth) → done.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;3) Point your coding tool&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-txt&quot;&gt;Base URL: http://localhost:20128/v1
API Key:  [copy from Dashboard → Endpoints]
Model:    auto            (zero-config smart routing — or any provider/model)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;4) Verify it&#39;s working&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl http://localhost:20128/v1/models -H &quot;Authorization: Bearer YOUR_KEY&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;You should see your connected models listed. 🎉 That&#39;s it — start coding, and OmniRoute auto-routes &amp;amp; falls back for you.&lt;/p&gt; 
&lt;p&gt;If your client cannot send custom headers, OmniRoute also exposes tokenized compatibility aliases:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-txt&quot;&gt;OpenAI catalog:   http://localhost:20128/vscode/YOUR_KEY/
OpenAI models:    http://localhost:20128/vscode/YOUR_KEY/models
OpenAI chat:      http://localhost:20128/vscode/YOUR_KEY/chat/completions
OpenAI responses: http://localhost:20128/vscode/YOUR_KEY/responses
Ollama chat:      http://localhost:20128/vscode/YOUR_KEY/api/chat
Ollama tags:      http://localhost:20128/vscode/YOUR_KEY/api/tags
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Use these only for clients that cannot attach &lt;code&gt;Authorization: Bearer ...&lt;/code&gt;. Header auth remains the preferred mode.&lt;/p&gt; 
&lt;br /&gt; 
&lt;h2&gt;📦 More install methods — Docker, source, pnpm, Arch&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;🐳 Docker&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
  -p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Pre-release Docker channel:&lt;/strong&gt; &lt;code&gt;diegosouzapw/omniroute:next&lt;/code&gt; and &lt;code&gt;diegosouzapw/omniroute:next-web&lt;/code&gt; follow the current default &lt;code&gt;release/v*&lt;/code&gt; branch. These mutable tags are intended only for testing unreleased fixes and are &lt;strong&gt;not supported for production&lt;/strong&gt;. See &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/guides/DOCKER_RELEASE_CHANNELS.md&quot;&gt;Docker Release Channels&lt;/a&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;strong&gt;🛠️ From source&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cp .env.example .env &amp;amp;&amp;amp; npm install
PORT=20128 npm run dev
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;📦 pnpm&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pnpm add -g omniroute@latest --allow-build=better-sqlite3 --allow-build=@swc/core &amp;amp;&amp;amp; omniroute
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;🐧 Arch Linux (AUR)&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;yay -S omniroute-bin &amp;amp;&amp;amp; systemctl --user enable --now omniroute.service
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;🔧 Nix (Flake)&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Using Nix flakes
nix develop
npm run dev

# Or using devbox
devbox run npm run dev
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;📖 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/guides/DOCKER_GUIDE.md&quot;&gt;Docker Guide&lt;/a&gt; — Compose profiles, Caddy HTTPS, Cloudflare tunnels.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;🦭 Podman&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 1. Prepare the bind-mounted data directory
mkdir -p data

# 2. Linux + local rootless Podman only (never a remote Podman Machine client):
podman unshare chown 1000:1000 ./data

# 3. Set the runtime hint, build the local Compose image, and start
echo &quot;CONTAINER_HOST=podman&quot; &amp;gt;&amp;gt; .env
podman compose --profile base up -d --build
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;On macOS or Windows, Podman uses a remote Podman Machine: skip &lt;code&gt;podman unshare&lt;/code&gt; and follow the &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/contrib/podman/README.md#data-directory-permissions-by-topology&quot;&gt;topology-specific data directory guidance&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;📖 &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/contrib/podman/README.md&quot;&gt;Podman Guide&lt;/a&gt; — Compose builds, Podman Machine, and Linux/systemd Quadlet setup.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;⚡ Faster / leaner install (skip the native build)&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;The native SQLite engine (&lt;code&gt;better-sqlite3&lt;/code&gt;) is an &lt;strong&gt;optional&lt;/strong&gt; dependency, so a global install never blocks on compiling from source: it uses a prebuilt binary when one matches your platform/Node, and otherwise falls back transparently to a pure-JS engine (&lt;code&gt;node:sqlite&lt;/code&gt; on Node 22+, else the bundled &lt;code&gt;sql.js&lt;/code&gt; WASM) — no build tools required.&lt;/p&gt; 
&lt;p&gt;To skip the post-install native warm-up entirely (CI, headless, or slow machines):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;OMNIROUTE_SKIP_POSTINSTALL=1 npm install -g omniroute   # CI=1 also skips it
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For the fastest installs prefer &lt;strong&gt;pnpm&lt;/strong&gt; (content-addressed store + hard links — see above). For a dashboard-free, headless runtime use the Docker &lt;code&gt;base&lt;/code&gt; profile (above) or the &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/guides/TERMUX_GUIDE.md&quot;&gt;Termux guide&lt;/a&gt;. The CLI and the web dashboard are served by the same process on one port, so there is no separate CLI-only package today.&lt;/p&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h1&gt;🎬 OmniRoute in Action&lt;/h1&gt; 
&lt;/div&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; width=&quot;264&quot;&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=Rxdc36yUyOQ&quot;&gt;&lt;img src=&quot;https://img.youtube.com/vi/Rxdc36yUyOQ/maxresdefault.jpg&quot; alt=&quot;Guia em Português&quot; width=&quot;260&quot; /&gt;&lt;/a&gt;&lt;br /&gt; &lt;b&gt;🇧🇷 Português&lt;/b&gt;&lt;br /&gt;&lt;sub&gt;Guia completo&lt;/sub&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;264&quot;&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=CMzyOiUyEVc&quot;&gt;&lt;img src=&quot;https://img.youtube.com/vi/CMzyOiUyEVc/maxresdefault.jpg&quot; alt=&quot;English Guide&quot; width=&quot;260&quot; /&gt;&lt;/a&gt;&lt;br /&gt; &lt;b&gt;🇺🇸 English&lt;/b&gt;&lt;br /&gt;&lt;sub&gt;Complete walkthrough&lt;/sub&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;264&quot;&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=il_5Ii6v4-Y&quot;&gt;&lt;img src=&quot;https://img.youtube.com/vi/il_5Ii6v4-Y/maxresdefault.jpg&quot; alt=&quot;Руководство&quot; width=&quot;260&quot; /&gt;&lt;/a&gt;&lt;br /&gt; &lt;b&gt;🇷🇺 Русский&lt;/b&gt;&lt;br /&gt;&lt;sub&gt;Полное руководство&lt;/sub&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
&lt;/div&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;blockquote&gt; 
  &lt;p&gt;🎬 &lt;strong&gt;Made a video about OmniRoute?&lt;/strong&gt; Open an &lt;a href=&quot;https://github.com/diegosouzapw/OmniRoute/issues/new&quot;&gt;issue&lt;/a&gt; or &lt;a href=&quot;https://github.com/diegosouzapw/OmniRoute/discussions&quot;&gt;discussion&lt;/a&gt; with the link — we&#39;ll feature it here.&lt;/p&gt; 
 &lt;/blockquote&gt; 
 &lt;br /&gt; 
&lt;/div&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h1&gt;📧 Community &amp;amp; Help&lt;/h1&gt; 
 &lt;blockquote&gt; 
  &lt;p&gt;Everything in one place — follow the maintainer, chat with the community, or open an issue.&lt;/p&gt; 
 &lt;/blockquote&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;Channel&lt;/th&gt; 
    &lt;th&gt;Where / how&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;💼 &lt;strong&gt;LinkedIn&lt;/strong&gt; — follow the maintainer&lt;/td&gt; 
    &lt;td&gt;&lt;a href=&quot;https://www.linkedin.com/in/diegosouzapw/&quot;&gt;linkedin.com/in/diegosouzapw&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;🐙 &lt;strong&gt;GitHub&lt;/strong&gt; — follow for releases &amp;amp; tips&lt;/td&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/diegosouzapw&quot;&gt;@diegosouzapw&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;💬 &lt;strong&gt;Discord&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;&lt;a href=&quot;https://discord.gg/U47eFqAXCn&quot;&gt;discord.gg/U47eFqAXCn&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;✈️ &lt;strong&gt;Telegram&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;&lt;a href=&quot;https://t.me/omnirouteOficial&quot;&gt;t.me/omnirouteOficial&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;🟢 &lt;strong&gt;WhatsApp — 🌍 Global&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;&lt;a href=&quot;https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t&quot;&gt;join the group&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;🟢 &lt;strong&gt;WhatsApp — 🇧🇷 Brasil&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;&lt;a href=&quot;https://chat.whatsapp.com/LTSpdFhXTxjH4R6CCNiKWz&quot;&gt;entrar no grupo&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;🌍 &lt;strong&gt;Website&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;&lt;a href=&quot;https://omniroute.online&quot;&gt;omniroute.online&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;📦 &lt;strong&gt;Source code&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/diegosouzapw/OmniRoute&quot;&gt;github.com/diegosouzapw/OmniRoute&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;🐛 &lt;strong&gt;Report a bug&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/diegosouzapw/OmniRoute/issues&quot;&gt;open an issue&lt;/a&gt; — attach &lt;code&gt;npm run system-info&lt;/code&gt; output&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;🤝 &lt;strong&gt;Contribute&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/ops/BRANCHING_MODEL.md&quot;&gt;Branching &amp;amp; Release Model&lt;/a&gt; · pick a &lt;code&gt;good first issue&lt;/code&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;💚 &lt;strong&gt;Support the project&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-support-omniroute&quot;&gt;Ways to support ↑&lt;/a&gt; · &lt;a href=&quot;https://github.com/sponsors/diegosouzapw&quot;&gt;GitHub Sponsors&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h2&gt;🛠️ Tech Stack&lt;/h2&gt; 
&lt;/div&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;th align=&quot;left&quot;&gt;Layer&lt;/th&gt;
   &lt;th align=&quot;left&quot;&gt;Technology&lt;/th&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;Runtime&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Node.js 22.x / 24.x LTS — &lt;code&gt;&amp;gt;=22.22.2 &amp;lt;23 || &amp;gt;=24.0.0 &amp;lt;27&lt;/code&gt;&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;Language&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;TypeScript 6.0 — &lt;b&gt;100% TypeScript&lt;/b&gt; across &lt;code&gt;src/&lt;/code&gt; and &lt;code&gt;open-sse/&lt;/code&gt; (zero &lt;code&gt;any&lt;/code&gt; in core since v2.0)&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;Framework&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Next.js 16 + React 19 + Tailwind CSS 4&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;Database&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;better-sqlite3 (SQLite, WAL journaling) + LowDB (JSON legacy) — 95 domain modules, 110 migrations&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;Memory&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;SQLite FTS5 full-text + int8-quantized vector embeddings, typed decay&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;Schemas&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Zod 4 — MCP tool I/O validation + API contracts&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;Protocols&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;MCP (stdio / HTTP / SSE) + A2A v0.3 (JSON-RPC 2.0 + SSE)&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;Streaming&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Server-Sent Events (SSE) + WebSocket bridge (&lt;code&gt;/v1/ws&lt;/code&gt;)&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;Compression&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;12-engine pipeline — RTK, Caveman, LLMLingua-2 (MobileBERT ONNX), GCF, OmniGlyph&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;Auth &amp;amp; security&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;OAuth 2.0 (PKCE) + JWT + API Keys + MCP scoped auth · AES-256-GCM at rest · DOMPurify&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;Stealth&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;wreq-js — JA3 / JA4 TLS fingerprint impersonation, 3-level proxy&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;Resilience&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Circuit breaker, exponential backoff, anti-thundering-herd, auto-combo self-healing&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;Logging&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;pino — structured JSON logs with request context&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;Testing&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Node.js test runner + Vitest — &lt;b&gt;25,000+ test cases&lt;/b&gt; across 3,300+ files (unit, integration, E2E, security, ecosystem)&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;Platforms&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Desktop (Electron) · Android (Termux) · PWA (any browser)&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;CI/CD&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;GitHub Actions — auto npm publish + Docker Hub on release&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;Links&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;&lt;a href=&quot;https://omniroute.online&quot;&gt;Website&lt;/a&gt; · &lt;a href=&quot;https://www.npmjs.com/package/omniroute&quot;&gt;npm&lt;/a&gt; · &lt;a href=&quot;https://hub.docker.com/r/diegosouzapw/omniroute&quot;&gt;Docker Hub&lt;/a&gt;&lt;/td&gt;
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;br /&gt; 
 &lt;h2&gt;📖 Documentation&lt;/h2&gt; 
&lt;/div&gt; 
&lt;h3&gt;📘 Getting Started&lt;/h3&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;th align=&quot;left&quot;&gt;Document&lt;/th&gt;
   &lt;th align=&quot;left&quot;&gt;Description&lt;/th&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/guides/USER_GUIDE.md&quot;&gt;User Guide&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Providers, combos, CLI integration, deployment&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/guides/SETUP_GUIDE.md&quot;&gt;Setup Guide&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Full install methods, CLI tool configs, protocol setup, timeout tuning&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/reference/CLI-TOOLS.md&quot;&gt;CLI Tools Guide&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Per-tool setup for Claude Code, Codex, Cursor, Cline, OpenClaw, Kilo, Copilot&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/guides/REMOTE-MODE.md&quot;&gt;Remote Mode&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Drive a remote OmniRoute (VPS) from your laptop CLI via scoped access tokens&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/guides/CLAUDE-CODE-CONFIGURATION.md&quot;&gt;Claude Code Config&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Point Claude Code at OmniRoute (local/remote) with &lt;code&gt;launch&lt;/code&gt; + per-model profiles&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/README.md#-quick-start&quot;&gt;Quick Start&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;3-step install → connect → configure&lt;/td&gt;
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h3&gt;🔧 Operations &amp;amp; Deployment&lt;/h3&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;th align=&quot;left&quot;&gt;Document&lt;/th&gt;
   &lt;th align=&quot;left&quot;&gt;Description&lt;/th&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/guides/DOCKER_GUIDE.md&quot;&gt;Docker Guide&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Docker run, Compose profiles, Caddy HTTPS, tunnels, image tags&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/contrib/podman/README.md&quot;&gt;Podman Guide&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Quadlet systemd integration, podman-compose, SELinux&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/ops/VM_DEPLOYMENT_GUIDE.md&quot;&gt;VM Deployment&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Complete guide: VM + nginx + Cloudflare setup&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md&quot;&gt;Fly.io Deployment&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Deploy to Fly.io with persistent storage&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/guides/TERMUX_GUIDE.md&quot;&gt;Termux Guide&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Run OmniRoute on Android via Termux&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/guides/PWA_GUIDE.md&quot;&gt;PWA Guide&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Progressive Web App install, caching, architecture&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/guides/UNINSTALL.md&quot;&gt;Uninstall Guide&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Clean removal for all install methods&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/reference/ENVIRONMENT.md&quot;&gt;Environment Config&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Complete &lt;code&gt;.env&lt;/code&gt; variables and references&lt;/td&gt;
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h3&gt;🧠 Features &amp;amp; Architecture&lt;/h3&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;th align=&quot;left&quot;&gt;Document&lt;/th&gt;
   &lt;th align=&quot;left&quot;&gt;Description&lt;/th&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/architecture/ARCHITECTURE.md&quot;&gt;Architecture&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;System architecture, data flow, and internals&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/compression/COMPRESSION_GUIDE.md&quot;&gt;Compression Guide&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;7-option pipeline: off / lite / standard / aggressive / ultra / RTK / stacked&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/compression/RTK_COMPRESSION.md&quot;&gt;RTK Compression&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Command-output compression, filters, trust, verify, raw-output recovery&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/compression/COMPRESSION_ENGINES.md&quot;&gt;Compression Engines&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Caveman, RTK, stacked pipelines, dashboard/API/MCP surfaces&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/compression/COMPRESSION_RULES_FORMAT.md&quot;&gt;Compression Rules Format&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;JSON rule-pack schemas for Caveman and RTK filters&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/compression/COMPRESSION_LANGUAGE_PACKS.md&quot;&gt;Compression Language Packs&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Language detection and Caveman rule-pack authoring&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/architecture/RESILIENCE_GUIDE.md&quot;&gt;Resilience Guide&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Circuit breakers, cooldowns, queue, anti-thundering herd, TLS spoofing&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/routing/AUTO-COMBO.md&quot;&gt;Auto-Combo Engine&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;12-factor scoring, mode packs, self-healing&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/ops/PROXY_GUIDE.md&quot;&gt;Proxy Guide&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;3-level proxy system, 1proxy marketplace, registry CRUD&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/reference/FREE_TIERS.md&quot;&gt;Free Tiers&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;25+ free API providers consolidated directory&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/guides/FEATURES.md&quot;&gt;Features Gallery&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Visual dashboard tour with screenshots&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/architecture/CODEBASE_DOCUMENTATION.md&quot;&gt;Codebase Documentation&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Beginner-friendly codebase walkthrough&lt;/td&gt;
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h3&gt;🤖 Protocols &amp;amp; APIs&lt;/h3&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;th align=&quot;left&quot;&gt;Document&lt;/th&gt;
   &lt;th align=&quot;left&quot;&gt;Description&lt;/th&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/reference/API_REFERENCE.md&quot;&gt;API Reference&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;All endpoints with examples&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/openapi.yaml&quot;&gt;OpenAPI Spec&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;OpenAPI 3.0 specification&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/open-sse/mcp-server/README.md&quot;&gt;MCP Server&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;104 MCP tools, IDE configs, Python/TS/Go clients&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/frameworks/MCP-SERVER.md&quot;&gt;MCP Server Guide&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;MCP installation, transports, and tool reference&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/src/lib/a2a/README.md&quot;&gt;A2A Server&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;JSON-RPC 2.0 protocol, skills, streaming, task mgmt&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/frameworks/A2A-SERVER.md&quot;&gt;A2A Server Guide&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;A2A agent card, tasks, skills, and streaming&lt;/td&gt;
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h3&gt;📋 Project &amp;amp; Quality&lt;/h3&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;th align=&quot;left&quot;&gt;Document&lt;/th&gt;
   &lt;th align=&quot;left&quot;&gt;Description&lt;/th&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/CONTRIBUTING.md&quot;&gt;Contributing&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Development setup and guidelines&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/ops/BRANCHING_MODEL.md&quot;&gt;Branching &amp;amp; Release Model&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Where PRs target (&lt;code&gt;release/*&lt;/code&gt;), what &lt;code&gt;main&lt;/code&gt; and tags mean&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/CHANGELOG.md&quot;&gt;Changelog&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Full per-version release history&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/SECURITY.md&quot;&gt;Security Policy&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Vulnerability reporting and security practices&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/guides/I18N.md&quot;&gt;i18n Guide&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;40+ language support, translation workflow, RTL&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/ops/RELEASE_CHECKLIST.md&quot;&gt;Release Checklist&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Pre-release validation steps&lt;/td&gt;
  &lt;/tr&gt; 
  &lt;tr&gt;
   &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/ops/COVERAGE_PLAN.md&quot;&gt;Coverage Plan&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
   &lt;td&gt;Test coverage strategy and 25,000+ test suite&lt;/td&gt;
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h1&gt;⭐ Top Contributors&lt;/h1&gt; 
 &lt;blockquote&gt; 
  &lt;p&gt;OmniRoute is shaped by a passionate open-source community. These individuals have made exceptional contributions that directly impact the quality, stability, and reach of the project. &lt;strong&gt;Thank you.&lt;/strong&gt;&lt;/p&gt; 
 &lt;/blockquote&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; width=&quot;160&quot;&gt; &lt;a href=&quot;https://github.com/oyi77&quot;&gt; &lt;img src=&quot;https://github.com/oyi77.png&quot; width=&quot;40&quot; style=&quot;border-radius:50%&quot; alt=&quot;oyi77&quot; /&gt;&lt;br /&gt; &lt;b&gt;oyi77&lt;/b&gt; &lt;/a&gt;&lt;br /&gt; &lt;sub&gt;🥇 213 commits • +114K lines&lt;/sub&gt;&lt;br /&gt; &lt;sub&gt;Analytics engine, SQL aggregations,&lt;br /&gt;proxy marketplace, test coverage&lt;/sub&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;160&quot;&gt; &lt;a href=&quot;https://github.com/rdself&quot;&gt; &lt;img src=&quot;https://github.com/rdself.png&quot; width=&quot;40&quot; style=&quot;border-radius:50%&quot; alt=&quot;R.D. &amp;amp; Randi&quot; /&gt;&lt;br /&gt; &lt;b&gt;R.D. &amp;amp; Randi&lt;/b&gt; &lt;/a&gt;&lt;br /&gt; &lt;sub&gt;🥈 108 commits • +38K lines&lt;/sub&gt;&lt;br /&gt; &lt;sub&gt;Endpoints page, tunnel integrations,&lt;br /&gt;Docker workflows, A2A status, compression UI&lt;/sub&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;160&quot;&gt; &lt;a href=&quot;https://github.com/christopher-s&quot;&gt; &lt;img src=&quot;https://github.com/christopher-s.png&quot; width=&quot;40&quot; style=&quot;border-radius:50%&quot; alt=&quot;Chris Staley&quot; /&gt;&lt;br /&gt; &lt;b&gt;Chris Staley&lt;/b&gt; &lt;/a&gt;&lt;br /&gt; &lt;sub&gt;🥉 70 commits • +1.8K lines&lt;/sub&gt;&lt;br /&gt; &lt;sub&gt;SSE stream hardening, Responses API,&lt;br /&gt;Gemini pagination, test regression fixes&lt;/sub&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;160&quot;&gt; &lt;a href=&quot;https://github.com/zen0bit&quot;&gt; &lt;img src=&quot;https://github.com/zen0bit.png&quot; width=&quot;40&quot; style=&quot;border-radius:50%&quot; alt=&quot;zenobit&quot; /&gt;&lt;br /&gt; &lt;b&gt;zenobit&lt;/b&gt; &lt;/a&gt;&lt;br /&gt; &lt;sub&gt;🏅 62 commits • +22K lines&lt;/sub&gt;&lt;br /&gt; &lt;sub&gt;CI/CD pipeline, i18n for 33 languages,&lt;br /&gt;Void Linux package, platform fixes&lt;/sub&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;160&quot;&gt; &lt;a href=&quot;https://github.com/JxnLexn&quot;&gt; &lt;img src=&quot;https://github.com/JxnLexn.png&quot; width=&quot;40&quot; style=&quot;border-radius:50%&quot; alt=&quot;Jan Leon&quot; /&gt;&lt;br /&gt; &lt;b&gt;Jan Leon&lt;/b&gt; &lt;/a&gt;&lt;br /&gt; &lt;sub&gt;🏅 58 commits • +22K lines&lt;/sub&gt;&lt;br /&gt; &lt;sub&gt;Reasoning-effort routing, proxy controls,&lt;br /&gt;quota visibility, Live Zone compression&lt;/sub&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; width=&quot;160&quot;&gt; &lt;a href=&quot;https://github.com/backryun&quot;&gt; &lt;img src=&quot;https://github.com/backryun.png&quot; width=&quot;40&quot; style=&quot;border-radius:50%&quot; alt=&quot;backryun&quot; /&gt;&lt;br /&gt; &lt;b&gt;backryun&lt;/b&gt; &lt;/a&gt;&lt;br /&gt; &lt;sub&gt;🏅 53 commits • +70K lines&lt;/sub&gt;&lt;br /&gt; &lt;sub&gt;Provider catalog curation — Perplexity, Kimi,&lt;br /&gt;Cerebras, Copilot, LMArena refreshes&lt;/sub&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;160&quot;&gt; &lt;a href=&quot;https://github.com/chirag127&quot;&gt; &lt;img src=&quot;https://github.com/chirag127.png&quot; width=&quot;40&quot; style=&quot;border-radius:50%&quot; alt=&quot;Chirag Singhal&quot; /&gt;&lt;br /&gt; &lt;b&gt;Chirag Singhal&lt;/b&gt; &lt;/a&gt;&lt;br /&gt; &lt;sub&gt;🏅 46 commits • +4.8K lines&lt;/sub&gt;&lt;br /&gt; &lt;sub&gt;Error sanitization, MITM prefill fix,&lt;br /&gt;fusion judge, breaker/429 correctness&lt;/sub&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;160&quot;&gt; &lt;a href=&quot;https://github.com/kfiramar&quot;&gt; &lt;img src=&quot;https://github.com/kfiramar.png&quot; width=&quot;40&quot; style=&quot;border-radius:50%&quot; alt=&quot;kfiramar&quot; /&gt;&lt;br /&gt; &lt;b&gt;kfiramar&lt;/b&gt; &lt;/a&gt;&lt;br /&gt; &lt;sub&gt;🏅 38 commits • +1.7K lines&lt;/sub&gt;&lt;br /&gt; &lt;sub&gt;Codex websocket + passthrough, auth/onboarding,&lt;br /&gt;Electron hardening, DB migrations&lt;/sub&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;160&quot;&gt; &lt;a href=&quot;https://github.com/benzntech&quot;&gt; &lt;img src=&quot;https://github.com/benzntech.png&quot; width=&quot;40&quot; style=&quot;border-radius:50%&quot; alt=&quot;Benson K B&quot; /&gt;&lt;br /&gt; &lt;b&gt;Benson K B&lt;/b&gt; &lt;/a&gt;&lt;br /&gt; &lt;sub&gt;🏅 28 commits • +9.2K lines&lt;/sub&gt;&lt;br /&gt; &lt;sub&gt;Electron desktop app, auto-updater,&lt;br /&gt;release build workflows, cross-platform CI&lt;/sub&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;160&quot;&gt; &lt;a href=&quot;https://github.com/herjarsa&quot;&gt; &lt;img src=&quot;https://github.com/herjarsa.png&quot; width=&quot;40&quot; style=&quot;border-radius:50%&quot; alt=&quot;Hernan J. Ardila&quot; /&gt;&lt;br /&gt; &lt;b&gt;Hernan J. Ardila&lt;/b&gt; &lt;/a&gt;&lt;br /&gt; &lt;sub&gt;🏅 25 commits • +174K lines&lt;/sub&gt;&lt;br /&gt; &lt;sub&gt;Zero-latency combos, vision-bridge auto-routing,&lt;br /&gt;catalog context-length, resilience 429 hints&lt;/sub&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;blockquote&gt; 
  &lt;p&gt;🙏 These contributors&#39; features, bug fixes, and infrastructure improvements are a &lt;strong&gt;core part&lt;/strong&gt; of what makes OmniRoute reliable and feature-rich. Every pull request, every test case, and every i18n translation file matters. Open source is built by people like them.&lt;/p&gt; 
 &lt;/blockquote&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;br /&gt; 
&lt;h2&gt;💖 Sponsors&lt;/h2&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;p&gt;A heartfelt thank-you to the people who fund OmniRoute out of their own pocket — every contribution keeps the project free, independent and moving.&lt;/p&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; width=&quot;180&quot;&gt; &lt;a href=&quot;https://github.com/igormorais123&quot;&gt; &lt;img src=&quot;https://github.com/igormorais123.png?size=140&quot; width=&quot;72&quot; style=&quot;border-radius:50%&quot; alt=&quot;Professor Igor Morais Vasconcelos&quot; /&gt;&lt;br /&gt; &lt;b&gt;Prof. Igor Morais&lt;/b&gt; &lt;/a&gt;&lt;br /&gt; &lt;sub&gt;💛 Sponsor&lt;/sub&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;180&quot;&gt; &lt;a href=&quot;https://github.com/longtao77&quot;&gt; &lt;img src=&quot;https://github.com/longtao77.png?size=140&quot; width=&quot;72&quot; style=&quot;border-radius:50%&quot; alt=&quot;longtao&quot; /&gt;&lt;br /&gt; &lt;b&gt;longtao&lt;/b&gt; &lt;/a&gt;&lt;br /&gt; &lt;sub&gt;💛 Sponsor&lt;/sub&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;p&gt;&lt;sub&gt;… and others who prefer to stay private 💛&lt;/sub&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/sponsors/diegosouzapw&quot;&gt;💖 Become a sponsor →&lt;/a&gt;&lt;/b&gt; — every dollar keeps OmniRoute free and independent.&lt;/p&gt; 
&lt;/div&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h2&gt;👥 500+ Contributors&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/diegosouzapw/OmniRoute/graphs/contributors&quot;&gt;&lt;img src=&quot;https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&amp;amp;max=400&amp;amp;columns=20&amp;amp;anon=1&quot; alt=&quot;Contributors&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;How to Contribute&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Fork the repository&lt;/li&gt; 
 &lt;li&gt;Branch from the &lt;strong&gt;active&lt;/strong&gt; &lt;code&gt;release/vX.Y.Z&lt;/code&gt; tip (not &lt;code&gt;main&lt;/code&gt;) — see &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/docs/ops/BRANCHING_MODEL.md&quot;&gt;Branching &amp;amp; Release Model&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Create your feature branch (&lt;code&gt;git checkout -b feat/amazing-feature&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;Commit your changes (&lt;code&gt;git commit -m &#39;feat: add amazing feature&#39;&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;Push to the branch (&lt;code&gt;git push origin feat/amazing-feature&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;Open a Pull Request with &lt;strong&gt;base = that &lt;code&gt;release/vX.Y.Z&lt;/code&gt; branch&lt;/strong&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for detailed guidelines.&lt;/p&gt; 
&lt;h3&gt;Releasing a New Version&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Create a release — npm publish happens automatically
gh release create v3.8.2 --title &quot;v3.8.2&quot; --generate-notes
&lt;/code&gt;&lt;/pre&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h2&gt;📊 Stars&lt;/h2&gt; 
 &lt;a href=&quot;https://www.star-history.com/?repos=diegosouzapw%2FOmniRoute&amp;amp;type=date&amp;amp;legend=top-left&quot;&gt; 
  &lt;picture&gt; 
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://api.star-history.com/chart?repos=diegosouzapw/OmniRoute&amp;amp;type=date&amp;amp;theme=dark&amp;amp;legend=top-left&amp;amp;sealed_token=XP_ycEjv7s31p1edvhsMOXry51OWYsUjDRWjflSG7jQKRpO9hPGg7i_EHvwhI6QtrARTMH-YGjJhi8sumRYflEJD0DPlH_MMHjizhBYCX8fbHFrHEiNvVA&quot; /&gt; 
   &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;https://api.star-history.com/chart?repos=diegosouzapw/OmniRoute&amp;amp;type=date&amp;amp;legend=top-left&amp;amp;sealed_token=XP_ycEjv7s31p1edvhsMOXry51OWYsUjDRWjflSG7jQKRpO9hPGg7i_EHvwhI6QtrARTMH-YGjJhi8sumRYflEJD0DPlH_MMHjizhBYCX8fbHFrHEiNvVA&quot; /&gt; 
   &lt;img alt=&quot;Star History Chart&quot; src=&quot;https://api.star-history.com/chart?repos=diegosouzapw/OmniRoute&amp;amp;type=date&amp;amp;legend=top-left&amp;amp;sealed_token=XP_ycEjv7s31p1edvhsMOXry51OWYsUjDRWjflSG7jQKRpO9hPGg7i_EHvwhI6QtrARTMH-YGjJhi8sumRYflEJD0DPlH_MMHjizhBYCX8fbHFrHEiNvVA&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt; 
 &lt;br /&gt; 
 &lt;div align=&quot;center&quot;&gt; 
  &lt;h2&gt;🌍 StarMapper&lt;/h2&gt; 
  &lt;a href=&quot;https://starmapper.bruniaux.com/diegosouzapw/omniroute&quot;&gt; 
   &lt;picture&gt; 
    &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://starmapper.bruniaux.com/api/map-image/diegosouzapw/omniroute?theme=dark&quot; /&gt; 
    &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;https://starmapper.bruniaux.com/api/map-image/diegosouzapw/omniroute?theme=light&quot; /&gt; 
    &lt;img alt=&quot;StarMapper&quot; src=&quot;https://starmapper.bruniaux.com/api/map-image/diegosouzapw/omniroute&quot; /&gt; 
   &lt;/picture&gt; &lt;/a&gt; 
 &lt;/div&gt; 
 &lt;br /&gt; 
 &lt;div align=&quot;center&quot;&gt; 
  &lt;h2&gt;🙏 Acknowledgments&lt;/h2&gt; 
 &lt;/div&gt; 
 &lt;p&gt;OmniRoute stands on the shoulders of giants. It started as a fork of &lt;strong&gt;&lt;a href=&quot;https://github.com/decolua/9router&quot;&gt;9router&lt;/a&gt;&lt;/strong&gt; and a TypeScript port of the Go project &lt;strong&gt;&lt;a href=&quot;https://github.com/router-for-me/CLIProxyAPI&quot;&gt;CLIProxyAPI&lt;/a&gt;&lt;/strong&gt; — and from there, every subsystem below was inspired by an open-source project that got there first. Each one shaped a concrete piece of OmniRoute. This is our thank-you to all of them. 🙏&lt;/p&gt; 
 &lt;blockquote&gt; 
  &lt;p&gt;⭐ star counts as of July 2026 — go give these projects a star.&lt;/p&gt; 
 &lt;/blockquote&gt; 
 &lt;h3&gt;🧬 Lineage &amp;amp; gateway&lt;/h3&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt;
    &lt;th align=&quot;left&quot;&gt;Project&lt;/th&gt;
    &lt;th align=&quot;center&quot;&gt;⭐&lt;/th&gt;
    &lt;th align=&quot;left&quot;&gt;How it inspired OmniRoute&lt;/th&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/decolua/9router&quot;&gt;9router&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;22.7k&lt;/td&gt;
    &lt;td&gt;The original project this fork is built on — extended here with multi-modal APIs and a full TypeScript rewrite.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/router-for-me/CLIProxyAPI&quot;&gt;CLIProxyAPI&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;43.6k&lt;/td&gt;
    &lt;td&gt;The Go implementation that inspired this JavaScript / TypeScript port.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/BerriAI/litellm&quot;&gt;LiteLLM&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;54.0k&lt;/td&gt;
    &lt;td&gt;The AI gateway whose public pricing dataset feeds our cost-tracking sync and whose provider-normalization model informed our routing.&lt;/td&gt;
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;h3&gt;🗜️ Context &amp;amp; token compression — engines&lt;/h3&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt;
    &lt;th align=&quot;left&quot;&gt;Project&lt;/th&gt;
    &lt;th align=&quot;center&quot;&gt;⭐&lt;/th&gt;
    &lt;th align=&quot;left&quot;&gt;How it inspired OmniRoute&lt;/th&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/JuliusBrussee/caveman&quot;&gt;Caveman&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;90.8k&lt;/td&gt;
    &lt;td&gt;The viral &quot;why use many token when few token do trick&quot; project — its caveman-speak philosophy powers our standard compression mode and 30+ filler/condensation rules.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/rtk-ai/rtk&quot;&gt;RTK – Rust Token Killer&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;71.8k&lt;/td&gt;
    &lt;td&gt;High-performance command-output compression — inspired our RTK engine, JSON filter DSL, raw-output recovery and the stacked RTK → Caveman pipeline.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/headroomlabs-ai/headroom&quot;&gt;headroom&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;60.1k&lt;/td&gt;
    &lt;td&gt;Reversible context-compression (SmartCrusher) — inspired our &lt;code&gt;headroom&lt;/code&gt; engine and the &lt;code&gt;ccr&lt;/code&gt; retrieve-marker pattern.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/microsoft/LLMLingua&quot;&gt;LLMLingua&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;6.5k&lt;/td&gt;
    &lt;td&gt;Prompt-compression research (LLMLingua / LLMLingua-2) — inspired our async, code-safe, fail-open &lt;code&gt;llmlingua&lt;/code&gt; engine.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/atjsh/llmlingua-2-js&quot;&gt;llmlingua-2-js&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;30&lt;/td&gt;
    &lt;td&gt;The JS/ONNX port (MobileBERT / XLM-RoBERTa) used as the worker-thread backend for our LLMLingua engine.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/leninejunior/troglodita&quot;&gt;Troglodita&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;26&lt;/td&gt;
    &lt;td&gt;PT-BR token compression — powers our pt-BR language pack: pleonasm reduction and filler removal tuned for Brazilian-Portuguese grammar.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/DietrichGebert/ponytail&quot;&gt;ponytail&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;86.0k&lt;/td&gt;
    &lt;td&gt;The viral &quot;lazy senior dev&quot; YAGNI-coder skill — inspired our &lt;b&gt;less-code&lt;/b&gt; Output Style: smallest-working-change steering that cuts _generated_ code (the output-axis sibling to Caveman&#39;s terse prose).&lt;/td&gt;
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;h3&gt;🧩 Compact formats, token research &amp;amp; code-aware tooling&lt;/h3&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt;
    &lt;th align=&quot;left&quot;&gt;Project&lt;/th&gt;
    &lt;th align=&quot;center&quot;&gt;⭐&lt;/th&gt;
    &lt;th align=&quot;left&quot;&gt;How it inspired OmniRoute&lt;/th&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/toon-format/toon&quot;&gt;TOON&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;24.9k&lt;/td&gt;
    &lt;td&gt;Token-Oriented Object Notation — its columnar, header-plus-rows model shaped our tabular compaction stage.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/blackwell-systems/gcf&quot;&gt;GCF – Graph Compact Format&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;22&lt;/td&gt;
    &lt;td&gt;First inspired our tabular compaction stage; now its zero-dependency, lossless generic-profile encoder is &lt;b&gt;vendored directly&lt;/b&gt; as the Headroom codec (MIT, SPDX-marked), current with GCF spec v3.2.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/ooples/token-optimizer-mcp&quot;&gt;token-optimizer-mcp&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;444&lt;/td&gt;
    &lt;td&gt;Brotli/SQLite cache + per-session context-delta — inspired our &lt;code&gt;session-dedup&lt;/code&gt; engine.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/Mibayy/token-savior&quot;&gt;token-savior&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;1.1k&lt;/td&gt;
    &lt;td&gt;Bash-output compaction + MCP profiles — inspired our compression bail-out discipline and MCP tool-manifest reduction.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/ppgranger/token-saver&quot;&gt;token-saver&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;117&lt;/td&gt;
    &lt;td&gt;Content-aware, per-file-type output compression with failure-aware bail-out — validated our per-type dispatch and minimum-gain skip.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/alexgreensh/token-optimizer&quot;&gt;token-optimizer&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;1.7k&lt;/td&gt;
    &lt;td&gt;&quot;Find the ghost tokens&quot; — its offload + recoverable-handle pattern informed our CCR offload thinking.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/Shweta-Mishra-ai/tokenmizer&quot;&gt;TokenMizer&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;16&lt;/td&gt;
    &lt;td&gt;A session-graph + cross-turn line-dedup blueprint that informed our session-dedup design.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/jessefreitas/OmniCompress&quot;&gt;OmniCompress&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;3&lt;/td&gt;
    &lt;td&gt;Rust columnar-JSON + content-addressed retrieve + cross-message dedup — validated our &lt;code&gt;headroom&lt;/code&gt;/&lt;code&gt;ccr&lt;/code&gt;/&lt;code&gt;session-dedup&lt;/code&gt; engine design and the cache-stable &quot;compressed form is position-independent&quot; invariant.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/atlassian-labs/mcp-compressor&quot;&gt;mcp-compressor&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;98&lt;/td&gt;
    &lt;td&gt;MCP tool-schema/description compression — informed our MCP tool-manifest cardinality reduction.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/pdavis68/RepoMapper&quot;&gt;RepoMapper&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;187&lt;/td&gt;
    &lt;td&gt;Aider-style repo-map ranking — informed our repo-map / retrieval-ranking exploration.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/mrsimpson/quiet-shell-mcp&quot;&gt;quiet-shell-mcp&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;4&lt;/td&gt;
    &lt;td&gt;Declarative shell-output reduction over MCP — validated our declarative bash-output compaction.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/dsherret/ts-morph&quot;&gt;ts-morph&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;6.1k&lt;/td&gt;
    &lt;td&gt;TypeScript Compiler API toolkit — inspired our parser-based comment removal that preserves string, template and regex literals.&lt;/td&gt;
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;h3&gt;🧠 Memory &amp;amp; RAG&lt;/h3&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt;
    &lt;th align=&quot;left&quot;&gt;Project&lt;/th&gt;
    &lt;th align=&quot;center&quot;&gt;⭐&lt;/th&gt;
    &lt;th align=&quot;left&quot;&gt;How it inspired OmniRoute&lt;/th&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/mem0ai/mem0&quot;&gt;Mem0&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;61.2k&lt;/td&gt;
    &lt;td&gt;Universal memory layer — its proxy-as-write/read-boundary model shaped our memory architecture.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/letta-ai/letta&quot;&gt;Letta (MemGPT)&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;23.9k&lt;/td&gt;
    &lt;td&gt;Stateful agents with tiered memory — inspired our Context Control &amp;amp; Recovery (CCR) tiered model.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/onestardao/WFGY&quot;&gt;WFGY&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;1.8k&lt;/td&gt;
    &lt;td&gt;The ProblemMap taxonomy of 16 recurring RAG/LLM failure modes — the shared vocabulary in our troubleshooting guide.&lt;/td&gt;
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;h3&gt;🛰️ Traffic inspection, MITM &amp;amp; transparent proxy&lt;/h3&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt;
    &lt;th align=&quot;left&quot;&gt;Project&lt;/th&gt;
    &lt;th align=&quot;center&quot;&gt;⭐&lt;/th&gt;
    &lt;th align=&quot;left&quot;&gt;How it inspired OmniRoute&lt;/th&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/chouzz/llm-interceptor&quot;&gt;llm-interceptor&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;49&lt;/td&gt;
    &lt;td&gt;MITM interception/analysis of coding-assistant ↔ LLM traffic — our Traffic Inspector ports its SSE merge, conversation normalization, host passthrough and secret masking (MIT).&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/InterceptSuite/ProxyBridge&quot;&gt;ProxyBridge&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;5.5k&lt;/td&gt;
    &lt;td&gt;Transparent per-process proxy routing — inspired our crash-safe MITM teardown, socket idle-timeouts, &lt;code&gt;/proc&lt;/code&gt; process attribution and TPROXY capture.&lt;/td&gt;
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;h3&gt;📚 Model data, observability &amp;amp; UI&lt;/h3&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt;
    &lt;th align=&quot;left&quot;&gt;Project&lt;/th&gt;
    &lt;th align=&quot;center&quot;&gt;⭐&lt;/th&gt;
    &lt;th align=&quot;left&quot;&gt;How it inspired OmniRoute&lt;/th&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/anomalyco/models.dev&quot;&gt;models.dev&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;6.0k&lt;/td&gt;
    &lt;td&gt;Open database of AI model specs, pricing and capabilities — synced natively into our model catalog.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/xyflow/xyflow&quot;&gt;React Flow / xyflow&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;37.7k&lt;/td&gt;
    &lt;td&gt;The node-based graph library powering our real-time Compression Studio and Combo/Routing Studio.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/langchain-ai/langgraph&quot;&gt;LangGraph&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;37.6k&lt;/td&gt;
    &lt;td&gt;LangGraph Studio&#39;s live workflow-graph visualization inspired our Studios&#39; real-time cascade view.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/langfuse/langfuse&quot;&gt;Langfuse&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;31.4k&lt;/td&gt;
    &lt;td&gt;Its trace → span → generation observability model shaped our Compression Studio waterfall.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/kiali/kiali&quot;&gt;Kiali&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;3.6k&lt;/td&gt;
    &lt;td&gt;Istio service-mesh observability — inspired our circuit-breaker badges and error-edge visuals in the Routing/Combo Studio.&lt;/td&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/lobehub/lobe-icons&quot;&gt;lobe-icons&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;2.2k&lt;/td&gt;
    &lt;td&gt;AI/LLM brand logos that render the provider icons across our dashboard.&lt;/td&gt;
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;h3&gt;🛡️ Security&lt;/h3&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt;
    &lt;th align=&quot;left&quot;&gt;Project&lt;/th&gt;
    &lt;th align=&quot;center&quot;&gt;⭐&lt;/th&gt;
    &lt;th align=&quot;left&quot;&gt;How it inspired OmniRoute&lt;/th&gt;
   &lt;/tr&gt; 
   &lt;tr&gt;
    &lt;td nowrap&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/tldrsec/awesome-secure-defaults&quot;&gt;awesome-secure-defaults&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
    &lt;td align=&quot;center&quot;&gt;710&lt;/td&gt;
    &lt;td&gt;A curated list of secure-by-default libraries that guides our security choices (Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink).&lt;/td&gt;
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;h3&gt;🧭 Complementary tools&lt;/h3&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt;
    &lt;th align=&quot;left&quot;&gt;Project&lt;/th&gt;
    &lt;th align=&quot;center&quot;&gt;⭐&lt;/th&gt;
    &lt;th align=&quot;left&quot;&gt;How it inspired OmniRoute&lt;/th&gt;
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
 &lt;h2&gt;📄 License&lt;/h2&gt; 
 &lt;p&gt;MIT License - see &lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/LICENSE&quot;&gt;LICENSE&lt;/a&gt; for details.&lt;/p&gt; 
 &lt;hr /&gt; 
 &lt;div align=&quot;center&quot;&gt; 
  &lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/diegosouzapw/OmniRoute/release/v3.8.50/#-omniroute&quot;&gt;⬆ Back to top&lt;/a&gt;&lt;/strong&gt; · Built with ❤️ for the open-source AI community.&lt;/p&gt; 
  &lt;p&gt;&lt;sub&gt;OmniRoute v3.8.49 · Node ≥22.22.2 · MIT License · &lt;a href=&quot;https://omniroute.online&quot;&gt;omniroute.online&lt;/a&gt;&lt;/sub&gt;&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;!-- GitHub Discussions enabled for community Q&amp;A --&gt; 
&lt;/div&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/ba7815a9f18587d449e4d812d2589dcbe2c3e49537bf868f568dac2f7f589f13/diegosouzapw/OmniRoute" medium="image" />
      
    </item>
    
    <item>
      <title>koala73/worldmonitor</title>
      <link>https://github.com/koala73/worldmonitor</link>
      <description>&lt;p&gt;Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;World Monitor&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/koala73/worldmonitor/main/README.zh-CN.md&quot;&gt;简体中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/koala73/worldmonitor/main/README.ja-JP.md&quot;&gt;日本語&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Real-time global intelligence dashboard&lt;/strong&gt; — AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/koala73/worldmonitor/stargazers&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/koala73/worldmonitor?style=social&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/re63kWKxaz&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Discord-Join-5865F2?style=flat&amp;amp;logo=discord&amp;amp;logoColor=white&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.gnu.org/licenses/agpl-3.0&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/License-AGPL%20v3-blue.svg?sanitize=true&quot; alt=&quot;License: AGPL v3&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.typescriptlang.org/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/TypeScript-007ACC?style=flat&amp;amp;logo=typescript&amp;amp;logoColor=white&quot; alt=&quot;TypeScript&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/koala73/worldmonitor/commits/main&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/last-commit/koala73/worldmonitor&quot; alt=&quot;Last commit&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/koala73/worldmonitor/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/koala73/worldmonitor?style=flat&quot; alt=&quot;Latest release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/worldmonitor&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/worldmonitor?logo=npm&amp;amp;label=npm&quot; alt=&quot;npm: worldmonitor&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://smithery.ai/servers/worldmonitor/wm-mcp&quot;&gt;&lt;img src=&quot;https://smithery.ai/badge/worldmonitor/wm-mcp&quot; alt=&quot;smithery badge&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://skills.sh/koala73/worldmonitor&quot;&gt;&lt;img src=&quot;https://skills.sh/b/koala73/worldmonitor&quot; alt=&quot;skills.sh&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.worldmonitor.app&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Web_App-worldmonitor.app-blue?style=for-the-badge&amp;amp;logo=googlechrome&amp;amp;logoColor=white&quot; alt=&quot;Web App&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href=&quot;https://tech.worldmonitor.app&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Tech_Variant-tech.worldmonitor.app-0891b2?style=for-the-badge&amp;amp;logo=googlechrome&amp;amp;logoColor=white&quot; alt=&quot;Tech Variant&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href=&quot;https://finance.worldmonitor.app&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Finance_Variant-finance.worldmonitor.app-059669?style=for-the-badge&amp;amp;logo=googlechrome&amp;amp;logoColor=white&quot; alt=&quot;Finance Variant&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href=&quot;https://commodity.worldmonitor.app&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Commodity_Variant-commodity.worldmonitor.app-b45309?style=for-the-badge&amp;amp;logo=googlechrome&amp;amp;logoColor=white&quot; alt=&quot;Commodity Variant&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href=&quot;https://happy.worldmonitor.app&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Happy_Variant-happy.worldmonitor.app-f59e0b?style=for-the-badge&amp;amp;logo=googlechrome&amp;amp;logoColor=white&quot; alt=&quot;Happy Variant&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href=&quot;https://energy.worldmonitor.app&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Energy_Variant-energy.worldmonitor.app-eab308?style=for-the-badge&amp;amp;logo=googlechrome&amp;amp;logoColor=white&quot; alt=&quot;Energy Variant&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.npmjs.com/package/worldmonitor&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/worldmonitor?style=for-the-badge&amp;amp;logo=npm&amp;amp;logoColor=white&amp;amp;label=npm%20i%20worldmonitor&amp;amp;color=CB3837&quot; alt=&quot;npm i worldmonitor&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href=&quot;https://www.npmjs.com/package/worldmonitor&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/CLI-npx%20worldmonitor-CB3837?style=for-the-badge&amp;amp;logo=npm&amp;amp;logoColor=white&quot; alt=&quot;npx worldmonitor&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href=&quot;https://pypi.org/project/worldmonitor-sdk/&quot;&gt;&lt;img src=&quot;https://img.shields.io/pypi/v/worldmonitor-sdk?style=for-the-badge&amp;amp;logo=pypi&amp;amp;logoColor=white&amp;amp;label=pip%20install%20worldmonitor-sdk&amp;amp;color=3775A9&quot; alt=&quot;pip install worldmonitor-sdk&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href=&quot;https://rubygems.org/gems/worldmonitor&quot;&gt;&lt;img src=&quot;https://img.shields.io/gem/v/worldmonitor?style=for-the-badge&amp;amp;logo=rubygems&amp;amp;logoColor=white&amp;amp;label=gem%20install%20worldmonitor&amp;amp;color=E9573F&quot; alt=&quot;gem install worldmonitor&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href=&quot;https://pkg.go.dev/github.com/koala73/worldmonitor/sdk/go&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/go%20get-sdk%2Fgo-00ADD8?style=for-the-badge&amp;amp;logo=go&amp;amp;logoColor=white&quot; alt=&quot;go get github.com/koala73/worldmonitor/sdk/go&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.worldmonitor.app/api/download?platform=windows-exe&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Download-Windows_(.exe)-0078D4?style=for-the-badge&amp;amp;logo=windows&amp;amp;logoColor=white&quot; alt=&quot;Download Windows&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href=&quot;https://www.worldmonitor.app/api/download?platform=macos-arm64&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Download-macOS_Apple_Silicon-000000?style=for-the-badge&amp;amp;logo=apple&amp;amp;logoColor=white&quot; alt=&quot;Download macOS ARM&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href=&quot;https://www.worldmonitor.app/api/download?platform=macos-x64&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Download-macOS_Intel-555555?style=for-the-badge&amp;amp;logo=apple&amp;amp;logoColor=white&quot; alt=&quot;Download macOS Intel&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href=&quot;https://www.worldmonitor.app/api/download?platform=linux-appimage&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Download-Linux_(.AppImage)-FCC624?style=for-the-badge&amp;amp;logo=linux&amp;amp;logoColor=black&quot; alt=&quot;Download Linux&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.worldmonitor.app/docs/documentation&quot;&gt;&lt;strong&gt;Documentation&lt;/strong&gt;&lt;/a&gt; &amp;nbsp;·&amp;nbsp; &lt;a href=&quot;https://github.com/koala73/worldmonitor/releases/latest&quot;&gt;&lt;strong&gt;Releases&lt;/strong&gt;&lt;/a&gt; &amp;nbsp;·&amp;nbsp; &lt;a href=&quot;https://www.worldmonitor.app/docs/contributing&quot;&gt;&lt;strong&gt;Contributing&lt;/strong&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/koala73/worldmonitor/main/docs/images/worldmonitor-7-mar-2026.jpg&quot; alt=&quot;World Monitor Dashboard&quot; /&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;What It Does&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;500+ curated news feeds&lt;/strong&gt; across 15 categories, AI-synthesized into briefs&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Dual map engine&lt;/strong&gt; — 3D globe (&lt;a href=&quot;http://globe.gl&quot;&gt;globe.gl&lt;/a&gt;) and WebGL flat map (&lt;a href=&quot;http://deck.gl&quot;&gt;deck.gl&lt;/a&gt;) with 56 map layer types&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Cross-stream correlation&lt;/strong&gt; — military, economic, disaster, and escalation signal convergence&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Country Instability Index (CII)&lt;/strong&gt; — server-authoritative CII v8 stress scoring for 31 Tier-1 countries&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Finance radar&lt;/strong&gt; — 29 stock exchanges, commodities, crypto, and 7-signal market composite&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Local AI&lt;/strong&gt; — run everything with Ollama, no API keys required&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;6 site variants&lt;/strong&gt; from a single codebase (world, tech, finance, commodity, happy, energy)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Native desktop app&lt;/strong&gt; (Tauri 2) for macOS, Windows, and Linux&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;26 languages&lt;/strong&gt; with native-language feeds and RTL support&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For the full feature list, architecture, data sources, and algorithms, see the &lt;strong&gt;&lt;a href=&quot;https://www.worldmonitor.app/docs/documentation&quot;&gt;documentation&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Support Status&lt;/h2&gt; 
&lt;p&gt;All site variants and desktop binaries are built from a single codebase and ship from the same release process. The table below clarifies maintenance status so you know which surfaces are safe to depend on.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Surface&lt;/th&gt; 
   &lt;th&gt;Status&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;worldmonitor.app&lt;/code&gt;, &lt;code&gt;tech.&lt;/code&gt;, &lt;code&gt;finance.&lt;/code&gt;, &lt;code&gt;commodity.&lt;/code&gt;, &lt;code&gt;happy.&lt;/code&gt;, &lt;code&gt;energy.&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Stable&lt;/td&gt; 
   &lt;td&gt;Public deployments built from this repo, actively maintained&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Desktop binaries (Windows / macOS Apple Silicon / macOS Intel / Linux AppImage)&lt;/td&gt; 
   &lt;td&gt;Stable&lt;/td&gt; 
   &lt;td&gt;One Tauri binary for every variant — install World Monitor and switch to tech, finance, commodity, energy, or happy in-app. There is deliberately no per-variant download&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Issues filed against any of the above are triaged from the same backlog — see the &lt;a href=&quot;https://github.com/koala73/worldmonitor/issues&quot;&gt;issues board&lt;/a&gt; for currently-open work.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/koala73/worldmonitor.git
cd worldmonitor
npm install
npm run dev
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Open &lt;a href=&quot;http://localhost:3000&quot;&gt;localhost:3000&lt;/a&gt; (override the port with &lt;code&gt;DEV_PORT&lt;/code&gt; in &lt;code&gt;.env.local&lt;/code&gt;). The app runs with no environment variables.&lt;/p&gt; 
&lt;p&gt;Feature-specific data sources may require credentials. See &lt;code&gt;.env.example&lt;/code&gt; for the full list.&lt;/p&gt; 
&lt;p&gt;For variant-specific development:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm run dev:tech       # tech.worldmonitor.app
npm run dev:finance    # finance.worldmonitor.app
npm run dev:commodity  # commodity.worldmonitor.app
npm run dev:happy      # happy.worldmonitor.app
npm run dev:energy     # energy.worldmonitor.app
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;See the &lt;strong&gt;&lt;a href=&quot;https://www.worldmonitor.app/docs/getting-started&quot;&gt;self-hosting guide&lt;/a&gt;&lt;/strong&gt; for deployment options (Vercel, Docker, static).&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Tech Stack&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Category&lt;/th&gt; 
   &lt;th&gt;Technologies&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Frontend&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Vanilla TypeScript, Vite, &lt;a href=&quot;http://globe.gl&quot;&gt;globe.gl&lt;/a&gt; + Three.js, &lt;a href=&quot;http://deck.gl&quot;&gt;deck.gl&lt;/a&gt; + MapLibre GL&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Desktop&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Tauri 2 (Rust) with Node.js sidecar&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;AI/ML&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Ollama / Groq / OpenRouter, Transformers.js (browser-side)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;API Contracts&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Protocol Buffers (295 protos, 36 services), sebuf HTTP annotations&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Vercel Edge Functions (60+), Railway relay, Tauri, PWA&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Caching&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Redis (Upstash), 3-tier cache, CDN, service worker&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Full stack details in the &lt;strong&gt;&lt;a href=&quot;https://www.worldmonitor.app/docs/architecture&quot;&gt;architecture docs&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Programmatic Access&lt;/h2&gt; 
&lt;p&gt;World Monitor is built for agents and scripts as well as browsers:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;MCP server&lt;/strong&gt; — &lt;code&gt;https://worldmonitor.app/mcp&lt;/code&gt; (Streamable HTTP). Public &lt;code&gt;tools/list&lt;/code&gt;; &lt;code&gt;tools/call&lt;/code&gt; authenticates with a &lt;code&gt;X-WorldMonitor-Key&lt;/code&gt; header or OAuth.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;REST API&lt;/strong&gt; — base &lt;code&gt;https://api.worldmonitor.app&lt;/code&gt;, described by the &lt;a href=&quot;https://worldmonitor.app/openapi.yaml&quot;&gt;OpenAPI spec&lt;/a&gt;.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;CLI&lt;/strong&gt; — the official &lt;a href=&quot;https://www.npmjs.com/package/worldmonitor&quot;&gt;&lt;code&gt;worldmonitor&lt;/code&gt;&lt;/a&gt; npm package (source in &lt;a href=&quot;https://raw.githubusercontent.com/koala73/worldmonitor/main/cli/&quot;&gt;&lt;code&gt;cli/&lt;/code&gt;&lt;/a&gt;):&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;npx worldmonitor tools          # run ad-hoc — list every MCP tool (no key needed)
npm install -g worldmonitor     # or install the `worldmonitor` (alias `wm`) command
worldmonitor risk IR --api-key wm_xxx
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;SDKs&lt;/strong&gt; — official zero-dependency client libraries mirroring the CLI: Python &lt;a href=&quot;https://pypi.org/project/worldmonitor-sdk/&quot;&gt;&lt;code&gt;worldmonitor-sdk&lt;/code&gt;&lt;/a&gt; (source in &lt;a href=&quot;https://raw.githubusercontent.com/koala73/worldmonitor/main/sdk/python/&quot;&gt;&lt;code&gt;sdk/python/&lt;/code&gt;&lt;/a&gt;), Ruby &lt;a href=&quot;https://rubygems.org/gems/worldmonitor&quot;&gt;&lt;code&gt;worldmonitor&lt;/code&gt;&lt;/a&gt; (&lt;a href=&quot;https://raw.githubusercontent.com/koala73/worldmonitor/main/sdk/ruby/&quot;&gt;&lt;code&gt;sdk/ruby/&lt;/code&gt;&lt;/a&gt;), Go &lt;a href=&quot;https://pkg.go.dev/github.com/koala73/worldmonitor/sdk/go&quot;&gt;&lt;code&gt;github.com/koala73/worldmonitor/sdk/go&lt;/code&gt;&lt;/a&gt; (&lt;a href=&quot;https://raw.githubusercontent.com/koala73/worldmonitor/main/sdk/go/&quot;&gt;&lt;code&gt;sdk/go/&lt;/code&gt;&lt;/a&gt;). Guide: &lt;a href=&quot;https://www.worldmonitor.app/docs/sdks&quot;&gt;worldmonitor.app/docs/sdks&lt;/a&gt;.&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Agent discovery files: &lt;a href=&quot;https://worldmonitor.app/llms.txt&quot;&gt;&lt;code&gt;llms.txt&lt;/code&gt;&lt;/a&gt; · &lt;a href=&quot;https://worldmonitor.app/.well-known/agent-skills/index.json&quot;&gt;agent-skills manifest&lt;/a&gt; · &lt;a href=&quot;https://worldmonitor.app/.well-known/api-catalog&quot;&gt;api-catalog&lt;/a&gt;. Get an API key at &lt;a href=&quot;https://www.worldmonitor.app/pro&quot;&gt;worldmonitor.app/pro&lt;/a&gt;.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Flight Data&lt;/h2&gt; 
&lt;p&gt;Flight data provided graciously by &lt;a href=&quot;https://wingbits.com?utm_source=worldmonitor&amp;amp;utm_medium=referral&amp;amp;utm_campaign=worldmonitor&quot;&gt;Wingbits&lt;/a&gt;, the most advanced ADS-B flight data solution.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Data Sources&lt;/h2&gt; 
&lt;p&gt;WorldMonitor aggregates 530+ observed upstream hosts across geopolitics, finance, energy, climate, aviation, cyber, military, infrastructure, and news intelligence — surfaced through 500+ curated feeds and tracked by a freshness monitor covering 35 source groups. See the full &lt;a href=&quot;https://www.worldmonitor.app/docs/data-sources&quot;&gt;data sources catalog&lt;/a&gt; for providers, feed tiers, license posture, and collection methods.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Contributions welcome! See &lt;a href=&quot;https://raw.githubusercontent.com/koala73/worldmonitor/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for guidelines.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm run typecheck        # Type checking
npm run build:full       # Production build
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;AGPL-3.0-only&lt;/strong&gt; for the source code. Commercial use is permitted under the AGPL when you comply with its copyleft and source-availability terms.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Use Case&lt;/th&gt; 
   &lt;th&gt;Allowed?&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Personal / research / educational&lt;/td&gt; 
   &lt;td&gt;Yes, under AGPL-3.0-only&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Self-hosted instance&lt;/td&gt; 
   &lt;td&gt;Yes, under AGPL-3.0-only&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Fork and modify&lt;/td&gt; 
   &lt;td&gt;Yes, share source under AGPL-3.0-only when required&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Commercial use / SaaS&lt;/td&gt; 
   &lt;td&gt;Yes, under AGPL-3.0-only when you comply with AGPL obligations&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Private-source proprietary use or official branding rights&lt;/td&gt; 
   &lt;td&gt;Separate commercial or trademark permission needed&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/koala73/worldmonitor/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt; for the full code license and &lt;a href=&quot;https://raw.githubusercontent.com/koala73/worldmonitor/main/docs/license.mdx&quot;&gt;docs/license.mdx&lt;/a&gt; for a plain-language summary. Commercial licensing is available as an alternative option for teams that need non-AGPL terms.&lt;/p&gt; 
&lt;p&gt;Copyright (C) 2024-2026 Elie Habib. All rights reserved.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Author&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Elie Habib&lt;/strong&gt; — &lt;a href=&quot;https://github.com/koala73&quot;&gt;GitHub&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Contributors&lt;/h2&gt; 
&lt;a href=&quot;https://github.com/koala73/worldmonitor/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=koala73/worldmonitor&quot; /&gt; &lt;/a&gt; 
&lt;h2&gt;Security Acknowledgments&lt;/h2&gt; 
&lt;p&gt;We thank the following researchers for responsibly disclosing security issues:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Cody Richard&lt;/strong&gt; — Disclosed three security findings covering IPC command exposure, renderer-to-sidecar trust boundary analysis, and fetch patch credential injection architecture (2026)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;See our &lt;a href=&quot;https://raw.githubusercontent.com/koala73/worldmonitor/main/SECURITY.md&quot;&gt;Security Policy&lt;/a&gt; for responsible disclosure guidelines.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.worldmonitor.app&quot;&gt;worldmonitor.app&lt;/a&gt; &amp;nbsp;·&amp;nbsp; &lt;a href=&quot;https://www.worldmonitor.app/docs/documentation&quot;&gt;docs.worldmonitor.app&lt;/a&gt; &amp;nbsp;·&amp;nbsp; &lt;a href=&quot;https://finance.worldmonitor.app&quot;&gt;finance.worldmonitor.app&lt;/a&gt; &amp;nbsp;·&amp;nbsp; &lt;a href=&quot;https://commodity.worldmonitor.app&quot;&gt;commodity.worldmonitor.app&lt;/a&gt; &lt;/p&gt; 
&lt;h2&gt;Star History&lt;/h2&gt; 
&lt;a href=&quot;https://api.star-history.com/svg?repos=koala73/worldmonitor&amp;amp;type=Date&quot;&gt; 
 &lt;picture&gt; 
  &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://api.star-history.com/svg?repos=koala73/worldmonitor&amp;amp;type=Date&amp;amp;theme=dark&quot; /&gt; 
  &lt;img alt=&quot;Star History Chart&quot; src=&quot;https://api.star-history.com/svg?repos=koala73/worldmonitor&amp;amp;type=Date&quot; /&gt; 
 &lt;/picture&gt; &lt;/a&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/1130564872/59ff0927-deb4-4941-8cbc-b68cbe060417" medium="image" />
      
    </item>
    
    <item>
      <title>stablyai/orca</title>
      <link>https://github.com/stablyai/orca</link>
      <description>&lt;p&gt;Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and VPS.&lt;/p&gt;&lt;hr&gt;&lt;h1 align=&quot;center&quot;&gt; &lt;a href=&quot;https://onOrca.dev&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/stablyai/orca/main/resources/build/icon.png&quot; alt=&quot;Orca&quot; width=&quot;64&quot; valign=&quot;middle&quot; /&gt;&lt;/a&gt; Orca &lt;/h1&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/stablyai/orca&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/stablyai/orca?style=flat&amp;amp;label=%E2%98%85&amp;amp;color=08C&quot; alt=&quot;GitHub stars&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/stablyai/orca/releases&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/assets/readme-downloads.svg?sanitize=true&quot; alt=&quot;Total downloads across all releases&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://img.shields.io/badge/license-MIT-08C?style=flat&quot; alt=&quot;License: MIT&quot; /&gt; &lt;a href=&quot;https://discord.gg/fzjDKHxv8Q&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Discord-5865F2?logo=discord&amp;amp;logoColor=white&quot; alt=&quot;Join the Orca Discord&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://x.com/orca_build&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/X-000000?logo=x&amp;amp;logoColor=white&quot; alt=&quot;Follow Orca on X&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://img.shields.io/badge/macOS%20%7C%20Windows%20%7C%20Linux-4493F8?style=flat-square&quot; alt=&quot;Supported platforms: macOS, Windows, and Linux&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;sub&gt;&lt;a href=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/readme/README.zh-CN.md&quot;&gt;中文&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/readme/README.ja.md&quot;&gt;日本語&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/readme/README.ko.md&quot;&gt;한국어&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/readme/README.es.md&quot;&gt;Español&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/readme/README.fr.md&quot;&gt;Français&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/readme/README.pt.md&quot;&gt;Português&lt;/a&gt;&lt;/sub&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;strong&gt;The AI Orchestrator for 100x builders.&lt;/strong&gt;&lt;br /&gt; Run Codex, ClaudeCode, OpenCode or Pi side-by-side — each in its own worktree, tracked in one place. &lt;/p&gt; 
&lt;h3 align=&quot;center&quot;&gt;&lt;a href=&quot;https://onorca.dev/download&quot;&gt;&lt;ins&gt;Download Orca&lt;/ins&gt;&lt;/a&gt;&lt;/h3&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/assets/readme-hero.jpg&quot; alt=&quot;Orca desktop app running agents in parallel worktrees, with the Orca mobile companion app in the corner&quot; width=&quot;960&quot; /&gt; &lt;/p&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td width=&quot;50%&quot; valign=&quot;middle&quot;&gt; &lt;h3&gt;Mobile Companion&lt;/h3&gt; &lt;p&gt;Monitor and steer your agents from your phone — get notified when an agent finishes and send follow-ups from anywhere.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://apps.apple.com/us/app/orca-ide/id6766130217&quot;&gt;iOS App Store&lt;/a&gt; · &lt;a href=&quot;https://testflight.apple.com/join/YjeGMQBA&quot;&gt;TestFlight&lt;/a&gt; · &lt;a href=&quot;https://github.com/stablyai/orca/releases/download/mobile-android-v0.0.37/app-release.apk&quot;&gt;Android APK 0.0.37&lt;/a&gt; · &lt;a href=&quot;https://www.onorca.dev/docs/mobile&quot;&gt;Docs →&lt;/a&gt;&lt;/p&gt; &lt;/td&gt; 
   &lt;td width=&quot;50%&quot;&gt; &lt;a href=&quot;https://www.onorca.dev/docs/mobile&quot;&gt;
     &lt;picture&gt;
      &lt;source srcset=&quot;docs/assets/feature-wall/mobile-companion-app-showcase.gif&quot; type=&quot;image/gif&quot; /&gt;
      &lt;img src=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/assets/feature-wall/mobile-companion-app-showcase.jpg&quot; alt=&quot;Orca desktop with the mobile companion app&quot; width=&quot;100%&quot; /&gt;
     &lt;/picture&gt;&lt;/a&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;50%&quot; valign=&quot;middle&quot;&gt; &lt;h3&gt;Parallel Worktrees&lt;/h3&gt; &lt;p&gt;Fan one prompt across five agents, each in its own isolated git worktree — compare the results and merge the winner.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://www.onorca.dev/docs/model/worktrees&quot;&gt;Docs →&lt;/a&gt;&lt;/p&gt; &lt;/td&gt; 
   &lt;td width=&quot;50%&quot;&gt; &lt;a href=&quot;https://www.onorca.dev/docs/model/worktrees&quot;&gt;
     &lt;picture&gt;
      &lt;source srcset=&quot;docs/assets/feature-wall/parallel-worktrees.gif&quot; type=&quot;image/gif&quot; /&gt;
      &lt;img src=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/assets/feature-wall/parallel-worktrees.jpg&quot; alt=&quot;Parallel worktree orchestration&quot; width=&quot;100%&quot; /&gt;
     &lt;/picture&gt;&lt;/a&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;50%&quot; valign=&quot;middle&quot;&gt; &lt;h3&gt;Terminal Splits&lt;/h3&gt; &lt;p&gt;Ghostty-class terminals with WebGL rendering, infinite splits, and scrollback that survives restarts.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://www.onorca.dev/docs/terminal&quot;&gt;Docs →&lt;/a&gt;&lt;/p&gt; &lt;/td&gt; 
   &lt;td width=&quot;50%&quot;&gt; &lt;a href=&quot;https://www.onorca.dev/docs/terminal&quot;&gt;
     &lt;picture&gt;
      &lt;source srcset=&quot;docs/assets/feature-wall/terminal-splits.gif&quot; type=&quot;image/gif&quot; /&gt;
      &lt;img src=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/assets/feature-wall/terminal-splits.jpg&quot; alt=&quot;Terminal splits&quot; width=&quot;100%&quot; /&gt;
     &lt;/picture&gt;&lt;/a&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;50%&quot; valign=&quot;middle&quot;&gt; &lt;h3&gt;Design Mode&lt;/h3&gt; &lt;p&gt;Click any UI element in a real Chromium window to send its HTML, CSS, and a cropped screenshot straight into your agent&#39;s prompt.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://www.onorca.dev/docs/browser/design-mode&quot;&gt;Docs →&lt;/a&gt;&lt;/p&gt; &lt;/td&gt; 
   &lt;td width=&quot;50%&quot;&gt; &lt;a href=&quot;https://www.onorca.dev/docs/browser/design-mode&quot;&gt;
     &lt;picture&gt;
      &lt;source srcset=&quot;docs/assets/feature-wall/design-mode.gif&quot; type=&quot;image/gif&quot; /&gt;
      &lt;img src=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/assets/feature-wall/design-mode.jpg&quot; alt=&quot;Embedded browser and Design Mode&quot; width=&quot;100%&quot; /&gt;
     &lt;/picture&gt;&lt;/a&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;50%&quot; valign=&quot;middle&quot;&gt; &lt;h3&gt;GitHub &amp;amp; Linear, Native&lt;/h3&gt; &lt;p&gt;Browse PRs, issues, and project boards in-app — open a worktree from any task and review without a context switch.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://www.onorca.dev/docs/review/linear&quot;&gt;Docs →&lt;/a&gt;&lt;/p&gt; &lt;/td&gt; 
   &lt;td width=&quot;50%&quot;&gt; &lt;a href=&quot;https://www.onorca.dev/docs/review/linear&quot;&gt;
     &lt;picture&gt;
      &lt;source srcset=&quot;docs/assets/feature-wall/github-linear.gif&quot; type=&quot;image/gif&quot; /&gt;
      &lt;img src=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/assets/feature-wall/github-linear.jpg&quot; alt=&quot;GitHub and Linear task workflows in Orca&quot; width=&quot;100%&quot; /&gt;
     &lt;/picture&gt;&lt;/a&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;50%&quot; valign=&quot;middle&quot;&gt; &lt;h3&gt;SSH Worktrees&lt;/h3&gt; &lt;p&gt;Run agents on a beefy remote box with full file editing, git, and terminals — auto-reconnect and port forwarding included.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://www.onorca.dev/docs/ssh&quot;&gt;Docs →&lt;/a&gt;&lt;/p&gt; &lt;/td&gt; 
   &lt;td width=&quot;50%&quot;&gt; &lt;a href=&quot;https://www.onorca.dev/docs/ssh&quot;&gt;
     &lt;picture&gt;
      &lt;source srcset=&quot;docs/assets/feature-wall/ssh-worktrees.gif&quot; type=&quot;image/gif&quot; /&gt;
      &lt;img src=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/assets/feature-wall/ssh-worktrees.jpg&quot; alt=&quot;Remote worktrees over SSH&quot; width=&quot;100%&quot; /&gt;
     &lt;/picture&gt;&lt;/a&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;50%&quot; valign=&quot;middle&quot;&gt; &lt;h3&gt;Annotate AI Diffs&lt;/h3&gt; &lt;p&gt;Drop comments on any diff line and ship them back to the agent — review, edit, and commit without leaving Orca.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://www.onorca.dev/docs/review/annotate-ai-diff&quot;&gt;Docs →&lt;/a&gt;&lt;/p&gt; &lt;/td&gt; 
   &lt;td width=&quot;50%&quot;&gt; &lt;a href=&quot;https://www.onorca.dev/docs/review/annotate-ai-diff&quot;&gt;
     &lt;picture&gt;
      &lt;source srcset=&quot;docs/assets/feature-wall/annotate-diff.gif&quot; type=&quot;image/gif&quot; /&gt;
      &lt;img src=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/assets/feature-wall/annotate-diff.jpg&quot; alt=&quot;Annotate AI-generated diffs&quot; width=&quot;100%&quot; /&gt;
     &lt;/picture&gt;&lt;/a&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;50%&quot; valign=&quot;middle&quot;&gt; &lt;h3&gt;Drag Files to Agents&lt;/h3&gt; &lt;p&gt;VS Code&#39;s editor with autosave everywhere — drag files or images straight into an agent prompt.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://www.onorca.dev/docs/editing/file-explorer&quot;&gt;Docs →&lt;/a&gt;&lt;/p&gt; &lt;/td&gt; 
   &lt;td width=&quot;50%&quot;&gt; &lt;a href=&quot;https://www.onorca.dev/docs/editing/file-explorer&quot;&gt;
     &lt;picture&gt;
      &lt;source srcset=&quot;docs/assets/feature-wall/file-drag.gif&quot; type=&quot;image/gif&quot; /&gt;
      &lt;img src=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/assets/feature-wall/file-drag.jpg&quot; alt=&quot;Drag files and images into an agent prompt&quot; width=&quot;100%&quot; /&gt;
     &lt;/picture&gt;&lt;/a&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;50%&quot; valign=&quot;middle&quot;&gt; &lt;h3&gt;Orca CLI&lt;/h3&gt; &lt;p&gt;Agents drive Orca too — script every workflow with &lt;code&gt;orca worktree create&lt;/code&gt;, &lt;code&gt;snapshot&lt;/code&gt;, &lt;code&gt;click&lt;/code&gt;, and &lt;code&gt;fill&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://www.onorca.dev/docs/cli/overview&quot;&gt;Docs →&lt;/a&gt;&lt;/p&gt; &lt;/td&gt; 
   &lt;td width=&quot;50%&quot;&gt; &lt;a href=&quot;https://www.onorca.dev/docs/cli/overview&quot;&gt;
     &lt;picture&gt;
      &lt;source srcset=&quot;docs/assets/feature-wall/orca-cli.gif&quot; type=&quot;image/gif&quot; /&gt;
      &lt;img src=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/assets/feature-wall/orca-cli.jpg&quot; alt=&quot;Script Orca from the CLI&quot; width=&quot;100%&quot; /&gt;
     &lt;/picture&gt;&lt;/a&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Also in the box:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.onorca.dev/docs/model/quick-open&quot;&gt;Quick open&lt;/a&gt;&lt;/strong&gt; — Search across worktrees, files, agents, commands, and repo context without leaving your flow.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.onorca.dev/docs/agents/usage-tracking&quot;&gt;Account switcher &amp;amp; usage tracking&lt;/a&gt;&lt;/strong&gt; — See Claude and Codex usage and rate-limit resets, and hot-swap accounts without re-logging in.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.onorca.dev/docs/editing/markdown&quot;&gt;Rich repo previews&lt;/a&gt;&lt;/strong&gt; — Preview Markdown, images, PDFs, and repo docs in the workspace.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.onorca.dev/docs/cli/computer-use&quot;&gt;Computer Use&lt;/a&gt;&lt;/strong&gt; — Let agents operate desktop apps and visible UI when a workflow needs real interaction.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.onorca.dev/docs/notifications&quot;&gt;Notifications and unread state&lt;/a&gt;&lt;/strong&gt; — Know when an agent finishes or needs attention, then mark threads unread to come back later.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;And many, many more&lt;/strong&gt; — we ship daily, so this list is perpetually behind. The &lt;a href=&quot;https://github.com/stablyai/orca/releases&quot;&gt;changelog&lt;/a&gt; is the real feature list.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Supported Agents&lt;/h2&gt; 
&lt;p&gt;Works with &lt;strong&gt;any CLI agent&lt;/strong&gt; — if it runs in a terminal, it runs in Orca.&lt;/p&gt; 
&lt;p&gt; &lt;a href=&quot;https://docs.anthropic.com/claude/docs/claude-code&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/assets/claude-logo.svg?sanitize=true&quot; alt=&quot;Claude Code logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Claude Code&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://github.com/openai/codex&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=openai.com&amp;amp;sz=64&quot; alt=&quot;Codex logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Codex&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://x.ai/cli&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=x.ai&amp;amp;sz=64&quot; alt=&quot;Grok logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Grok&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://cursor.com/cli&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=cursor.com&amp;amp;sz=64&quot; alt=&quot;Cursor logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Cursor&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://docs.github.com/en/copilot/how-tos/set-up/install-copilot-cli&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=github.com&amp;amp;sz=64&quot; alt=&quot;GitHub Copilot logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; GitHub Copilot&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://opencode.ai/docs/cli/&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=opencode.ai&amp;amp;sz=64&quot; alt=&quot;OpenCode logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; OpenCode&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://mimo.xiaomi.com/coder&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=mimo.xiaomi.com&amp;amp;sz=64&quot; alt=&quot;MiMo Code logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; MiMo Code&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://ampcode.com/manual#install&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=ampcode.com&amp;amp;sz=64&quot; alt=&quot;Amp logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Amp&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://openclaude.gitlawb.com/&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://raw.githubusercontent.com/stablyai/orca/main/resources/openclaude-logo.png&quot; alt=&quot;OpenClaude logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; OpenClaude&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://antigravity.google/docs/cli-overview&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=antigravity.google&amp;amp;sz=64&quot; alt=&quot;Antigravity logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Antigravity&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://pi.dev&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://pi.dev/favicon.svg?sanitize=true&quot; alt=&quot;Pi logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Pi&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://omp.sh&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://omp.sh/favicon.svg?sanitize=true&quot; alt=&quot;oh-my-pi logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; oh-my-pi&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://hermes-agent.nousresearch.com/docs/&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=nousresearch.com&amp;amp;sz=64&quot; alt=&quot;Hermes Agent logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Hermes Agent&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://devin.ai/cli&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=devin.ai&amp;amp;sz=64&quot; alt=&quot;Devin logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Devin&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://block.github.io/goose/docs/quickstart/&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=goose-docs.ai&amp;amp;sz=64&quot; alt=&quot;Goose logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Goose&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://docs.augmentcode.com/cli/overview&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=augmentcode.com&amp;amp;sz=64&quot; alt=&quot;Auggie logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Auggie&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://github.com/autohandai/code-cli&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=autohand.ai&amp;amp;sz=64&quot; alt=&quot;Autohand Code logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Autohand Code&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://github.com/charmbracelet/crush&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=charm.sh&amp;amp;sz=64&quot; alt=&quot;Charm logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Charm&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://docs.cline.bot/cline-cli/overview&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=cline.bot&amp;amp;sz=64&quot; alt=&quot;Cline logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Cline&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://www.codebuff.com/docs/help/quick-start&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=codebuff.com&amp;amp;sz=64&quot; alt=&quot;Codebuff logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Codebuff&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://commandcode.ai/docs/quickstart&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=commandcode.ai&amp;amp;sz=64&quot; alt=&quot;Command Code logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Command Code&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://docs.continue.dev/guides/cli&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=continue.dev&amp;amp;sz=64&quot; alt=&quot;Continue logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Continue&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://docs.factory.ai/cli/getting-started/quickstart&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/assets/droid-logo.svg?sanitize=true&quot; alt=&quot;Droid logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Droid&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://kilo.ai/docs/cli&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Kilo-Org/kilocode/main/packages/kilo-vscode/assets/icons/kilo-light.svg?sanitize=true&quot; alt=&quot;Kilocode logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Kilocode&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://www.kimi.com/code/docs/en/kimi-code-cli/getting-started.html&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=moonshot.cn&amp;amp;sz=64&quot; alt=&quot;Kimi logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Kimi&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://kiro.dev/docs/cli/&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=kiro.dev&amp;amp;sz=64&quot; alt=&quot;Kiro logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Kiro&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://github.com/mistralai/mistral-vibe&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=mistral.ai&amp;amp;sz=64&quot; alt=&quot;Mistral Vibe logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Mistral Vibe&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://github.com/QwenLM/qwen-code&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=qwenlm.github.io&amp;amp;sz=64&quot; alt=&quot;Qwen Code logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Qwen Code&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;https://support.atlassian.com/rovo/docs/install-and-run-rovo-dev-cli-on-your-device/&quot;&gt;&lt;kbd&gt;&lt;img src=&quot;https://www.google.com/s2/favicons?domain=atlassian.com&amp;amp;sz=64&quot; alt=&quot;Rovo Dev logo&quot; width=&quot;16&quot; valign=&quot;middle&quot; /&gt; Rovo Dev&lt;/kbd&gt;&lt;/a&gt; &amp;nbsp; &lt;kbd&gt;+ any CLI agent&lt;/kbd&gt; &lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Install&lt;/h2&gt; 
&lt;h3&gt;Desktop — macOS, Windows, Linux&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://onorca.dev/download&quot;&gt;Download from onOrca.dev&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;Or grab a build directly: &lt;a href=&quot;https://github.com/stablyai/orca/releases/latest/download/orca-macos-arm64.dmg&quot;&gt;macOS Apple Silicon&lt;/a&gt; · &lt;a href=&quot;https://github.com/stablyai/orca/releases/latest/download/orca-macos-x64.dmg&quot;&gt;macOS Intel&lt;/a&gt; · &lt;a href=&quot;https://github.com/stablyai/orca/releases/latest/download/orca-windows-setup.exe&quot;&gt;Windows (.exe)&lt;/a&gt; · &lt;a href=&quot;https://github.com/stablyai/orca/releases/latest/download/orca-linux.AppImage&quot;&gt;Linux AppImage&lt;/a&gt; · &lt;a href=&quot;https://github.com/stablyai/orca/releases/latest&quot;&gt;All builds&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Running &lt;code&gt;orca serve&lt;/code&gt; on a headless Linux server? See the &lt;a href=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/reference/headless-linux-server.md&quot;&gt;headless Linux server guide&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;em&gt;Or via a package manager:&lt;/em&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# macOS (Homebrew)
brew install --cask stablyai/orca/orca

# Arch Linux (AUR) — or stably-orca-git to build from source
yay -S stably-orca-bin
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Mobile Companion — iOS, Android&lt;/h3&gt; 
&lt;p&gt;Pair with your desktop app to monitor and steer your agents from your phone.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;iOS:&lt;/strong&gt; &lt;a href=&quot;https://apps.apple.com/us/app/orca-ide/id6766130217&quot;&gt;Download on the App Store&lt;/a&gt; or &lt;a href=&quot;https://testflight.apple.com/join/YjeGMQBA&quot;&gt;join TestFlight&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Android:&lt;/strong&gt; &lt;a href=&quot;https://github.com/stablyai/orca/releases/download/mobile-android-v0.0.37/app-release.apk&quot;&gt;Download APK 0.0.37&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Community &amp;amp; Support&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Discord:&lt;/strong&gt; Join the community on &lt;strong&gt;&lt;a href=&quot;https://discord.gg/fzjDKHxv8Q&quot;&gt;Discord&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Twitter / X:&lt;/strong&gt; Follow &lt;strong&gt;&lt;a href=&quot;https://x.com/orca_build&quot;&gt;@orca_build&lt;/a&gt;&lt;/strong&gt; for updates and announcements.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;WeChat:&lt;/strong&gt; Scan to join the Orca community WeChat group 7.&lt;/p&gt; &lt;img src=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/assets/wechat-qr-group7.jpg&quot; alt=&quot;WeChat group 7 QR code for the Orca community&quot; width=&quot;160&quot; /&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Feedback &amp;amp; Ideas:&lt;/strong&gt; We ship fast. Missing something? &lt;a href=&quot;https://github.com/stablyai/orca/issues&quot;&gt;Request a new feature&lt;/a&gt;.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Privacy:&lt;/strong&gt; See the &lt;a href=&quot;https://www.onorca.dev/docs/telemetry&quot;&gt;privacy &amp;amp; telemetry docs&lt;/a&gt; for what anonymous usage data Orca collects and how to opt out.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Show Support:&lt;/strong&gt; &lt;a href=&quot;https://github.com/stablyai/orca&quot;&gt;Star&lt;/a&gt; this repo to follow along with our daily ships.&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Developing&lt;/h2&gt; 
&lt;p&gt;Want to contribute or run locally? See our &lt;a href=&quot;https://raw.githubusercontent.com/stablyai/orca/main/.github/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; guide.&lt;/p&gt; 
&lt;a href=&quot;https://github.com/stablyai/orca/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=stablyai/orca&quot; alt=&quot;Orca contributors&quot; /&gt; &lt;/a&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/stablyai/orca/main/docs/assets/star-history.png&quot; alt=&quot;GitHub star history chart for stablyai/orca&quot; width=&quot;880&quot; /&gt; &lt;/p&gt; 
&lt;h2&gt;Signed Builds&lt;/h2&gt; 
&lt;p&gt;Windows code signing sponored/provided by &lt;a href=&quot;https://signpath.io&quot;&gt;SignPath.io&lt;/a&gt;, certificate by &lt;a href=&quot;https://signpath.org&quot;&gt;SignPath Foundation&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;Orca is free and open source under the &lt;a href=&quot;https://raw.githubusercontent.com/stablyai/orca/main/LICENSE&quot;&gt;MIT License&lt;/a&gt;.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/6aeaf0398316e8e6045beeeb7c4e6c1d60d5cec64545ab545a6b5ac3fe2e1a16/stablyai/orca" medium="image" />
      
    </item>
    
    <item>
      <title>pingdotgg/t3code</title>
      <link>https://github.com/pingdotgg/t3code</link>
      <description>&lt;h1&gt;T3 Code&lt;/h1&gt; 
&lt;p&gt;T3 Code is an &quot;agent harness control surface&quot;. It enables control of the agents on your machine with a best-in-class mobile app (&lt;a href=&quot;https://apps.apple.com/us/app/t3-code-remote-claude-more/id6787819824&quot;&gt;iOS&lt;/a&gt;, &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.t3tools.t3code&quot;&gt;Android&lt;/a&gt;), &lt;a href=&quot;https://app.t3.codes&quot;&gt;web app&lt;/a&gt; and &lt;a href=&quot;https://t3.codes&quot;&gt;Electron-based desktop app&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Works with your subscriptions on Claude Code, Codex, Cursor, Grok Build, and OpenCode. If they&#39;re set up on your computer, T3 Code can control them.&lt;/p&gt; 
&lt;h2&gt;&quot;Wait, what are you selling me?&quot;&lt;/h2&gt; 
&lt;p&gt;Nothing. We built T3 Code because we wanted the best possible development experience with agents. We were inspired by existing solutions like the Codex desktop app, Conductor, Claude Desktop and Cursor Glass, but none met our bar.&lt;/p&gt; 
&lt;p&gt;We wanted something performant, remote-ready, and truly open. If we ever go the wrong direction, we want you to have everything you need to fork and build the editor that you want.&lt;/p&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-warning&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-alert mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Warning&lt;/p&gt;
 &lt;p&gt;T3 Code currently supports Codex, Claude, Cursor, Grok Build and OpenCode. Install and authenticate at least one provider before use:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Codex: install &lt;a href=&quot;https://developers.openai.com/codex/cli&quot;&gt;Codex CLI&lt;/a&gt; and run &lt;code&gt;codex login&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;Claude: install &lt;a href=&quot;https://claude.com/product/claude-code&quot;&gt;Claude Code&lt;/a&gt; and run &lt;code&gt;claude auth login&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;Cursor: install &lt;a href=&quot;https://cursor.com/cli&quot;&gt;Cursor CLI&lt;/a&gt; and run &lt;code&gt;agent login&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;Grok Build: install &lt;a href=&quot;https://x.ai/cli&quot;&gt;Grok Build CLI&lt;/a&gt; and run &lt;code&gt;grok login&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;OpenCode: install &lt;a href=&quot;https://opencode.ai&quot;&gt;OpenCode&lt;/a&gt; and run &lt;code&gt;opencode auth login&lt;/code&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/div&gt; 
&lt;h3&gt;Try it out (install-free)&lt;/h3&gt; 
&lt;p&gt;The easiest way to test T3 Code is to run the server in your terminal (requires Node.js 22.16+, 23.11+, or 24.10+):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx t3@latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This will launch T3 Code&#39;s backend on your machine as well as the local web app to control your agents.&lt;/p&gt; 
&lt;p&gt;Tip: Use &lt;code&gt;npx t3@latest --help&lt;/code&gt; for the full CLI reference.&lt;/p&gt; 
&lt;h3&gt;Desktop app&lt;/h3&gt; 
&lt;p&gt;Install the latest version of the desktop app from &lt;a href=&quot;https://github.com/pingdotgg/t3code/releases&quot;&gt;GitHub Releases&lt;/a&gt;, or from your favorite package registry:&lt;/p&gt; 
&lt;h4&gt;Windows (&lt;code&gt;winget&lt;/code&gt;)&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;winget install T3Tools.T3Code
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;macOS (Homebrew)&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;brew install --cask t3-code
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Arch Linux (AUR)&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;yay -S t3code-bin
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Some notes&lt;/h2&gt; 
&lt;p&gt;We are very very early in this project. Expect bugs.&lt;/p&gt; 
&lt;p&gt;We are (mostly) not accepting contributions yet. Small fixes may be considered. Big features will not be.&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;Full docs live in &lt;a href=&quot;https://raw.githubusercontent.com/pingdotgg/t3code/main/docs&quot;&gt;docs/&lt;/a&gt;. There&#39;s no docs site yet.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/pingdotgg/t3code/main/docs/user/install.md&quot;&gt;Install and first run&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/pingdotgg/t3code/main/docs/user/permission-modes.md&quot;&gt;Permission modes&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/pingdotgg/t3code/main/docs/user/keybindings.md&quot;&gt;Keyboard shortcuts&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/pingdotgg/t3code/main/docs/user/project-settings.md&quot;&gt;Customize a project icon&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/pingdotgg/t3code/main/docs/user/remote-access.md&quot;&gt;Remote access from a phone or another machine&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/pingdotgg/t3code/main/docs/user/updating.md&quot;&gt;Keeping app and server in sync&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/pingdotgg/t3code/main/docs/user/source-control.md&quot;&gt;Source control integrations&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Multiple accounts: &lt;a href=&quot;https://raw.githubusercontent.com/pingdotgg/t3code/main/docs/user/providers-codex.md&quot;&gt;Codex&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/pingdotgg/t3code/main/docs/user/providers-claude.md&quot;&gt;Claude&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Linux: &lt;a href=&quot;https://raw.githubusercontent.com/pingdotgg/t3code/main/docs/user/background-service.md&quot;&gt;run T3 Code as a background service&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Building from source? Start at &lt;a href=&quot;https://raw.githubusercontent.com/pingdotgg/t3code/main/docs/internals/overview.md&quot;&gt;docs/internals/overview.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;If you REALLY want to contribute still.... read this first&lt;/h2&gt; 
&lt;h3&gt;Install &lt;code&gt;vp&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;T3 Code uses Vite+ so you&#39;ll need to install the global &lt;code&gt;vp&lt;/code&gt; command-line tool.&lt;/p&gt; 
&lt;h4&gt;macOS / Linux&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -fsSL https://vite.plus | bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Windows&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;irm https://vite.plus/ps1 | iex
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Checkout their getting started guide for more information: &lt;a href=&quot;https://viteplus.dev/guide/&quot;&gt;https://viteplus.dev/guide/&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Install dependencies&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;vp i
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Read &lt;a href=&quot;https://raw.githubusercontent.com/pingdotgg/t3code/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; before opening an issue or PR.&lt;/p&gt; 
&lt;p&gt;Need support? Join the &lt;a href=&quot;https://discord.gg/jn4EGJjrvv&quot;&gt;Discord&lt;/a&gt;.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/aa0f16fd5705ad2468f6535e5601ef3605f78101332d8a82153822e4654ec3c0/pingdotgg/t3code" medium="image" />
      
    </item>
    
    <item>
      <title>OpenCut-app/OpenCut</title>
      <link>https://github.com/OpenCut-app/OpenCut</link>
      <description>&lt;p&gt;The open-source CapCut alternative&lt;/p&gt;&lt;hr&gt;&lt;table width=&quot;100%&quot;&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td align=&quot;left&quot; width=&quot;120&quot;&gt; &lt;img src=&quot;https://assets.opencut.app/branding/symbol.svg?sanitize=true&quot; alt=&quot;OpenCut Logo&quot; width=&quot;100&quot; /&gt; &lt;/td&gt; 
   &lt;td align=&quot;right&quot;&gt; &lt;h1&gt;OpenCut&lt;/h1&gt; &lt;h3 style=&quot;margin-top: -10px;&quot;&gt;A free and open source video editor for web, desktop, and mobile.&lt;/h3&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;p&gt;&lt;a href=&quot;https://discord.gg/zmR9N35cjK&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/1386309140057690133?label=Discord&amp;amp;logo=discord&amp;amp;logoColor=fff&amp;amp;color=5865F2&amp;amp;style=flat&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://x.com/opencutapp&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/follow-%40opencutapp-000?logo=x&amp;amp;logoColor=fff&amp;amp;style=flat&quot; alt=&quot;X&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/OpenCut-app/OpenCut/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/license-MIT-green?style=flat&quot; alt=&quot;License: MIT&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Status&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;OpenCut is being rewritten from the ground up.&lt;/strong&gt; What&#39;s coming:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;An Editor API&lt;/li&gt; 
 &lt;li&gt;First-class third party plugins (made possible by a plugin-first architecture)&lt;/li&gt; 
 &lt;li&gt;Desktop, mobile, and browser from one codebase (Rust core)&lt;/li&gt; 
 &lt;li&gt;MCP server (for AI agents)&lt;/li&gt; 
 &lt;li&gt;Headless mode (automation, batch rendering)&lt;/li&gt; 
 &lt;li&gt;A scripting tab directly in the editor&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;You can still find the previous version at &lt;a href=&quot;https://github.com/opencut-app/opencut-classic&quot;&gt;opencut-app/opencut-classic&lt;/a&gt;, which is the one to reach for today. &lt;a href=&quot;https://opencut.app&quot;&gt;opencut.app&lt;/a&gt; still runs the classic version. The rewrite will live at &lt;a href=&quot;https://new.opencut.app&quot;&gt;new.opencut.app&lt;/a&gt; until it&#39;s ready to take over.&lt;/p&gt; 
&lt;h2&gt;Development&lt;/h2&gt; 
&lt;p&gt;Install &lt;a href=&quot;https://moonrepo.dev/proto&quot;&gt;proto&lt;/a&gt; if you haven&#39;t already:&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Linux, macOS, WSL:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;bash &amp;lt;(curl -fsSL https://moonrepo.dev/install/proto.sh)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Windows (PowerShell):&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;irm https://moonrepo.dev/install/proto.ps1 | iex
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If shims fail to run, allow local scripts for your user:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;From the repo root:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;proto use    # installs the tools pinned in .prototools
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;moon run web:dev       # localhost:5173
moon run api:dev       # localhost:8787
moon run desktop:dev   # see apps/desktop/README.md
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;We&#39;re not set up to take outside contributions yet while the architecture is being designed. If you want to follow along, ask questions, or just hang out, &lt;a href=&quot;https://discord.gg/zmR9N35cjK&quot;&gt;join the Discord&lt;/a&gt; or &lt;a href=&quot;https://github.com/opencut-app/opencut/issues&quot;&gt;open an issue&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Sponsors&lt;/h2&gt; 
&lt;p&gt;OpenCut is supported by companies that believe in open source creator tools.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://fal.ai?utm_source=github-opencut&amp;amp;utm_campaign=oss&quot;&gt;&lt;strong&gt;fal.ai&lt;/strong&gt;&lt;/a&gt;: Generative image, video, and audio models all in one place.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Want your logo here? Reach out at &lt;a href=&quot;mailto:sponsor@opencut.app&quot;&gt;sponsor@opencut.app&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/OpenCut-app/OpenCut/main/LICENSE&quot;&gt;MIT&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/5bb9faef3132e1c58ecb3020183fb1300a5c5c0aa3b6877d9a6edd3ad4624814/OpenCut-app/OpenCut" medium="image" />
      
    </item>
    
    <item>
      <title>every-app/open-seo</title>
      <link>https://github.com/every-app/open-seo</link>
      <description>&lt;p&gt;Open source alternative to Semrush and Ahrefs&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;OpenSEO&lt;/h1&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Open source alternative to Semrush and Ahrefs&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;OpenSEO is an SEO tool for &lt;em&gt;the people&lt;/em&gt;. If tools like Semrush or Ahrefs are too expensive or bloated, OpenSEO is a pay-as-you-go alternative that you actually control.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;All-in-one SEO tool for you and your AI agent.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Connect with any agent like Claude Code, OpenClaw or Hermes. We have pre-built skills, but you can build your own to tailor OpenSEO to your needs.&lt;/p&gt; 
&lt;img width=&quot;1385&quot; height=&quot;794&quot; alt=&quot;Image&quot; src=&quot;https://github.com/user-attachments/assets/fd208249-44ea-4849-bb4b-5fc896aeab73&quot; /&gt; 
&lt;h2&gt;Hosted Version&lt;/h2&gt; 
&lt;p&gt;Try OpenSEO for free on our website. If you want to support the project, a hosted subscription is $10/month.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://openseo.so&quot;&gt;openseo.so&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Why use OpenSEO?&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Best in class MCP and AI Skills.&lt;/li&gt; 
 &lt;li&gt;Modern, simple UI. 
  &lt;ul&gt; 
   &lt;li&gt;Focused workflows instead of a bloated, complex SEO suite.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;No subscriptions. 
  &lt;ul&gt; 
   &lt;li&gt;Bring your own DataForSEO API key and pay only for what you use.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Fork and vibe code your own custom tool.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Main SEO Workflows&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Keyword research&lt;/li&gt; 
 &lt;li&gt;Rank tracking&lt;/li&gt; 
 &lt;li&gt;Competitor Insights&lt;/li&gt; 
 &lt;li&gt;Backlinks&lt;/li&gt; 
 &lt;li&gt;Site Audits&lt;/li&gt; 
 &lt;li&gt;AI Visibility&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;OpenSEO MCP &amp;amp; Agent Skills&lt;/h2&gt; 
&lt;p&gt;OpenSEO exposes an MCP server so AI agents like Claude Code, OpenClaw, and Hermes can use your SEO data directly. Agent Skills are reusable workflows that guide your agent through SEO tasks using the MCP.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://openseo.so/docs/mcp&quot;&gt;Set up OpenSEO MCP&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://openseo.so/docs/skills/setup&quot;&gt;Set up OpenSEO Agent Skills&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Self-Hosting&lt;/h2&gt; 
&lt;p&gt;OpenSEO supports two self-hosting paths:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Simple: Docker&lt;/strong&gt; for personal use on your own machine (recommended for getting started). See &lt;a href=&quot;https://raw.githubusercontent.com/every-app/open-seo/main/docs/SELF_HOSTING_DOCKER.md&quot;&gt;&lt;code&gt;docs/SELF_HOSTING_DOCKER.md&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Advanced: Cloudflare&lt;/strong&gt; for internet-facing self-hosting across multiple devices or with your team (works on the free plan). See &lt;a href=&quot;https://raw.githubusercontent.com/every-app/open-seo/main/docs/SELF_HOSTING_CLOUDFLARE.md&quot;&gt;&lt;code&gt;docs/SELF_HOSTING_CLOUDFLARE.md&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Either way, you need a DataForSEO API key to get SEO data. See &lt;a href=&quot;https://raw.githubusercontent.com/every-app/open-seo/main/docs/DATAFORSEO_API_KEY.md&quot;&gt;&lt;code&gt;docs/DATAFORSEO_API_KEY.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Costs&lt;/h2&gt; 
&lt;p&gt;OpenSEO needs a &lt;a href=&quot;https://dataforseo.com/?aff=255379&quot;&gt;DataForSEO&lt;/a&gt; API key so that you can get SEO data. You pay them directly when self hosting.&lt;/p&gt; 
&lt;p&gt;See &lt;a href=&quot;https://openseo.so/pricing&quot;&gt;openseo.so/pricing&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;When you self host, your costs will be slightly lower than the estimates on our website. The way the hosted service makes money is by charging 28% extra for every request we make to DataForSEO.&lt;/p&gt; 
&lt;h2&gt;Local Development&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/every-app/open-seo/main/docs/LOCAL_DEVELOPMENT.md&quot;&gt;&lt;code&gt;docs/LOCAL_DEVELOPMENT.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Contributions are very welcome. See &lt;a href=&quot;https://raw.githubusercontent.com/every-app/open-seo/main/docs/CONTRIBUTING.md&quot;&gt;&lt;code&gt;docs/CONTRIBUTING.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Community&lt;/h2&gt; 
&lt;p&gt;Join Discord to chat: &lt;a href=&quot;https://discord.gg/c9uGs3cFXr&quot;&gt;Discord&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Follow along for updates:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Follow on X: &lt;a href=&quot;https://x.com/bensenescu&quot;&gt;https://x.com/bensenescu&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Sign up for the mailing list on our website: &lt;a href=&quot;https://openseo.so&quot;&gt;openseo.so&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/bc51afd9ab011c71333f41d668837984a84b6f2319da252af76fe405fcfeb279/every-app/open-seo" medium="image" />
      
    </item>
    
    <item>
      <title>TencentCloud/TencentDB-Agent-Memory</title>
      <link>https://github.com/TencentCloud/TencentDB-Agent-Memory</link>
      <description>&lt;p&gt;TencentDB Agent Memory is a team-level memory hub for AI Agents — turning conversations, docs, and code into four reusable memory assets (Chat Memory, Skill, LLM-Wiki, Code-Graph) that are governed, shared, and equipped across agents and frameworks.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/assets/images/logo.png&quot; alt=&quot;TencentDB Agent Memory&quot; width=&quot;880&quot; /&gt; 
 &lt;h3&gt;Agents remember. Humans innovate.&lt;/h3&gt; 
 &lt;p&gt;&lt;a href=&quot;https://trendshift.io/repositories/29310?utm_source=repository-badge&amp;amp;utm_medium=badge&amp;amp;utm_campaign=badge-repository-29310&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/29310&quot; alt=&quot;TencentCloud%2FTencentDB-Agent-Memory | Trendshift&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://www.npmjs.com/package/@tencentdb-agent-memory/memory-tencentdb&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/@tencentdb-agent-memory/memory-tencentdb?color=blue&quot; alt=&quot;npm&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/License-MIT-green.svg?sanitize=true&quot; alt=&quot;License: MIT&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://nodejs.org/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/node-%3E=22.16-brightgreen&quot; alt=&quot;Node&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/openclaw/openclaw&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/OpenClaw-%3E=2026.3.13-orange&quot; alt=&quot;OpenClaw&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://hermes-agent.nousresearch.com/docs/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Hermes-Gateway-7B61FF&quot; alt=&quot;Hermes&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/dJQM6mKMF&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Discord-Join-5865F2?logo=discord&amp;amp;logoColor=white&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/#installation&quot;&gt;Installation&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/#what-is-tencentdb-agent-memory&quot;&gt;What is it?&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/#one-play-style-build-a-growing-agent-team-for-a-one-person-company&quot;&gt;Team Play&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/#technical-implementation&quot;&gt;Technical Implementation&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/#benchmark&quot;&gt;Benchmark&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/README.md&quot;&gt;&lt;strong&gt;English&lt;/strong&gt;&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/README_CN.md&quot;&gt;简体中文&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Latest:&lt;/strong&gt; Team Memory Beta is evolving quickly — install it and start exploring in minutes.&lt;/p&gt; 
&lt;/blockquote&gt;  
&lt;video src=&quot;https://github.com/user-attachments/assets/efb1a808-1f86-4cfe-802c-f7453f7ca938&quot; width=&quot;100%&quot; controls autoplay loop muted playsinline&gt;&lt;/video&gt;  
&lt;h1&gt;Installation&lt;/h1&gt; 
&lt;p&gt;Start all three services in one go (&lt;code&gt;memory-core&lt;/code&gt; + &lt;code&gt;memory-hub&lt;/code&gt; + &lt;code&gt;proxy&lt;/code&gt;):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/Tencent/TencentDB-Agent-Memory.git
cd TencentDB-Agent-Memory/deploy/global-images
cp .env.example .env
$EDITOR .env       # Fill in two sets of LLM parameters (memory group + proxy group)
./start-all.sh     # Launch everything with one command; when finished, it prints a one-liner you can paste directly into Claude
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Open the panel: &lt;a href=&quot;http://localhost:8125&quot;&gt;http://localhost:8125&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Complete installation documentation (standalone Memory Hub deployment, Proxy + Claude Code / CodeBuddy usage, stop and cleanup, port reference, etc.) is available in &lt;a href=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/INSTALL.md&quot;&gt;&lt;strong&gt;INSTALL.md&lt;/strong&gt;&lt;/a&gt; (中文: &lt;a href=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/INSTALL_CN.md&quot;&gt;INSTALL_CN.md&lt;/a&gt;).&lt;/p&gt; 
&lt;h3&gt;Migrating data from an older version&lt;/h3&gt; 
&lt;p&gt;If you&#39;re already on an older release (v1.x / v0.x) and want to bring your existing data over to v2.0.0+, we provide a migration tool:&lt;/p&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/MemoryCore/scripts/migrate-v2-to-v3/README.md&quot;&gt;&lt;strong&gt;Data Migration Tool (v2 → v3)&lt;/strong&gt;&lt;/a&gt; for full usage and flags. New installations can skip this.&lt;/p&gt; 
&lt;h1&gt;What is TencentDB Agent Memory?&lt;/h1&gt; 
&lt;p&gt;We started from a practical question: &lt;strong&gt;How do you reduce repetitive work when using Agents?&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;If project context has already been explained, it shouldn&#39;t need to be repeated in a new session. If documents have already been read, every Agent shouldn&#39;t have to start again from page one. A workflow that already works shouldn&#39;t have to be rediscovered next time.&lt;/p&gt; 
&lt;p&gt;Memory here means more than just &quot;remembering conversations.&quot; &lt;strong&gt;Any information that helps the next Agent avoid reinventing the wheel should be saved, organized, and reused.&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Existing information → Reusable memory assets → Fewer turns → Less rework → More stable results and higher efficiency
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Let experience accumulate, flow, and pass on to the next Agent&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Memory Hub&lt;/strong&gt; for Agent teams closes the loop across the entire experience lifecycle: work produces assets, assets circulate through the team, and new members can load the team&#39;s save file on day one.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Automatic asset extraction&lt;/strong&gt;: Extract Chat Memory and Skills from conversations and tasks; convert documents and code into Wiki and CodeGraph; then manage, review, and route them consistently.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Portable &amp;amp; multi-Agent compatible&lt;/strong&gt;: Memory assets are decoupled from Agent frameworks — they can move across frameworks and be shared and maintained by multiple Agents and team members.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Cold-start friendly&lt;/strong&gt;: Import existing documents, codebases, and Agent conversation sessions. New Agent teams can start from existing experience instead of learning from scratch.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;🧠 A brain that remembers people and context&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Chat Memory&lt;/strong&gt; retains preferences, facts, decisions, and interaction history.&lt;/li&gt; 
 &lt;li&gt;Each Agent automatically gets its own memory when created — no need to re-introduce yourself next time.&lt;/li&gt; 
 &lt;li&gt;L0 Conversation → L1 Atom → L2 Scenario → L3 Persona — raw conversations are distilled layer by layer.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;img width=&quot;&quot; src=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/assets/images/chat_memory.cn.png&quot; alt=&quot;image.png&quot; /&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&quot;Don&#39;t refactor the old auth module — mobile is still using it.&quot; — Context this costly shouldn&#39;t depend on humans repeating it every time.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;⚡ A Skill library that accumulates expertise&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;After completing complex work, Agents can extract and manage reusable Skills from conversations and tool calls, and import them into the context of a designated Agent when needed.&lt;/li&gt; 
 &lt;li&gt;A Skill isn&#39;t just a prompt snippet; it has versions, resource files, trigger boundaries, execution steps, and validation rules.&lt;/li&gt; 
 &lt;li&gt;Personal Skills are private by default; after review, they can be shared with the team and assigned to other Agents.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;img width=&quot;&quot; src=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/assets/images/skill.cn.png&quot; alt=&quot;image.png&quot; /&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Troubleshooting, code review, release checklists — learn it once, and the whole team can use it.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;📖 A knowledge map that reads both docs and code&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Wiki&lt;/strong&gt; turns product docs, design specs, and ops runbooks into structured pages with a link graph. (Inspired by Karpathy&#39;s LLM knowledge base.)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/assets/images/wiki.cn.png&quot; alt=&quot;image.png&quot; /&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;CodeGraph&lt;/strong&gt; indexes code symbols, files, call relationships, and impact paths. &lt;img width=&quot;&quot; src=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/assets/images/codegraph.cn.png&quot; alt=&quot;image.png&quot; /&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Agents can search, read, inspect callers/callees, and perform impact analysis before modifying code.&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Wiki keeps Agents from reading every file list before getting to work. CodeGraph doesn&#39;t just tell them &quot;the code is here&quot; — it tells them &quot;changing this might affect those.&quot;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;🛡️ A team memory panel controlled by humans&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Create teams and Agents in Memory Hub; review, share, and equip memory assets.&lt;/li&gt; 
 &lt;li&gt;Manage ownership, versions, status, visibility, usage counts, and Agent bindings in one place.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;private&lt;/code&gt; belongs strictly to the Owner; &lt;code&gt;team&lt;/code&gt; is visible to all team members; &lt;code&gt;restricted&lt;/code&gt; grants precise access via User / Role / Agent ACLs.&lt;/li&gt; 
 &lt;li&gt;Two role layers: &lt;strong&gt;global System Admin&lt;/strong&gt; manages users and teams (creating teams, adding members) and can also use Wiki, CodeGraph, Skill, and other asset management features; &lt;strong&gt;Team-level roles&lt;/strong&gt; include Admin (team manager) and Member (regular member), responsible for asset collaboration and access control within a team. Asset ownership is tracked via Owner — the Owner automatically has management permissions for their assets.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;img width=&quot;&quot; src=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/assets/images/asset.cn.png&quot; alt=&quot;image.png&quot; /&gt; 
&lt;h2&gt;Cold Start: Load the Save File, Then Get to Work&lt;/h2&gt; 
&lt;p&gt;Most Agents&#39; first task is re-learning your project. TencentDB Agent Memory turns the learning cost you&#39;ve already paid into a save file:&lt;/p&gt; 
&lt;img alt=&quot;Cold Start: import codebase, docs, and history into Memory Hub&quot; src=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/assets/images/flowchart3.png&quot; /&gt; 
&lt;p&gt;Specifically, these existing assets can be imported directly and processed automatically in the panel:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Codebases&lt;/strong&gt;: Import existing repositories — &lt;strong&gt;CodeGraph&lt;/strong&gt; automatically indexes symbols, files, call relationships, and impact paths.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Documents &amp;amp; files&lt;/strong&gt;: Import relevant docs and files — &lt;strong&gt;Wiki&lt;/strong&gt; automatically generates structured pages with a link graph.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Conversation sessions&lt;/strong&gt;: Import past Agent conversation sessions — &lt;strong&gt;Skills and Chat Memory&lt;/strong&gt; are automatically extracted as reusable assets.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Stop retraining every Agent. Give it the save file.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;One Play Style: Build a Growing Agent Team for a One-Person Company&lt;/h2&gt; 
&lt;p&gt;Open Memory Hub and create a team:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Tiny but Serious Inc.
├── 👤 You · Set goals / Make decisions
├── 🔭 Scout · Research / Find opportunities
├── 🛠 Builder · Write code / Build products
├── 🧪 Reviewer · Test / Find issues
└── 🧠 Agent Memory · Preserve the team&#39;s experience
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;You&#39;re not opening four disconnected chat windows — you&#39;re assembling a squad with different roles that can inherit the team&#39;s accumulated experience.&lt;/p&gt; 
&lt;h3&gt;Recruit first, then equip&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;🔭 Scout
   ├── User interview Chat Memory
   ├── Market research Wiki
   └── Competitive analysis Skill

🛠 Builder
   ├── Product Wiki
   ├── Project CodeGraph
   └── Feature Delivery Skill

🧪 Reviewer
   ├── Historical incident Chat Memory
   ├── Project CodeGraph
   └── Release Checklist Skill
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Different roles, different loadouts. Less noise — give each Agent the memory assets it actually needs to get work done.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;The company can be tiny. Experience can compound forever.&lt;/strong&gt;&lt;/p&gt; 
&lt;h2&gt;Memory Assets, Not a Chat Log Warehouse&lt;/h2&gt; 
&lt;p&gt;RAG answers &quot;what can be found?&quot; Team Memory also answers &quot;who can use it, which version is valid, and which Agent should receive it.&quot;&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Chat History&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Standard RAG&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;TencentDB Agent Memory&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Cross-session user understanding&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;△&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;△&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✅ Chat Memory&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Distilled executable experience&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;—&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;—&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✅ Skill&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Document structure &amp;amp; relationships&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;—&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;△ Chunk retrieval&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✅ Wiki + Link Graph&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Code call graphs &amp;amp; impact scope&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;—&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;△ Text match&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✅ CodeGraph&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Ownership / Version / Status&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;—&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;—&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✅&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Team sharing &amp;amp; Agent loadout&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;—&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;—&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✅&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Private / Team / ACL&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;—&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;△&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✅&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Memory Hub Is Not a Display Board — It&#39;s a Control Panel&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Play Style&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;What you do in the Hub&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Team Up&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Create teams, add people and Agents, define sharing boundaries&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Asset Library&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Browse, search, review, and manage Chat Memory, Skills, Wiki, and CodeGraph&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Agent Loadout&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Bind different memory assets to different Agents; adjust priority and usage mode&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Knowledge Workshop&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Build Wiki and CodeGraph; monitor processing status and asset metadata&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;Access Control&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Switch between private, team, and ACL-based access; revoke sharing when needed&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;When you open an asset, what matters is not just &quot;what it says,&quot; but also &quot;where it came from, which version it is, who it&#39;s assigned to, and whether it&#39;s been used recently.&quot;&lt;/p&gt; 
&lt;h2&gt;Every Loop Gains Experience&lt;/h2&gt; 
&lt;img alt=&quot;Every Loop Gains Experience: continuous accumulation, making every use smarter&quot; src=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/assets/images/flowchart4.png&quot; /&gt; 
&lt;p&gt;Memory doesn&#39;t run the Agent loop; it ensures the next iteration inherits the previous one&#39;s results: valuable interactions stay in Chat Memory, proven workflows are distilled into Skills, and document/code changes are updated through Wiki ingest and CodeGraph sync.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Without Memory, loops may just repeat faster. With inherited memory, each iteration has the chance to be better than the last.&lt;/strong&gt;&lt;/p&gt; 
&lt;h2&gt;One Agent Team: Shared Experience, Not Shared Privacy&lt;/h2&gt; 
&lt;p&gt;New Chat Memory and Skills are private by default. Sharing is an explicit action, not a default leak.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Visibility&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Semantics&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;private&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Only the Owner can read — not even team admins&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;team&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Team members can read; the Owner / Admin can manage&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;restricted&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Precise access via User / Role / Agent ACL&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;agent&lt;/code&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;For targeted equipping of Agents within the same team&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;You can assign the &quot;Release Skill&quot; to the Release Agent, the &quot;Architecture Wiki&quot; to all development Agents, and CodeGraph to Coder and Reviewer.&lt;/p&gt; 
&lt;h2&gt;Technical Implementation&lt;/h2&gt; 
&lt;p&gt;TencentDB Agent Memory doesn&#39;t aim to &quot;store everything.&quot; It solves three problems: &lt;strong&gt;what&#39;s worth keeping, who can use it, and how to retrieve less while retrieving the right things next time.&lt;/strong&gt;&lt;/p&gt; 
&lt;img alt=&quot;Technical overview: layering (L0–L3), Memory Assets, Memory Hub, identity-based assembly for Agents&quot; src=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/assets/images/flowchart5.png&quot; /&gt; 
&lt;h3&gt;1. Memory isn&#39;t flat records — it grows in layers&lt;/h3&gt; 
&lt;p&gt;Conversations are first saved as L0, then refined by an async pipeline into multiple levels of granularity:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Layer&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;What it stores&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Primary use&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;L0 Conversation&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Raw conversations with full context&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Verify exact wording, timestamps, and sources&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;L1 Atom&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Facts, preferences, constraints, and events extracted from conversations&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Precise recall of actionable information&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;L2 Scenario&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Knowledge blocks organized around projects or scenarios&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Quickly restore a working context&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;L3 Core / Persona&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Long-term profiles, stable patterns, and high-level cognition&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Let Agents rapidly enter a user&#39;s and team&#39;s context&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Both generation and retrieval are layered: normally, L2/L3 provide a quick context bootstrap; when specific facts are needed, BM25 + vector retrieval + RRF fall back to L1/L0. Results are further capped by item count, character budget, and timeout limits to prevent memory from overwhelming the context window.&lt;/p&gt; 
&lt;h3&gt;2. Memory isn&#39;t a global prompt — it&#39;s the Agent&#39;s loadout&lt;/h3&gt; 
&lt;p&gt;Chat Memory, Skills, Wiki, and CodeGraph are all registered uniformly as Memory Assets. Memory Hub uses &lt;strong&gt;Fixed Binding + ACL&lt;/strong&gt; to determine which assets a given Agent can use: first narrow the permission scope by Team, User, Agent, and visibility, then retrieve based on the current query.&lt;/p&gt; 
&lt;p&gt;This lets teams share experience without exposing all their private information; switching Agents or frameworks only requires re-equipping, not retraining.&lt;/p&gt; 
&lt;h3&gt;3. Knowledge isn&#39;t injected wholesale — it&#39;s called on demand&lt;/h3&gt; 
&lt;p&gt;Documents are organized into searchable Wiki pages that support link-graph drill-down; codebases are indexed into CodeGraph assets containing files, symbols, and call relationships. Agents first discover capabilities via &lt;code&gt;/v3/tools/list&lt;/code&gt;, then use &lt;code&gt;/v3/tools/call&lt;/code&gt; to read relevant pages, source code, or impact paths.&lt;/p&gt; 
&lt;p&gt;This makes documents and code part of memory as well — but they remain available tools that only enter context when truly needed.&lt;/p&gt; 
&lt;h2&gt;Benchmark&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Benchmark&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Without TencentDB Agent Memory&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;With it enabled&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Relative improvement&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;strong&gt;PersonaMem&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;48%&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;strong&gt;76%&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;&lt;strong&gt;+59%&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;PersonaMem tests whether an Agent can correctly understand and apply user information after extended interactions.&lt;/p&gt; 
&lt;h2&gt;Notes&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Wiki and CodeGraph are built asynchronously; allow some processing time before they reach &lt;code&gt;ready&lt;/code&gt; status.&lt;/li&gt; 
 &lt;li&gt;CodeGraph currently prioritizes public HTTPS repositories; support for private repositories and SSH credentials is still being refined.&lt;/li&gt; 
 &lt;li&gt;The Hub supports manual asset binding; fully automated memory routing is still under iteration.&lt;/li&gt; 
 &lt;li&gt;TencentDB Agent Memory currently supports OpenClaw, Hermes, Claude Code, CodeBuddy, and SDK integration; broader cross-framework migration is on the roadmap.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Related Documentation&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/INSTALL.md&quot;&gt;Full Installation Guide&lt;/a&gt; (Memory Core + Hub + Proxy one-click deployment)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/MemoryCore/scripts/migrate-v2-to-v3/README.md&quot;&gt;Data Migration Tool (v2 → v3)&lt;/a&gt; (if you&#39;re on an older release and want to migrate existing data)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/MemoryKnowledge/openapi.yaml&quot;&gt;Knowledge OpenAPI&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/CONTRIBUTING.md&quot;&gt;Contributing Guide&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Agent Memory doesn&#39;t have a settled standard yet. Bug reports, documentation, benchmarks, new framework adapters, and more creative Memory Hub use cases are all welcome.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Acknowledgements&lt;/h2&gt; 
&lt;p&gt;TencentDB Agent Memory stands on the shoulders of the open-source community:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/colbymchenry/codegraph&quot;&gt;&lt;strong&gt;CodeGraph&lt;/strong&gt;&lt;/a&gt; — our CodeGraph asset module &lt;strong&gt;uses code from this project&lt;/strong&gt;. Its design of a pre-indexed code graph is the foundation of our implementation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/nousresearch/hermes-agent&quot;&gt;&lt;strong&gt;Hermes Agent&lt;/strong&gt;&lt;/a&gt; (Nous Research) — our Skill asset management &lt;strong&gt;uses part of the Skill-related code from Hermes Agent and builds further optimizations base on it&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f&quot;&gt;&lt;strong&gt;&quot;LLM Wiki&quot;&lt;/strong&gt; by Andrej Karpathy&lt;/a&gt; — the idea of treating documentation as an LLM-maintained, incrementally growing knowledge artifact directly informed how our Wiki layer is built and kept up to date.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;We are grateful to the authors and contributors of these projects.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Community &amp;amp; Contributing&lt;/h2&gt; 
&lt;p&gt;We welcome contributions of all kinds — bug reports, feature suggestions, documentation fixes, benchmark reproductions, ecosystem integrations, or pull requests. Agent memory is far from settled, and we hope to build it together with the community.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;🐞 &lt;strong&gt;Found a bug or have a question?&lt;/strong&gt; Open an issue in &lt;a href=&quot;https://github.com/Tencent/TencentDB-Agent-Memory/issues&quot;&gt;GitHub Issues&lt;/a&gt; — we respond within 24 hours.&lt;/li&gt; 
 &lt;li&gt;💡 &lt;strong&gt;Have an idea to share?&lt;/strong&gt; Start a thread in &lt;a href=&quot;https://github.com/Tencent/TencentDB-Agent-Memory/discussions&quot;&gt;GitHub Discussions&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;🛠️ &lt;strong&gt;Want to contribute code?&lt;/strong&gt; Please read &lt;a href=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; first.&lt;/li&gt; 
 &lt;li&gt;💬 &lt;strong&gt;Want to chat with us?&lt;/strong&gt; Join our &lt;a href=&quot;https://discord.gg/dJQM6mKMF&quot;&gt;Discord community&lt;/a&gt; and talk to the core developers directly.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;p align=&quot;center&quot;&gt; Let the path the team has walked become the next Agent&#39;s starting line. &lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;✨ Contributors&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;💡 Thanks to the following contributors building with us — you make TencentDB Agent Memory better.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://github.com/TencentCloud/TencentDB-Agent-Memory/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=TencentCloud/TencentDB-Agent-Memory&amp;amp;columns=12&amp;amp;anon=1&quot; /&gt; &lt;/a&gt; 
 &lt;p&gt;&lt;br /&gt;&lt;br /&gt; &lt;a href=&quot;https://github.com/TencentCloud/TencentDB-Agent-Memory/issues&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Contributions_Welcome-006eff?style=for-the-badge&amp;amp;logo=github&amp;amp;logoColor=white&quot; alt=&quot;Contributions Welcome&quot; /&gt; &lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;table width=&quot;100%&quot;&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td width=&quot;68%&quot;&gt; &lt;b&gt;If TencentDB Agent Memory has been helpful to you, please consider starring the project.&lt;/b&gt;&lt;br /&gt; If you have any suggestions, feel free to open an issue for discussion. &lt;/td&gt; 
   &lt;td width=&quot;32%&quot; align=&quot;right&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/assets/images/star-helper.png&quot; alt=&quot;Star TencentDB Agent Memory&quot; width=&quot;260&quot; /&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/TencentCloud/TencentDB-Agent-Memory/feat/server_team/LICENSE&quot;&gt;MIT&lt;/a&gt; © TencentDB Agent Memory Team&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/05902f921af99724cb87cc401eb2093b2afc01056f10953bbe4b33ac61f3915c/TencentCloud/TencentDB-Agent-Memory" medium="image" />
      
    </item>
    
    <item>
      <title>earendil-works/pi</title>
      <link>https://github.com/earendil-works/pi</link>
      <description>&lt;p&gt;AI agent toolkit: unified LLM API, agent loop, TUI, coding agent CLI&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://pi.dev&quot;&gt; &lt;img alt=&quot;pi logo&quot; src=&quot;https://pi.dev/logo-auto.svg?sanitize=true&quot; width=&quot;128&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://discord.com/invite/3cU7Bz4UPx&quot;&gt;&lt;img alt=&quot;Discord&quot; src=&quot;https://img.shields.io/badge/discord-community-5865F2?style=flat-square&amp;amp;logo=discord&amp;amp;logoColor=white&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/@earendil-works/pi-coding-agent&quot;&gt;&lt;img alt=&quot;npm&quot; src=&quot;https://img.shields.io/npm/v/@earendil-works/pi-coding-agent?style=flat-square&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;New issues and PRs from new contributors are auto-closed by default. Maintainers review auto-closed issues daily. See &lt;a href=&quot;https://raw.githubusercontent.com/earendil-works/pi/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h1&gt;Pi Agent Harness&lt;/h1&gt; 
&lt;p&gt;This is the home of the Pi agent harness project including our self extensible coding agent.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent&quot;&gt;@earendil-works/pi-coding-agent&lt;/a&gt;&lt;/strong&gt;: Interactive coding agent CLI&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/earendil-works/pi/main/packages/agent&quot;&gt;@earendil-works/pi-agent-core&lt;/a&gt;&lt;/strong&gt;: Agent runtime with tool calling and state management&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/earendil-works/pi/main/packages/ai&quot;&gt;@earendil-works/pi-ai&lt;/a&gt;&lt;/strong&gt;: Unified multi-provider LLM API (OpenAI, Anthropic, Google, …)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;To learn more about Pi:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://pi.dev&quot;&gt;Visit pi.dev&lt;/a&gt;, the project website with demos&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://pi.dev/docs/latest&quot;&gt;Read the documentation&lt;/a&gt;, but you can also ask the agent to explain itself&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;All Packages&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Package&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/earendil-works/pi/main/packages/telemetry&quot;&gt;@earendil-works/pi-telemetry&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Vendor-neutral telemetry contracts, reference adapter, conformance tests, and typed schemas&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/earendil-works/pi/main/packages/ai&quot;&gt;@earendil-works/pi-ai&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Unified multi-provider LLM API (OpenAI, Anthropic, Google, etc.)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/earendil-works/pi/main/packages/agent&quot;&gt;@earendil-works/pi-agent-core&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Agent runtime with tool calling and state management&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent&quot;&gt;@earendil-works/pi-coding-agent&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Interactive coding agent CLI&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/earendil-works/pi/main/packages/tui&quot;&gt;@earendil-works/pi-tui&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Terminal UI library with differential rendering&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;For Slack/chat automation and workflows see &lt;a href=&quot;https://github.com/earendil-works/pi-chat&quot;&gt;earendil-works/pi-chat&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Permissions &amp;amp; Containerization&lt;/h2&gt; 
&lt;p&gt;Pi does not include a built-in permission system for restricting filesystem, process, network, or credential access. By default, it runs with the permissions of the user and process that launched it.&lt;/p&gt; 
&lt;p&gt;If you need stronger boundaries, containerize or sandbox Pi. See &lt;a href=&quot;https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/docs/containerization.md&quot;&gt;packages/coding-agent/docs/containerization.md&lt;/a&gt; for three patterns:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Gondolin extension&lt;/strong&gt;: keep &lt;code&gt;pi&lt;/code&gt; and provider auth on the host while routing built-in tools and &lt;code&gt;!&lt;/code&gt; commands into a local Linux micro-VM.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Plain Docker&lt;/strong&gt;: run the whole &lt;code&gt;pi&lt;/code&gt; process in a local container for simple isolation.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;OpenShell&lt;/strong&gt;: run the whole &lt;code&gt;pi&lt;/code&gt; process in a policy-controlled sandbox.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/earendil-works/pi/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for contribution guidelines and &lt;a href=&quot;https://raw.githubusercontent.com/earendil-works/pi/main/AGENTS.md&quot;&gt;AGENTS.md&lt;/a&gt; for project-specific rules (for both humans and agents). Longer term plans for Pi can also be found in &lt;a href=&quot;https://rfc.earendil.com/keyword/pi/&quot;&gt;RFCs&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Development&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install --ignore-scripts  # Install all dependencies without running lifecycle scripts
npm run build         # Refresh model data, then build all packages
npm run build:offline # Rebuild using existing model data without network access
npm run check         # Lint, format, and type check
./test.sh            # Run tests (skips LLM-dependent tests without API keys)
./pi-test.sh         # Run pi from sources (can be run from any directory)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Building standalone binaries from release source&lt;/h2&gt; 
&lt;p&gt;GitHub releases include a versioned source archive covered by the release&#39;s &lt;code&gt;SHA256SUMS&lt;/code&gt; file. Extract it and run the same build script used for the official standalone binaries:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;VERSION=&quot;&amp;lt;release-version&amp;gt;&quot;
tar -xzf &quot;pi-${VERSION}-source.tar.gz&quot;
cd &quot;pi-${VERSION}&quot;
./scripts/build-binaries.sh --offline-model-data --platform linux-x64 --out &quot;$PWD/out&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The source archive includes the generated provider model data used for the release. &lt;code&gt;--offline-model-data&lt;/code&gt; builds with that snapshot instead of refreshing it from live provider catalogs. The script still installs dependencies, builds the monorepo, compiles the Bun executable, and stages its runtime assets. Package maintainers who provide dependencies separately can pass &lt;code&gt;--skip-install --skip-deps&lt;/code&gt;.&lt;/p&gt; 
&lt;h2&gt;Supply-chain hardening&lt;/h2&gt; 
&lt;p&gt;We treat npm dependency changes as reviewed code changes.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Direct external dependencies are pinned to exact versions. Internal workspace packages remain version-ranged.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;.npmrc&lt;/code&gt; sets &lt;code&gt;save-exact=true&lt;/code&gt; and &lt;code&gt;min-release-age=2&lt;/code&gt; to avoid same-day dependency releases during npm resolution.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;package-lock.json&lt;/code&gt; is the dependency ground truth. Pre-commit blocks accidental lockfile commits unless &lt;code&gt;PI_ALLOW_LOCKFILE_CHANGE=1&lt;/code&gt; is set.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;npm run check&lt;/code&gt; verifies pinned direct deps, native TypeScript import compatibility, and the generated coding-agent shrinkwrap.&lt;/li&gt; 
 &lt;li&gt;The published CLI package includes &lt;code&gt;packages/coding-agent/npm-shrinkwrap.json&lt;/code&gt;, generated from the root lockfile, to pin transitive deps for npm users.&lt;/li&gt; 
 &lt;li&gt;Release smoke tests use &lt;code&gt;npm run release:local&lt;/code&gt; to build, pack, and create isolated npm and Bun installs outside the repo before tagging a release.&lt;/li&gt; 
 &lt;li&gt;Local release installs, documented npm installs, and &lt;code&gt;pi update --self&lt;/code&gt; use &lt;code&gt;--ignore-scripts&lt;/code&gt; where supported.&lt;/li&gt; 
 &lt;li&gt;CI installs with &lt;code&gt;npm ci --ignore-scripts&lt;/code&gt;, and a scheduled GitHub workflow runs &lt;code&gt;npm audit --omit=dev&lt;/code&gt; plus &lt;code&gt;npm audit signatures --omit=dev&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;Shrinkwrap generation has an explicit allowlist for dependency lifecycle scripts; new lifecycle-script deps fail checks until reviewed.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Share your OSS coding agent sessions&lt;/h2&gt; 
&lt;p&gt;If you use Pi or other coding agents for open source work, please share your sessions.&lt;/p&gt; 
&lt;p&gt;Public OSS session data helps improve coding agents with real-world tasks, tool use, failures, and fixes instead of toy benchmarks.&lt;/p&gt; 
&lt;p&gt;For the full explanation, see &lt;a href=&quot;https://x.com/badlogicgames/status/2037811643774652911&quot;&gt;this post on X&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;To publish sessions, use &lt;a href=&quot;https://github.com/badlogic/pi-share-hf&quot;&gt;&lt;code&gt;badlogic/pi-share-hf&lt;/code&gt;&lt;/a&gt;. Read its &lt;a href=&quot;http://README.md&quot;&gt;README.md&lt;/a&gt; for setup instructions. All you need is a Hugging Face account, the Hugging Face CLI, and &lt;code&gt;pi-share-hf&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;You can also watch &lt;a href=&quot;https://x.com/badlogicgames/status/2041151967695634619&quot;&gt;this video&lt;/a&gt;, where I show how I publish my &lt;code&gt;pi-mono&lt;/code&gt; sessions.&lt;/p&gt; 
&lt;p&gt;I regularly publish my own &lt;code&gt;pi-mono&lt;/code&gt; work sessions here:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://huggingface.co/datasets/badlogicgames/pi-mono&quot;&gt;badlogicgames/pi-mono on Hugging Face&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;MIT&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://pi.dev&quot;&gt;pi.dev&lt;/a&gt; domain graciously donated by &lt;br /&gt;&lt;br /&gt; &lt;a href=&quot;https://exe.dev&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/docs/images/exy.png&quot; alt=&quot;Exy mascot&quot; width=&quot;48&quot; /&gt;&lt;br /&gt;exe.dev&lt;/a&gt; &lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/21feb0bcf129eef207abc0e228af050e2ef95f6b0dc163eb5975213971d97815/earendil-works/pi" medium="image" />
      
    </item>
    
    <item>
      <title>agegr/pi-web</title>
      <link>https://github.com/agegr/pi-web</link>
      <description>&lt;p&gt;Web UI for the pi coding agent&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Pi Web&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/agegr/pi-web/main/README.zh-CN.md&quot;&gt;中文文档&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/agegr/pi-web/main/README.ja.md&quot;&gt;日本語&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/agegr/pi-web/main/README.ru.md&quot;&gt;Русский&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Local web UI for the &lt;a href=&quot;https://github.com/badlogic/pi-mono&quot;&gt;pi coding agent&lt;/a&gt;. Pi Web reads your local pi session files and gives you a browser workspace for session browsing, real-time chat, model configuration, skill management, and project file preview.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/agegr/pi-web/main/docs/screenshot2.png&quot; alt=&quot;Pi Web shows the same pi session with structured Markdown, tool calls, and project navigation beside the CLI&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;The same pi session in CLI and Pi Web: structured tool calls, readable Markdown, session browsing, and cleaner results.&lt;/p&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;p&gt;Pi Web requires Node.js 22.19.0 or newer. Check your version with &lt;code&gt;node --version&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Run without installing:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx @agegr/pi-web@latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Or install globally:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Install or upgrade
npm install -g @agegr/pi-web@latest
pi-web
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Uninstall a global installation:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm uninstall -g @agegr/pi-web
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Then open &lt;a href=&quot;http://127.0.0.1:30141&quot;&gt;http://127.0.0.1:30141&lt;/a&gt;. The CLI will try to open the browser automatically after the server is ready. Pi Web listens on &lt;code&gt;127.0.0.1&lt;/code&gt; by default.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Options:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pi-web --port 8080              # custom port
pi-web --hostname 0.0.0.0       # expose on a trusted network
pi-web -p 8080 -H 0.0.0.0       # combine options
pi-web --no-open                # do not open the browser automatically

PORT=8080 pi-web                # environment variable is also supported
PI_WEB_HOSTNAME=0.0.0.0 pi-web  # explicit network exposure
PI_WEB_ALLOWED_HOSTS=pi-web.internal pi-web  # allow an exact proxy/custom hostname
PI_WEB_PASSWORD=&#39;a-long-random-password&#39; pi-web  # require Basic Auth (username: pi)
PI_WEB_NO_OPEN=1 pi-web         # useful when running as a background service
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Set &lt;code&gt;PI_WEB_PASSWORD&lt;/code&gt; to protect the web interface and every API endpoint with HTTP Basic Auth. The username is always &lt;code&gt;pi&lt;/code&gt;. Leaving the variable unset or empty disables authentication.&lt;/p&gt; 
&lt;p&gt;Pi Web can invoke a high-privilege agent. Basic Auth does not encrypt the password in transit, so do not expose plain HTTP to the internet. Use HTTPS through a trusted reverse proxy or a trusted VPN for remote access. API requests accept loopback names, IP literals, the selected bind hostname, and exact comma-separated names in &lt;code&gt;PI_WEB_ALLOWED_HOSTS&lt;/code&gt;. Configure that variable when a trusted reverse proxy uses a different external hostname.&lt;/p&gt; 
&lt;h2&gt;HTTP Proxy&lt;/h2&gt; 
&lt;p&gt;Pi Web reads the standard &lt;code&gt;HTTP_PROXY&lt;/code&gt;, &lt;code&gt;HTTPS_PROXY&lt;/code&gt;, and &lt;code&gt;NO_PROXY&lt;/code&gt; environment variables for server-side model and API requests.&lt;/p&gt; 
&lt;p&gt;On macOS or Linux:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;HTTP_PROXY=http://127.0.0.1:7890 \
HTTPS_PROXY=http://127.0.0.1:7890 \
NO_PROXY=localhost,127.0.0.1 \
npx @agegr/pi-web@latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;On Windows PowerShell:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;$env:HTTP_PROXY = &quot;http://127.0.0.1:7890&quot;
$env:HTTPS_PROXY = &quot;http://127.0.0.1:7890&quot;
$env:NO_PROXY = &quot;localhost,127.0.0.1&quot;
npx @agegr/pi-web@latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Pick work back up&lt;/strong&gt;: browse previous pi conversations by project without digging through terminal history or session paths.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Try different directions safely&lt;/strong&gt;: continue from an earlier message or fork a session into a separate route.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Work across branches&lt;/strong&gt;: switch Git worktrees from the sidebar so new sessions and the Explorer follow the checkout you choose.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Chat beside the project&lt;/strong&gt;: browse files on the left and preview source, docs, images, audio, and PDFs on the right while the agent works.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;See session state clearly&lt;/strong&gt;: context usage, cost, compaction state, and system prompt details are visible from the top bar.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Configure less from the terminal&lt;/strong&gt;: manage models, login/API keys, model tests, and skill switches from the web UI.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Use the interface in your language&lt;/strong&gt;: switch between the supported UI languages from the top bar.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Notes&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Data directory&lt;/strong&gt;: Pi Web reads &lt;code&gt;~/.pi/agent/sessions&lt;/code&gt; by default. Set &lt;code&gt;PI_CODING_AGENT_DIR&lt;/code&gt; to point at another pi agent directory.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Session files&lt;/strong&gt;: files are stored as &lt;code&gt;~/.pi/agent/sessions/&amp;lt;encoded-cwd&amp;gt;/&amp;lt;timestamp&amp;gt;_&amp;lt;uuid&amp;gt;.jsonl&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Runtime environment&lt;/strong&gt;: run Pi Web in the same OS or container as pi so session working directories remain available.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Model config&lt;/strong&gt;: the Models panel reads and writes &lt;code&gt;models.json&lt;/code&gt; in the pi agent directory. Model lists and defaults come from pi&#39;s config.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;File access&lt;/strong&gt;: file browsing and preview are scoped to the selected project directory and working directories that appear in sessions.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Git worktrees&lt;/strong&gt;: see &lt;a href=&quot;https://raw.githubusercontent.com/agegr/pi-web/main/docs/worktrees.md&quot;&gt;Worktrees in Pi Web&lt;/a&gt; for when the switcher appears, how new worktrees are created, and what removal does.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Forks vs in-session branches&lt;/strong&gt;: Fork creates a new &lt;code&gt;.jsonl&lt;/code&gt; file. &quot;Edit from here&quot; creates another branch inside the same session file.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Internationalization&lt;/strong&gt;: see &lt;a href=&quot;https://raw.githubusercontent.com/agegr/pi-web/main/docs/i18n.md&quot;&gt;Internationalization&lt;/a&gt; for using translations and adding languages or UI text.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Development&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install
npm run dev
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The local dev server runs at &lt;a href=&quot;http://127.0.0.1:30141&quot;&gt;http://127.0.0.1:30141&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Common checks:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm test
node_modules/.bin/tsc --noEmit
npm run lint
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Avoid running &lt;code&gt;next build&lt;/code&gt; / &lt;code&gt;npm run build&lt;/code&gt; during local development. It writes to &lt;code&gt;.next/&lt;/code&gt; and can interfere with the dev server; leave builds for release work.&lt;/p&gt; 
&lt;h2&gt;Project Structure&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;app/
  api/
    agent/          # creates/drives AgentSession and exposes SSE events
    auth/           # OAuth and API key management
    cwd/browse/     # browsable server directory listing
    cwd/validate/   # custom working directory validation
    default-cwd/    # pi default working directory lookup
    files/          # file listing, reading, preview, and watching
    home/           # current user home directory
    models/         # available models, default model, thinking levels
    models-config/  # read/write models.json and test models
    sessions/       # session reads, rename, delete, context, HTML export
    skills/         # skill listing, search, install, enable/disable
components/
  AppShell.tsx        # main layout, URL state, top panels, file tabs
  SessionSidebar.tsx  # project selector, session tree, Explorer
  DirectoryPicker.tsx # browsable and editable working-directory picker
  ChatWindow.tsx      # messages, SSE, image drag/drop, minimap
  ChatInput.tsx       # input bar, model/tools/thinking/compact/slash controls
  MessageView.tsx     # message, thinking, tool call/result rendering
  ModelsConfig.tsx    # model and auth configuration panel
  SkillsConfig.tsx    # skill management panel
  FileExplorer.tsx    # file tree
  FileViewer.tsx      # source, diff, image, audio, PDF, DOCX preview
lib/
  directory-browser.ts # directory normalization and safe listing helpers
  http-dispatcher.ts  # HTTP(S) proxy setup for server-side fetch
  rpc-manager.ts      # AgentSessionWrapper lifecycle and global registry
  session-reader.ts   # parses .jsonl session files and branch contexts
  normalize.ts        # normalizes toolCall field names
  file-access.ts      # file read safety boundary
  file-paths.ts       # path encoding and relative path helpers
  markdown.ts         # Markdown/Mermaid/KaTeX plugin configuration
  pi-types.ts         # pi-related types
hooks/
  useAgentSession.ts  # session loading, command sending, SSE state machine
  useAudio.ts         # completion sound
  useDragDrop.ts      # image drag/drop
  useTheme.ts         # theme switching
bin/
  pi-web.js           # npm CLI entrypoint
instrumentation.ts    # initializes the server HTTP dispatcher
&lt;/code&gt;&lt;/pre&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/3397b6feb7132306c977d6b1dee8d889b8752c099a11e2210a88f33e69736afd/agegr/pi-web" medium="image" />
      
    </item>
    
    <item>
      <title>MoonshotAI/kimi-code</title>
      <link>https://github.com/MoonshotAI/kimi-code</link>
      <description>&lt;p&gt;Kimi Code CLI — The Starting Point for Next-Gen Agents&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Kimi Code CLI&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/MoonshotAI/kimi-code/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/license-MIT-blue&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://moonshotai.github.io/kimi-code/en/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/docs-online-blue&quot; alt=&quot;Docs&quot; /&gt;&lt;/a&gt; &lt;br /&gt; &lt;a href=&quot;https://moonshotai.github.io/kimi-code/en/&quot;&gt;Documentation&lt;/a&gt; · &lt;a href=&quot;https://github.com/MoonshotAI/kimi-code/issues&quot;&gt;Issues&lt;/a&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/MoonshotAI/kimi-code/main/README.zh-CN.md&quot;&gt;中文&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/MoonshotAI/kimi-code/main/docs/media/intro.gif&quot; alt=&quot;Demo of using Kimi Code&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;What is Kimi Code CLI&lt;/h2&gt; 
&lt;p&gt;Kimi Code CLI is an AI coding agent that runs in your terminal — it can read and edit code, run shell commands, search files, fetch web pages, and choose the next step based on the feedback it receives. It works out of the box with Moonshot AI’s Kimi models and can also be configured to use other compatible providers.&lt;/p&gt; 
&lt;h2&gt;Install&lt;/h2&gt; 
&lt;p&gt;Install with the official script. No Node.js required.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;macOS or Linux&lt;/strong&gt;:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Windows (PowerShell)&lt;/strong&gt;:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;irm https://code.kimi.com/kimi-code/install.ps1 | iex
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;On Windows, install &lt;a href=&quot;https://gitforwindows.org/&quot;&gt;Git for Windows&lt;/a&gt; before first launch because Kimi Code CLI uses the bundled Git Bash as its shell environment. If Git Bash is installed in a custom location, set &lt;code&gt;KIMI_SHELL_PATH&lt;/code&gt; to the absolute path of &lt;code&gt;bash.exe&lt;/code&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Then, run it with a new shell session:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;kimi --version
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For npm install, upgrade, uninstall, see &lt;a href=&quot;https://moonshotai.github.io/kimi-code/en/guides/getting-started&quot;&gt;Getting Started&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;p&gt;Open a project and start the interactive UI:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;cd your-project
kimi
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;On first launch, run &lt;code&gt;/login&lt;/code&gt; inside Kimi Code CLI and choose either Kimi Code OAuth or a Moonshot AI Open Platform API key. After login, try your first task:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Take a look at this project and explain its main directories.
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Key Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Single-binary distribution.&lt;/strong&gt; Install with one command: no Node.js setup, PATH gymnastics, or global module conflicts.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Blazing-fast startup.&lt;/strong&gt; The TUI is ready in milliseconds, so starting a session never feels heavy.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Purpose-built TUI.&lt;/strong&gt; A carefully tuned interface, optimized end to end for long, focused agent sessions.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Video input.&lt;/strong&gt; Drop a screen recording or demo clip into the chat and let the agent watch what is hard to describe in words — turn a reference clip into a LUT, a long video into a short, a screen recording into working code, and more.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;AI-native MCP configuration.&lt;/strong&gt; Add, edit, and authenticate Model Context Protocol servers conversationally with &lt;code&gt;/mcp-config&lt;/code&gt;, without hand-editing JSON.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Rich plugin ecosystem.&lt;/strong&gt; Install skills, MCP servers, and data sources from the marketplace or any GitHub repo, with each install&#39;s trust level surfaced up front.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Subagents for focused, parallel work.&lt;/strong&gt; Dispatch built-in &lt;code&gt;coder&lt;/code&gt;, &lt;code&gt;explore&lt;/code&gt;, and &lt;code&gt;plan&lt;/code&gt; subagents in isolated contexts while keeping the main conversation clean.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Lifecycle hooks.&lt;/strong&gt; Run local commands at key points to gate risky tool calls, audit decisions, trigger desktop notifications, or connect to your own automation.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Editor &amp;amp; IDE integration (ACP).&lt;/strong&gt; Drive a Kimi Code CLI session straight from Zed, JetBrains, or any &lt;a href=&quot;https://agentclientprotocol.com/&quot;&gt;Agent Client Protocol&lt;/a&gt; client with &lt;code&gt;kimi acp&lt;/code&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Use it in your editor (ACP)&lt;/h2&gt; 
&lt;p&gt;Kimi Code CLI speaks the &lt;a href=&quot;https://agentclientprotocol.com/&quot;&gt;Agent Client Protocol&lt;/a&gt;, so ACP-compatible editors and IDEs (Zed, JetBrains, …) can drive a session over stdio. Log in once, then point your editor at the &lt;code&gt;kimi acp&lt;/code&gt; subcommand — no extra login needed.&lt;/p&gt; 
&lt;p&gt;For Zed, add this to &lt;code&gt;~/.config/zed/settings.json&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;agent_servers&quot;: {
    &quot;Kimi Code CLI&quot;: {
      &quot;type&quot;: &quot;custom&quot;,
      &quot;command&quot;: &quot;kimi&quot;,
      &quot;args&quot;: [&quot;acp&quot;],
      &quot;env&quot;: {}
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Then open a new conversation in Zed&#39;s Agent panel. See &lt;a href=&quot;https://moonshotai.github.io/kimi-code/en/guides/ides&quot;&gt;Using in IDEs&lt;/a&gt; for JetBrains setup and troubleshooting, and the &lt;a href=&quot;https://moonshotai.github.io/kimi-code/en/reference/kimi-acp&quot;&gt;&lt;code&gt;kimi acp&lt;/code&gt; reference&lt;/a&gt; for the full capability matrix.&lt;/p&gt; 
&lt;h2&gt;Docs&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://moonshotai.github.io/kimi-code/en/guides/getting-started&quot;&gt;Getting Started&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://moonshotai.github.io/kimi-code/en/guides/interaction&quot;&gt;Interaction and approvals&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://moonshotai.github.io/kimi-code/en/guides/sessions&quot;&gt;Sessions&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://moonshotai.github.io/kimi-code/en/guides/ides&quot;&gt;Using in IDEs (ACP)&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://moonshotai.github.io/kimi-code/en/configuration/config-files&quot;&gt;Configuration&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://moonshotai.github.io/kimi-code/en/reference/kimi-command&quot;&gt;Command reference&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Develop&lt;/h2&gt; 
&lt;p&gt;Requirements: Node.js ≥ 24.15.0, pnpm 10.33.0.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;git clone https://github.com/MoonshotAI/kimi-code.git
cd kimi-code
pnpm install
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;pnpm dev:cli    # run the CLI in dev mode
pnpm test       # run tests
pnpm typecheck  # TypeScript check
pnpm lint       # oxlint
pnpm build      # build all packages
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/MoonshotAI/kimi-code/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for the full contribution guide.&lt;/p&gt; 
&lt;h2&gt;Community&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/MoonshotAI/kimi-code/issues&quot;&gt;Issues&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;For security vulnerabilities, see &lt;a href=&quot;https://raw.githubusercontent.com/MoonshotAI/kimi-code/main/SECURITY.md&quot;&gt;SECURITY.md&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Acknowledgements&lt;/h2&gt; 
&lt;p&gt;Our TUI is built on top of &lt;a href=&quot;https://github.com/earendil-works/pi-mono/tree/main/packages/tui&quot;&gt;&lt;code&gt;pi-tui&lt;/code&gt;&lt;/a&gt;. We thank the authors of &lt;code&gt;pi-tui&lt;/code&gt; for their valuable work.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;Released under the &lt;a href=&quot;https://raw.githubusercontent.com/MoonshotAI/kimi-code/main/LICENSE&quot;&gt;MIT License&lt;/a&gt;.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/e141d7861f5df3ff4707747a32a99589e9c97cea9661a070478580b14c46de0b/MoonshotAI/kimi-code" medium="image" />
      
    </item>
    
    <item>
      <title>ibelick/ui-skills</title>
      <link>https://github.com/ibelick/ui-skills</link>
      <description>&lt;p&gt;Skills for Design Engineers&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;UI Skills&lt;/h1&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/ibelick/ui-skills/main/public/UI-OG.webp&quot; alt=&quot;UI Skills&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Skills for Design Engineers&lt;/p&gt; 
&lt;p&gt;More on &lt;a href=&quot;http://ui-skills.com/&quot;&gt;ui-skills.com&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Run &lt;code&gt;npx ui-skills start&lt;/code&gt; to route your agent through the right UI skill set for the task.&lt;/p&gt; 
&lt;h2&gt;CLI&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx ui-skills
npx ui-skills start
npx ui-skills categories
npx ui-skills list --category motion
npx ui-skills get baseline-ui
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;Licensed under the &lt;a href=&quot;https://github.com/ibelick/ui-skills/raw/main/LICENSE&quot;&gt;MIT license&lt;/a&gt;.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/069b4548b4b749c4035e668d560794d400377b6ff42be666fba566c95fa644bf/ibelick/ui-skills" medium="image" />
      
    </item>
    
    <item>
      <title>different-ai/openwork</title>
      <link>https://github.com/different-ai/openwork</link>
      <description>&lt;p&gt;The open-source alternative to Claude Cowork (powered by opencode)&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;OpenWork&lt;/h1&gt; 
&lt;p&gt;OpenWork is a free, open-source desktop app made for sharing AI workflows. It is an open-source alternative to Claude Cowork and Codex for macOS, Windows, and Linux.&lt;/p&gt; 
&lt;p&gt;Add one OpenWork MCP to Codex, Claude Code, Cursor, or another compatible agent and reuse the same skills, MCPs, and connected services across your tools, teammates, and machines. Create something once, share it with coworkers or friends, or keep it for yourself.&lt;/p&gt; 
&lt;p&gt;The desktop app is there when you want a dedicated workspace, but it is not required. You can use OpenWork from the agent you already have. For larger organizations, the admin interface lets you publish capabilities, manage access, and configure shared or per-user connections.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://openworklabs.com/download&quot;&gt;&lt;strong&gt;Download OpenWork&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;img width=&quot;1481&quot; height=&quot;842&quot; alt=&quot;OpenWork desktop app&quot; src=&quot;https://github.com/user-attachments/assets/66a8dd9b-5260-488c-957d-e54331e78c1c&quot; /&gt; 
&lt;h2&gt;Install with your AI agent&lt;/h2&gt; 
&lt;p&gt;Already use an AI agent? Copy this prompt and paste it into Claude Code, Cursor, Codex, ChatGPT, or any agent that can run commands on your computer.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Install OpenWork on my computer, set up my first workspace, and open it ready to use. Follow the steps in https://openworklabs.com/start.md?v=hero
&lt;/code&gt;&lt;/pre&gt; 
&lt;ol&gt; 
 &lt;li&gt;Installs OpenWork&lt;/li&gt; 
 &lt;li&gt;Creates your workspace&lt;/li&gt; 
 &lt;li&gt;Opens it ready to run&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Use OpenWork from any agent&lt;/h2&gt; 
&lt;p&gt;The OpenWork MCP brings your assigned skills, plugins, MCP connections, Google Workspace, and Microsoft 365 capabilities into any compatible agent.&lt;/p&gt; 
&lt;p&gt;It exposes two tools: &lt;code&gt;search_capabilities&lt;/code&gt; finds what you can use, and &lt;code&gt;execute_capability&lt;/code&gt; runs it. After adding the MCP, your client opens a browser so you can sign in and choose your OpenWork organization.&lt;/p&gt; 
&lt;h3&gt;Codex&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;codex mcp add openwork --url https://api.openworklabs.com/mcp/agent
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Claude Code&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;claude mcp add --transport http openwork https://api.openworklabs.com/mcp/agent
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;OpenCode&lt;/h3&gt; 
&lt;p&gt;Add this to &lt;code&gt;opencode.json&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;mcp&quot;: {
    &quot;openwork&quot;: {
      &quot;type&quot;: &quot;remote&quot;,
      &quot;enabled&quot;: true,
      &quot;url&quot;: &quot;https://api.openworklabs.com/mcp/agent&quot;,
      &quot;oauth&quot;: {}
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Any MCP client&lt;/h3&gt; 
&lt;p&gt;Use this remote MCP server URL:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;https://api.openworklabs.com/mcp/agent
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;OpenWork Den&lt;/h2&gt; 
&lt;p&gt;OpenWork Den is the control plane for managing OpenWork across a team or organization.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Provision inference at scale and control which members and teams can use each model provider.&lt;/li&gt; 
 &lt;li&gt;Invite teammates, create teams, and manage access from one place.&lt;/li&gt; 
 &lt;li&gt;Set desktop policies, restrict local model access, and control which app versions your organization can use.&lt;/li&gt; 
 &lt;li&gt;Publish skills and plugins through marketplaces, then assign them to the organization, a team, or specific people.&lt;/li&gt; 
 &lt;li&gt;Import Anthropic-compatible plugins and make their supported skills and remote MCPs available through the OpenWork MCP.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;img width=&quot;1546&quot; height=&quot;915&quot; alt=&quot;OpenWork Den organization control plane&quot; src=&quot;https://github.com/user-attachments/assets/033dbbfe-5661-4f7c-869c-46278406d6cc&quot; /&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://openworklabs.com/docs&quot;&gt;Read the OpenWork docs.&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Local development&lt;/h2&gt; 
&lt;p&gt;For one checkout, keep using &lt;code&gt;pnpm dev&lt;/code&gt;; with no extra environment variables it reuses the existing shared dev profile.&lt;/p&gt; 
&lt;p&gt;To run multiple git worktrees at once, use:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pnpm dev:worktree
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;That sets &lt;code&gt;OPENWORK_DEV_PROFILE=auto&lt;/code&gt;, derives a stable profile name from the worktree path, lets Electron choose a free CDP port, and asks Vite for a free dev-server port. You can also choose a named profile, for example &lt;code&gt;OPENWORK_DEV_PROFILE=my-feature OPENWORK_ELECTRON_REMOTE_DEBUG_PORT=0 PORT=0 pnpm dev&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;dev:worktree&lt;/code&gt; also defaults &lt;code&gt;OPENWORK_ELECTRON_USE_MOCK_KEYCHAIN=1&lt;/code&gt;. A brand-new profile has no stored credentials, so on macOS the real keychain prompts as soon as Chromium persists an authenticated cookie, and that modal blocks Electron&#39;s main loop until it is dismissed. Set &lt;code&gt;OPENWORK_ELECTRON_USE_MOCK_KEYCHAIN=0&lt;/code&gt; if you specifically want the system keychain in an isolated profile.&lt;/p&gt; 
&lt;p&gt;Dev startup prints a banner like &lt;code&gt;[openwork] dev profile=... cdp=http://127.0.0.1:9223&lt;/code&gt;; use it to find the profile directory and pass the CDP URL to local tooling.&lt;/p&gt; 
&lt;p&gt;If a second instance cannot get the profile lock it now says so and exits, instead of lingering with an open CDP port and no window.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/a63a13c7d335f7d925612afd6af83f44f7e4aa73fb00ded2ee30507538f3ec41/different-ai/openwork" medium="image" />
      
    </item>
    
    <item>
      <title>jamiepine/voicebox</title>
      <link>https://github.com/jamiepine/voicebox</link>
      <description>&lt;p&gt;The open-source AI voice studio. Clone, dictate, create.&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/jamiepine/voicebox/main/.github/assets/icon-dark.webp&quot; alt=&quot;Voicebox&quot; width=&quot;120&quot; height=&quot;120&quot; /&gt; &lt;/p&gt; 
&lt;h1 align=&quot;center&quot;&gt;Voicebox&lt;/h1&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;strong&gt;The open-source AI voice studio.&lt;/strong&gt;&lt;br /&gt; Clone any voice. Generate speech. Dictate into any app. Talk to agents in voices you own.&lt;br /&gt; The full voice I/O stack, running locally on your machine. &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/jamiepine/voicebox/releases&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/downloads/jamiepine/voicebox/total?style=flat&amp;amp;color=blue&quot; alt=&quot;Downloads&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/jamiepine/voicebox/releases/latest&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/v/release/jamiepine/voicebox?style=flat&quot; alt=&quot;Release&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/jamiepine/voicebox/stargazers&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/stars/jamiepine/voicebox?style=flat&quot; alt=&quot;Stars&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/jamiepine/voicebox/raw/main/LICENSE&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/license/jamiepine/voicebox?style=flat&quot; alt=&quot;License&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://deepwiki.com/jamiepine/voicebox&quot;&gt; &lt;img src=&quot;https://img.shields.io/static/v1?label=Ask&amp;amp;message=DeepWiki&amp;amp;color=5B6EF7&quot; alt=&quot;Ask DeepWiki&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://trendshift.io/repositories/21213&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/21213&quot; alt=&quot;jamiepine%2Fvoicebox | Trendshift&quot; style=&quot;width: 250px; height: 55px;&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://voicebox.sh&quot;&gt;voicebox.sh&lt;/a&gt; • &lt;a href=&quot;https://docs.voicebox.sh&quot;&gt;Docs&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/jamiepine/voicebox/main/#download&quot;&gt;Download&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/jamiepine/voicebox/main/#features&quot;&gt;Features&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/jamiepine/voicebox/main/#api&quot;&gt;API&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/jamiepine/voicebox/main/docs/content/docs/overview/troubleshooting.mdx&quot;&gt;Troubleshooting&lt;/a&gt; &lt;/p&gt; 
&lt;br /&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://voicebox.sh&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/jamiepine/voicebox/main/landing/public/assets/app-screenshot-1.webp&quot; alt=&quot;Voicebox App Screenshot&quot; width=&quot;800&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;em&gt;Click the image above to watch the demo video on &lt;a href=&quot;https://voicebox.sh&quot;&gt;voicebox.sh&lt;/a&gt;&lt;/em&gt; &lt;/p&gt; 
&lt;br /&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/jamiepine/voicebox/main/landing/public/assets/app-screenshot-2.webp&quot; alt=&quot;Voicebox Screenshot 2&quot; width=&quot;800&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/jamiepine/voicebox/main/landing/public/assets/app-screenshot-3.webp&quot; alt=&quot;Voicebox Screenshot 3&quot; width=&quot;800&quot; /&gt; &lt;/p&gt; 
&lt;br /&gt; 
&lt;h2&gt;What is Voicebox?&lt;/h2&gt; 
&lt;p&gt;Voicebox is a &lt;strong&gt;local-first AI voice studio&lt;/strong&gt; — a free and open-source alternative to &lt;strong&gt;ElevenLabs&lt;/strong&gt; and &lt;strong&gt;WisprFlow&lt;/strong&gt; in one app. Clone voices from a few seconds of audio, generate speech in 23 languages across 7 TTS engines, dictate into any text field with a global hotkey, and give any MCP-aware AI agent a voice of your choosing.&lt;/p&gt; 
&lt;p&gt;The two cloud incumbents sit on opposite halves of the voice I/O loop — ElevenLabs on output, WisprFlow on input. Voicebox does both, bridges them with a bundled local LLM for refinement and per-profile personas, and runs the whole thing on your machine.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Complete privacy&lt;/strong&gt; — models, voice data, and captures never leave your machine&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;7 TTS engines&lt;/strong&gt; — Qwen3-TTS, Qwen CustomVoice, LuxTTS, Chatterbox Multilingual, Chatterbox Turbo, HumeAI TADA, and Kokoro&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Voice cloning and preset voices&lt;/strong&gt; — zero-shot cloning from a reference sample, or 50+ curated preset voices via Kokoro and Qwen CustomVoice&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;23 languages&lt;/strong&gt; — from English to Arabic, Japanese, Hindi, Swahili, and more&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Post-processing effects&lt;/strong&gt; — pitch shift, reverb, delay, chorus, compression, and filters&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Expressive speech&lt;/strong&gt; — paralinguistic tags like &lt;code&gt;[laugh]&lt;/code&gt;, &lt;code&gt;[sigh]&lt;/code&gt;, &lt;code&gt;[gasp]&lt;/code&gt; via Chatterbox Turbo; natural-language delivery control via Qwen CustomVoice&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Unlimited length&lt;/strong&gt; — auto-chunking with crossfade for scripts, articles, and chapters&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Stories editor&lt;/strong&gt; — multi-track timeline for conversations, podcasts, and narratives&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Voice input&lt;/strong&gt; — global dictation hotkey with push-to-talk and toggle modes, accessibility-verified auto-paste on macOS, in-app mic on every text field, Whisper-based STT&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Agent voice output&lt;/strong&gt; — one tool call (&lt;code&gt;voicebox.speak&lt;/code&gt;) and any MCP-aware agent (Claude Code, Cursor, Cline) speaks to you in a voice you&#39;ve cloned&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Voice personalities&lt;/strong&gt; — attach a free-form persona to any voice profile, then Compose, Rewrite, or Respond via a bundled local LLM — agents can invoke the same modes over MCP&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;API-first&lt;/strong&gt; — REST API plus a built-in MCP server for integrating voice I/O into your own apps and agents&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Native performance&lt;/strong&gt; — built with Tauri (Rust), not Electron&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Runs everywhere&lt;/strong&gt; — macOS (MLX/Metal), Windows (CUDA), Linux, AMD ROCm, Intel Arc, Docker&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Download&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Platform&lt;/th&gt; 
   &lt;th&gt;Download&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;macOS (Apple Silicon)&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://voicebox.sh/download/mac-arm&quot;&gt;Download DMG&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;macOS (Intel)&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://voicebox.sh/download/mac-intel&quot;&gt;Download DMG&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Windows&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://voicebox.sh/download/windows&quot;&gt;Download MSI&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Docker&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;docker compose up&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/jamiepine/voicebox/releases/latest&quot;&gt;View all binaries →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Linux&lt;/strong&gt; — Pre-built binaries are not yet available. See &lt;a href=&quot;https://voicebox.sh/linux-install&quot;&gt;voicebox.sh/linux-install&lt;/a&gt; for build-from-source instructions.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Having trouble?&lt;/strong&gt; See the &lt;a href=&quot;https://raw.githubusercontent.com/jamiepine/voicebox/main/docs/content/docs/overview/troubleshooting.mdx&quot;&gt;Troubleshooting Guide&lt;/a&gt; for common install, generation, model-download, and GPU issues.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;h3&gt;Multi-Engine Voice Cloning&lt;/h3&gt; 
&lt;p&gt;Seven TTS engines with different strengths, switchable per-generation:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Engine&lt;/th&gt; 
   &lt;th&gt;Languages&lt;/th&gt; 
   &lt;th&gt;Strengths&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Qwen3-TTS&lt;/strong&gt; (0.6B / 1.7B)&lt;/td&gt; 
   &lt;td&gt;10&lt;/td&gt; 
   &lt;td&gt;High-quality multilingual cloning, delivery instructions (&quot;speak slowly&quot;, &quot;whisper&quot;)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Qwen CustomVoice&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;10&lt;/td&gt; 
   &lt;td&gt;9 curated preset voices with natural-language delivery control — no reference audio required&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;LuxTTS&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;English&lt;/td&gt; 
   &lt;td&gt;Lightweight (~1GB VRAM), 48kHz output, 150x realtime on CPU&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Chatterbox Multilingual&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;23&lt;/td&gt; 
   &lt;td&gt;Broadest language coverage — Arabic, Danish, Finnish, Greek, Hebrew, Hindi, Malay, Norwegian, Polish, Swahili, Swedish, Turkish and more&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Chatterbox Turbo&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;English&lt;/td&gt; 
   &lt;td&gt;Fast 350M model with paralinguistic emotion/sound tags&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;TADA&lt;/strong&gt; (1B / 3B)&lt;/td&gt; 
   &lt;td&gt;10&lt;/td&gt; 
   &lt;td&gt;HumeAI speech-language model — 700s+ coherent audio, text-acoustic dual alignment&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Kokoro&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;8&lt;/td&gt; 
   &lt;td&gt;50 curated preset voices, tiny 82M model, fast CPU inference&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Emotions &amp;amp; Paralinguistic Tags&lt;/h3&gt; 
&lt;p&gt;Only &lt;strong&gt;Chatterbox Turbo&lt;/strong&gt; interprets paralinguistic tags like &lt;code&gt;[laugh]&lt;/code&gt; and &lt;code&gt;[sigh]&lt;/code&gt;. Qwen3-TTS, LuxTTS, Chatterbox Multilingual, and HumeAI TADA read them literally as text.&lt;/p&gt; 
&lt;p&gt;With &lt;strong&gt;Chatterbox Turbo&lt;/strong&gt; selected, type &lt;code&gt;/&lt;/code&gt; in the text input to open the tag inserter and add expressive tags inline with speech:&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;[laugh]&lt;/code&gt; &lt;code&gt;[chuckle]&lt;/code&gt; &lt;code&gt;[gasp]&lt;/code&gt; &lt;code&gt;[cough]&lt;/code&gt; &lt;code&gt;[sigh]&lt;/code&gt; &lt;code&gt;[groan]&lt;/code&gt; &lt;code&gt;[sniff]&lt;/code&gt; &lt;code&gt;[shush]&lt;/code&gt; &lt;code&gt;[clear throat]&lt;/code&gt;&lt;/p&gt; 
&lt;h3&gt;Post-Processing Effects&lt;/h3&gt; 
&lt;p&gt;8 audio effects powered by Spotify&#39;s &lt;code&gt;pedalboard&lt;/code&gt; library. Apply after generation, preview in real time, build reusable presets.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Effect&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Pitch Shift&lt;/td&gt; 
   &lt;td&gt;Up or down by up to 12 semitones&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Reverb&lt;/td&gt; 
   &lt;td&gt;Configurable room size, damping, wet/dry mix&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Delay&lt;/td&gt; 
   &lt;td&gt;Echo with adjustable time, feedback, and mix&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Chorus / Flanger&lt;/td&gt; 
   &lt;td&gt;Modulated delay for metallic or lush textures&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Compressor&lt;/td&gt; 
   &lt;td&gt;Dynamic range compression&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Gain&lt;/td&gt; 
   &lt;td&gt;Volume adjustment (-40 to +40 dB)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;High-Pass Filter&lt;/td&gt; 
   &lt;td&gt;Remove low frequencies&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Low-Pass Filter&lt;/td&gt; 
   &lt;td&gt;Remove high frequencies&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Ships with 4 built-in presets (Robotic, Radio, Echo Chamber, Deep Voice) and supports custom presets. Effects can be assigned per-profile as defaults.&lt;/p&gt; 
&lt;h3&gt;Unlimited Generation Length&lt;/h3&gt; 
&lt;p&gt;Text is automatically split at sentence boundaries and each chunk is generated independently, then crossfaded together. Works with all engines.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Configurable auto-chunking limit (100–5,000 chars)&lt;/li&gt; 
 &lt;li&gt;Crossfade slider (0–200ms) for smooth transitions&lt;/li&gt; 
 &lt;li&gt;Max text length: 50,000 characters&lt;/li&gt; 
 &lt;li&gt;Smart splitting respects abbreviations, CJK punctuation, and &lt;code&gt;[tags]&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Generation Versions&lt;/h3&gt; 
&lt;p&gt;Every generation supports multiple versions with provenance tracking:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Original&lt;/strong&gt; — clean TTS output, always preserved&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Effects versions&lt;/strong&gt; — apply different effects chains from any source version&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Takes&lt;/strong&gt; — regenerate with a new seed for variation&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Source tracking&lt;/strong&gt; — each version records its lineage&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Favorites&lt;/strong&gt; — star generations for quick access&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Async Generation Queue&lt;/h3&gt; 
&lt;p&gt;Generation is non-blocking. Submit and immediately start typing the next one.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Serial execution queue prevents GPU contention&lt;/li&gt; 
 &lt;li&gt;Real-time SSE status streaming&lt;/li&gt; 
 &lt;li&gt;Failed generations can be retried&lt;/li&gt; 
 &lt;li&gt;Stale generations from crashes auto-recover on startup&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Voice Profile Management&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Create profiles from audio files or record directly in-app&lt;/li&gt; 
 &lt;li&gt;Import/export profiles to share or back up&lt;/li&gt; 
 &lt;li&gt;Multi-sample support for higher quality cloning&lt;/li&gt; 
 &lt;li&gt;Per-profile default effects chains&lt;/li&gt; 
 &lt;li&gt;Organize with descriptions and language tags&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Stories Editor&lt;/h3&gt; 
&lt;p&gt;Multi-voice timeline editor for conversations, podcasts, and narratives.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Multi-track composition with drag-and-drop&lt;/li&gt; 
 &lt;li&gt;Inline audio trimming and splitting&lt;/li&gt; 
 &lt;li&gt;Auto-playback with synchronized playhead&lt;/li&gt; 
 &lt;li&gt;Version pinning per track clip&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Global Dictation &amp;amp; Voice Input&lt;/h3&gt; 
&lt;p&gt;The other half of the voice I/O loop. Hold a hotkey anywhere on your system, speak, release — on macOS the transcript pastes straight into the focused text field. Or hit the mic on any Voicebox text input and dictate directly into the app.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Configurable chord bindings&lt;/strong&gt; — hold-to-speak and tap-to-toggle chords, each rebindable in the in-app chord picker. Holding push-to-talk and tapping &lt;code&gt;Space&lt;/code&gt; mid-hold upgrades into a toggle session without a gap in audio&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Target-aware paste (macOS)&lt;/strong&gt; — accessibility-verified injection into the focused text field, with atomic clipboard save/restore so your clipboard isn&#39;t clobbered&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;First-run permissions UX&lt;/strong&gt; — in-app gates walk you through the macOS Accessibility and Input Monitoring grants with deep-links to System Settings&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;In-app mic button&lt;/strong&gt; on every Voicebox text field — generation form, profile descriptions, story titles, anywhere you&#39;d type&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;LLM refinement&lt;/strong&gt; — optional cleanup of ums, stutters, and false starts before paste&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;On-screen pill&lt;/strong&gt; — floating overlay surfacing &lt;code&gt;recording&lt;/code&gt;, &lt;code&gt;transcribing&lt;/code&gt;, &lt;code&gt;refining&lt;/code&gt;, and &lt;code&gt;speaking&lt;/code&gt; states. Same pill agents use when they speak to you, so there&#39;s one mental model for both directions of the loop&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Speech-to-Text&lt;/h3&gt; 
&lt;p&gt;Voicebox runs OpenAI Whisper for transcription — the same model that backs dictation, the Captures tab, and the &lt;code&gt;/transcribe&lt;/code&gt; API. Running on MLX (Apple Silicon) or PyTorch (CUDA / ROCm / DirectML / CPU) depending on your platform.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Size&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;Base / Small / Medium / Large&lt;/td&gt; 
   &lt;td&gt;Standard Whisper quality ladder&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Turbo&lt;/td&gt; 
   &lt;td&gt;~8x faster than Whisper Large, minimal quality loss&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;More engines (Parakeet v3, Qwen3-ASR) are planned — see &lt;a href=&quot;https://raw.githubusercontent.com/jamiepine/voicebox/main/#roadmap&quot;&gt;Roadmap&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Captures&lt;/h3&gt; 
&lt;p&gt;Every dictation, in-app recording, and uploaded audio file lands in the Captures tab — original audio paired with transcript, always preserved.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Replay, re-transcribe, refine&lt;/strong&gt; — rerun STT with any Whisper size, or re-run the raw transcript through the local LLM with different flags (filler cleanup, self-correction removal, technical-term preservation)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Edit inline&lt;/strong&gt; — tweak the transcript and save on blur&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Play as voice profile&lt;/strong&gt; — turn any capture into speech with a cloned voice, one click&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Promote to voice sample&lt;/strong&gt; — use a capture&#39;s audio + transcript as a reference sample on any voice profile&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Local capture storage&lt;/strong&gt; — original audio and transcript stay in your Voicebox data directory, with a folder shortcut in Settings&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Agent Voice Output&lt;/h3&gt; 
&lt;p&gt;Every agent gets a voice. One tool call and any MCP-aware agent can speak to you in a voice you&#39;ve cloned — task completions, questions, notifications. The same pill that surfaces during dictation surfaces during agent speech, so you always see what&#39;s coming out of your machine.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;// In any MCP-aware agent:
await voicebox.speak({
  text: &quot;Deploy complete.&quot;,
  profile: &quot;Morgan&quot;,
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Also exposed as &lt;code&gt;POST /speak&lt;/code&gt; for anything that doesn&#39;t speak MCP — ACP, A2A, shell scripts, custom harnesses.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Bidirectional pill&lt;/strong&gt; — &lt;code&gt;recording&lt;/code&gt;, &lt;code&gt;transcribing&lt;/code&gt;, &lt;code&gt;refining&lt;/code&gt;, and &lt;code&gt;speaking&lt;/code&gt; are all states of the same OS-level overlay, so dictation and agent speech share one surface&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Per-agent voice binding&lt;/strong&gt; — in &lt;strong&gt;Settings → MCP&lt;/strong&gt;, pin Claude Code to Morgan and Cursor to Scarlett so you can tell which agent is talking without looking. Each client&#39;s &lt;code&gt;last_seen_at&lt;/code&gt; timestamp confirms the install actually took&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Always visible&lt;/strong&gt; — no silent background TTS; every agent-initiated speak surfaces the pill with the voice profile name for the full duration&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;HTTP + stdio transports&lt;/strong&gt; — install as a URL in Claude Code / Cursor / Windsurf / VS Code MCP, or point stdio-only clients at the bundled &lt;code&gt;voicebox-mcp&lt;/code&gt; binary&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Voice Personalities&lt;/h3&gt; 
&lt;p&gt;Attach a free-form personality to any voice profile — who this voice is, how they speak, what they care about. Two actions appear on the generate box when a personality is set, powered by a bundled Qwen3 LLM running entirely locally.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Compose&lt;/strong&gt; — a shuffle button that drops a fresh in-character line into the textarea; edit and speak, or click again for a different take&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Speak in character&lt;/strong&gt; — a toggle that routes your input text through the personality LLM to be rewritten in their voice before TTS&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Agents can reach the same rewrite path over MCP by passing &lt;code&gt;personality: true&lt;/code&gt; to &lt;code&gt;voicebox.speak&lt;/code&gt;, turning the tool into a text-in → personality-LLM → TTS pipeline. The same LLM backs dictation&#39;s refinement step — one LLM in the app, one model cache, one GPU-memory footprint.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Local LLM options:&lt;/strong&gt; Qwen3 0.6B / 1.7B / 4B, sharing the TTS runtime (MLX on Apple Silicon, PyTorch elsewhere).&lt;/p&gt; 
&lt;p&gt;Use cases: agent dev loops (dictate a question, hear the answer in a cloned voice), interactive characters for games and narrative tools, speech assistance for people who can&#39;t speak in their original voice.&lt;/p&gt; 
&lt;h3&gt;Model Management&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Per-model unload to free GPU memory without deleting downloads&lt;/li&gt; 
 &lt;li&gt;Custom models directory via &lt;code&gt;VOICEBOX_MODELS_DIR&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Model folder migration with progress tracking&lt;/li&gt; 
 &lt;li&gt;Download cancel/clear UI&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;GPU Support&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Platform&lt;/th&gt; 
   &lt;th&gt;Backend&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;macOS (Apple Silicon)&lt;/td&gt; 
   &lt;td&gt;MLX (Metal)&lt;/td&gt; 
   &lt;td&gt;4-5x faster via Neural Engine&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Windows (NVIDIA)&lt;/td&gt; 
   &lt;td&gt;PyTorch (CUDA)&lt;/td&gt; 
   &lt;td&gt;Auto-downloads CUDA binary from within the app&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Linux (NVIDIA)&lt;/td&gt; 
   &lt;td&gt;PyTorch (CUDA)&lt;/td&gt; 
   &lt;td&gt;Use a local/remote Python backend with CUDA PyTorch&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Linux (AMD)&lt;/td&gt; 
   &lt;td&gt;PyTorch (ROCm)&lt;/td&gt; 
   &lt;td&gt;Auto-configures HSA_OVERRIDE_GFX_VERSION&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Windows (any GPU)&lt;/td&gt; 
   &lt;td&gt;DirectML&lt;/td&gt; 
   &lt;td&gt;Universal Windows GPU support&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Intel Arc&lt;/td&gt; 
   &lt;td&gt;IPEX/XPU&lt;/td&gt; 
   &lt;td&gt;Intel discrete GPU acceleration&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Any&lt;/td&gt; 
   &lt;td&gt;CPU&lt;/td&gt; 
   &lt;td&gt;Works everywhere, just slower&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;API&lt;/h2&gt; 
&lt;p&gt;Voicebox exposes a REST API for integrating voice I/O into your own apps and agents.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Generate speech
curl -X POST http://127.0.0.1:17493/generate \
  -H &quot;Content-Type: application/json&quot; \
  -d &#39;{&quot;text&quot;: &quot;Hello world&quot;, &quot;profile_id&quot;: &quot;abc123&quot;, &quot;language&quot;: &quot;en&quot;}&#39;

# Agent voice output — any app or script can speak in a cloned voice
curl -X POST http://127.0.0.1:17493/speak \
  -H &quot;Content-Type: application/json&quot; \
  -H &quot;X-Voicebox-Client-Id: my-script&quot; \
  -d &#39;{&quot;text&quot;: &quot;Deploy complete.&quot;, &quot;profile&quot;: &quot;Morgan&quot;}&#39;

# Transcribe an audio file
curl -X POST http://127.0.0.1:17493/transcribe \
  -F &quot;audio=@recording.wav&quot; \
  -F &quot;model=whisper-turbo&quot;

# List voice profiles
curl http://127.0.0.1:17493/profiles
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;POST /speak&lt;/code&gt; accepts &lt;code&gt;profile&lt;/code&gt; as a name (case-insensitive) or id, and resolves via the same precedence as the MCP tool: explicit arg → per-client binding → &lt;code&gt;capture_settings.default_playback_voice_id&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;MCP server&lt;/h3&gt; 
&lt;p&gt;Voicebox ships a built-in &lt;strong&gt;Model Context Protocol&lt;/strong&gt; server so any MCP-aware agent (Claude Code, Cursor, Windsurf, Cline, VS Code MCP extensions) can speak, transcribe, and browse captures and profiles.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Claude Code one-liner:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;claude mcp add voicebox \
  --transport http \
  --url http://127.0.0.1:17493/mcp \
  --header &quot;X-Voicebox-Client-Id: claude-code&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Any HTTP MCP client&lt;/strong&gt; (Cursor, Windsurf, VS Code, etc.):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;mcpServers&quot;: {
    &quot;voicebox&quot;: {
      &quot;url&quot;: &quot;http://127.0.0.1:17493/mcp&quot;,
      &quot;headers&quot;: { &quot;X-Voicebox-Client-Id&quot;: &quot;cursor&quot; }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Stdio fallback&lt;/strong&gt; for clients that don&#39;t speak HTTP MCP — point at the bundled &lt;code&gt;voicebox-mcp&lt;/code&gt; binary inside the app:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;mcpServers&quot;: {
    &quot;voicebox&quot;: {
      &quot;command&quot;: &quot;/Applications/Voicebox.app/Contents/MacOS/voicebox-mcp&quot;,
      &quot;env&quot;: { &quot;VOICEBOX_CLIENT_ID&quot;: &quot;claude-desktop&quot; }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Four tools ship: &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;, &lt;code&gt;voicebox.list_profiles&lt;/code&gt;. Per-client voice bindings are managed in &lt;strong&gt;Voicebox → Settings → MCP&lt;/strong&gt;. See the &lt;a href=&quot;https://raw.githubusercontent.com/jamiepine/voicebox/main/docs/content/docs/overview/mcp-server.mdx&quot;&gt;full MCP guide&lt;/a&gt; for tool signatures, resolution precedence, the speaking-pill contract, and security notes.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;// In any MCP-aware agent:
await voicebox.speak({
  text: &quot;Tests passing. Ready to merge.&quot;,
  profile: &quot;Morgan&quot;,      // optional — falls back to the per-client binding
  personality: true,      // optional — rewrites text through the profile&#39;s personality LLM first
});
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Use cases:&lt;/strong&gt; agent dev loops (voice in, voice out), game dialogue, podcast production, accessibility tools, voice assistants, content automation.&lt;/p&gt; 
&lt;p&gt;Full API documentation available at &lt;code&gt;http://127.0.0.1:17493/docs&lt;/code&gt;.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Tech Stack&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Layer&lt;/th&gt; 
   &lt;th&gt;Technology&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Desktop App&lt;/td&gt; 
   &lt;td&gt;Tauri (Rust)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Frontend&lt;/td&gt; 
   &lt;td&gt;React, TypeScript, Tailwind CSS&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;State&lt;/td&gt; 
   &lt;td&gt;Zustand, React Query&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Backend&lt;/td&gt; 
   &lt;td&gt;FastAPI (Python)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;TTS Engines&lt;/td&gt; 
   &lt;td&gt;Qwen3-TTS, Qwen CustomVoice, LuxTTS, Chatterbox, Chatterbox Turbo, TADA, Kokoro&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;STT&lt;/td&gt; 
   &lt;td&gt;Whisper / Whisper Turbo (PyTorch or MLX)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Local LLM&lt;/td&gt; 
   &lt;td&gt;Qwen3 (0.6B / 1.7B / 4B), shared runtime with TTS / STT&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;MCP Server&lt;/td&gt; 
   &lt;td&gt;FastMCP mounted at &lt;code&gt;/mcp&lt;/code&gt; (Streamable HTTP) + bundled stdio shim binary&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Native Shim&lt;/td&gt; 
   &lt;td&gt;Rust (inside Tauri) for global hotkey, paste injection, focus introspection&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Effects&lt;/td&gt; 
   &lt;td&gt;Pedalboard (Spotify)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Inference&lt;/td&gt; 
   &lt;td&gt;MLX (Apple Silicon) / PyTorch (CUDA/ROCm/XPU/CPU)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Database&lt;/td&gt; 
   &lt;td&gt;SQLite&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Audio&lt;/td&gt; 
   &lt;td&gt;WaveSurfer.js, librosa&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Roadmap&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Windows / Linux auto-paste&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Dictation paste parity — &lt;code&gt;SendInput&lt;/code&gt; on Windows, &lt;code&gt;uinput&lt;/code&gt; / AT-SPI on Linux&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;STT engine expansion&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Parakeet v3 and Qwen3-ASR joining Whisper — 50+ languages, better non-English quality&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Pipeline routing&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Configurable source → transform → sink chains with webhook + MCP sinks and a preset editor&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Streaming transcription&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;WebSocket &lt;code&gt;/transcribe/stream&lt;/code&gt; for partial transcripts as you speak&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;End-to-end speech LLMs&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Moshi, GLM-4-Voice, Qwen2.5 Omni — real voice-to-voice, no text between&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Voice Design&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Create new voices from text descriptions&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Long-form capture&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Dual-stream recorder (mic + system audio) with summary LLM transform&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Platform sinks&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Apple Notes, Obsidian, and other opt-in integrations&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Plugin architecture&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Extend with custom models, transforms, and sinks&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Mobile companion&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Control Voicebox from your phone&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;For the &lt;strong&gt;full engineering status, open-issue triage, and prioritized work queue&lt;/strong&gt;, see &lt;a href=&quot;https://raw.githubusercontent.com/jamiepine/voicebox/main/docs/PROJECT_STATUS.md&quot;&gt;&lt;code&gt;docs/PROJECT_STATUS.md&lt;/code&gt;&lt;/a&gt; — a living document that tracks what&#39;s shipped, what&#39;s in-flight, candidate TTS engines under evaluation, and why we&#39;ve accepted or backlogged specific integrations.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Development&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/jamiepine/voicebox/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for detailed setup and contribution guidelines.&lt;/p&gt; 
&lt;h3&gt;Quick Start&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/jamiepine/voicebox.git
cd voicebox

just setup   # creates Python venv, installs all deps
just dev     # starts backend + desktop app
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Install &lt;a href=&quot;https://github.com/casey/just&quot;&gt;just&lt;/a&gt;: &lt;code&gt;brew install just&lt;/code&gt; or &lt;code&gt;cargo install just&lt;/code&gt;. Run &lt;code&gt;just --list&lt;/code&gt; to see all commands.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt; &lt;a href=&quot;https://bun.sh&quot;&gt;Bun&lt;/a&gt;, &lt;a href=&quot;https://rustup.rs&quot;&gt;Rust&lt;/a&gt;, &lt;a href=&quot;https://python.org&quot;&gt;Python 3.11+&lt;/a&gt;, &lt;a href=&quot;https://v2.tauri.app/start/prerequisites/&quot;&gt;Tauri Prerequisites&lt;/a&gt;, and &lt;a href=&quot;https://developer.apple.com/xcode/&quot;&gt;Xcode&lt;/a&gt; on macOS.&lt;/p&gt; 
&lt;p&gt;The repo ships a pre-wired &lt;code&gt;.mcp.json&lt;/code&gt; at the root — running Claude Code inside this checkout picks up the Voicebox MCP tools automatically once the dev app is running.&lt;/p&gt; 
&lt;h3&gt;Building Locally&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;just build          # Build CPU server binary + Tauri app
just build-local    # (Windows) Build CPU + CUDA server binaries + Tauri app
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Adding New Voice Models&lt;/h3&gt; 
&lt;p&gt;The multi-engine architecture makes adding new TTS engines straightforward. A &lt;a href=&quot;https://raw.githubusercontent.com/jamiepine/voicebox/main/docs/content/docs/developer/tts-engines.mdx&quot;&gt;step-by-step guide&lt;/a&gt; covers the full process: dependency research, backend protocol implementation, frontend wiring, and PyInstaller bundling.&lt;/p&gt; 
&lt;p&gt;The guide is optimized for AI coding agents. An &lt;a href=&quot;https://raw.githubusercontent.com/jamiepine/voicebox/main/.agents/skills/add-tts-engine/SKILL.md&quot;&gt;agent skill&lt;/a&gt; can pick up a model name and handle the entire integration autonomously — you just test the build locally.&lt;/p&gt; 
&lt;h3&gt;Project Structure&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;voicebox/
├── app/              # Shared React frontend
├── tauri/            # Desktop app (Tauri + Rust)
├── web/              # Web deployment
├── backend/          # Python FastAPI server
├── landing/          # Marketing website
└── scripts/          # Build &amp;amp; release scripts
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Contributions welcome! See &lt;a href=&quot;https://raw.githubusercontent.com/jamiepine/voicebox/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for guidelines.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Fork the repo&lt;/li&gt; 
 &lt;li&gt;Create a feature branch&lt;/li&gt; 
 &lt;li&gt;Make your changes&lt;/li&gt; 
 &lt;li&gt;Submit a PR&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Security&lt;/h2&gt; 
&lt;p&gt;Found a security vulnerability? Please report it responsibly. See &lt;a href=&quot;https://raw.githubusercontent.com/jamiepine/voicebox/main/SECURITY.md&quot;&gt;SECURITY.md&lt;/a&gt; for details.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;MIT License — see &lt;a href=&quot;https://raw.githubusercontent.com/jamiepine/voicebox/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt; for details.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://voicebox.sh&quot;&gt;voicebox.sh&lt;/a&gt; &lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/015799f1255c6de6a17c6f3cf45b2730877c6686b1d4881286a54c1c021ba354/jamiepine/voicebox" medium="image" />
      
    </item>
    
    <item>
      <title>moeru-ai/airi</title>
      <link>https://github.com/moeru-ai/airi</link>
      <description>&lt;p&gt;💖🧸 Self hosted, you-owned Grok Companion, a container of souls of waifu, cyber livings to bring them into our worlds, wishing to achieve Neuro-sama&#39;s altitude. Capable of realtime voice chat, Minecraft, Factorio playing. Web / macOS / Windows supported.&lt;/p&gt;&lt;hr&gt;&lt;picture&gt; 
 &lt;source width=&quot;100%&quot; srcset=&quot;./docs/content/public/banner-dark-1280x640.avif&quot; media=&quot;(prefers-color-scheme: dark)&quot; /&gt; 
 &lt;source width=&quot;100%&quot; srcset=&quot;./docs/content/public/banner-light-1280x640.avif&quot; media=&quot;(prefers-color-scheme: light), (prefers-color-scheme: no-preference)&quot; /&gt; 
 &lt;img width=&quot;250&quot; src=&quot;https://raw.githubusercontent.com/moeru-ai/airi/main/docs/content/public/banner-light-1280x640.avif&quot; /&gt; 
&lt;/picture&gt; 
&lt;h1 align=&quot;center&quot;&gt;Project AIRI&lt;/h1&gt; 
&lt;p align=&quot;center&quot;&gt;Re-creating Neuro-sama, a soul container of AI waifu / virtual characters to bring them into our world.&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; [&lt;a href=&quot;https://discord.gg/TgQ3Cu2F7A&quot;&gt;Join Discord Server&lt;/a&gt;] [&lt;a href=&quot;https://airi.moeru.ai&quot;&gt;Try it&lt;/a&gt;] [&lt;a href=&quot;https://github.com/moeru-ai/airi/raw/main/docs/README.zh-CN.md&quot;&gt;简体中文&lt;/a&gt;] [&lt;a href=&quot;https://github.com/moeru-ai/airi/raw/main/docs/README.ja-JP.md&quot;&gt;日本語&lt;/a&gt;] [&lt;a href=&quot;https://github.com/moeru-ai/airi/raw/main/docs/README.ru-RU.md&quot;&gt;Русский&lt;/a&gt;] [&lt;a href=&quot;https://github.com/moeru-ai/airi/raw/main/docs/README.vi.md&quot;&gt;Tiếng Việt&lt;/a&gt;] [&lt;a href=&quot;https://github.com/moeru-ai/airi/raw/main/docs/README.fr.md&quot;&gt;Français&lt;/a&gt;] [&lt;a href=&quot;https://github.com/moeru-ai/airi/raw/main/docs/README.ko-KR.md&quot;&gt;한국어&lt;/a&gt;] &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://deepwiki.com/moeru-ai/airi&quot;&gt;&lt;img src=&quot;https://deepwiki.com/badge.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/moeru-ai/airi/raw/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/moeru-ai/airi.svg?style=flat&amp;amp;colorA=080f12&amp;amp;colorB=1fa669&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/TgQ3Cu2F7A&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdiscord.com%2Fapi%2Finvites%2FTgQ3Cu2F7A%3Fwith_counts%3Dtrue&amp;amp;query=%24.approximate_member_count&amp;amp;suffix=%20members&amp;amp;logo=discord&amp;amp;logoColor=white&amp;amp;label=%20&amp;amp;color=7389D8&amp;amp;labelColor=6A7EC2&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://x.com/proj_airi&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/%40proj__airi-black?style=flat&amp;amp;logo=x&amp;amp;labelColor=%23101419&amp;amp;color=%232d2e30&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://t.me/+7M_ZKO3zUHFlOThh&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Telegram-%235AA9E6?logo=telegram&amp;amp;labelColor=FFFFFF&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/moeru-ai/airi/main/docs/wechat.md&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/WeChat-%2307C160?logo=wechat&amp;amp;logoColor=%2307C160&amp;amp;labelColor=FFFFFF&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://qun.qq.com/universal-share/share?ac=1&amp;amp;authKey=9g00d%2BZS7nORzcJugNNddJ7rCghZTIR7fhXabGwch2S%2BG%2BKGIKwlN1N2nIqkh2jg&amp;amp;busi_data=eyJncm91cENvZGUiOiIxMDU4MTU2Njk3IiwidG9rZW4iOiJmcnkra1hWNFIxNytEcG0zcHRUdVJIaldlRDFxN0dzK080QWtvTEdOQjJkNEY2eUFta1g1clNpbkxSMS9FQWFYIiwidWluIjoiMTI2MDkwNzMzNSJ9&amp;amp;data=b1eJrwn3GVOUh7YIxZ7l9vHQo99HPmRxKPpMKlDCmfzx8Y57IXb2EZCMaOC9rVTd2U558qpNjwUYUWlPHxVHvg&amp;amp;svctype=4&amp;amp;tempid=h5_group_info&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/QQ-%2312B7F5?logo=qq&amp;amp;labelColor=FFFFFF&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p float=&quot;left&quot; align=&quot;center&quot;&gt; 
 &lt;!-- readme-section:release-binary-windows --&gt; &lt;a href=&quot;https://github.com/moeru-ai/airi/releases/download/v0.10.2/AIRI-0.10.2-windows-x64-setup.exe&quot;&gt; 
  &lt;picture&gt; 
   &lt;source width=&quot;33%&quot; srcset=&quot;./docs/content/public/assets/download-buttons/download-buttons.windows.dark.en-US.avif&quot; media=&quot;(prefers-color-scheme: dark)&quot; /&gt; 
   &lt;source width=&quot;33%&quot; srcset=&quot;./docs/content/public/assets/download-buttons/download-buttons.windows.light.en-US.avif&quot; media=&quot;(prefers-color-scheme: light), (prefers-color-scheme: no-preference)&quot; /&gt; 
   &lt;img width=&quot;33%&quot; src=&quot;https://raw.githubusercontent.com/moeru-ai/airi/main/docs/content/public/assets/download-buttons/download-buttons.windows.light.en-US.avif&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt; 
 &lt;!-- readme-section:release-binary-macos --&gt; &lt;a href=&quot;https://github.com/moeru-ai/airi/releases/download/v0.10.2/AIRI-0.10.2-darwin-arm64.dmg&quot;&gt; 
  &lt;picture&gt; 
   &lt;source width=&quot;33%&quot; srcset=&quot;./docs/content/public/assets/download-buttons/download-buttons.macos.dark.en-US.avif&quot; media=&quot;(prefers-color-scheme: dark)&quot; /&gt; 
   &lt;source width=&quot;33%&quot; srcset=&quot;./docs/content/public/assets/download-buttons/download-buttons.macos.light.en-US.avif&quot; media=&quot;(prefers-color-scheme: light), (prefers-color-scheme: no-preference)&quot; /&gt; 
   &lt;img width=&quot;33%&quot; src=&quot;https://raw.githubusercontent.com/moeru-ai/airi/main/docs/content/public/assets/download-buttons/download-buttons.macos.light.en-US.avif&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/moeru-ai/airi/releases/latest&quot;&gt; 
  &lt;picture&gt; 
   &lt;source width=&quot;33%&quot; srcset=&quot;./docs/content/public/assets/download-buttons/download-buttons.linux.dark.en-US.avif&quot; media=&quot;(prefers-color-scheme: dark)&quot; /&gt; 
   &lt;source width=&quot;33%&quot; srcset=&quot;./docs/content/public/assets/download-buttons/download-buttons.linux.light.en-US.avif&quot; media=&quot;(prefers-color-scheme: light), (prefers-color-scheme: no-preference)&quot; /&gt; 
   &lt;img width=&quot;33%&quot; src=&quot;https://raw.githubusercontent.com/moeru-ai/airi/main/docs/content/public/assets/download-buttons/download-buttons.linux.light.en-US.avif&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p float=&quot;left&quot; align=&quot;center&quot;&gt; &lt;a href=&quot;https://airi.moeru.ai&quot;&gt; 
  &lt;picture&gt; 
   &lt;source width=&quot;33%&quot; srcset=&quot;./docs/content/public/assets/QR%20code%20button/section.cards.qrcode.dark.en-US.png&quot; media=&quot;(prefers-color-scheme: dark)&quot; /&gt; 
   &lt;source width=&quot;33%&quot; srcset=&quot;./docs/content/public/assets/QR%20code%20button/section.cards.qrcode.light.en-US.png&quot; media=&quot;(prefers-color-scheme: light), (prefers-color-scheme: no-preference)&quot; /&gt; 
   &lt;img width=&quot;33%&quot; src=&quot;https://raw.githubusercontent.com/moeru-ai/airi/main/docs/content/public/assets/QR%20code%20button/section.cards.qrcode.light.en-US.png&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt; &lt;a href=&quot;https://airi.moeru.ai&quot;&gt; 
  &lt;picture&gt; 
   &lt;source width=&quot;33%&quot; srcset=&quot;./docs/content/public/assets/download-buttons/download-buttons.mobile.dark.en-US.avif&quot; media=&quot;(prefers-color-scheme: dark)&quot; /&gt; 
   &lt;source width=&quot;33%&quot; srcset=&quot;./docs/content/public/assets/download-buttons/download-buttons.mobile.light.en-US.avif&quot; media=&quot;(prefers-color-scheme: light), (prefers-color-scheme: no-preference)&quot; /&gt; 
   &lt;img width=&quot;33%&quot; src=&quot;https://raw.githubusercontent.com/moeru-ai/airi/main/docs/content/public/assets/download-buttons/download-buttons.mobile.light.en-US.avif&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt; &lt;a href=&quot;https://airi.moeru.ai&quot;&gt; 
  &lt;picture&gt; 
   &lt;source width=&quot;33%&quot; srcset=&quot;./docs/content/public/assets/download-buttons/download-buttons.browser.dark.en-US.png&quot; media=&quot;(prefers-color-scheme: dark)&quot; /&gt; 
   &lt;source width=&quot;33%&quot; srcset=&quot;./docs/content/public/assets/download-buttons/download-buttons.browser.light.en-US.png&quot; media=&quot;(prefers-color-scheme: light), (prefers-color-scheme: no-preference)&quot; /&gt; 
   &lt;img width=&quot;33%&quot; src=&quot;https://raw.githubusercontent.com/moeru-ai/airi/main/docs/content/public/assets/download-buttons/download-buttons.browser.light.en-US.png&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.producthunt.com/products/airi?embed=true&amp;amp;utm_source=badge-featured&amp;amp;utm_medium=badge&amp;amp;utm_source=badge-airi&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=993524&amp;amp;theme=neutral&amp;amp;t=1752696535380&quot; alt=&quot;AIRI - A container of cyber living souls, re-creation of Neuro-sama | Product Hunt&quot; style=&quot;width: 250px; height: 54px;&quot; width=&quot;250&quot; height=&quot;54&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://trendshift.io/repositories/14636&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/14636&quot; alt=&quot;moeru-ai%2Fairi | Trendshift&quot; style=&quot;width: 250px; height: 55px;&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Heavily inspired by &lt;a href=&quot;https://www.youtube.com/@Neurosama&quot;&gt;Neuro-sama&lt;/a&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-tip&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-light-bulb mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Tip&lt;/p&gt;
 &lt;p&gt;On Windows, you can also install AIRI with &lt;a href=&quot;https://learn.microsoft.com/windows/package-manager/winget/&quot;&gt;winget&lt;/a&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;winget install MoeruAI.AIRI
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Or install AIRI with &lt;a href=&quot;https://scoop.sh/&quot;&gt;Scoop&lt;/a&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;scoop bucket add airi https://github.com/moeru-ai/airi
scoop install airi/airi
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;On macOS, you can install AIRI with &lt;a href=&quot;https://brew.sh/&quot;&gt;Homebrew Cask&lt;/a&gt; without adding a custom tap:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;brew install --cask airi
&lt;/code&gt;&lt;/pre&gt; 
&lt;/div&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-warning&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-alert mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Warning&lt;/p&gt;
 &lt;p&gt;&lt;strong&gt;Attention:&lt;/strong&gt; We &lt;strong&gt;do not&lt;/strong&gt; have any officially minted cryptocurrency or token associated with this project. Please check the information and proceed with caution.&lt;/p&gt; 
&lt;/div&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-note&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-info mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Note&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt; 
 &lt;p&gt;We&#39;ve got a whole dedicated organization &lt;a href=&quot;https://github.com/proj-airi&quot;&gt;@proj-airi&lt;/a&gt; for all the sub-projects born from Project AIRI. Check it out!&lt;/p&gt; 
 &lt;p&gt;RAG, memory system, embedded database, icons, Live2D utilities, and more!&lt;/p&gt; 
&lt;/div&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-tip&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-light-bulb mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Tip&lt;/p&gt;
 &lt;p&gt;We have a translation project on &lt;a href=&quot;https://crowdin.com/project/proj-airi&quot;&gt;Crowdin&lt;/a&gt;. If you find any inaccurate translations, feel free to contribute improvements there. &lt;a href=&quot;https://crowdin.com/project/proj-airi&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&lt;img style=&quot;width: 140px; height: 40px;&quot; src=&quot;https://badges.crowdin.net/badge/light/crowdin-on-dark.png&quot; srcset=&quot;https://badges.crowdin.net/badge/light/crowdin-on-dark.png 1x, https://badges.crowdin.net/badge/light/crowdin-on-dark@2x.png 2x&quot; alt=&quot;Crowdin | Agile localization for tech companies&quot; width=&quot;140&quot; height=&quot;40&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;Have you dreamed about having a cyber living being (cyber waifu, digital pet) or digital companion that could play with and talk to you?&lt;/p&gt; 
&lt;p&gt;With the power of modern large language models like &lt;a href=&quot;https://chatgpt.com&quot;&gt;ChatGPT&lt;/a&gt; and famous &lt;a href=&quot;https://claude.ai&quot;&gt;Claude&lt;/a&gt;, asking a virtual being to roleplay and chat with us is already easy enough for everyone. Platforms like &lt;a href=&quot;https://character.ai&quot;&gt;Character.ai (a.k.a. c.ai)&lt;/a&gt; and &lt;a href=&quot;https://janitorai.com/&quot;&gt;JanitorAI&lt;/a&gt; as well as local playgrounds like &lt;a href=&quot;https://github.com/SillyTavern/SillyTavern&quot;&gt;SillyTavern&lt;/a&gt; are already good-enough solutions for a chat based or visual adventure game like experience.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;But, what about the abilities to play games? And see what you are coding at? Chatting while playing games, watching videos, and is capable of doing many other things.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Perhaps you know &lt;a href=&quot;https://www.youtube.com/@Neurosama&quot;&gt;Neuro-sama&lt;/a&gt; already. She is currently the best virtual streamer capable of playing games, chatting, and interacting with you and the participants. Some also call this kind of being &quot;digital human.&quot; &lt;strong&gt;Sadly, as it&#39;s not open sourced, you cannot interact with her after her live streams go offline&lt;/strong&gt;.&lt;/p&gt; 
&lt;p&gt;Therefore, this project, AIRI, offers another possibility here: &lt;strong&gt;let you own your digital life, cyber living, easily, anywhere, anytime&lt;/strong&gt;.&lt;/p&gt; 
&lt;h2&gt;Recent DevLogs &amp;amp; Stories&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://airi.moeru.ai/docs/en/blog/DevLog-2026.03.23/&quot;&gt;DevLog @ 2026.03.23: Mobile performance and game engine exploration&lt;/a&gt; - March 23, 2026&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://airi.moeru.ai/docs/en/blog/DevLog-2026.03.14/&quot;&gt;DevLog @ 2026.03.14: VRM stage lifecycle, cache, and observability&lt;/a&gt; - March 14, 2026&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://airi.moeru.ai/docs/en/blog/DevLog-2026.02.16/&quot;&gt;DevLog @ 2026.02.16: Dome Keeper data collection and training pipeline&lt;/a&gt; - February 16, 2026&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://airi.moeru.ai/docs/en/blog/DevLog-2026.01.01/&quot;&gt;DevLog @ 2026.01.01: AIRI Pocket and FlowChat memory experiments&lt;/a&gt; - January 1, 2026&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://airi.moeru.ai/docs/en/blog/DevLog-2025.10.20/&quot;&gt;DevLog @ 2025.10.20: Electron migration, new models, and Moeru AI updates&lt;/a&gt; - October 20, 2025&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://airi.moeru.ai/docs/en/blog/DevLog-2025.08.26/&quot;&gt;DevLog @ 2025.08.26: Pure vision progress for airi-factorio&lt;/a&gt; - August 26, 2025&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://airi.moeru.ai/docs/en/blog/DevLog-2025.08.05/&quot;&gt;DevLog @ 2025.08.05: AIRI v0.7 release highlights&lt;/a&gt; - August 5, 2025&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://airi.moeru.ai/docs/en/blog/DevLog-2025.08.01/&quot;&gt;DevLog @ 2025.08.01: Streaming text animation and grapheme clusters&lt;/a&gt; - August 1, 2025&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://airi.moeru.ai/docs/en/blog/DevLog-2025.07.18/&quot;&gt;DevLog @ 2025.07.18: Rethinking airi-factorio with Factorio Learning Environment&lt;/a&gt; - July 18, 2025&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://airi.moeru.ai/docs/en/blog/DreamLog-0x1/&quot;&gt;DreamLog 0x1: The backstory of Project AIRI&lt;/a&gt; - June 16, 2025&lt;/li&gt; 
 &lt;li&gt;More on the &lt;a href=&quot;https://airi.moeru.ai/docs/en/&quot;&gt;documentation site&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;What&#39;s So Special About This Project?&lt;/h2&gt; 
&lt;p&gt;Unlike the other AI driven VTuber open source projects, アイリ was built with support of many Web technologies such as &lt;a href=&quot;https://www.w3.org/TR/webgpu/&quot;&gt;WebGPU&lt;/a&gt;, &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API&quot;&gt;WebAudio&lt;/a&gt;, &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers&quot;&gt;Web Workers&lt;/a&gt;, &lt;a href=&quot;https://webassembly.org/&quot;&gt;WebAssembly&lt;/a&gt;, &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/WebSocket&quot;&gt;WebSocket&lt;/a&gt;, etc. from the first day.&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-tip&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-light-bulb mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Tip&lt;/p&gt;
 &lt;p&gt;Worrying about the performance drop since we are using Web related technologies?&lt;/p&gt; 
 &lt;p&gt;Don&#39;t worry, while the Web browser version is meant to give an insight into how much we can push and do inside browsers and webviews, we will never fully rely on this. The desktop version of AIRI is capable of using native &lt;a href=&quot;https://developer.nvidia.com/cuda-toolkit&quot;&gt;NVIDIA CUDA&lt;/a&gt; and &lt;a href=&quot;https://developer.apple.com/metal/&quot;&gt;Apple Metal&lt;/a&gt; by default (thanks to HuggingFace &amp;amp; the beloved &lt;a href=&quot;https://github.com/huggingface/candle&quot;&gt;candle&lt;/a&gt; project), without any complex dependency management. Considering the tradeoff, it is partially powered by Web technologies for graphics, layouts, animations, and the WIP plugin system for everyone to integrate things.&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;This means that &lt;strong&gt;アイリ is capable of running on modern browsers and devices&lt;/strong&gt; and even on mobile devices (already done with PWA support). This brings a lot of possibilities for us (the developers) to build and extend the power of アイリ VTuber to the next level, while still leaving the flexibility for users to enable features that require TCP connections or other non-Web technologies such as connecting to a Discord voice channel or playing Minecraft and Factorio with friends.&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-note&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-info mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Note&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt; 
 &lt;p&gt;We are still in the early stage of development where we are seeking out talented developers to join us and help us to make アイリ a reality.&lt;/p&gt; 
 &lt;p&gt;It&#39;s ok if you are not familiar with Vue.js, TypeScript, and devtools required for this project, you can join us as an artist, designer, or even help us to launch our first live stream.&lt;/p&gt; 
 &lt;p&gt;Even if you are a big fan of React, Svelte or even Solid, we welcome you. You can open a sub-directory to add features that you want to see in アイリ, or would like to experiment with.&lt;/p&gt; 
 &lt;p&gt;Fields (and related projects) that we are looking for:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Live2D modeller&lt;/li&gt; 
  &lt;li&gt;VRM modeller&lt;/li&gt; 
  &lt;li&gt;VRChat avatar designer&lt;/li&gt; 
  &lt;li&gt;Computer Vision&lt;/li&gt; 
  &lt;li&gt;Reinforcement Learning&lt;/li&gt; 
  &lt;li&gt;Speech Recognition&lt;/li&gt; 
  &lt;li&gt;Speech Synthesis&lt;/li&gt; 
  &lt;li&gt;ONNX Runtime&lt;/li&gt; 
  &lt;li&gt;Transformers.js&lt;/li&gt; 
  &lt;li&gt;vLLM&lt;/li&gt; 
  &lt;li&gt;WebGPU&lt;/li&gt; 
  &lt;li&gt;Three.js&lt;/li&gt; 
  &lt;li&gt;WebXR (&lt;a href=&quot;https://github.com/moeru-ai/chat&quot;&gt;checkout the another project&lt;/a&gt; we have under the @moeru-ai organization)&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;&lt;strong&gt;If you are interested, why not introduce yourself here? &lt;a href=&quot;https://github.com/moeru-ai/airi/discussions/33&quot;&gt;Would like to join part of us to build AIRI?&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Current Progress &amp;amp; Roadmap&lt;/h2&gt; 
&lt;p&gt;Capable of&lt;/p&gt; 
&lt;ul class=&quot;task-list&quot;&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_0&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_0&quot;&gt; Brain&lt;/label&gt; 
  &lt;ul class=&quot;task-list&quot;&gt; 
   &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_1&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_1&quot;&gt; Play &lt;a href=&quot;https://www.minecraft.net&quot;&gt;Minecraft&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
   &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_2&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_2&quot;&gt; Play &lt;a href=&quot;https://www.factorio.com&quot;&gt;Factorio&lt;/a&gt; (WIP, but &lt;a href=&quot;https://github.com/moeru-ai/airi-factorio&quot;&gt;PoC and demo available&lt;/a&gt;)&lt;/label&gt;&lt;/li&gt; 
   &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_3&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_3&quot;&gt; Play &lt;a href=&quot;https://www.kerbalspaceprogram.com/&quot;&gt;Kerbal Space Program&lt;/a&gt; (announcement TBD)&lt;/label&gt;&lt;/li&gt; 
   &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_4&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_4&quot;&gt; Co-play &lt;a href=&quot;https://www.playstation.com/en-hk/games/helldivers-2/pc/&quot;&gt;Helldivers 2&lt;/a&gt; (WIP)&lt;/label&gt;&lt;/li&gt; 
   &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_5&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_5&quot;&gt; Chat in &lt;a href=&quot;https://telegram.org&quot;&gt;Telegram&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
   &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_6&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_6&quot;&gt; Chat in &lt;a href=&quot;https://discord.com&quot;&gt;Discord&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
   &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_7&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_7&quot;&gt; Memory&lt;/label&gt; 
    &lt;ul class=&quot;task-list&quot;&gt; 
     &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_8&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_8&quot;&gt; Pure in-browser database support (DuckDB WASM | &lt;code&gt;pglite&lt;/code&gt;)&lt;/label&gt;&lt;/li&gt; 
     &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_9&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_9&quot;&gt; Memory Alaya (WIP)&lt;/label&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_10&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_10&quot;&gt; Pure in-browser local (WebGPU) inference&lt;/label&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_11&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_11&quot;&gt; Ears&lt;/label&gt; 
  &lt;ul class=&quot;task-list&quot;&gt; 
   &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_12&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_12&quot;&gt; Audio input from browser&lt;/label&gt;&lt;/li&gt; 
   &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_13&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_13&quot;&gt; Audio input from &lt;a href=&quot;https://discord.com&quot;&gt;Discord&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
   &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_14&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_14&quot;&gt; Client side speech recognition&lt;/label&gt;&lt;/li&gt; 
   &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_15&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_15&quot;&gt; Client side talking detection&lt;/label&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_16&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_16&quot;&gt; Mouth&lt;/label&gt; 
  &lt;ul class=&quot;task-list&quot;&gt; 
   &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_17&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_17&quot;&gt; Multi-provider voice synthesis, including &lt;a href=&quot;https://elevenlabs.io/&quot;&gt;ElevenLabs&lt;/a&gt;, Microsoft/Azure Speech, OpenAI-compatible TTS, Alibaba Cloud Model Studio, and local Kokoro TTS&lt;/label&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_18&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_18&quot;&gt; Body&lt;/label&gt; 
  &lt;ul class=&quot;task-list&quot;&gt; 
   &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_19&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_19&quot;&gt; VRM support&lt;/label&gt; 
    &lt;ul class=&quot;task-list&quot;&gt; 
     &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_20&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_20&quot;&gt; Control VRM model&lt;/label&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_21&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_21&quot;&gt; VRM model animations&lt;/label&gt; 
    &lt;ul class=&quot;task-list&quot;&gt; 
     &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_22&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_22&quot;&gt; Auto blink&lt;/label&gt;&lt;/li&gt; 
     &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_23&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_23&quot;&gt; Auto look at&lt;/label&gt;&lt;/li&gt; 
     &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_24&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_24&quot;&gt; Idle eye movement&lt;/label&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_25&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_25&quot;&gt; Live2D support&lt;/label&gt; 
    &lt;ul class=&quot;task-list&quot;&gt; 
     &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_26&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_26&quot;&gt; Control Live2D model&lt;/label&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
   &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_27&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_27&quot;&gt; Live2D model animations&lt;/label&gt; 
    &lt;ul class=&quot;task-list&quot;&gt; 
     &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_28&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_28&quot;&gt; Auto blink&lt;/label&gt;&lt;/li&gt; 
     &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_29&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_29&quot;&gt; Auto look at&lt;/label&gt;&lt;/li&gt; 
     &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_30&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_30&quot;&gt; Idle eye movement&lt;/label&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Development&lt;/h2&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;For detailed instructions to develop this project, follow &lt;a href=&quot;https://raw.githubusercontent.com/moeru-ai/airi/main/.github/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-note&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-info mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Note&lt;/p&gt;
 &lt;p&gt;By default, &lt;code&gt;pnpm dev&lt;/code&gt; will start the development server for the Stage Web (browser version). If you would like to try developing the desktop version, please make sure you read &lt;a href=&quot;https://raw.githubusercontent.com/moeru-ai/airi/main/.github/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; to setup the environment correctly.&lt;/p&gt; 
&lt;/div&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;pnpm i
pnpm dev
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Stage Web (Browser Version at &lt;a href=&quot;https://airi.moeru.ai&quot;&gt;airi.moeru.ai&lt;/a&gt;)&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;pnpm dev
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Stage Tamagotchi (Desktop Version)&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;pnpm dev:tamagotchi
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;A Nix package for Tamagotchi is included. To run airi with Nix, first make sure to enable flakes, then run:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;nix run github:moeru-ai/airi
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;NixOS&lt;/h4&gt; 
&lt;p&gt;Electron requires shared libraries that aren&#39;t in standard paths on NixOS. Use the FHS shell defined in &lt;code&gt;flake.nix&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;nix develop .#fhs
pnpm dev:tamagotchi
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Stage Pocket (Mobile Version)&lt;/h3&gt; 
&lt;p&gt;Start the development server for the capacitor:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;pnpm dev:pocket:ios --target &amp;lt;DEVICE_ID_OR_SIMULATOR_NAME&amp;gt;
# Or
CAPACITOR_DEVICE_ID_IOS=&amp;lt;DEVICE_ID_OR_SIMULATOR_NAME&amp;gt; pnpm dev:pocket:ios
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;You can see the list of available devices and simulators by running &lt;code&gt;pnpm exec cap run ios --list&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;If you need to connect server channel on pocket in wireless mode, you need to start tamagotchi as root:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo pnpm dev:tamagotchi
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Then enable secure websocket in tamagotchi &lt;code&gt;settings/connections&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;Documentation Site&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;pnpm dev:docs
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Publish&lt;/h3&gt; 
&lt;p&gt;Run &lt;code&gt;bumpp&lt;/code&gt; to update the monorepo version:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;npx bumpp --no-commit --no-tag
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Support of LLM API Providers (powered by &lt;a href=&quot;https://github.com/moeru-ai/xsai&quot;&gt;xsai&lt;/a&gt;)&lt;/h2&gt; 
&lt;ul class=&quot;task-list&quot;&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_31&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_31&quot;&gt; &lt;a href=&quot;https://aihubmix.com/?aff=OOiX&quot;&gt;AIHubMix (recommended)&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_32&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_32&quot;&gt; &lt;a href=&quot;https://openrouter.ai/&quot;&gt;OpenRouter&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_33&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_33&quot;&gt; &lt;a href=&quot;https://github.com/vllm-project/vllm&quot;&gt;vLLM&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_34&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_34&quot;&gt; &lt;a href=&quot;https://github.com/sgl-project/sglang&quot;&gt;SGLang&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_35&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_35&quot;&gt; &lt;a href=&quot;https://github.com/ollama/ollama&quot;&gt;Ollama&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_36&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_36&quot;&gt; &lt;a href=&quot;https://share.302.ai/514k2v&quot;&gt;302.AI (sponsored)&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_37&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_37&quot;&gt; &lt;a href=&quot;https://platform.openai.com/docs/guides/gpt/chat-completions-api&quot;&gt;OpenAI&lt;/a&gt;&lt;/label&gt; 
  &lt;ul class=&quot;task-list&quot;&gt; 
   &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_38&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_38&quot;&gt; &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/ai-services/openai/reference&quot;&gt;Azure OpenAI API&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_39&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_39&quot;&gt; &lt;a href=&quot;https://anthropic.com&quot;&gt;Anthropic Claude&lt;/a&gt;&lt;/label&gt; 
  &lt;ul class=&quot;task-list&quot;&gt; 
   &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_40&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_40&quot;&gt; &lt;a href=&quot;https://docs.anthropic.com/en/api/claude-on-amazon-bedrock&quot;&gt;AWS Claude&lt;/a&gt; (PR welcome)&lt;/label&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_41&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_41&quot;&gt; &lt;a href=&quot;https://www.deepseek.com/&quot;&gt;DeepSeek&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_42&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_42&quot;&gt; &lt;a href=&quot;https://help.aliyun.com/document_detail/2400395.html&quot;&gt;Qwen&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_43&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_43&quot;&gt; &lt;a href=&quot;https://developers.generativeai.google&quot;&gt;Google Gemini&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_44&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_44&quot;&gt; &lt;a href=&quot;https://x.ai/&quot;&gt;xAI&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_45&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_45&quot;&gt; &lt;a href=&quot;https://wow.groq.com/&quot;&gt;Groq&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_46&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_46&quot;&gt; &lt;a href=&quot;https://mistral.ai/&quot;&gt;Mistral&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_47&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_47&quot;&gt; &lt;a href=&quot;https://developers.cloudflare.com/workers-ai/&quot;&gt;Cloudflare Workers AI&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_48&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_48&quot;&gt; &lt;a href=&quot;https://www.together.ai/&quot;&gt;Together.ai&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_49&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_49&quot;&gt; &lt;a href=&quot;https://fireworks.ai/&quot;&gt;Fireworks.ai&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_50&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_50&quot;&gt; &lt;a href=&quot;https://www.novita.ai/&quot;&gt;Novita&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_51&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_51&quot;&gt; &lt;a href=&quot;https://bigmodel.cn&quot;&gt;Zhipu&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_52&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_52&quot;&gt; &lt;a href=&quot;https://cloud.siliconflow.cn/i/rKXmRobW&quot;&gt;SiliconFlow&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_53&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_53&quot;&gt; &lt;a href=&quot;https://platform.stepfun.com/&quot;&gt;Stepfun&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_54&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_54&quot;&gt; &lt;a href=&quot;https://platform.baichuan-ai.com&quot;&gt;Baichuan&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_55&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_55&quot;&gt; &lt;a href=&quot;https://api.minimax.chat/&quot;&gt;Minimax&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_56&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_56&quot;&gt; &lt;a href=&quot;https://platform.moonshot.cn/&quot;&gt;Moonshot AI&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_57&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_57&quot;&gt; &lt;a href=&quot;https://modelscope.cn/docs/model-service/API-Inference/intro&quot;&gt;ModelScope&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_58&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_58&quot;&gt; &lt;a href=&quot;https://player2.game/&quot;&gt;Player2&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_59&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_59&quot;&gt; &lt;a href=&quot;https://cloud.tencent.com/document/product/1729&quot;&gt;Tencent Cloud&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_60&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_60&quot;&gt; &lt;a href=&quot;https://www.xfyun.cn/doc/spark/Web.html&quot;&gt;Sparks&lt;/a&gt; (PR welcome)&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_61&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_61&quot;&gt; &lt;a href=&quot;https://www.volcengine.com/experience/ark?utm_term=202502dsinvite&amp;amp;ac=DSASUQY5&amp;amp;rc=2QXCA1VI&quot;&gt;Volcano Engine&lt;/a&gt; (PR welcome)&lt;/label&gt;&lt;/li&gt; 
 &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_62&quot; checked=&quot;true&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_62&quot;&gt; &lt;a href=&quot;https://platform.xiaomimimo.com&quot;&gt;Xiaomi Mimo&lt;/a&gt;&lt;/label&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Sub-projects Born from This Project&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/proj-airi/awesome-ai-vtuber&quot;&gt;Awesome AI VTuber&lt;/a&gt;: A curated list of AI VTubers and related projects&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/moeru-ai/unspeech&quot;&gt;&lt;code&gt;unspeech&lt;/code&gt;&lt;/a&gt;: Universal endpoint proxy server for &lt;code&gt;/audio/transcriptions&lt;/code&gt; and &lt;code&gt;/audio/speech&lt;/code&gt;, like LiteLLM but for any ASR and TTS&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/moeru-ai/hfup&quot;&gt;&lt;code&gt;hfup&lt;/code&gt;&lt;/a&gt;: tools to help on deploying, bundling to HuggingFace Spaces&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/moeru-ai/xsai-transformers&quot;&gt;&lt;code&gt;xsai-transformers&lt;/code&gt;&lt;/a&gt;: Experimental &lt;a href=&quot;https://github.com/huggingface/transformers.js&quot;&gt;🤗 Transformers.js&lt;/a&gt; provider for &lt;a href=&quot;https://github.com/moeru-ai/xsai&quot;&gt;xsAI&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/proj-airi/webai-realtime-voice-chat&quot;&gt;WebAI: Realtime Voice Chat&lt;/a&gt;: Full example of implementing ChatGPT&#39;s realtime voice from scratch with VAD + STT + LLM + TTS.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/moeru-ai/airi/tree/main/packages/drizzle-duckdb-wasm/README.md&quot;&gt;&lt;code&gt;@proj-airi/drizzle-duckdb-wasm&lt;/code&gt;&lt;/a&gt;: Drizzle ORM driver for DuckDB WASM&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/moeru-ai/airi/tree/main/packages/duckdb-wasm/README.md&quot;&gt;&lt;code&gt;@proj-airi/duckdb-wasm&lt;/code&gt;&lt;/a&gt;: Easy to use wrapper for &lt;code&gt;@duckdb/duckdb-wasm&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/moeru-ai/airi-factorio&quot;&gt;AIRI Factorio&lt;/a&gt;: Allow AIRI to play Factorio.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/proj-airi/game-playing-ai-dome-keeper&quot;&gt;AIRI DomeKeeper&lt;/a&gt;: Allow AIRI to play DomeKeeper.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/nekomeowww/factorio-rcon-api&quot;&gt;Factorio RCON API&lt;/a&gt;: RESTful API wrapper for Factorio headless server console&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/moeru-ai/airi-factorio/tree/main/packages/autorio&quot;&gt;&lt;code&gt;autorio&lt;/code&gt;&lt;/a&gt;: Factorio automation library&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/moeru-ai/airi-factorio/tree/main/packages/tstl-plugin-reload-factorio-mod&quot;&gt;&lt;code&gt;tstl-plugin-reload-factorio-mod&lt;/code&gt;&lt;/a&gt;: Reload Factorio mod when developing&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/luoling8192/velin&quot;&gt;Velin&lt;/a&gt;: Use Vue SFC and Markdown to write easy to manage stateful prompts for LLM&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/moeru-ai/demodel&quot;&gt;&lt;code&gt;demodel&lt;/code&gt;&lt;/a&gt;: Easily boost the speed of pulling your models and datasets from various of inference runtimes.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/moeru-ai/inventory&quot;&gt;&lt;code&gt;inventory&lt;/code&gt;&lt;/a&gt;: Centralized model catalog and default provider configurations backend service&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/moeru-ai/mcp-launcher&quot;&gt;MCP Launcher&lt;/a&gt;: Easy to use MCP builder &amp;amp; launcher for all possible MCP servers, just like Ollama for models!&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/moeru-ai/sad&quot;&gt;🥺 SAD&lt;/a&gt;: Documentation and notes for self-host and browser running LLMs.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;%%{ init: { &#39;flowchart&#39;: { &#39;curve&#39;: &#39;catmullRom&#39; } } }%%

flowchart TD
  Core(&quot;Core&quot;)
  Unspeech(&quot;unspeech&quot;)
  DBDriver(&quot;@proj-airi/drizzle-duckdb-wasm&quot;)
  MemoryDriver(&quot;[WIP] Memory Alaya&quot;)
  DB1(&quot;@proj-airi/duckdb-wasm&quot;)
  SVRT(&quot;@proj-airi/server-runtime&quot;)
  Memory(&quot;Memory&quot;)
  STT(&quot;STT&quot;)
  Stage(&quot;Stage&quot;)
  StageUI(&quot;@proj-airi/stage-ui&quot;)
  UI(&quot;@proj-airi/ui&quot;)

  subgraph AIRI
    DB1 --&amp;gt; DBDriver --&amp;gt; MemoryDriver --&amp;gt; Memory --&amp;gt; Core
    UI --&amp;gt; StageUI --&amp;gt; Stage --&amp;gt; Core
    Core --&amp;gt; STT
    Core --&amp;gt; SVRT
  end

  subgraph UI_Components
    UI --&amp;gt; StageUI
    UITransitions(&quot;@proj-airi/ui-transitions&quot;) --&amp;gt; StageUI
    UILoadingScreens(&quot;@proj-airi/ui-loading-screens&quot;) --&amp;gt; StageUI
    FontCJK(&quot;@proj-airi/font-cjkfonts-allseto&quot;) --&amp;gt; StageUI
    FontXiaolai(&quot;@proj-airi/font-xiaolai&quot;) --&amp;gt; StageUI
  end

  subgraph Apps
    Stage --&amp;gt; StageWeb(&quot;@proj-airi/stage-web&quot;)
    Stage --&amp;gt; StageTamagotchi(&quot;@proj-airi/stage-tamagotchi&quot;)
    Core --&amp;gt; RealtimeAudio(&quot;@proj-airi/realtime-audio&quot;)
    Core --&amp;gt; PromptEngineering(&quot;@proj-airi/playground-prompt-engineering&quot;)
  end

  subgraph Server_Components
    Core --&amp;gt; ServerSDK(&quot;@proj-airi/server-sdk&quot;)
    ServerShared(&quot;@proj-airi/server-shared&quot;) --&amp;gt; SVRT
    ServerShared --&amp;gt; ServerSDK
  end

  STT --&amp;gt;|Speaking| Unspeech
  SVRT --&amp;gt;|Playing Factorio| F_AGENT
  SVRT --&amp;gt;|Playing Minecraft| MC_AGENT

  subgraph Factorio_Agent
    F_AGENT(&quot;Factorio Agent&quot;)
    F_API(&quot;Factorio RCON API&quot;)
    factorio-server(&quot;factorio-server&quot;)
    F_MOD1(&quot;autorio&quot;)

    F_AGENT --&amp;gt; F_API -.-&amp;gt; factorio-server
    F_MOD1 -.-&amp;gt; factorio-server
  end

  subgraph Minecraft_Agent
    MC_AGENT(&quot;Minecraft Agent&quot;)
    Mineflayer(&quot;Mineflayer&quot;)
    minecraft-server(&quot;minecraft-server&quot;)

    MC_AGENT --&amp;gt; Mineflayer -.-&amp;gt; minecraft-server
  end

  XSAI(&quot;xsAI&quot;) --&amp;gt; Core
  XSAI --&amp;gt; F_AGENT
  XSAI --&amp;gt; MC_AGENT

  Memory_PGVector(&quot;@proj-airi/memory-pgvector&quot;) --&amp;gt; Memory

  style Core fill:#f9d4d4,stroke:#333,stroke-width:1px
  style AIRI fill:#fcf7f7,stroke:#333,stroke-width:1px
  style UI fill:#d4f9d4,stroke:#333,stroke-width:1px
  style Stage fill:#d4f9d4,stroke:#333,stroke-width:1px
  style UI_Components fill:#d4f9d4,stroke:#333,stroke-width:1px
  style Server_Components fill:#d4e6f9,stroke:#333,stroke-width:1px
  style Apps fill:#d4d4f9,stroke:#333,stroke-width:1px
  style Factorio_Agent fill:#f9d4f2,stroke:#333,stroke-width:1px
  style Minecraft_Agent fill:#f9d4f2,stroke:#333,stroke-width:1px

  style DBDriver fill:#f9f9d4,stroke:#333,stroke-width:1px
  style MemoryDriver fill:#f9f9d4,stroke:#333,stroke-width:1px
  style DB1 fill:#f9f9d4,stroke:#333,stroke-width:1px
  style Memory fill:#f9f9d4,stroke:#333,stroke-width:1px
  style Memory_PGVector fill:#f9f9d4,stroke:#333,stroke-width:1px
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Similar Projects&lt;/h2&gt; 
&lt;h3&gt;Open sourced ones&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/kimjammer/Neuro&quot;&gt;kimjammer/Neuro: A recreation of Neuro-Sama originally created in 7 days.&lt;/a&gt;: very well completed implementation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/SugarcaneDefender/z-waif&quot;&gt;SugarcaneDefender/z-waif&lt;/a&gt;: Great at gaming, autonomous, and prompt engineering&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/semperai/amica/&quot;&gt;semperai/amica&lt;/a&gt;: Great at VRM, WebXR&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/elizaOS/eliza&quot;&gt;elizaOS/eliza&lt;/a&gt;: Great examples and software engineering on how to integrate agent into various of systems and APIs&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ardha27/AI-Waifu-Vtuber&quot;&gt;ardha27/AI-Waifu-Vtuber&lt;/a&gt;: Great about Twitch API integrations&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/InsanityLabs/AIVTuber&quot;&gt;InsanityLabs/AIVTuber&lt;/a&gt;: Nice UI and UX&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/IRedDragonICY/vixevia&quot;&gt;IRedDragonICY/vixevia&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/t41372/Open-LLM-VTuber&quot;&gt;t41372/Open-LLM-VTuber&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/PeterH0323/Streamer-Sales&quot;&gt;PeterH0323/Streamer-Sales&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Non-open-sourced ones&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://clips.twitch.tv/WanderingCaringDeerDxCat-Qt55xtiGDSoNmDDr&quot;&gt;https://clips.twitch.tv/WanderingCaringDeerDxCat-Qt55xtiGDSoNmDDr&lt;/a&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=8Giv5mupJNE&quot;&gt;https://www.youtube.com/watch?v=8Giv5mupJNE&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://clips.twitch.tv/TriangularAthleticBunnySoonerLater-SXpBk1dFso21VcWD&quot;&gt;https://clips.twitch.tv/TriangularAthleticBunnySoonerLater-SXpBk1dFso21VcWD&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/@NOWA_Mirai&quot;&gt;https://www.youtube.com/@NOWA_Mirai&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Project Status&lt;/h2&gt; 
&lt;p&gt;&lt;img src=&quot;https://repobeats.axiom.co/api/embed/a1d6fe2c13ea2bb53a5154435a71e2431f70c2ee.svg?sanitize=true&quot; alt=&quot;Repobeats analytics image&quot; title=&quot;Repobeats analytics image&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;Acknowledgements&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/unovue/reka-ui&quot;&gt;Reka UI&lt;/a&gt;: for designing the documentation site, the new landing page is based on this, as well as implementing a massive amount of UI components. (shadcn-vue is using Reka UI as the headless, do checkout!)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/pixiv/ChatVRM&quot;&gt;pixiv/ChatVRM&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/josephrocca/ChatVRM-js&quot;&gt;josephrocca/ChatVRM-js: A JS conversion/adaptation of parts of the ChatVRM (TypeScript) code for standalone use in OpenCharacters and elsewhere&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Design of UI and style was inspired by &lt;a href=&quot;https://store.steampowered.com/app/2919650/Cookard/&quot;&gt;Cookard&lt;/a&gt;, &lt;a href=&quot;https://store.steampowered.com/app/2240620/UNBEATABLE/&quot;&gt;UNBEATABLE&lt;/a&gt;, and &lt;a href=&quot;https://store.steampowered.com/app/2957700/_/&quot;&gt;Sensei! I like you so much!&lt;/a&gt;, and artworks of &lt;a href=&quot;https://dribbble.com/shots/22157656-Ayame&quot;&gt;Ayame by Mercedes Bazan&lt;/a&gt; with &lt;a href=&quot;https://dribbble.com/shots/24501019-Wish&quot;&gt;Wish by Mercedes Bazan&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/mallorbc/whisper_mic&quot;&gt;mallorbc/whisper_mic&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/moeru-ai/xsai&quot;&gt;&lt;code&gt;xsai&lt;/code&gt;&lt;/a&gt;: Implemented a decent amount of packages to interact with LLMs and models, like &lt;a href=&quot;https://sdk.vercel.ai/&quot;&gt;Vercel AI SDK&lt;/a&gt; but way small.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Supporters&lt;/h2&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;strong&gt;Thank you for supporting Project AIRI through OpenCollective, Patreon, and Ko-fi.&lt;/strong&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/moeru-ai/airi/main/docs/content/public/assets/sponsors/sponsors.svg?sanitize=true&quot; alt=&quot;Project AIRI supporters&quot; /&gt; &lt;/p&gt; 
&lt;h2&gt;Special Thanks&lt;/h2&gt; 
&lt;p&gt;Special thanks to all contributors for their contributions to Project AIRI ❤️&lt;/p&gt; 
&lt;a href=&quot;https://github.com/moeru-ai/airi/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=moeru-ai/airi&quot; /&gt; &lt;/a&gt; 
&lt;h2&gt;Star History&lt;/h2&gt; 
&lt;a href=&quot;https://star-history.com/#moeru-ai/airi&amp;amp;Date&quot;&gt; 
 &lt;picture&gt; 
  &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://api.star-history.com/svg?repos=moeru-ai/airi&amp;amp;type=Date&amp;amp;theme=dark&quot; /&gt; 
  &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;https://api.star-history.com/svg?repos=moeru-ai/airi&amp;amp;type=Date&quot; /&gt; 
  &lt;img alt=&quot;Star History Chart&quot; src=&quot;https://api.star-history.com/svg?repos=moeru-ai/airi&amp;amp;type=Date&quot; /&gt; 
 &lt;/picture&gt; &lt;/a&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/896924279/ab484a48-4af4-4127-af24-c589fd6da072" medium="image" />
      
    </item>
    
    <item>
      <title>wonderwhy-er/DesktopCommanderMCP</title>
      <link>https://github.com/wonderwhy-er/DesktopCommanderMCP</link>
      <description>&lt;p&gt;This is MCP server for Claude that gives it terminal control, file system search and diff file editing capabilities&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Desktop Commander MCP&lt;/h1&gt; 
&lt;h3&gt;Search, update, manage files and run terminal commands with AI&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.npmjs.com/package/@wonderwhy-er/desktop-commander&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/dw/@wonderwhy-er/desktop-commander&quot; alt=&quot;npm downloads&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://agentaudit.dev/skills/desktop-commander&quot;&gt;&lt;img src=&quot;https://agentaudit.dev/api/badge/desktop-commander&quot; alt=&quot;AgentAudit Verified&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://archestra.ai/mcp-catalog/wonderwhy-er__desktopcommandermcp&quot;&gt;&lt;img src=&quot;https://archestra.ai/mcp-catalog/api/badge/quality/wonderwhy-er/DesktopCommanderMCP&quot; alt=&quot;Trust Score&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://smithery.ai/server/@wonderwhy-er/desktop-commander&quot;&gt;&lt;img src=&quot;https://smithery.ai/badge/@wonderwhy-er/desktop-commander&quot; alt=&quot;smithery badge&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.buymeacoffee.com/wonderwhyer&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Buy%20Me%20A%20Coffee-support-yellow.svg?sanitize=true&quot; alt=&quot;Buy Me A Coffee&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://discord.gg/kQ27sNnZr7&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Join%20Discord-5865F2?style=for-the-badge&amp;amp;logo=discord&amp;amp;logoColor=white&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Work with code and text, run processes, and automate tasks, going far beyond other AI editors - while using host client subscriptions instead of API token costs.&lt;/p&gt; 
&lt;a href=&quot;https://glama.ai/mcp/servers/zempur9oh4&quot;&gt; &lt;img width=&quot;380&quot; height=&quot;200&quot; src=&quot;https://glama.ai/mcp/servers/zempur9oh4/badge&quot; alt=&quot;Desktop Commander MCP&quot; /&gt; &lt;/a&gt; 
&lt;h2&gt;🖥️ Try the Desktop Commander App (Beta)&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Want a better experience?&lt;/strong&gt; The Desktop Commander App gives you everything the MCP server does, plus:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Use any AI model&lt;/strong&gt; — Claude, GPT-4.5, Gemini 2.5, or any model you prefer&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;See file changes live&lt;/strong&gt; — visual file previews as AI edits your files&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Add custom MCPs and context&lt;/strong&gt; — extend with your own tools, no config files&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Coming soon&lt;/strong&gt; — skills system, dictation, background scheduled tasks, and more&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;👉 &lt;a href=&quot;https://desktopcommander.app/#download&quot;&gt;Download the App&lt;/a&gt;&lt;/strong&gt; (macOS &amp;amp; Windows)&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;The MCP server below still works great with Claude Desktop and other MCP clients — the app is for those who want a dedicated, polished experience.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;Table of Contents&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/#features&quot;&gt;Features&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/#how-to-install&quot;&gt;How to install&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/#getting-started&quot;&gt;Getting Started&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/#usage&quot;&gt;Usage&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/#file-preview-ui--markdown-editor&quot;&gt;File Preview UI &amp;amp; Markdown Editor&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/#handling-long-running-commands&quot;&gt;Handling Long-Running Commands&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/#roadmap&quot;&gt;Work in Progress and TODOs&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/#support-desktop-commander&quot;&gt;Sponsors and Supporters&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/#website&quot;&gt;Website&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/#media&quot;&gt;Media&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/#testimonials&quot;&gt;Testimonials&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/#frequently-asked-questions&quot;&gt;Frequently Asked Questions&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/#contributing&quot;&gt;Contributing&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/#license&quot;&gt;License&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;All of your AI development tools in one place. Desktop Commander puts all dev tools in one chat. Execute long-running terminal commands on your computer and manage processes through Model Context Protocol (MCP). Built on top of &lt;a href=&quot;https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem&quot;&gt;MCP Filesystem Server&lt;/a&gt; to provide additional search and replace file editing capabilities.&lt;/p&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Remote AI Control&lt;/strong&gt; - Use Desktop Commander from ChatGPT, Claude web, and other AI services via &lt;a href=&quot;https://mcp.desktopcommander.app&quot;&gt;Remote MCP&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;File Preview UI&lt;/strong&gt; - Visual file previews in Claude Desktop with rendered markdown, inline images, expandable content, built-in markdown editor, and quick &quot;Open in folder&quot; access&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Enhanced terminal commands with interactive process control&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Execute code in memory (Python, Node.js, R) without saving files&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Instant data analysis - just ask to analyze CSV/JSON/Excel files&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Native Excel file support&lt;/strong&gt; - Read, write, edit, and search Excel files (.xlsx, .xls, .xlsm) without external tools&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;PDF support&lt;/strong&gt; - Read PDFs with text extraction, create new PDFs from markdown, modify existing PDFs&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;DOCX support&lt;/strong&gt; - Read, create, edit, and search Word documents (.docx) with surgical XML editing and markdown-to-DOCX conversion&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Interact with running processes (SSH, databases, development servers)&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;Execute terminal commands with output streaming&lt;/li&gt; 
 &lt;li&gt;Command timeout and background execution support&lt;/li&gt; 
 &lt;li&gt;Process management (list and kill processes)&lt;/li&gt; 
 &lt;li&gt;Session management for long-running commands&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Process output pagination&lt;/strong&gt; - Read terminal output with offset/length controls to prevent context overflow&lt;/li&gt; 
 &lt;li&gt;Server configuration management: 
  &lt;ul&gt; 
   &lt;li&gt;Get/set configuration values&lt;/li&gt; 
   &lt;li&gt;Update multiple settings at once&lt;/li&gt; 
   &lt;li&gt;Dynamic configuration changes without server restart&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Full filesystem operations: 
  &lt;ul&gt; 
   &lt;li&gt;Read/write files (text, Excel, PDF, DOCX)&lt;/li&gt; 
   &lt;li&gt;Create/list directories&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Recursive directory listing&lt;/strong&gt; with configurable depth and context overflow protection for large folders&lt;/li&gt; 
   &lt;li&gt;Move files/directories&lt;/li&gt; 
   &lt;li&gt;Search files and content (including Excel content)&lt;/li&gt; 
   &lt;li&gt;Get file metadata&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Negative offset file reading&lt;/strong&gt;: Read from end of files using negative offset values (like Unix tail)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Code editing capabilities: 
  &lt;ul&gt; 
   &lt;li&gt;Surgical text replacements for small changes&lt;/li&gt; 
   &lt;li&gt;Full file rewrites for major changes&lt;/li&gt; 
   &lt;li&gt;Multiple file support&lt;/li&gt; 
   &lt;li&gt;Pattern-based replacements&lt;/li&gt; 
   &lt;li&gt;vscode-ripgrep based recursive code or text search in folders&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Comprehensive audit logging: 
  &lt;ul&gt; 
   &lt;li&gt;All tool calls are automatically logged&lt;/li&gt; 
   &lt;li&gt;Log rotation with 10MB size limit&lt;/li&gt; 
   &lt;li&gt;Detailed timestamps and arguments&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Safety guardrails (not a sandbox — see &lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/SECURITY.md&quot;&gt;SECURITY.md&lt;/a&gt;): 
  &lt;ul&gt; 
   &lt;li&gt;Symlink traversal prevention on file operations&lt;/li&gt; 
   &lt;li&gt;Command blocklist for accidental execution&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/#option-6-docker-installation--auto-updates-no-nodejs-required&quot;&gt;Docker isolation&lt;/a&gt; for complete isolation&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;How to install&lt;/h2&gt; 
&lt;h3&gt;Install in Claude Desktop&lt;/h3&gt; 
&lt;p&gt;Desktop Commander offers multiple installation methods for Claude Desktop.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;📋 Update &amp;amp; Uninstall Information:&lt;/strong&gt; Options 1, 2, 3, 4, and 6 have automatic updates. Option 5 requires manual updates. See below for details.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Option 1: Install through npx ⭐ Auto-Updates (Requires Node.js)&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Just run this in terminal:&lt;/p&gt; 
 &lt;pre&gt;&lt;code&gt;npx @wonderwhy-er/desktop-commander@latest setup
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;For debugging mode (allows Node.js inspector connection):&lt;/p&gt; 
 &lt;pre&gt;&lt;code&gt;npx @wonderwhy-er/desktop-commander@latest setup --debug
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;&lt;strong&gt;Command line options during setup:&lt;/strong&gt;&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;code&gt;--debug&lt;/code&gt;: Enable debugging mode for Node.js inspector&lt;/li&gt; 
  &lt;li&gt;&lt;code&gt;--no-onboarding&lt;/code&gt;: Disable onboarding prompts for new users&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;Restart Claude if running.&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;✅ Auto-Updates:&lt;/strong&gt; Yes - automatically updates when you restart Claude&lt;br /&gt; &lt;strong&gt;🔄 Manual Update:&lt;/strong&gt; Run the setup command again&lt;br /&gt; &lt;strong&gt;🗑️ Uninstall:&lt;/strong&gt; Run &lt;code&gt;npx @wonderwhy-er/desktop-commander@latest remove&lt;/code&gt;&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Option 2: Using bash script installer (macOS) ⭐ Auto-Updates (Installs Node.js if needed)&lt;/b&gt;&lt;/summary&gt; 
 &lt;pre&gt;&lt;code&gt;curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install.sh | bash
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;This script handles all dependencies and configuration automatically.&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;✅ Auto-Updates:&lt;/strong&gt; Yes&lt;br /&gt; &lt;strong&gt;🔄 Manual Update:&lt;/strong&gt; Re-run the bash installer command above&lt;br /&gt; &lt;strong&gt;🗑️ Uninstall:&lt;/strong&gt; Run &lt;code&gt;npx @wonderwhy-er/desktop-commander@latest remove&lt;/code&gt;&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Option 3: Installing via Smithery ⭐ Auto-Updates (Requires Node.js)&lt;/b&gt;&lt;/summary&gt; 
 &lt;ol&gt; 
  &lt;li&gt;&lt;strong&gt;Visit:&lt;/strong&gt; &lt;a href=&quot;https://smithery.ai/server/@wonderwhy-er/desktop-commander&quot;&gt;https://smithery.ai/server/@wonderwhy-er/desktop-commander&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Login to Smithery&lt;/strong&gt; if you haven&#39;t already&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Select your client&lt;/strong&gt; (Claude Desktop) on the right side&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Install with the provided key&lt;/strong&gt; that appears after selecting your client&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Restart Claude Desktop&lt;/strong&gt;&lt;/li&gt; 
 &lt;/ol&gt; 
 &lt;p&gt;&lt;strong&gt;✅ Auto-Updates:&lt;/strong&gt; Yes - automatically updates when you restart Claude&lt;br /&gt; &lt;strong&gt;🔄 Manual Update:&lt;/strong&gt; Visit the Smithery page and reinstall&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Option 4: Add to claude_desktop_config manually ⭐ Auto-Updates (Requires Node.js)&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Add this entry to your claude_desktop_config.json:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;On Mac: &lt;code&gt;~/Library/Application Support/Claude/claude_desktop_config.json&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;On Windows: &lt;code&gt;%APPDATA%\Claude\claude_desktop_config.json&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;On Linux: &lt;code&gt;~/.config/Claude/claude_desktop_config.json&lt;/code&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;mcpServers&quot;: {
    &quot;desktop-commander&quot;: {
      &quot;command&quot;: &quot;npx&quot;,
      &quot;args&quot;: [
        &quot;-y&quot;,
        &quot;@wonderwhy-er/desktop-commander@latest&quot;
      ]
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Restart Claude if running.&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;✅ Auto-Updates:&lt;/strong&gt; Yes - automatically updates when you restart Claude&lt;br /&gt; &lt;strong&gt;🔄 Manual Update:&lt;/strong&gt; Run the setup command again&lt;br /&gt; &lt;strong&gt;🗑️ Uninstall:&lt;/strong&gt; Run &lt;code&gt;npx @wonderwhy-er/desktop-commander@latest remove&lt;/code&gt; or remove the entry from your claude_desktop_config.json&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Option 5: Checkout locally ❌ Manual Updates (Requires Node.js)&lt;/b&gt;&lt;/summary&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/wonderwhy-er/DesktopCommanderMCP.git
cd DesktopCommanderMCP
npm run setup
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Restart Claude if running.&lt;/p&gt; 
 &lt;p&gt;The setup command will install dependencies, build the server, and configure Claude&#39;s desktop app.&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;❌ Auto-Updates:&lt;/strong&gt; No - requires manual git updates&lt;br /&gt; &lt;strong&gt;🔄 Manual Update:&lt;/strong&gt; &lt;code&gt;cd DesktopCommanderMCP &amp;amp;&amp;amp; git pull &amp;amp;&amp;amp; npm run setup&lt;/code&gt;&lt;br /&gt; &lt;strong&gt;🗑️ Uninstall:&lt;/strong&gt; Run &lt;code&gt;npx @wonderwhy-er/desktop-commander@latest remove&lt;/code&gt; or remove the cloned directory and MCP server entry from Claude config&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Option 6: Docker Installation 🐳 ⭐ Auto-Updates (No Node.js Required)&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Perfect for users who want isolation or don&#39;t have Node.js installed. Runs in a sandboxed Docker container with a persistent work environment.&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt; &lt;a href=&quot;https://www.docker.com/products/docker-desktop/&quot;&gt;Docker Desktop&lt;/a&gt; installed &lt;strong&gt;and running&lt;/strong&gt;, Claude Desktop app installed.&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;macOS/Linux:&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bash &amp;lt;(curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.sh)
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;&lt;strong&gt;Windows PowerShell:&lt;/strong&gt;&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;iex ((New-Object System.Net.WebClient).DownloadString(&#39;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.ps1&#39;))
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;The installer will check Docker, pull the image, prompt for folder mounting, and configure Claude Desktop.&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Docker persistence:&lt;/strong&gt; Your tools, configs, work files, and package caches all survive restarts.&lt;/p&gt; 
 &lt;details&gt; 
  &lt;summary&gt;Manual Docker Configuration&lt;/summary&gt; 
  &lt;p&gt;&lt;strong&gt;Basic setup (no file access):&lt;/strong&gt;&lt;/p&gt; 
  &lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;mcpServers&quot;: {
    &quot;desktop-commander-in-docker&quot;: {
      &quot;command&quot;: &quot;docker&quot;,
      &quot;args&quot;: [&quot;run&quot;, &quot;-i&quot;, &quot;--rm&quot;, &quot;mcp/desktop-commander:latest&quot;]
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
  &lt;p&gt;&lt;strong&gt;With folder mounting:&lt;/strong&gt;&lt;/p&gt; 
  &lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;mcpServers&quot;: {
    &quot;desktop-commander-in-docker&quot;: {
      &quot;command&quot;: &quot;docker&quot;,
      &quot;args&quot;: [
        &quot;run&quot;, &quot;-i&quot;, &quot;--rm&quot;,
        &quot;-v&quot;, &quot;/Users/username/Desktop:/mnt/desktop&quot;,
        &quot;-v&quot;, &quot;/Users/username/Documents:/mnt/documents&quot;,
        &quot;mcp/desktop-commander:latest&quot;
      ]
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
  &lt;p&gt;&lt;strong&gt;Advanced folder mounting:&lt;/strong&gt;&lt;/p&gt; 
  &lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;mcpServers&quot;: {
    &quot;desktop-commander-in-docker&quot;: {
      &quot;command&quot;: &quot;docker&quot;,
      &quot;args&quot;: [
        &quot;run&quot;, &quot;-i&quot;, &quot;--rm&quot;,
        &quot;-v&quot;, &quot;dc-system:/usr&quot;,
        &quot;-v&quot;, &quot;dc-home:/root&quot;, 
        &quot;-v&quot;, &quot;dc-workspace:/workspace&quot;,
        &quot;-v&quot;, &quot;dc-packages:/var&quot;,
        &quot;-v&quot;, &quot;/Users/username/Projects:/mnt/Projects&quot;,
        &quot;-v&quot;, &quot;/Users/username/Downloads:/mnt/Downloads&quot;,
        &quot;mcp/desktop-commander:latest&quot;
      ]
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
 &lt;/details&gt; 
 &lt;details&gt; 
  &lt;summary&gt;Docker Management Commands&lt;/summary&gt; 
  &lt;p&gt;&lt;strong&gt;macOS/Linux:&lt;/strong&gt;&lt;/p&gt; 
  &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Check status
bash &amp;lt;(curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.sh) --status

# Reset all persistent data
bash &amp;lt;(curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.sh) --reset
&lt;/code&gt;&lt;/pre&gt; 
  &lt;p&gt;&lt;strong&gt;Windows PowerShell:&lt;/strong&gt;&lt;/p&gt; 
  &lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;# Check status
$script = (New-Object System.Net.WebClient).DownloadString(&#39;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.ps1&#39;); &amp;amp; ([ScriptBlock]::Create(&quot;$script&quot;)) -Status

# Reset all data
$script = (New-Object System.Net.WebClient).DownloadString(&#39;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.ps1&#39;); &amp;amp; ([ScriptBlock]::Create(&quot;$script&quot;)) -Reset

# Show help
$script = (New-Object System.Net.WebClient).DownloadString(&#39;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.ps1&#39;); &amp;amp; ([ScriptBlock]::Create(&quot;$script&quot;)) -Help
&lt;/code&gt;&lt;/pre&gt; 
  &lt;p&gt;&lt;strong&gt;Troubleshooting:&lt;/strong&gt; Reset and reinstall from scratch:&lt;/p&gt; 
  &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bash &amp;lt;(curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.sh) --reset &amp;amp;&amp;amp; bash &amp;lt;(curl -fsSL https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/refs/heads/main/install-docker.sh)
&lt;/code&gt;&lt;/pre&gt; 
 &lt;/details&gt; 
 &lt;p&gt;&lt;strong&gt;✅ Auto-Updates:&lt;/strong&gt; Yes - &lt;code&gt;latest&lt;/code&gt; tag automatically gets newer versions&lt;br /&gt; &lt;strong&gt;🔄 Manual Update:&lt;/strong&gt; &lt;code&gt;docker pull mcp/desktop-commander:latest&lt;/code&gt; then restart Claude&lt;/p&gt; 
&lt;/details&gt; 
&lt;h3&gt;Install in Other Clients&lt;/h3&gt; 
&lt;p&gt;Desktop Commander works with any MCP-compatible client. The standard JSON configuration is:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;mcpServers&quot;: {
    &quot;desktop-commander&quot;: {
      &quot;command&quot;: &quot;npx&quot;,
      &quot;args&quot;: [&quot;-y&quot;, &quot;@wonderwhy-er/desktop-commander@latest&quot;]
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Add this to your client&#39;s MCP configuration file at the locations below:&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Cursor&lt;/b&gt;&lt;/summary&gt;
 &lt;br /&gt; 
 &lt;p&gt;&lt;a href=&quot;https://cursor.com/en-US/install-mcp?name=desktop-commander&amp;amp;config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkB3b25kZXJ3aHktZXIvZGVza3RvcC1jb21tYW5kZXJAbGF0ZXN0Il19&quot;&gt;&lt;img src=&quot;https://cursor.com/deeplink/mcp-install-dark.svg?sanitize=true&quot; alt=&quot;Install MCP Server&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://cursor.directory/mcp/desktop-commander-mcp&quot;&gt;View MCP Server in Directory&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;Or add manually to &lt;code&gt;~/.cursor/mcp.json&lt;/code&gt; (global) or &lt;code&gt;.cursor/mcp.json&lt;/code&gt; in your project folder (project-specific).&lt;/p&gt; 
 &lt;p&gt;See &lt;a href=&quot;https://docs.cursor.com/context/model-context-protocol&quot;&gt;Cursor MCP docs&lt;/a&gt; for more info.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Windsurf&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Add to &lt;code&gt;~/.codeium/windsurf/mcp_config.json&lt;/code&gt;. See &lt;a href=&quot;https://docs.windsurf.com/windsurf/cascade/mcp&quot;&gt;Windsurf MCP docs&lt;/a&gt; for more info.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;VS Code / GitHub Copilot&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Add to &lt;code&gt;.vscode/mcp.json&lt;/code&gt; in your project or VS Code User Settings (JSON). Make sure MCP is enabled under Chat &amp;gt; MCP. Works in Agent mode.&lt;/p&gt; 
 &lt;p&gt;See &lt;a href=&quot;https://code.visualstudio.com/docs/copilot/chat/mcp-servers&quot;&gt;VS Code MCP docs&lt;/a&gt; for more info.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Cline&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Configure through the Cline extension settings in VS Code. Open the Cline sidebar, click the MCP Servers icon, and add the JSON configuration above. See &lt;a href=&quot;https://docs.cline.bot/mcp/configuring-mcp-servers&quot;&gt;Cline MCP docs&lt;/a&gt; for more info.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Roo Code&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Add to your Roo Code MCP configuration file. See &lt;a href=&quot;https://docs.roocode.com/features/mcp/using-mcp-in-roo&quot;&gt;Roo Code MCP docs&lt;/a&gt; for more info.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Claude Code&lt;/b&gt;&lt;/summary&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;claude mcp add --scope user desktop-commander -- npx -y @wonderwhy-er/desktop-commander@latest
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Remove &lt;code&gt;--scope user&lt;/code&gt; to install for the current project only. See &lt;a href=&quot;https://docs.anthropic.com/en/docs/claude-code/mcp&quot;&gt;Claude Code MCP docs&lt;/a&gt; for more info.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Trae&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Use the &quot;Add manually&quot; feature and paste the JSON configuration above. See &lt;a href=&quot;https://docs.trae.ai/ide/model-context-protocol?_lang=en&quot;&gt;Trae MCP docs&lt;/a&gt; for more info.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Kiro&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Navigate to &lt;code&gt;Kiro&lt;/code&gt; &amp;gt; &lt;code&gt;MCP Servers&lt;/code&gt;, click &lt;code&gt;+ Add&lt;/code&gt;, and paste the JSON configuration above. See &lt;a href=&quot;https://kiro.dev/docs/mcp/configuration/&quot;&gt;Kiro MCP docs&lt;/a&gt; for more info.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Codex (OpenAI)&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Codex uses TOML configuration. Run this command to add Desktop Commander:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;codex mcp add desktop-commander -- npx -y @wonderwhy-er/desktop-commander@latest
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Or manually add to &lt;code&gt;~/.codex/config.toml&lt;/code&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;[mcp_servers.desktop-commander]
command = &quot;npx&quot;
args = [&quot;-y&quot;, &quot;@wonderwhy-er/desktop-commander@latest&quot;]
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;See &lt;a href=&quot;https://developers.openai.com/codex/mcp/&quot;&gt;Codex MCP docs&lt;/a&gt; for more info.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;JetBrains (AI Assistant)&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;In JetBrains IDEs, go to &lt;strong&gt;Settings → Tools → AI Assistant → Model Context Protocol (MCP)&lt;/strong&gt;, click &lt;code&gt;+&lt;/code&gt; Add, select &lt;strong&gt;As JSON&lt;/strong&gt;, and paste the JSON configuration above. See &lt;a href=&quot;https://www.jetbrains.com/help/ai-assistant/configure-an-mcp-server.html&quot;&gt;JetBrains MCP docs&lt;/a&gt; for more info.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Gemini CLI&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Add to &lt;code&gt;~/.gemini/settings.json&lt;/code&gt;:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;mcpServers&quot;: {
    &quot;desktop-commander&quot;: {
      &quot;command&quot;: &quot;npx&quot;,
      &quot;args&quot;: [&quot;-y&quot;, &quot;@wonderwhy-er/desktop-commander@latest&quot;]
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;See &lt;a href=&quot;https://github.com/google-gemini/gemini-cli&quot;&gt;Gemini CLI docs&lt;/a&gt; for more info.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Augment Code&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Press &lt;code&gt;Cmd/Ctrl+Shift+P&lt;/code&gt;, open the Augment panel, and add a new MCP server named &lt;code&gt;desktop-commander&lt;/code&gt; with the JSON configuration above. See &lt;a href=&quot;https://docs.augmentcode.com/setup-augment/mcp&quot;&gt;Augment Code MCP docs&lt;/a&gt; for more info.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;Qwen Code&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Run this command to add Desktop Commander:&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;qwen mcp add desktop-commander -- npx -y @wonderwhy-er/desktop-commander@latest
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;Or add to &lt;code&gt;.qwen/settings.json&lt;/code&gt; (project) or &lt;code&gt;~/.qwen/settings.json&lt;/code&gt; (global). See &lt;a href=&quot;https://qwenlm.github.io/qwen-code-docs/en/developers/tools/mcp-server/&quot;&gt;Qwen Code MCP docs&lt;/a&gt; for more info.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;ChatGPT / Claude Web (Remote MCP)&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Use Desktop Commander from &lt;strong&gt;ChatGPT&lt;/strong&gt;, &lt;strong&gt;Claude web&lt;/strong&gt;, and other AI services via Remote MCP — no desktop app required.&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;👉 &lt;a href=&quot;https://mcp.desktopcommander.app&quot;&gt;Get started at mcp.desktopcommander.app&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;How it works:&lt;/p&gt; 
 &lt;ol&gt; 
  &lt;li&gt;You run a lightweight &lt;strong&gt;Remote Device&lt;/strong&gt; on your computer&lt;/li&gt; 
  &lt;li&gt;It connects securely to the cloud Remote MCP service&lt;/li&gt; 
  &lt;li&gt;Your AI sends commands through the cloud to your device&lt;/li&gt; 
  &lt;li&gt;Commands execute locally, results return to your AI&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;You stay in control&lt;/strong&gt; — stop anytime with &lt;code&gt;Ctrl+C&lt;/code&gt;&lt;/li&gt; 
 &lt;/ol&gt; 
 &lt;h3&gt;Security&lt;/h3&gt; 
 &lt;ul&gt; 
  &lt;li&gt;✅ Device only runs when you start it&lt;/li&gt; 
  &lt;li&gt;✅ Commands execute under your user permissions&lt;/li&gt; 
  &lt;li&gt;✅ Secure OAuth authentication and encrypted communication channel&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;h2&gt;Updating &amp;amp; Uninstalling Desktop Commander&lt;/h2&gt; 
&lt;h3&gt;Automatic Updates (Options 1, 2, 3, 4 &amp;amp; 6)&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Options 1 (npx), Option 2 (bash installer), 3 (Smithery), 4 (manual config), and 6 (Docker)&lt;/strong&gt; automatically update to the latest version whenever you restart Claude. No manual intervention needed.&lt;/p&gt; 
&lt;h3&gt;Manual Updates (Option 5)&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Option 5 (local checkout):&lt;/strong&gt; &lt;code&gt;cd DesktopCommanderMCP &amp;amp;&amp;amp; git pull &amp;amp;&amp;amp; npm run setup&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Uninstalling Desktop Commander&lt;/h3&gt; 
&lt;h4&gt;🤖 Automatic Uninstallation (Recommended)&lt;/h4&gt; 
&lt;p&gt;The easiest way to completely remove Desktop Commander:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx @wonderwhy-er/desktop-commander@latest remove
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This automatic uninstaller will:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;✅ Remove Desktop Commander from Claude&#39;s MCP server configuration&lt;/li&gt; 
 &lt;li&gt;✅ Create a backup of your Claude config before making changes&lt;/li&gt; 
 &lt;li&gt;✅ Provide guidance for complete package removal&lt;/li&gt; 
 &lt;li&gt;✅ Restore from backup if anything goes wrong&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;🔧 Manual Uninstallation&lt;/h4&gt; 
&lt;p&gt;If the automatic uninstaller doesn&#39;t work or you prefer manual removal:&lt;/p&gt; 
&lt;h5&gt;Remove from Claude Configuration&lt;/h5&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Locate your Claude Desktop config file:&lt;/strong&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;macOS:&lt;/strong&gt; &lt;code&gt;~/Library/Application Support/Claude/claude_desktop_config.json&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Windows:&lt;/strong&gt; &lt;code&gt;%APPDATA%\Claude\claude_desktop_config.json&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Linux:&lt;/strong&gt; &lt;code&gt;~/.config/Claude/claude_desktop_config.json&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;ol start=&quot;2&quot;&gt; 
 &lt;li&gt;&lt;strong&gt;Edit the config file:&lt;/strong&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;ul&gt; 
 &lt;li&gt;Open the file in a text editor&lt;/li&gt; 
 &lt;li&gt;Find and remove the &lt;code&gt;&quot;desktop-commander&quot;&lt;/code&gt; entry from the &lt;code&gt;&quot;mcpServers&quot;&lt;/code&gt; section&lt;/li&gt; 
 &lt;li&gt;Save the file&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Example - Remove this section:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
    &quot;desktop-commander&quot;: {
      &quot;command&quot;: &quot;npx&quot;,
      &quot;args&quot;: [&quot;@wonderwhy-er/desktop-commander@latest&quot;]
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Close and restart Claude Desktop to complete the removal.&lt;/p&gt; 
&lt;h4&gt;🆘 Troubleshooting&lt;/h4&gt; 
&lt;p&gt;&lt;strong&gt;If automatic uninstallation fails:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Use manual uninstallation as a fallback&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;If Claude won&#39;t start after uninstalling:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Restore the backup config file created by the uninstaller&lt;/li&gt; 
 &lt;li&gt;Or manually fix the JSON syntax in your claude_desktop_config.json&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Need help?&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Join our Discord community: &lt;a href=&quot;https://discord.com/invite/kQ27sNnZr7&quot;&gt;https://discord.com/invite/kQ27sNnZr7&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Getting Started&lt;/h2&gt; 
&lt;p&gt;Once Desktop Commander is installed and Claude Desktop is restarted, you&#39;re ready to supercharge your Claude experience!&lt;/p&gt; 
&lt;h3&gt;🚀 New User Onboarding&lt;/h3&gt; 
&lt;p&gt;Desktop Commander includes intelligent onboarding to help you discover what&#39;s possible:&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;For New Users:&lt;/strong&gt; When you&#39;re just getting started (fewer than 10 successful commands), Claude will automatically offer helpful getting-started guidance and practical tutorials after you use Desktop Commander successfully.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Request Help Anytime:&lt;/strong&gt; You can ask for onboarding assistance at any time by simply saying:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;em&gt;&quot;Help me get started with Desktop Commander&quot;&lt;/em&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;em&gt;&quot;Show me Desktop Commander examples&quot;&lt;/em&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;em&gt;&quot;What can I do with Desktop Commander?&quot;&lt;/em&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Claude will then show you beginner-friendly tutorials and examples, including:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;📁 Organizing your Downloads folder automatically&lt;/li&gt; 
 &lt;li&gt;📊 Analyzing CSV/Excel files with Python&lt;/li&gt; 
 &lt;li&gt;⚙️ Setting up GitHub Actions CI/CD&lt;/li&gt; 
 &lt;li&gt;🔍 Exploring and understanding codebases&lt;/li&gt; 
 &lt;li&gt;🤖 Running interactive development environments&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Usage&lt;/h2&gt; 
&lt;p&gt;The server provides a comprehensive set of tools organized into several categories:&lt;/p&gt; 
&lt;h3&gt;Available Tools&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Category&lt;/th&gt; 
   &lt;th&gt;Tool&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Configuration&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;get_config&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Get the complete server configuration as JSON (includes blockedCommands, defaultShell, allowedDirectories, fileReadLineLimit, fileWriteLineLimit, telemetryEnabled)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;set_config_value&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Set a specific configuration value by key. Available settings: &lt;br /&gt;• &lt;code&gt;blockedCommands&lt;/code&gt;: Array of shell commands that cannot be executed&lt;br /&gt;• &lt;code&gt;defaultShell&lt;/code&gt;: Shell to use for commands (e.g., bash, zsh, powershell)&lt;br /&gt;• &lt;code&gt;allowedDirectories&lt;/code&gt;: Array of filesystem paths the server can access for file operations (⚠️ terminal commands can still access files outside these directories)&lt;br /&gt;• &lt;code&gt;fileReadLineLimit&lt;/code&gt;: Maximum lines to read at once (default: 1000)&lt;br /&gt;• &lt;code&gt;fileWriteLineLimit&lt;/code&gt;: Maximum lines to write at once (default: 50)&lt;br /&gt;• &lt;code&gt;telemetryEnabled&lt;/code&gt;: Enable/disable telemetry (boolean)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Terminal&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;start_process&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Start programs with smart detection of when they&#39;re ready for input&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;interact_with_process&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Send commands to running programs and get responses&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;read_process_output&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Read output from running processes&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;force_terminate&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Force terminate a running terminal session&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;list_sessions&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;List all active terminal sessions&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;list_processes&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;List all running processes with detailed information&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;kill_process&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Terminate a running process by PID&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Filesystem&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;read_file&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Read contents from local filesystem, URLs, Excel files (.xlsx, .xls, .xlsm), and PDFs with line/page-based pagination&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;read_multiple_files&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Read multiple files simultaneously&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;write_file&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Write file contents with options for rewrite or append mode. Supports Excel files (JSON 2D array format). For PDFs, use &lt;code&gt;write_pdf&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;write_pdf&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Create new PDF files from markdown or modify existing PDFs (insert/delete pages). Supports HTML/CSS styling and SVG graphics&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;create_directory&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Create a new directory or ensure it exists&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;list_directory&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Get detailed recursive listing of files and directories (supports depth parameter, default depth=2)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;move_file&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Move or rename files and directories&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;start_search&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Start streaming search for files by name or content patterns (searches text files and Excel content)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;get_more_search_results&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Get paginated results from active search with offset support&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;stop_search&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Stop an active search gracefully&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;list_searches&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;List all active search sessions&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;get_file_info&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Retrieve detailed metadata about a file or directory (includes sheet info for Excel files)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Text Editing&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;edit_block&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Apply targeted text replacements for text files, or range-based cell updates for Excel files&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Analytics&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;get_usage_stats&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Get usage statistics for your own insight&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;get_recent_tool_calls&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Get recent tool call history with arguments and outputs for debugging and context recovery&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;give_feedback_to_desktop_commander&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Open feedback form in browser to provide feedback to Desktop Commander Team&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Quick Examples&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Data Analysis:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&quot;Analyze sales.csv and show top customers&quot; → Claude runs Python code in memory
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Remote Access:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&quot;SSH to my server and check disk space&quot; → Claude maintains SSH session
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Development:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&quot;Start Node.js and test this API&quot; → Claude runs interactive Node session
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Tool Usage Examples&lt;/h3&gt; 
&lt;p&gt;Search/Replace Block Format:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;filepath.ext
&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; SEARCH
content to find
=======
new content
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; REPLACE
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Example:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;src/main.js
&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; SEARCH
console.log(&quot;old message&quot;);
=======
console.log(&quot;new message&quot;);
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; REPLACE
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Enhanced Edit Block Features&lt;/h3&gt; 
&lt;p&gt;The &lt;code&gt;edit_block&lt;/code&gt; tool includes several enhancements for better reliability:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Improved Prompting&lt;/strong&gt;: Tool descriptions now emphasize making multiple small, focused edits rather than one large change&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Fuzzy Search Fallback&lt;/strong&gt;: When exact matches fail, it performs fuzzy search and provides detailed feedback&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Character-level Diffs&lt;/strong&gt;: Shows exactly what&#39;s different using &lt;code&gt;{-removed-}{+added+}&lt;/code&gt; format&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Multiple Occurrence Support&lt;/strong&gt;: Can replace multiple instances with &lt;code&gt;expected_replacements&lt;/code&gt; parameter&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Comprehensive Logging&lt;/strong&gt;: All fuzzy searches are logged for analysis and debugging&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;When a search fails, you&#39;ll see detailed information about the closest match found, including similarity percentage, execution time, and character differences. All these details are automatically logged for later analysis using the fuzzy search log tools.&lt;/p&gt; 
&lt;h3&gt;Docker Support&lt;/h3&gt; 
&lt;h3&gt;🐳 Isolated Environment Usage&lt;/h3&gt; 
&lt;p&gt;Desktop Commander can be run in Docker containers for &lt;strong&gt;complete isolation from your host system&lt;/strong&gt;, providing &lt;strong&gt;zero risk to your computer&lt;/strong&gt;. This is perfect for testing, development, or when you want complete sandboxing.&lt;/p&gt; 
&lt;h3&gt;Installation Instructions&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Install Docker for Windows/Mac&lt;/strong&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Download and install Docker Desktop from &lt;a href=&quot;https://www.docker.com/products/docker-desktop/&quot;&gt;docker.com&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Get Desktop Commander Docker Configuration&lt;/strong&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Visit: &lt;a href=&quot;https://hub.docker.com/mcp/server/desktop-commander/manual&quot;&gt;https://hub.docker.com/mcp/server/desktop-commander/manual&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Option A:&lt;/strong&gt; Use the provided terminal command for automated setup&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Option B:&lt;/strong&gt; Click &quot;Standalone&quot; to get the config JSON and add it manually to your Claude Desktop config &lt;img src=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/screenshots/docker-config.png&quot; alt=&quot;docker-config.png&quot; /&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Mount Your Machine Folders (Coming Soon)&lt;/strong&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Instructions on how to mount your local directories into the Docker container will be provided soon&lt;/li&gt; 
   &lt;li&gt;This will allow you to work with your files while maintaining complete isolation&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Benefits of Docker Usage&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Complete isolation&lt;/strong&gt; from your host system&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Consistent environment&lt;/strong&gt; across different machines&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Easy cleanup&lt;/strong&gt; - just remove the container when done&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Perfect for testing&lt;/strong&gt; new features or configurations&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;URL Support&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;read_file&lt;/code&gt; can now fetch content from both local files and URLs&lt;/li&gt; 
 &lt;li&gt;Example: &lt;code&gt;read_file&lt;/code&gt; with &lt;code&gt;isUrl: true&lt;/code&gt; parameter to read from web resources&lt;/li&gt; 
 &lt;li&gt;Handles both text and image content from remote sources&lt;/li&gt; 
 &lt;li&gt;Images (local or from URLs) are displayed visually in Claude&#39;s interface, not as text&lt;/li&gt; 
 &lt;li&gt;Claude can see and analyze the actual image content&lt;/li&gt; 
 &lt;li&gt;Default 30-second timeout for URL requests&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;File Preview UI &amp;amp; Markdown Editor&lt;/h2&gt; 
&lt;p&gt;Desktop Commander includes a rich file preview widget in Claude Desktop that renders files visually as AI works with them.&lt;/p&gt; 
&lt;h3&gt;Supported file types&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Markdown&lt;/strong&gt; — rendered preview with a built-in editor&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Images&lt;/strong&gt; — inline display (PNG, JPEG, GIF, WebP, etc.)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Code files&lt;/strong&gt; — syntax-highlighted source view&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;HTML&lt;/strong&gt; — rendered preview with toggle to source view&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Directories&lt;/strong&gt; — interactive tree with expand/collapse and lazy loading&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;PDF, Excel, DOCX&lt;/strong&gt; — native content extraction and display&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Markdown Editor&lt;/h3&gt; 
&lt;p&gt;When viewing a &lt;code&gt;.md&lt;/code&gt; file in Claude Desktop, you can edit it directly inside the preview panel — no need to open a separate app.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;How to use:&lt;/strong&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Ask Claude to read or create a markdown file&lt;/li&gt; 
 &lt;li&gt;Expand the file preview to fullscreen using the &lt;strong&gt;⤢ Expand&lt;/strong&gt; button&lt;/li&gt; 
 &lt;li&gt;The editor activates automatically in fullscreen mode&lt;/li&gt; 
 &lt;li&gt;Edit your content with a live preview toggle, copy, undo, and save controls&lt;/li&gt; 
 &lt;li&gt;Changes are saved back to disk; collapse to return to inline view&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;strong&gt;Editor features:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Live &lt;strong&gt;edit / preview toggle&lt;/strong&gt; — switch between raw markdown and rendered output&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Auto-save&lt;/strong&gt; to disk with save status indicator&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Undo&lt;/strong&gt; support to revert unsaved changes&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Copy&lt;/strong&gt; button to grab the full markdown source&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Open in editor&lt;/strong&gt; — launch your default markdown app directly from the panel&lt;/li&gt; 
 &lt;li&gt;Partial-file awareness — loads and merges surrounding lines when the file was only partially read&lt;/li&gt; 
 &lt;li&gt;Text selection context — select text in preview mode and the AI can reference your selection&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Directory Browser&lt;/h3&gt; 
&lt;p&gt;When Claude runs &lt;code&gt;list_directory&lt;/code&gt;, the result opens as an interactive file tree inside the preview panel — not just raw text output.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Features:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Expandable tree&lt;/strong&gt; — folders expand and collapse on click; top-level contents shown immediately&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Lazy loading&lt;/strong&gt; — subfolders load on demand to keep the initial view fast&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Large directory handling&lt;/strong&gt; — directories with many items show a &lt;code&gt;⚠ click to load all&lt;/code&gt; button instead of overwhelming the view&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Open in Finder/Explorer&lt;/strong&gt; — each folder has a quick-open button to reveal it in your file manager&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Click to preview&lt;/strong&gt; — clicking any file in the tree opens it in the file preview panel directly&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Back navigation&lt;/strong&gt; — after opening a file from the tree, a ← Back button returns you to the directory view&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Other preview features&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Expand / collapse&lt;/strong&gt; — toggle between compact summary row and full panel&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Open in folder&lt;/strong&gt; — reveal the file in Finder/Explorer with one click&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Load more lines&lt;/strong&gt; — incrementally load content above or below a partial read window&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Text selection&lt;/strong&gt; — highlight text in any preview; the AI can see and reference your selection&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Fuzzy Search Log Analysis (npm scripts)&lt;/h2&gt; 
&lt;p&gt;The fuzzy search logging system includes convenient npm scripts for analyzing logs outside of the MCP environment:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# View recent fuzzy search logs
npm run logs:view -- --count 20

# Analyze patterns and performance
npm run logs:analyze -- --threshold 0.8

# Export logs to CSV or JSON
npm run logs:export -- --format json --output analysis.json

# Clear all logs (with confirmation)
npm run logs:clear
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For detailed documentation on these scripts, see &lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/scripts/README.md&quot;&gt;scripts/README.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Fuzzy Search Logs&lt;/h2&gt; 
&lt;p&gt;Desktop Commander includes comprehensive logging for fuzzy search operations in the &lt;code&gt;edit_block&lt;/code&gt; tool. When an exact match isn&#39;t found, the system performs a fuzzy search and logs detailed information for analysis.&lt;/p&gt; 
&lt;h3&gt;What Gets Logged&lt;/h3&gt; 
&lt;p&gt;Every fuzzy search operation logs:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Search and found text&lt;/strong&gt;: The text you&#39;re looking for vs. what was found&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Similarity score&lt;/strong&gt;: How close the match is (0-100%)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Execution time&lt;/strong&gt;: How long the search took&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Character differences&lt;/strong&gt;: Detailed diff showing exactly what&#39;s different&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;File metadata&lt;/strong&gt;: Extension, search/found text lengths&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Character codes&lt;/strong&gt;: Specific character codes causing differences&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Log Location&lt;/h3&gt; 
&lt;p&gt;Logs are automatically saved to:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;macOS/Linux&lt;/strong&gt;: &lt;code&gt;~/.claude-server-commander-logs/fuzzy-search.log&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Windows&lt;/strong&gt;: &lt;code&gt;%USERPROFILE%\.claude-server-commander-logs\fuzzy-search.log&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;What You&#39;ll Learn&lt;/h3&gt; 
&lt;p&gt;The fuzzy search logs help you understand:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Why exact matches fail&lt;/strong&gt;: Common issues like whitespace differences, line endings, or character encoding&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Performance patterns&lt;/strong&gt;: How search complexity affects execution time&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;File type issues&lt;/strong&gt;: Which file extensions commonly have matching problems&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Character encoding problems&lt;/strong&gt;: Specific character codes that cause diffs&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Audit Logging&lt;/h2&gt; 
&lt;p&gt;Desktop Commander now includes comprehensive logging for all tool calls:&lt;/p&gt; 
&lt;h3&gt;What Gets Logged&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Every tool call is logged with timestamp, tool name, and arguments (sanitized for privacy)&lt;/li&gt; 
 &lt;li&gt;Logs are rotated automatically when they reach 10MB in size&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Log Location&lt;/h3&gt; 
&lt;p&gt;Logs are saved to:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;macOS/Linux&lt;/strong&gt;: &lt;code&gt;~/.claude-server-commander/claude_tool_call.log&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Windows&lt;/strong&gt;: &lt;code&gt;%USERPROFILE%\.claude-server-commander\claude_tool_call.log&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;This audit trail helps with debugging, security monitoring, and understanding how Claude is interacting with your system.&lt;/p&gt; 
&lt;h2&gt;Handling Long-Running Commands&lt;/h2&gt; 
&lt;p&gt;For commands that may take a while:&lt;/p&gt; 
&lt;h2&gt;Configuration Management&lt;/h2&gt; 
&lt;h3&gt;⚠️ Important Security Warnings&lt;/h3&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;For comprehensive security information and vulnerability reporting&lt;/strong&gt;: See &lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/SECURITY.md&quot;&gt;SECURITY.md&lt;/a&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Known security limitations&lt;/strong&gt;: Directory restrictions and command blocking can be bypassed through various methods including symlinks, command substitution, and absolute paths or code execution&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Always change configuration in a separate chat window&lt;/strong&gt; from where you&#39;re doing your actual work. Claude may sometimes attempt to modify configuration settings (like &lt;code&gt;allowedDirectories&lt;/code&gt;) if it encounters filesystem access restrictions.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;The &lt;code&gt;allowedDirectories&lt;/code&gt; setting currently only restricts filesystem operations&lt;/strong&gt;, not terminal commands. Terminal commands can still access files outside allowed directories.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;For production security&lt;/strong&gt;: Use the &lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/#option-6-docker-installation-%F0%9F%90%B3-%E2%AD%90-auto-updates-no-nodejs-required&quot;&gt;Docker installation&lt;/a&gt; which provides complete isolation from your host system.&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Configuration Tools&lt;/h3&gt; 
&lt;p&gt;You can manage server configuration using the provided tools:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;// Get the entire config
get_config({})

// Set a specific config value
set_config_value({ &quot;key&quot;: &quot;defaultShell&quot;, &quot;value&quot;: &quot;/bin/zsh&quot; })

// Set multiple config values using separate calls
set_config_value({ &quot;key&quot;: &quot;defaultShell&quot;, &quot;value&quot;: &quot;/bin/bash&quot; })
set_config_value({ &quot;key&quot;: &quot;allowedDirectories&quot;, &quot;value&quot;: [&quot;/Users/username/projects&quot;] })
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The configuration is saved to &lt;code&gt;config.json&lt;/code&gt; in the server&#39;s working directory and persists between server restarts.&lt;/p&gt; 
&lt;h4&gt;Understanding fileWriteLineLimit&lt;/h4&gt; 
&lt;p&gt;The &lt;code&gt;fileWriteLineLimit&lt;/code&gt; setting controls how many lines can be written in a single &lt;code&gt;write_file&lt;/code&gt; operation (default: 50 lines). This limit exists for several important reasons:&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Why the limit exists:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;AIs are wasteful with tokens&lt;/strong&gt;: Instead of doing two small edits in a file, AIs may decide to rewrite the whole thing. We&#39;re trying to force AIs to do things in smaller changes as it saves time and tokens&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Claude UX message limits&lt;/strong&gt;: There are limits within one message and hitting &quot;Continue&quot; does not really work. What we&#39;re trying here is to make AI work in smaller chunks so when you hit that limit, multiple chunks have succeeded and that work is not lost - it just needs to restart from the last chunk&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Setting the limit:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;// You can set it to thousands if you want
set_config_value({ &quot;key&quot;: &quot;fileWriteLineLimit&quot;, &quot;value&quot;: 1000 })

// Or keep it smaller to force more efficient behavior
set_config_value({ &quot;key&quot;: &quot;fileWriteLineLimit&quot;, &quot;value&quot;: 25 })
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Maximum value&lt;/strong&gt;: You can set it to thousands if you want - there&#39;s no technical restriction.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Best practices&lt;/strong&gt;:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Keep the default (50) to encourage efficient AI behavior and avoid token waste&lt;/li&gt; 
 &lt;li&gt;The system automatically suggests chunking when limits are exceeded&lt;/li&gt; 
 &lt;li&gt;Smaller chunks mean less work lost when Claude hits message limits&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Best Practices&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Create a dedicated chat for configuration changes&lt;/strong&gt;: Make all your config changes in one chat, then start a new chat for your actual work.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Be careful with empty &lt;code&gt;allowedDirectories&lt;/code&gt;&lt;/strong&gt;: Setting this to an empty array (&lt;code&gt;[]&lt;/code&gt;) grants access to your entire filesystem for file operations.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Use specific paths&lt;/strong&gt;: Instead of using broad paths like &lt;code&gt;/&lt;/code&gt;, specify exact directories you want to access.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Always verify configuration after changes&lt;/strong&gt;: Use &lt;code&gt;get_config({})&lt;/code&gt; to confirm your changes were applied correctly.&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Command Line Options&lt;/h2&gt; 
&lt;p&gt;Desktop Commander supports several command line options for customizing behavior:&lt;/p&gt; 
&lt;h3&gt;Disable Onboarding&lt;/h3&gt; 
&lt;p&gt;By default, Desktop Commander shows helpful onboarding prompts to new users (those with fewer than 10 tool calls). You can disable this behavior:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Disable onboarding for this session
node dist/index.js --no-onboarding

# Or if using npm scripts
npm run start:no-onboarding

# For npx installations, modify your claude_desktop_config.json:
{
  &quot;mcpServers&quot;: {
    &quot;desktop-commander&quot;: {
      &quot;command&quot;: &quot;npx&quot;,
      &quot;args&quot;: [
        &quot;-y&quot;,
        &quot;@wonderwhy-er/desktop-commander@latest&quot;,
        &quot;--no-onboarding&quot;
      ]
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;When onboarding is automatically disabled:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;When the MCP client name is set to &quot;desktop-commander&quot;&lt;/li&gt; 
 &lt;li&gt;When using the &lt;code&gt;--no-onboarding&lt;/code&gt; flag&lt;/li&gt; 
 &lt;li&gt;After users have used onboarding prompts or made 10+ tool calls&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Debug information:&lt;/strong&gt; The server will log when onboarding is disabled: &lt;code&gt;&quot;Onboarding disabled via --no-onboarding flag&quot;&lt;/code&gt;&lt;/p&gt; 
&lt;h2&gt;Using Different Shells&lt;/h2&gt; 
&lt;p&gt;You can specify which shell to use for command execution:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;// Using default shell (bash or system default)
execute_command({ &quot;command&quot;: &quot;echo $SHELL&quot; })

// Using zsh specifically
execute_command({ &quot;command&quot;: &quot;echo $SHELL&quot;, &quot;shell&quot;: &quot;/bin/zsh&quot; })

// Using bash specifically
execute_command({ &quot;command&quot;: &quot;echo $SHELL&quot;, &quot;shell&quot;: &quot;/bin/bash&quot; })
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This allows you to use shell-specific features or maintain consistent environments across commands.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;code&gt;execute_command&lt;/code&gt; returns after timeout with initial output&lt;/li&gt; 
 &lt;li&gt;Command continues in background&lt;/li&gt; 
 &lt;li&gt;Use &lt;code&gt;read_output&lt;/code&gt; with PID to get new output&lt;/li&gt; 
 &lt;li&gt;Use &lt;code&gt;force_terminate&lt;/code&gt; to stop if needed&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Debugging&lt;/h2&gt; 
&lt;p&gt;If you need to debug the server, you can install it in debug mode:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Using npx
npx @wonderwhy-er/desktop-commander@latest setup --debug

# Or if installed locally
npm run setup:debug
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This will:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Configure Claude to use a separate &quot;desktop-commander&quot; server&lt;/li&gt; 
 &lt;li&gt;Enable Node.js inspector protocol with &lt;code&gt;--inspect-brk=9229&lt;/code&gt; flag&lt;/li&gt; 
 &lt;li&gt;Pause execution at the start until a debugger connects&lt;/li&gt; 
 &lt;li&gt;Enable additional debugging environment variables&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;To connect a debugger:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;In Chrome, visit &lt;code&gt;chrome://inspect&lt;/code&gt; and look for the Node.js instance&lt;/li&gt; 
 &lt;li&gt;In VS Code, use the &quot;Attach to Node Process&quot; debug configuration&lt;/li&gt; 
 &lt;li&gt;Other IDEs/tools may have similar &quot;attach&quot; options for Node.js debugging&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Important debugging notes:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;The server will pause on startup until a debugger connects (due to the &lt;code&gt;--inspect-brk&lt;/code&gt; flag)&lt;/li&gt; 
 &lt;li&gt;If you don&#39;t see activity during debugging, ensure you&#39;re connected to the correct Node.js process&lt;/li&gt; 
 &lt;li&gt;Multiple Node processes may be running; connect to the one on port 9229&lt;/li&gt; 
 &lt;li&gt;The debug server is identified as &quot;desktop-commander-debug&quot; in Claude&#39;s MCP server list&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Troubleshooting:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;If Claude times out while trying to use the debug server, your debugger might not be properly connected&lt;/li&gt; 
 &lt;li&gt;When properly connected, the process will continue execution after hitting the first breakpoint&lt;/li&gt; 
 &lt;li&gt;You can add additional breakpoints in your IDE once connected&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Model Context Protocol Integration&lt;/h2&gt; 
&lt;p&gt;This project extends the MCP Filesystem Server to enable:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Local server support in Claude Desktop&lt;/li&gt; 
 &lt;li&gt;Full system command execution&lt;/li&gt; 
 &lt;li&gt;Process management&lt;/li&gt; 
 &lt;li&gt;File operations&lt;/li&gt; 
 &lt;li&gt;Code editing with search/replace blocks&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Created as part of exploring Claude MCPs: &lt;a href=&quot;https://youtube.com/live/TlbjFDbl5Us&quot;&gt;https://youtube.com/live/TlbjFDbl5Us&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Support Desktop Commander&lt;/h2&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h3&gt;📢 SUPPORT THIS PROJECT&lt;/h3&gt; 
 &lt;p&gt;&lt;strong&gt;Desktop Commander MCP is free and open source, but needs your support to thrive!&lt;/strong&gt;&lt;/p&gt; 
 &lt;div style=&quot;background-color: #f8f9fa; padding: 15px; border-radius: 10px; margin: 20px 0; border: 2px solid #007bff;&quot;&gt; 
  &lt;p&gt;Our philosophy is simple: we don&#39;t want you to pay for it if you&#39;re not successful. But if Desktop Commander contributes to your success, please consider contributing to ours.&lt;/p&gt; 
  &lt;p&gt;&lt;strong&gt;Ways to support:&lt;/strong&gt;&lt;/p&gt; 
  &lt;ul style=&quot;list-style-type: none; padding: 0;&quot;&gt; 
   &lt;li&gt;🌟 &lt;a href=&quot;https://github.com/sponsors/wonderwhy-er&quot;&gt;&lt;strong&gt;GitHub Sponsors&lt;/strong&gt;&lt;/a&gt; - Recurring support&lt;/li&gt; 
   &lt;li&gt;☕ &lt;a href=&quot;https://www.buymeacoffee.com/wonderwhyer&quot;&gt;&lt;strong&gt;Buy Me A Coffee&lt;/strong&gt;&lt;/a&gt; - One-time contributions&lt;/li&gt; 
   &lt;li&gt;💖 &lt;a href=&quot;https://www.patreon.com/c/EduardsRuzga&quot;&gt;&lt;strong&gt;Patreon&lt;/strong&gt;&lt;/a&gt; - Become a patron and support us monthly&lt;/li&gt; 
   &lt;li&gt;⭐ &lt;a href=&quot;https://github.com/wonderwhy-er/DesktopCommanderMCP&quot;&gt;&lt;strong&gt;Star on GitHub&lt;/strong&gt;&lt;/a&gt; - Help others discover the project&lt;/li&gt; 
  &lt;/ul&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;h3&gt;❤️ Supporters Hall of Fame&lt;/h3&gt; 
&lt;p&gt;Generous supporters are featured here. Thank you for helping make this project possible!&lt;/p&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/jonrichards&quot;&gt; &lt;img src=&quot;https://github.com/jonrichards.png&quot; width=&quot;100px;&quot; alt=&quot;Jon Richards&quot; /&gt; &lt;br /&gt; &lt;sub&gt;&lt;b&gt;Jon Richards&lt;/b&gt;&lt;/sub&gt; &lt;/a&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/stepanic&quot;&gt; &lt;img src=&quot;https://github.com/stepanic.png&quot; width=&quot;100px;&quot; alt=&quot;Matija Stepanic&quot; /&gt; &lt;br /&gt; &lt;sub&gt;&lt;b&gt;Matija Stepanic&lt;/b&gt;&lt;/sub&gt; &lt;/a&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
&lt;/div&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;strong&gt;Why your support matters&lt;/strong&gt;&lt;/summary&gt; 
 &lt;p&gt;Your support allows us to:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Continue active development and maintenance&lt;/li&gt; 
  &lt;li&gt;Add new features and integrations&lt;/li&gt; 
  &lt;li&gt;Improve compatibility across platforms&lt;/li&gt; 
  &lt;li&gt;Provide better documentation and examples&lt;/li&gt; 
  &lt;li&gt;Build a stronger community around the project&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;h2&gt;Website&lt;/h2&gt; 
&lt;p&gt;Visit our official website at &lt;a href=&quot;https://desktopcommander.app/&quot;&gt;https://desktopcommander.app/&lt;/a&gt; for the latest information, documentation, and updates.&lt;/p&gt; 
&lt;h2&gt;Media&lt;/h2&gt; 
&lt;p&gt;Learn more about this project through these resources:&lt;/p&gt; 
&lt;h3&gt;Article&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://wonderwhy-er.medium.com/claude-with-mcps-replaced-cursor-windsurf-how-did-that-happen-c1d1e2795e96&quot;&gt;Claude with MCPs replaced Cursor &amp;amp; Windsurf. How did that happen?&lt;/a&gt; - A detailed exploration of how Claude with Model Context Protocol capabilities is changing developer workflows.&lt;/p&gt; 
&lt;h3&gt;Video&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=ly3bed99Dy8&quot;&gt;Claude Desktop Commander Video Tutorial&lt;/a&gt; - Watch how to set up and use the Commander effectively.&lt;/p&gt; 
&lt;h3&gt;Publication at AnalyticsIndiaMag&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://analyticsindiamag.com/ai-features/this-developer-ditched-windsurf-cursor-using-claude-with-mcps/&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/testemonials%2Fanalyticsindiamag.png&quot; alt=&quot;analyticsindiamag.png&quot; /&gt; This Developer Ditched Windsurf, Cursor Using Claude with MCPs&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Community&lt;/h3&gt; 
&lt;p&gt;Join our &lt;a href=&quot;https://discord.gg/kQ27sNnZr7&quot;&gt;Discord server&lt;/a&gt; to get help, share feedback, and connect with other users.&lt;/p&gt; 
&lt;h2&gt;Testimonials&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=ly3bed99Dy8&amp;amp;lc=UgyyBt6_ShdDX_rIOad4AaABAg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wonderwhy-er/ClaudeComputerCommander/main/testemonials/img.png&quot; alt=&quot;It&#39;s a life saver! I paid Claude + Cursor currently which I always feel it&#39;s kind of duplicated. This solves the problem ultimately. I am so happy. Thanks so much. Plus today Claude has added the web search support. With this MCP + Internet search, it writes the code with the latest updates. It&#39;s so good when Cursor doesn&#39;t work sometimes or all the fast requests are used.&quot; /&gt; https://www.youtube.com/watch?v=ly3bed99Dy8&amp;amp;lc=UgyyBt6_ShdDX_rIOad4AaABAg &lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=ly3bed99Dy8&amp;amp;lc=UgztdHvDMqTb9jiqnf54AaABAg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wonderwhy-er/ClaudeComputerCommander/main/testemonials/img_1.png&quot; alt=&quot;This is the first comment I&#39;ve ever left on a youtube video, THANK YOU! I&#39;ve been struggling to update an old Flutter app in Cursor from an old pre null-safety version to a current version and implemented null-safety using Claude 3.7. I got most of the way but had critical BLE errors that I spent days trying to resolve with no luck. I tried Augment Code but it didn&#39;t get it either. I implemented your MCP in Claude desktop and was able to compare the old and new codebase fully, accounting for the updates in the code, and fix the issues in a couple of hours. A word of advice to people trying this, be sure to stage changes and commit when appropriate to be able to undo unwanted changes. Amazing!&quot; /&gt; https://www.youtube.com/watch?v=ly3bed99Dy8&amp;amp;lc=UgztdHvDMqTb9jiqnf54AaABAg&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=ly3bed99Dy8&amp;amp;lc=UgyQFTmYLJ4VBwIlmql4AaABAg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wonderwhy-er/ClaudeComputerCommander/main/testemonials/img_2.png&quot; alt=&quot;Great! I just used Windsurf, bought license a week ago, for upgrading old fullstack socket project and it works many times good or ok but also many times runs away in cascade and have to revert all changes losing hundereds of cascade tokens. In just a week down to less than 100 tokens and do not want to buy only 300 tokens for 10$. This Claude MCP ,bought claude Pro finally needed but wanted very good reason to also have next to ChatGPT, and now can code as much as I want not worrying about token cost.
Also this is much more than code editing it is much more thank you for great video!&quot; /&gt; https://www.youtube.com/watch?v=ly3bed99Dy8&amp;amp;lc=UgyQFTmYLJ4VBwIlmql4AaABAg&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=ly3bed99Dy8&amp;amp;lc=Ugy4-exy166_Ma7TH-h4AaABAg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wonderwhy-er/ClaudeComputerCommander/main/testemonials/img_3.png&quot; alt=&quot;it is a great tool, thank you, I like using it, as it gives claude an ability to do surgical edits, making it more like a human developer.&quot; /&gt; https://www.youtube.com/watch?v=ly3bed99Dy8&amp;amp;lc=Ugy4-exy166_Ma7TH-h4AaABAg&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://medium.com/@pharmx/you-sir-are-my-hero-62cff5836a3e&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wonderwhy-er/ClaudeComputerCommander/main/testemonials/img_4.png&quot; alt=&quot;You sir are my hero. You&#39;ve pretty much summed up and described my experiences of late, much better than I could have. Cursor and Windsurf both had me frustrated to the point where I was almost yelling at my computer screen. Out of whimsy, I thought to myself why not just ask Claude directly, and haven&#39;t looked back since.
Claude first to keep my sanity in check, then if necessary, engage with other IDEs, frameworks, etc. I thought I was the only one, glad to see I&#39;m not lol.
33
1&quot; /&gt; https://medium.com/@pharmx/you-sir-are-my-hero-62cff5836a3e&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;If you find this project useful, please consider giving it a ⭐ star on GitHub! This helps others discover the project and encourages further development.&lt;/p&gt; 
&lt;p&gt;We welcome contributions from the community! Whether you&#39;ve found a bug, have a feature request, or want to contribute code, here&#39;s how you can help:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Found a bug?&lt;/strong&gt; Open an issue at &lt;a href=&quot;https://github.com/wonderwhy-er/DesktopCommanderMCP/issues&quot;&gt;github.com/wonderwhy-er/DesktopCommanderMCP/issues&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Have a feature idea?&lt;/strong&gt; Submit a feature request in the issues section&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Want to contribute code?&lt;/strong&gt; Fork the repository, create a branch, and submit a pull request&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Questions or discussions?&lt;/strong&gt; Start a discussion in the GitHub Discussions tab&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;All contributions, big or small, are greatly appreciated!&lt;/p&gt; 
&lt;p&gt;If you find this tool valuable for your workflow, please consider &lt;a href=&quot;https://www.buymeacoffee.com/wonderwhyer&quot;&gt;supporting the project&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Frequently Asked Questions&lt;/h2&gt; 
&lt;p&gt;Here are answers to some common questions. For a more comprehensive FAQ, see our &lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/FAQ.md&quot;&gt;detailed FAQ document&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;What is Desktop Commander?&lt;/h3&gt; 
&lt;p&gt;It&#39;s an MCP tool that enables Claude Desktop to access your file system and terminal, turning Claude into a versatile assistant for coding, automation, codebase exploration, and more.&lt;/p&gt; 
&lt;h3&gt;How is this different from Cursor/Windsurf?&lt;/h3&gt; 
&lt;p&gt;Unlike IDE-focused tools, Claude Desktop Commander provides a solution-centric approach that works with your entire OS, not just within a coding environment. Claude reads files in full rather than chunking them, can work across multiple projects simultaneously, and executes changes in one go rather than requiring constant review.&lt;/p&gt; 
&lt;h3&gt;Do I need to pay for API credits?&lt;/h3&gt; 
&lt;p&gt;No. This tool works with Claude Desktop&#39;s standard Pro subscription ($20/month), not with API calls, so you won&#39;t incur additional costs beyond the subscription fee.&lt;/p&gt; 
&lt;h3&gt;Does Desktop Commander automatically update?&lt;/h3&gt; 
&lt;p&gt;Yes, when installed through npx or Smithery, Desktop Commander automatically updates to the latest version when you restart Claude. No manual update process is needed.&lt;/p&gt; 
&lt;h3&gt;What are the most common use cases?&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Exploring and understanding complex codebases&lt;/li&gt; 
 &lt;li&gt;Generating diagrams and documentation&lt;/li&gt; 
 &lt;li&gt;Automating tasks across your system&lt;/li&gt; 
 &lt;li&gt;Working with multiple projects simultaneously&lt;/li&gt; 
 &lt;li&gt;Making surgical code changes with precise control&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;I&#39;m having trouble installing or using the tool. Where can I get help?&lt;/h3&gt; 
&lt;p&gt;Join our &lt;a href=&quot;https://discord.gg/kQ27sNnZr7&quot;&gt;Discord server&lt;/a&gt; for community support, check the &lt;a href=&quot;https://github.com/wonderwhy-er/DesktopCommanderMCP/issues&quot;&gt;GitHub issues&lt;/a&gt; for known problems, or review the &lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/FAQ.md&quot;&gt;full FAQ&lt;/a&gt; for troubleshooting tips. You can also visit our &lt;a href=&quot;https://desktopcommander.app#faq&quot;&gt;website FAQ section&lt;/a&gt; for a more user-friendly experience. If you encounter a new issue, please consider &lt;a href=&quot;https://github.com/wonderwhy-er/DesktopCommanderMCP/issues/new&quot;&gt;opening a GitHub issue&lt;/a&gt; with details about your problem.&lt;/p&gt; 
&lt;h3&gt;How do I report security vulnerabilities?&lt;/h3&gt; 
&lt;p&gt;Please create a &lt;a href=&quot;https://github.com/wonderwhy-er/DesktopCommanderMCP/issues&quot;&gt;GitHub Issue&lt;/a&gt; with detailed information about any security vulnerabilities you discover. See our &lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/SECURITY.md&quot;&gt;Security Policy&lt;/a&gt; for complete guidelines on responsible disclosure.&lt;/p&gt; 
&lt;h2&gt;Data Collection &amp;amp; Privacy&lt;/h2&gt; 
&lt;p&gt;Desktop Commander collects limited, pseudonymous telemetry to improve the tool. We do not collect file contents, file paths, or command arguments.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Opt-out:&lt;/strong&gt; Ask Claude to &quot;disable Desktop Commander telemetry&quot; or set &lt;code&gt;&quot;telemetryEnabled&quot;: false&lt;/code&gt; in your config.&lt;/p&gt; 
&lt;p&gt;For complete details, see our &lt;a href=&quot;https://raw.githubusercontent.com/wonderwhy-er/DesktopCommanderMCP/main/PRIVACY.md&quot;&gt;Privacy Policy&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Verifications&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://mseep.ai/app/25ff7a06-58bc-40b8-bd79-ebb715140f1a&quot;&gt;&lt;img src=&quot;https://mseep.ai/badge.svg?sanitize=true&quot; alt=&quot;Verified on MseeP&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;MIT&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/4e5d42b84ae508145c6f21b57593031fcf1ebbeb662d604d3c50fa46db0a8b38/wonderwhy-er/DesktopCommanderMCP" medium="image" />
      
    </item>
    
    <item>
      <title>facebook/astryx</title>
      <link>https://github.com/facebook/astryx</link>
      <description>&lt;p&gt;An open source design system that&#39;s fully customizable and agent ready&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://lookaside.facebook.com/assets/astryx/Astryx-Banner.png&quot; alt=&quot;Astryx&quot; width=&quot;100%&quot; /&gt; 
 &lt;h1&gt;Astryx&lt;/h1&gt; 
 &lt;p&gt;An open source design system that&#39;s fully customizable and built for how we build now: &lt;br /&gt; by people and the agents working alongside them.&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Currently in Beta&lt;/strong&gt; · Built on &lt;a href=&quot;https://react.dev&quot;&gt;React 19+&lt;/a&gt; and &lt;a href=&quot;https://stylexjs.com&quot;&gt;StyleX&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://www.npmjs.com/package/@astryxdesign/core&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/@astryxdesign/core?label=npm&amp;amp;color=cb3837&amp;amp;logo=npm&quot; alt=&quot;npm version&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/facebook/astryx/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/l/@astryxdesign/core?color=blue&quot; alt=&quot;license MIT&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/facebook/astryx/wiki/Contributing&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/PRs-welcome-brightgreen.svg?sanitize=true&quot; alt=&quot;PRs welcome&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://astryx.atmeta.com&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Docs-astryx.atmeta.com-6741d9?logo=readthedocs&amp;amp;logoColor=white&quot; alt=&quot;Docs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://facebook.github.io/astryx/storybook/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Storybook-live-ff4785?logo=storybook&amp;amp;logoColor=white&quot; alt=&quot;Storybook&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://facebook.github.io/astryx/sandbox/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Sandbox-playground-A9792B&quot; alt=&quot;Sandbox&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://astryx.atmeta.com&quot;&gt;Docs&lt;/a&gt;&lt;/strong&gt; · &lt;strong&gt;&lt;a href=&quot;https://facebook.github.io/astryx/storybook/&quot;&gt;Storybook&lt;/a&gt;&lt;/strong&gt; · &lt;strong&gt;&lt;a href=&quot;https://facebook.github.io/astryx/sandbox/&quot;&gt;Sandbox&lt;/a&gt;&lt;/strong&gt; · &lt;strong&gt;&lt;a href=&quot;https://github.com/facebook/astryx/wiki/Contributing&quot;&gt;Contributing&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Overview&lt;/h2&gt; 
&lt;p&gt;Astryx is an open source design system that grew inside Meta over the last eight years, where it became the most-used and largest design system in the company — powering 13,000+ apps and shaped by the engineers, designers, and product teams who depend on it every day.&lt;/p&gt; 
&lt;p&gt;It ships 150+ accessible components, brand-level theming, dark mode, ready-to-ship templates, and a CLI as one cohesive system. You import pre-built CSS and use typed React components — no build plugin, no styling library to adopt — and both people and AI assistants build with the same tooling.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;What makes Astryx different:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Open internals.&lt;/strong&gt; Components are built to be composed at any level, not locked behind a closed top-level API. The building blocks you&#39;d reach for are exported directly, and when you need to go deeper, swizzle ejects a component&#39;s full source into your project to own.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;No styling lock-in.&lt;/strong&gt; Astryx authors its styles with StyleX, but that&#39;s invisible to consumers. Override with &lt;code&gt;className&lt;/code&gt; using Tailwind, CSS modules, or plain CSS — whatever your project already uses.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Customize without wrapping.&lt;/strong&gt; A theme is a set of CSS custom property overrides, so a designer can make Astryx unmistakably theirs without forking or wrapping component source.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Built for people and agents.&lt;/strong&gt; The API, docs, and CLI are designed together so a person and an AI assistant build the same way, from the same reference.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Getting Started&lt;/h2&gt; 
&lt;p&gt;Astryx requires &lt;strong&gt;React 19&lt;/strong&gt; or later (&lt;code&gt;react&lt;/code&gt; and &lt;code&gt;react-dom&lt;/code&gt; are peer dependencies of &lt;code&gt;@astryxdesign/core&lt;/code&gt;).&lt;/p&gt; 
&lt;p&gt;Install Astryx, a theme, and its peer dependencies:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# npm
npm install @astryxdesign/core @astryxdesign/theme-neutral @stylexjs/stylex
npm install -D @astryxdesign/cli

# pnpm
pnpm add @astryxdesign/core @astryxdesign/theme-neutral @stylexjs/stylex
pnpm add -D @astryxdesign/cli

# yarn
yarn add @astryxdesign/core @astryxdesign/theme-neutral @stylexjs/stylex
yarn add -D @astryxdesign/cli
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The simplest setup is a few CSS imports plus a theme provider — no build plugin, no PostCSS or Babel config. See the &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/facebook/astryx/main/packages/core/README.md#quick-start&quot;&gt;@astryxdesign/core README&lt;/a&gt;&lt;/strong&gt; for the full guide (Next.js, Tailwind, Vite, and CDN).&lt;/p&gt; 
&lt;p&gt;For reliable CLI access, add a script to your &lt;code&gt;package.json&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;&quot;scripts&quot;: {
  &quot;astryx&quot;: &quot;node node_modules/@astryxdesign/cli/clients/cli/bin/astryx.mjs&quot;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Then use it as &lt;code&gt;npm run astryx -- component --list&lt;/code&gt;. This avoids path errors when AI assistants or new developers invoke the CLI directly.&lt;/p&gt; 
&lt;h2&gt;Packages&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Package&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
   &lt;th&gt;README&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/facebook/astryx/main/packages/core&quot;&gt;&lt;code&gt;@astryxdesign/core&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Components, theme system, and utilities&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/facebook/astryx/main/packages/core/README.md&quot;&gt;README&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/facebook/astryx/main/packages/cli&quot;&gt;&lt;code&gt;@astryxdesign/cli&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;CLI tooling: component docs, templates, scaffolding, themes, and codemods&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/facebook/astryx/main/packages/cli/README.md&quot;&gt;README&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/facebook/astryx/main/packages/build&quot;&gt;&lt;code&gt;@astryxdesign/build&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Build plugins for StyleX source builds&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/facebook/astryx/main/packages/build/README.md&quot;&gt;README&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/facebook/astryx/main/packages/themes&quot;&gt;&lt;code&gt;@astryxdesign/theme-*&lt;/code&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Seven ready-made, fully customizable themes (neutral, butter, chocolate, matcha, stone, gothic, y2k)&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/facebook/astryx/main/packages/themes&quot;&gt;README&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;code&gt;@astryxdesign/lab&lt;/code&gt; (experimental components) is used internally for Storybook and the sandbox and is not published to npm. &lt;code&gt;@astryxdesign/vega&lt;/code&gt; (Vega/Vega-Lite chart wrapper) and &lt;code&gt;@astryxdesign/charts&lt;/code&gt; (chart components) are published to npm only under the &lt;code&gt;@canary&lt;/code&gt; dist-tag — there is no stable release yet.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;Principles&lt;/h2&gt; 
&lt;p&gt;These are the promises Astryx makes to the people building on it.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Guidance over enforcement.&lt;/strong&gt; Components give you capability rather than guardrails that fight you. Design opinions live in docs and examples — if you pass a value, the component renders it.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Strong, documented conventions.&lt;/strong&gt; Every component follows the same naming, prop, and composition rules, and every one is thoroughly documented — so once you&#39;ve learned a few, the rest feel familiar, and both people and AI can predict how an unfamiliar component behaves.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;One system for humans and AI.&lt;/strong&gt; The API, conventions, docs, and CLI are designed together so people and AI assistants build the same way. Every change that made Astryx easier for AI made it easier for people too.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Earned by measurement.&lt;/strong&gt; We test conventions rather than assert them, hold the results loosely, and revisit them when a new situation proves them wrong.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Architecture&lt;/h2&gt; 
&lt;h3&gt;Foundations&lt;/h3&gt; 
&lt;p&gt;The building blocks for visually cohesive and accessible interfaces: typography, color, layout, and accessibility.&lt;/p&gt; 
&lt;h3&gt;Components&lt;/h3&gt; 
&lt;p&gt;A library of 150+ reusable UI building blocks with full TypeScript support.&lt;/p&gt; 
&lt;h3&gt;Patterns&lt;/h3&gt; 
&lt;p&gt;Battle-tested design solutions for common interactions and workflows: table pages, detail page layouts, form wizards, navigation patterns, data entry flows.&lt;/p&gt; 
&lt;h2&gt;Project Structure&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Directory&lt;/th&gt; 
   &lt;th&gt;Purpose&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;apps/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Example apps, the docsite, and Storybook&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;packages/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Published packages: core, cli, build, themes&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;internal/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Internal tooling: test utilities, eslint plugin, vibe tests&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;We welcome contributions! See &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/facebook/astryx/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt;&lt;/strong&gt; for the full guide.&lt;/p&gt; 
&lt;p&gt;Our conventions and review rubrics live in the &lt;a href=&quot;https://github.com/facebook/astryx/wiki/Contributing&quot;&gt;Contributing wiki&lt;/a&gt; — including &lt;a href=&quot;https://github.com/facebook/astryx/wiki/API-Conventions&quot;&gt;API Conventions&lt;/a&gt;, &lt;a href=&quot;https://github.com/facebook/astryx/wiki/Design-Conventions&quot;&gt;Design Conventions&lt;/a&gt;, the &lt;a href=&quot;https://github.com/facebook/astryx/wiki/Component-Lifecycle&quot;&gt;Component Lifecycle&lt;/a&gt;, and the &lt;a href=&quot;https://github.com/facebook/astryx/wiki/Contributing-Templates&quot;&gt;Contributing Templates&lt;/a&gt; and &lt;a href=&quot;https://github.com/facebook/astryx/wiki/Blog-Review-Rubric&quot;&gt;Blog Review&lt;/a&gt; rubrics. Read the relevant one before opening a PR.&lt;/p&gt; 
&lt;p&gt;Quick start for contributors: this repo uses &lt;strong&gt;Node 22+ on an active LTS line&lt;/strong&gt; and &lt;strong&gt;pnpm 11&lt;/strong&gt;. Install pnpm directly, or enable &lt;a href=&quot;https://nodejs.org/api/corepack.html&quot;&gt;Corepack&lt;/a&gt; once so the pinned pnpm version installs automatically:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;corepack enable
pnpm install
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;If &lt;code&gt;corepack&lt;/code&gt; is missing, install pnpm directly or install Corepack manually; see the troubleshooting notes in &lt;a href=&quot;https://raw.githubusercontent.com/facebook/astryx/main/CONTRIBUTING.md#troubleshooting&quot;&gt;CONTRIBUTING.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;MIT&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/2aacc3e43363580e40a247e3327b02c996661783633f06fd0dd0d3995698ae8f/facebook/astryx" medium="image" />
      
    </item>
    
    <item>
      <title>can1357/oh-my-pi</title>
      <link>https://github.com/can1357/oh-my-pi</link>
      <description>&lt;p&gt;⌥ AI Coding agent for the terminal — hash-anchored edits, optimized tool harness, LSP, Python, browser, subagents, and more&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://github.com/can1357/oh-my-pi/raw/main/assets/hero.png?raw=true&quot; alt=&quot;omp&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;strong&gt;A coding agent with the IDE wired in.&lt;/strong&gt; &lt;strong&gt;&lt;a href=&quot;https://omp.sh&quot;&gt;omp.sh&lt;/a&gt;&lt;/strong&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.npmjs.com/package/@oh-my-pi/pi-coding-agent&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/@oh-my-pi/pi-coding-agent?style=flat&amp;amp;colorA=222222&amp;amp;colorB=CB3837&quot; alt=&quot;npm version&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/can1357/oh-my-pi/raw/main/packages/coding-agent/CHANGELOG.md&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/changelog-keep-E05735?style=flat&amp;amp;colorA=222222&quot; alt=&quot;Changelog&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/can1357/oh-my-pi/actions&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/actions/workflow/status/can1357/oh-my-pi/ci.yml?style=flat&amp;amp;colorA=222222&amp;amp;colorB=3FB950&quot; alt=&quot;CI&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/can1357/oh-my-pi/raw/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/can1357/oh-my-pi?style=flat&amp;amp;colorA=222222&amp;amp;colorB=58A6FF&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.typescriptlang.org&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/TypeScript-3178C6?style=flat&amp;amp;colorA=222222&amp;amp;logo=typescript&amp;amp;logoColor=white&quot; alt=&quot;TypeScript&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.rust-lang.org&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Rust-DEA584?style=flat&amp;amp;colorA=222222&amp;amp;logo=rust&amp;amp;logoColor=white&quot; alt=&quot;Rust&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://bun.sh&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/runtime-Bun-f472b6?style=flat&amp;amp;colorA=222222&quot; alt=&quot;Bun&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/4NMW9cdXZa&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Discord-5865F2?style=flat&amp;amp;colorA=222222&amp;amp;logo=discord&amp;amp;logoColor=white&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; Fork of &lt;a href=&quot;https://github.com/badlogic/pi-mono&quot;&gt;Pi&lt;/a&gt; by &lt;a href=&quot;https://github.com/mariozechner&quot;&gt;@mariozechner&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;The most capable agent surface that ships. Continuously tuned by real-world use — complete out of the box, open all the way down.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;60+&lt;/strong&gt; providers · &lt;strong&gt;31&lt;/strong&gt; built-in tools · &lt;strong&gt;14&lt;/strong&gt; lsp ops · &lt;strong&gt;28&lt;/strong&gt; dap ops · &lt;strong&gt;~80k&lt;/strong&gt; lines of Rust core.&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-note&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-info mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Note&lt;/p&gt;
 &lt;p&gt;Pull requests are &lt;strong&gt;temporarily open to everyone&lt;/strong&gt; as a trial. We previously required a vouch before accepting PRs; that requirement is lifted for now while we evaluate how open contributions go. Depending on the results, the vouch system may return.&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Install&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;macOS · Linux&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;curl -fsSL https://omp.sh/install | sh
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Alpine / musl:&lt;/strong&gt; the prebuilt musl binary links &lt;code&gt;libstdc++&lt;/code&gt;/&lt;code&gt;libgcc&lt;/code&gt; dynamically, which stock Alpine does not ship. Install them first: &lt;code&gt;apk add libstdc++ libgcc&lt;/code&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;strong&gt;Homebrew&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;brew install can1357/tap/omp
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Bun (recommended)&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;bun install -g @oh-my-pi/pi-coding-agent
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Windows (PowerShell)&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;irm https://omp.sh/install.ps1 | iex
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Pinned versions (mise)&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;mise use -g github:can1357/oh-my-pi
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;macOS · Linux · Windows · bun ≥ 1.3.14&lt;/p&gt; 
&lt;h3&gt;Shell completions&lt;/h3&gt; 
&lt;p&gt;&lt;code&gt;omp&lt;/code&gt; generates its own completion scripts for &lt;strong&gt;bash&lt;/strong&gt;, &lt;strong&gt;zsh&lt;/strong&gt;, and &lt;strong&gt;fish&lt;/strong&gt; from the live command/flag metadata, so they never drift from the actual CLI. Subcommands, flags, and enum values complete statically; model names (&lt;code&gt;--model&lt;/code&gt;, &lt;code&gt;--smol&lt;/code&gt;, &lt;code&gt;--slow&lt;/code&gt;, &lt;code&gt;--plan&lt;/code&gt;) resolve against the bundled model catalog and &lt;code&gt;--resume&lt;/code&gt; against your on-disk sessions.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;# zsh — add to ~/.zshrc (or write the output into a file on your $fpath)
eval &quot;$(omp completions zsh)&quot;

# bash — add to ~/.bashrc
eval &quot;$(omp completions bash)&quot;

# fish
omp completions fish &amp;gt; ~/.config/fish/completions/omp.fish
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Every tool, &lt;em&gt;benchmaxxed&lt;/em&gt;.&lt;/h2&gt; 
&lt;p&gt;Edits that land on the first attempt. Reads that summarize files instead of dumping their content. Searches that return instantly. Pick any model — omp will get it right.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;model&lt;/th&gt; 
   &lt;th&gt;metric&lt;/th&gt; 
   &lt;th&gt;what&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Grok Code Fast 1&lt;/td&gt; 
   &lt;td&gt;6.7% → 68.3%&lt;/td&gt; 
   &lt;td&gt;Tenfold lift the moment the edit format stops eating the model alive.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Gemini 3 Flash&lt;/td&gt; 
   &lt;td&gt;+5 pp&lt;/td&gt; 
   &lt;td&gt;Over str_replace — beats Google&#39;s own best attempt at the format.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Grok 4 Fast&lt;/td&gt; 
   &lt;td&gt;−61% tokens&lt;/td&gt; 
   &lt;td&gt;Output collapses once the retry loop on bad diffs disappears.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;MiniMax&lt;/td&gt; 
   &lt;td&gt;2.1×&lt;/td&gt; 
   &lt;td&gt;Pass rate more than doubles. Same weights, same prompt.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;read&lt;/code&gt; : summarized snippets · ideal defaults · selector hit rate&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;grep&lt;/code&gt; : fastest in the west&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;lsp&lt;/code&gt; : everything your IDE knows, the agent knows&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;prompts&lt;/code&gt; : adjusted relentlessly for each model&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;a href=&quot;https://blog.can.ac/2026/02/12/the-harness-problem/&quot;&gt;Read the full post ↗&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;The Pi &lt;em&gt;you love&lt;/em&gt;, with &lt;strong&gt;batteries included&lt;/strong&gt;.&lt;/h2&gt; 
&lt;p&gt;Originally built on &lt;a href=&quot;https://github.com/mariozechner&quot;&gt;Mario Zechner&lt;/a&gt;&#39;s wonderful &lt;a href=&quot;https://github.com/badlogic/pi-mono&quot;&gt;Pi&lt;/a&gt;, omp adds everything you&#39;re missing.&lt;/p&gt; 
&lt;h3&gt;01 · Code execution w/ tool-calling&lt;/h3&gt; 
&lt;p&gt;Most harnesses give the agent a Python sandbox and call it done. Ours runs persistent Python and a Bun worker, and either kernel can call back into the agent&#39;s own tools — read, search, task — over a loopback bridge. The agent loads a CSV with tool.read from inside Python, charts it from JavaScript, and never leaves the cell.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://omp.sh/captures/eval.webp&quot; alt=&quot;omp TUI: a single eval session with  (Python) printing a real DataFrame.describe() table, followed by  (JavaScript) running a reduce. Footer: &#39;Both kernels ran in one session.&#39;&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;02 · LSP wired into every write&lt;/h3&gt; 
&lt;p&gt;Ask for a rename and you get a rename. The call goes through workspace/willRenameFiles, so re-exports, barrel files, and aliased imports update before the file moves. Everything your IDE knows, the agent knows.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://omp.sh/captures/lsp.webp&quot; alt=&quot;omp TUI:  returns five hits across three files for the symbol , then  applies the change with edits to format.ts/report.ts/cli.ts, then a  confirmation. Final line: &#39;Rename complete. Five edits across three files…&#39;.&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/docs/lsp-config.md&quot;&gt;Read the LSP config docs&lt;/a&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;h3&gt;03 · Drives a real debugger&lt;/h3&gt; 
&lt;p&gt;A C binary segfaults: the agent attaches lldb, steps to the bad pointer, reads the frame. A Go service hangs: it attaches dlv and walks the goroutines. A Python process is wedged: debugpy, pause, inspect, evaluate. Most agents are still sprinkling print statements.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://omp.sh/clips/dap-poster.webp&quot; alt=&quot;omp TUI: a live lldb-dap session against a native binary at /tmp/omp-native/demo. Adapter=lldb-dap, Status=stopped, Frame=xorshift32, Instruction pointer 0x10000055C, Location demo.c:6:10. Debug scopes and Debug variables cards show locals (x = 57351) and the agent confirms the math: x went from 7 → 57351 (= 7 ^ (7&lt;&lt;13)).&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://omp.sh/clips/dap.mp4&quot;&gt;Watch the capture ↗&lt;/a&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;h3&gt;04 · Time-traveling stream rules&lt;/h3&gt; 
&lt;p&gt;Your rules sit dormant until the model goes off-script. A regex match aborts the stream mid-token, injects the rule as a system reminder, and retries from the same point. You get course-correction without paying context tax on every turn. Injections survive compaction, so the fix sticks.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://omp.sh/clips/ttsr-poster.webp&quot; alt=&quot;omp TUI: agent reading src.rs and about to write Box::leak when the request aborts (red ), an amber  card injects the rule body , and the agent then course-corrects by proposing  and asking the user to confirm.&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://omp.sh/clips/ttsr.mp4&quot;&gt;Watch the capture ↗&lt;/a&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;h3&gt;05 · First-class subagents&lt;/h3&gt; 
&lt;p&gt;Split a job across workers and get typed results back. task fans out into isolated worktrees, each worker runs its own tool surface, and the final yield is a schema-validated object the parent reads directly. No prose to parse, no merge conflicts between siblings, no orphaned edits.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://omp.sh/clips/irc-poster.webp&quot; alt=&quot;omp TUI showing  spawning two subagents  and , the constraints block requiring an IRC DM between peers, the per-subagent status cards with cost and duration, and a final Findings section listing both exports plus an honest &#39;IRC coordination note&#39; about a one-sided handshake.&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://omp.sh/clips/irc.mp4&quot;&gt;Watch the capture ↗&lt;/a&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;Watch the fan-out while it runs: &lt;code&gt;Alt+A&lt;/code&gt; opens &lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/docs/agent-hub.md&quot;&gt;Agent Hub&lt;/a&gt;, where the roster shows current activity and usage for every subagent. Open one to read its live transcript, type a steering message, revive a parked worker, or kill a stuck one without aborting the parent session.&lt;/p&gt; 
&lt;h3&gt;06 · A second model, watching every turn.&lt;/h3&gt; 
&lt;p&gt;Pair a reviewer model to the &#39;advisor&#39; role and it reads every turn the main agent takes, injecting notes inline — a quiet aside, a concern, or a hard blocker. It runs on its own context and its own model, so it catches what the doer rushed past. The main agent sees the note and course-corrects, or tells you why it won&#39;t.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://omp.sh/clips/advisor-poster.webp&quot; alt=&quot;omp TUI: /advisor status shows the advisor running on openai-codex/gpt-5.5; after the main agent scopes a catch to ENOENT instead of swallowing every error, an amber &#39;Advisor 1 note (concern)&#39; card warns the fix no longer matches the user&#39;s literal acceptance criterion.&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://omp.sh/clips/advisor.mp4&quot;&gt;Watch the capture ↗&lt;/a&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;h3&gt;07 · Hand someone the link, they&#39;re in.&lt;/h3&gt; 
&lt;p&gt;/collab puts your live session on a relay and hands back a link — and a QR. A teammate joins from another terminal with omp join, or just opens it in a browser. Share read-write to pair on the same agent, or /collab view for a read-only link anyone can watch but no one can steer. Frames are sealed client-side; the relay never sees your keys.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://omp.sh/clips/collab-poster.webp&quot; alt=&quot;omp TUI: /collab view prints &#39;Collab session started!&#39; with an omp join command, a my.omp.sh browser link, the note &#39;Anyone with this link can watch the session but cannot prompt the agent&#39;, and a large scannable QR code.&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://omp.sh/clips/collab.mp4&quot;&gt;Watch the capture ↗&lt;/a&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;h3&gt;08 · Read a pdf on arxiv, why not?&lt;/h3&gt; 
&lt;p&gt;web_search chains twenty-three ranked providers and hands whatever URLs it finds straight to read. Arxiv PDFs, GitHub pages, Stack Overflow threads come back as structured markdown with anchors intact — the same tool surface you use on local files. Cite, follow, quote, never lose where you came from.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://omp.sh/clips/web-poster.webp&quot; alt=&quot;omp TUI: web_search returns 10 ranked Perplexity sources for inference-time compute scaling, the agent picks an arxiv paper, calls read https://arxiv.org/pdf/2604.10739v1, and summarizes the paper&#39;s headline result with real numbers.&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://omp.sh/clips/web.mp4&quot;&gt;Watch the capture ↗&lt;/a&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;h3&gt;09 · Unapologetically native. Even on Windows.&lt;/h3&gt; 
&lt;p&gt;Other agents shell out to rg, grep, find, and bash. On many machines those binaries don&#39;t exist, and on the ones where they do, every call costs a fork-exec round-trip. omp links the real implementations into the process. ripgrep, glob, find: in-process. brush is the bash — with sessions that survive across calls, and 58 command-line utilities (ls, sed, sort, xargs, even jq) ported into the builtins crate and run in-process, zero fork/exec. The same omp binary runs on macOS, Linux, and Windows — no WSL bridge.&lt;/p&gt; 
&lt;h3&gt;10 · Code review with priorities and a verdict&lt;/h3&gt; 
&lt;p&gt;Get a clear verdict on whether the change ships, with every issue ranked P0 through P3 and scored for confidence. /review spawns dedicated reviewer subagents that sweep branches, single commits, or uncommitted work in parallel. You tackle what blocks release first; nothing important hides in a wall of prose.&lt;/p&gt; 
&lt;h3&gt;11 · Hashline: edit by content hash&lt;/h3&gt; 
&lt;p&gt;Perfect edits, fewer tokens. The model points at anchors instead of retyping the lines it wants to change, so whitespace battles and string-not-found loops just stop happening. Edit a stale file and the anchors diverge — we reject the patch before it corrupts anything. Grok 4 Fast spends 61% fewer output tokens on the same work.&lt;/p&gt; 
&lt;h3&gt;12 · GitHub is just another filesystem&lt;/h3&gt; 
&lt;p&gt;Other harnesses bolt on gh_issue_view, gh_pr_view, gh_search — each with its own parameters the agent has to learn and you have to debug. We skipped that. read already handles paths; PRs are paths. One interface to teach the model, one surface to keep correct.&lt;/p&gt; 
&lt;h3&gt;13 · Memory the agent curates&lt;/h3&gt; 
&lt;p&gt;The agent remembers your codebase between sessions. It writes facts mid-run with retain, captures reusable lessons with learn, pulls them back with recall, and compresses each session into a mental model that loads on the first turn of the next one. Pick the engine with &lt;code&gt;memory.backend&lt;/code&gt; — local, Hindsight, or Mnemopi. Project-scoped by default, so what it learns about this repo stays with this repo.&lt;/p&gt; 
&lt;h3&gt;14 · ACP: editor-drivable agent&lt;/h3&gt; 
&lt;p&gt;Run omp inside Zed and you get the same agent you drive from the terminal — reading the buffer you&#39;re actually looking at, writing through the editor&#39;s save path, spawning shells in the editor&#39;s terminal. Destructive tools pause for a permission prompt you can answer once and forget. No bridge, no plugin, no second brain to keep in sync.&lt;/p&gt; 
&lt;h3&gt;15 · Inherits what your other tools already wrote&lt;/h3&gt; 
&lt;p&gt;Every other agent ships an importer and expects you to convert. omp reads the eight formats already on disk in their native shape — Cursor MDC, Cline .clinerules, Codex &lt;a href=&quot;http://AGENTS.md&quot;&gt;AGENTS.md&lt;/a&gt;, Copilot applyTo, and the rest. No migration script, no YAML-to-TOML port, no &quot;supported subset&quot; footnotes. The config your team wrote last quarter still works tonight.&lt;/p&gt; 
&lt;h3&gt;16 · omp commit: atomic splits, validated messages&lt;/h3&gt; 
&lt;p&gt;omp reads the working tree through git_overview, git_file_diff, and git_hunk, then splits unrelated changes into atomic commits ordered by their dependencies. Cycles are rejected before anything is written. Source files score above tests, docs, and configs, so the headline commit is the one that matters. Lock files are excluded from analysis entirely.&lt;/p&gt; 
&lt;h3&gt;17 · Read PRs. &lt;em&gt;Walk skills.&lt;/em&gt; Pull JSON out of subagents.&lt;/h3&gt; 
&lt;p&gt;Sixteen internal schemes — &lt;code&gt;pr://&lt;/code&gt;, &lt;code&gt;issue://&lt;/code&gt;, &lt;code&gt;agent://&lt;/code&gt;, &lt;code&gt;skill://&lt;/code&gt;, &lt;code&gt;ssh://&lt;/code&gt;, and the rest — resolve transparently inside every FS-shaped tool the agent already calls. &lt;code&gt;read pr://1428&lt;/code&gt; returns the same shape as &lt;code&gt;read src/foo.ts&lt;/code&gt;. &lt;code&gt;grep&lt;/code&gt; walks a diff like a directory. &lt;code&gt;agent://&amp;lt;id&amp;gt;/findings.0.path&lt;/code&gt; pulls a field out of a subagent&#39;s output by path.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://omp.sh/captures/pr.webp&quot; alt=&quot;omp TUI reading pr://can1357/oh-my-pi/1063 and then /diff/1, showing hunk headers, added lines, and a [MODIFIED] (+12 -0) summary.&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;18 · Conflict resolution, made easy.&lt;/h3&gt; 
&lt;p&gt;Each merge conflict becomes one URL. The agent writes &lt;code&gt;@theirs&lt;/code&gt;, &lt;code&gt;@ours&lt;/code&gt;, or &lt;code&gt;@base&lt;/code&gt; to &lt;code&gt;conflict://N&lt;/code&gt; and the file resolves cleanly. Bulk form: &lt;code&gt;conflict://*&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://omp.sh/clips/conflict-poster.webp&quot; alt=&quot;omp TUI: ✓ Read src/session.ts (⚠ 1 conflict), then ✓ Write conflict://1 · 1 line with content @theirs, then a confirmation &#39;Resolved.&#39;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://omp.sh/clips/conflict.mp4&quot;&gt;Watch the capture ↗&lt;/a&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;h3&gt;19 · Preview, then accept.&lt;/h3&gt; 
&lt;p&gt;&lt;code&gt;ast_edit&lt;/code&gt; returns a &lt;em&gt;(proposed)&lt;/em&gt; card with the replacement count. The change is staged. The agent writes a one-line reason to &lt;code&gt;xd://resolve&lt;/code&gt;; the TUI turns it into an &lt;strong&gt;Accept&lt;/strong&gt; card and the disk move happens — atomic, all or nothing.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://omp.sh/clips/codemod-poster.webp&quot; alt=&quot;omp TUI: ✓ AST Edit: console.log($X) (proposed) 3 replacements · 1 file, then ✓ Accept: 3 replacements in 1 file (AST Edit), followed by &#39;Applied 3 replacements in src/auth.ts.&#39;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://omp.sh/clips/codemod.mp4&quot;&gt;Watch the capture ↗&lt;/a&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;h3&gt;20 · Drives a &lt;em&gt;real browser&lt;/em&gt;. &lt;em&gt;Or your Slack?&lt;/em&gt;&lt;/h3&gt; 
&lt;p&gt;Stealth&#39;s on by default, so pages see a normal user instead of a headless bot. The same API drives any Electron app in place — point it at Slack and the agent reads your DMs the way it reads the web. Or skip the sandbox entirely: the browser relay extension lets the agent adopt the Chrome tabs you already have open, without stealing focus.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://omp.sh/captures/browser.webp&quot; alt=&quot;omp TUI driving the browser tool against DuckDuckGo&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;21 · Hands on the desktop itself&lt;/h3&gt; 
&lt;p&gt;&lt;code&gt;computer&lt;/code&gt; runs persistent JavaScript against the real host: enumerate windows and displays, capture screenshots, send native input, walk the OS accessibility tree, touch the clipboard. Not the browser tool, no DOM — the same desktop you&#39;re looking at.&lt;/p&gt; 
&lt;h2&gt;Whatever the task needs, &lt;em&gt;it&#39;s already in the box&lt;/em&gt;.&lt;/h2&gt; 
&lt;p&gt;31 tools live in the same namespace as &lt;code&gt;read&lt;/code&gt; and &lt;code&gt;bash&lt;/code&gt;. Pin the active set with &lt;code&gt;--tools read,edit,bash,…&lt;/code&gt;; rarely used discoverable tools stay behind &lt;code&gt;xd://&lt;/code&gt; devices. &lt;code&gt;read xd://&lt;/code&gt; lists them, and &lt;code&gt;write xd://&amp;lt;tool&amp;gt;&lt;/code&gt; runs one when &lt;code&gt;tools.xdev&lt;/code&gt; is enabled.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Files &amp;amp; search&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;read&lt;/code&gt; — files, dirs, archives, SQLite, PDFs, notebooks, URLs, remote &lt;code&gt;ssh://&lt;/code&gt; paths, and internal &lt;code&gt;://&lt;/code&gt; schemes through one path.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;write&lt;/code&gt; — create or overwrite a file, archive entry, or SQLite row.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;edit&lt;/code&gt; — hashline patches with content-hash anchors and stale-anchor recovery.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;ast_edit&lt;/code&gt; — structural rewrites previewed before apply, via ast-grep.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;ast_grep&lt;/code&gt; — structural code queries over 50+ tree-sitter grammars.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;grep&lt;/code&gt; — regex over files, globs, and internal URLs.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;glob&lt;/code&gt; — glob-based path lookup; reach for &lt;code&gt;grep&lt;/code&gt; when you need content matches.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Runtime&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;bash&lt;/code&gt; — workspace shell with 46 in-process coreutils, optional PTY, and background-job dispatch.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;eval&lt;/code&gt; — persistent Python and JavaScript cells with shared prelude and tool re-entry.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Code intelligence&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;lsp&lt;/code&gt; — diagnostics, navigation, symbols, renames, code actions, raw requests.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;debug&lt;/code&gt; — drive a DAP session — breakpoints, stepping, threads, stack, variables.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;security_scan&lt;/code&gt; — plan and run native security reviews; drives Codex Security cloud scans.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Coordination&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;task&lt;/code&gt; — fan out subagents in parallel, optionally workspace-isolated.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;hub&lt;/code&gt; — message live agents, wait on or cancel background jobs, and supervise long-running processes.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;todo&lt;/code&gt; — ordered mutations over the session todo list with phase tracking.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;ask&lt;/code&gt; — structured follow-up questions for interactive runs.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Desktop &amp;amp; web&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;browser&lt;/code&gt; — Puppeteer tabs over headless Chromium, CDP-attached apps, or your own Chrome via the relay.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;computer&lt;/code&gt; — persistent JS against the host desktop: windows, screenshots, native input, AX tree, clipboard.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;web_search&lt;/code&gt; — one query across configured providers, returning answer plus citations.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;github&lt;/code&gt; — GitHub CLI ops — repo, PR, issues, code search, Actions run-watch.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;generate_image&lt;/code&gt; — generate or edit raster images via Gemini, GPT, or xAI Grok image models.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;inspect_image&lt;/code&gt; — vision-model analysis of a local image file.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;tts&lt;/code&gt; — text-to-speech via xAI Grok Voice — five built-in voices, WAV or MP3.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Memory &amp;amp; skills&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;checkpoint&lt;/code&gt; — mark conversation state for a later collapse-and-report.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;rewind&lt;/code&gt; — prune exploratory context, keep a concise report.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;retain&lt;/code&gt; — queue durable facts into the active memory bank.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;recall&lt;/code&gt; — search the memory bank for raw memories.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;reflect&lt;/code&gt; — synthesize an answer over the bank.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;memory_edit&lt;/code&gt; — update, forget, or invalidate stored memories by id.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;learn&lt;/code&gt; — capture a reusable lesson; optionally promote it into a managed skill.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;manage_skill&lt;/code&gt; — create, update, or delete an isolated managed skill.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Setting-gated, off by default: &lt;code&gt;github&lt;/code&gt;, &lt;code&gt;security_scan&lt;/code&gt;, &lt;code&gt;generate_image&lt;/code&gt;, &lt;code&gt;tts&lt;/code&gt;, &lt;code&gt;checkpoint&lt;/code&gt;, &lt;code&gt;rewind&lt;/code&gt;, and the memory tools (&lt;code&gt;retain&lt;/code&gt;/&lt;code&gt;recall&lt;/code&gt;/&lt;code&gt;reflect&lt;/code&gt;/&lt;code&gt;memory_edit&lt;/code&gt;, per &lt;code&gt;memory.backend&lt;/code&gt;). &lt;code&gt;inspect_image&lt;/code&gt; activates automatically when the active model can&#39;t see.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://omp.sh/docs/tools&quot;&gt;Full reference →&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Prompt controls&lt;/h3&gt; 
&lt;p&gt;Three standalone, lowercase words opt a turn into specialized agent behavior:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;ultrathink&lt;/code&gt; — request careful multi-step reasoning and the highest supported automatic thinking effort.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;orchestrate&lt;/code&gt; — run substantial independent work through parallel subagents and verify each phase.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;workflowz&lt;/code&gt; — build a deterministic multi-subagent workflow with the active &lt;code&gt;task&lt;/code&gt; tool.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;They trigger only in prose, not inside code spans, fenced code blocks, XML/HTML sections, identifiers, or paths. See &lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/docs/magic-keywords.md&quot;&gt;Magic keywords&lt;/a&gt; for exact matching rules and configuration.&lt;/p&gt; 
&lt;h3&gt;Session controls&lt;/h3&gt; 
&lt;p&gt;Slash commands shift how a whole session runs:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;/vibe&lt;/code&gt; — enter &lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/docs/vibe-mode.md&quot;&gt;Vibe mode&lt;/a&gt;: act as a director driving persistent &lt;code&gt;fast&lt;/code&gt;/&lt;code&gt;good&lt;/code&gt; worker sessions with a &lt;code&gt;read&lt;/code&gt;-only toolset.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;/fresh&lt;/code&gt; — reset the provider stream state (stale prompt cache, wedged stream) without changing the local transcript. See &lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/docs/session-operations-export-share-fork-resume.md#fresh&quot;&gt;Session operations&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Sixty-plus providers, a thousand models, &lt;em&gt;one /model away&lt;/em&gt;.&lt;/h2&gt; 
&lt;p&gt;Ten roles route work by intent. &lt;code&gt;default&lt;/code&gt; for normal turns. &lt;code&gt;smol&lt;/code&gt; for cheap subagent fan-out. &lt;code&gt;slow&lt;/code&gt; for deep reasoning. &lt;code&gt;plan&lt;/code&gt; for plan mode. &lt;code&gt;commit&lt;/code&gt; for changelogs. Plus &lt;code&gt;vision&lt;/code&gt;, &lt;code&gt;designer&lt;/code&gt;, &lt;code&gt;task&lt;/code&gt;, &lt;code&gt;advisor&lt;/code&gt;, and &lt;code&gt;tiny&lt;/code&gt; for their namesakes. Override at launch with &lt;code&gt;--smol&lt;/code&gt;, &lt;code&gt;--slow&lt;/code&gt;, or &lt;code&gt;--plan&lt;/code&gt;; cycle through the configured models for the active role with &lt;code&gt;Ctrl+P&lt;/code&gt;. Swap the active model mid-session with the &lt;code&gt;/model&lt;/code&gt; slash command.&lt;/p&gt; 
&lt;p&gt;Auth tags below: &lt;code&gt;oauth&lt;/code&gt; signs in with your provider account, &lt;code&gt;plan&lt;/code&gt; routes through a coding-plan subscription, &lt;code&gt;local&lt;/code&gt; runs against a local server with the key optional.&lt;/p&gt; 
&lt;h3&gt;Frontier APIs&lt;/h3&gt; 
&lt;p&gt;Direct APIs and gateways. Mix providers per role.&lt;/p&gt; 
&lt;p&gt;Anthropic &lt;code&gt;oauth&lt;/code&gt; · OpenAI · OpenAI Codex &lt;code&gt;oauth&lt;/code&gt; · Google Gemini · Google Vertex · Google Antigravity &lt;code&gt;oauth&lt;/code&gt; · xAI · SuperGrok &lt;code&gt;oauth&lt;/code&gt; · DeepSeek · Mistral · Groq · Cerebras · Fireworks · Together · Baseten · Hugging Face · NVIDIA · Meta · Amazon Bedrock · Azure OpenAI · SiliconFlow · GMI Cloud · CoreWeave · Sakana AI · OpenRouter · Synthetic · Vercel AI Gateway · Cloudflare AI Gateway · Wafer Serverless&lt;/p&gt; 
&lt;h3&gt;Coding plans&lt;/h3&gt; 
&lt;p&gt;Subscription-routed. &lt;code&gt;/login&lt;/code&gt; attaches the session.&lt;/p&gt; 
&lt;p&gt;Cursor &lt;code&gt;oauth&lt;/code&gt; · GitHub Copilot &lt;code&gt;oauth&lt;/code&gt; · GitLab Duo · Devin &lt;code&gt;oauth&lt;/code&gt; · Kimi Code &lt;code&gt;plan&lt;/code&gt; · Moonshot · MiniMax Coding Plan &lt;code&gt;plan&lt;/code&gt; · MiniMax Coding Plan CN &lt;code&gt;plan&lt;/code&gt; · Alibaba Coding Plan &lt;code&gt;plan&lt;/code&gt; · Qwen Portal &lt;code&gt;oauth&lt;/code&gt; · &lt;a href=&quot;http://Z.AI&quot;&gt;Z.AI&lt;/a&gt; / GLM Coding Plan &lt;code&gt;plan&lt;/code&gt; · Zhipu Coding Plan &lt;code&gt;plan&lt;/code&gt; · Xiaomi MiMo · Qianfan · Umans &lt;code&gt;plan&lt;/code&gt; · NanoGPT · Novita · Venice · Kilo · ZenMux · OpenCode Go · OpenCode Zen&lt;/p&gt; 
&lt;h3&gt;Run it yourself&lt;/h3&gt; 
&lt;p&gt;OpenAI-compatible &lt;code&gt;/v1/models&lt;/code&gt;. Local instances skip the key.&lt;/p&gt; 
&lt;p&gt;Ollama &lt;code&gt;local&lt;/code&gt; · Ollama Cloud · LM Studio &lt;code&gt;local&lt;/code&gt; · llama.cpp &lt;code&gt;local&lt;/code&gt; · vLLM &lt;code&gt;local&lt;/code&gt; · LiteLLM&lt;/p&gt; 
&lt;h3&gt;Custom OpenAI-compatible providers&lt;/h3&gt; 
&lt;p&gt;Define custom providers in &lt;code&gt;~/.omp/agent/models.yml&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;providers:
  spark:
    baseUrl: http://192.168.10.223:8000/v1
    api: openai-completions
    apiKey: dummy
    models:
      - id: minimax-m3
        name: MiniMax M3
        contextWindow: 100000
        maxTokens: 32000
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Run &lt;code&gt;omp models spark&lt;/code&gt; to verify discovery. Then run &lt;code&gt;omp setup&lt;/code&gt; and choose the model in the default-model step, or open &lt;code&gt;/model&lt;/code&gt; in a session and assign it to the &lt;code&gt;default&lt;/code&gt; role.&lt;/p&gt; 
&lt;p&gt;To preconfigure the default without the picker, add the selector to &lt;code&gt;~/.omp/agent/config.yml&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;modelRoles:
  default: spark/minimax-m3
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Four knobs that make routing useful&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Custom providers&lt;/strong&gt; — Declare anything that speaks &lt;code&gt;openai-completions&lt;/code&gt;, &lt;code&gt;openai-responses&lt;/code&gt;, &lt;code&gt;openai-codex-responses&lt;/code&gt;, &lt;code&gt;azure-openai-responses&lt;/code&gt;, &lt;code&gt;anthropic-messages&lt;/code&gt;, &lt;code&gt;bedrock-converse-stream&lt;/code&gt;, &lt;code&gt;google-generative-ai&lt;/code&gt;, &lt;code&gt;google-gemini-cli&lt;/code&gt;, or &lt;code&gt;google-vertex&lt;/code&gt; in &lt;code&gt;~/.omp/agent/models.yml&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Fallback chains&lt;/strong&gt; — Per-role or per-model chains under &lt;code&gt;retry.fallbackChains&lt;/code&gt;. When the primary throws 429s or hits a quota wall, the next entry takes the rest of the turn — restored on cooldown.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Path-scoped models&lt;/strong&gt; — Scope &lt;code&gt;enabledModels&lt;/code&gt; and &lt;code&gt;disabledProviders&lt;/code&gt; entries to a &lt;code&gt;path:&lt;/code&gt; prefix to pin a different model set on one repo without touching the global config. Scoped entries cover the path and everything under it.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Round-robin credentials&lt;/strong&gt; — Stack API keys per provider and the runtime rotates with session affinity and per-credential backoff. Useful when one key would burn its quota by lunch.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Full provider &amp;amp; routing reference at &lt;a href=&quot;https://omp.sh/docs/providers&quot;&gt;omp.sh/docs/providers&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Twenty-three backends. &lt;em&gt;One tool the agent already knows&lt;/em&gt;.&lt;/h2&gt; 
&lt;p&gt;&lt;code&gt;web_search&lt;/code&gt; is built in, not bolted on. &lt;code&gt;auto&lt;/code&gt; walks a twenty-three-provider chain; pin one by name if you already pay for it. Behind every hit, site-aware extraction turns GitHub, registries, arXiv, Stack Overflow, and docs into structured markdown — anchors and link targets survive.&lt;/p&gt; 
&lt;h3&gt;Search providers&lt;/h3&gt; 
&lt;p&gt;Twenty-three backends. Pin one, or let &lt;code&gt;auto&lt;/code&gt; walk the chain in order.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;provider&lt;/th&gt; 
   &lt;th&gt;auth&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;auto&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;chain&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;perplexity&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;PERPLEXITY_API_KEY&lt;/code&gt; (anonymous fallback)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;gemini&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;oauth&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;anthropic&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;oauth&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;codex&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;oauth&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;xai&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;oauth or &lt;code&gt;XAI_API_KEY&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;zai&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;ZAI_API_KEY&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;exa&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;EXA_API_KEY&lt;/code&gt; (or mcp)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;tinyfish&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;TINYFISH_API_KEY&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;jina&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;JINA_API_KEY&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;kagi&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;KAGI_API_KEY&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;tavily&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;TAVILY_API_KEY&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;firecrawl&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;FIRECRAWL_API_KEY&lt;/code&gt; (keyless fallback)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;brave&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;BRAVE_API_KEY&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;kimi&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;/login kimi-code&lt;/code&gt; or search key&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;parallel&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;PARALLEL_API_KEY&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;synthetic&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;SYNTHETIC_API_KEY&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;searxng&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;self-hosted&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;duckduckgo&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;no key&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;startpage&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;no key&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;google&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;no key (browser)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;ecosia&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;no key (browser)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;mojeek&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;no key (browser)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;public&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;no key (all of the above, consolidated)&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Exa also accepts a stored API key through &lt;code&gt;/login exa&lt;/code&gt;; explicit keyless selection uses the public MCP fallback.&lt;/p&gt; 
&lt;h3&gt;Specialised handlers&lt;/h3&gt; 
&lt;p&gt;The agent gets structured content, not stripped HTML.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Code hosts&lt;/strong&gt; — github, gitlab&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Package registries&lt;/strong&gt; — npm, PyPI, &lt;a href=&quot;http://crates.io&quot;&gt;crates.io&lt;/a&gt;, Hex, Hackage, NuGet, Maven, RubyGems, Packagist, pub.dev, Go packages&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Research sources&lt;/strong&gt; — arxiv, semantic scholar&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Forums&lt;/strong&gt; — stack overflow, reddit, hn&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Docs&lt;/strong&gt; — mdn, readthedocs, &lt;a href=&quot;http://docs.rs&quot;&gt;docs.rs&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Pages convert to markdown with link structure intact. The agent can cite, follow, and quote without losing anchors.&lt;/p&gt; 
&lt;h3&gt;Security databases&lt;/h3&gt; 
&lt;p&gt;Vuln lookups answer with vendor data, not blog summaries.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;NVD&lt;/strong&gt; — national vulnerability database&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;OSV&lt;/strong&gt; — open source vuln feed&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;CISA KEV&lt;/strong&gt; — known exploited vulns&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;a href=&quot;https://omp.sh/docs/tools#web_search&quot;&gt;&lt;code&gt;web_search&lt;/code&gt; reference ↗&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Roughly &lt;strong&gt;~80,000&lt;/strong&gt; lines of Rust, doing the work other harnesses shell out for.&lt;/h2&gt; 
&lt;p&gt;Six crates, one platform-tagged N-API addon. Search, shell, AST, highlight, PTY, desktop control, image decode, BPE counting — all in-process on the libuv pool. No fork/exec on the hot path. Another ~80k lines ride along vendored: the brush bash fork, plus 58 command-line utilities — coreutils, findutils, sed, jq, ripgrep-backed grep, fd, diff, moreutils — ported into the builtins crate and compiled straight into the shell.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Crates: &lt;code&gt;pi-natives&lt;/code&gt;, &lt;code&gt;pi-shell&lt;/code&gt;, &lt;code&gt;pi-ast&lt;/code&gt;, &lt;code&gt;pi-iso&lt;/code&gt;, &lt;code&gt;pi-voice&lt;/code&gt;, &lt;code&gt;pi-walker&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Platforms: &lt;code&gt;linux-x64&lt;/code&gt;, &lt;code&gt;linux-arm64&lt;/code&gt;, &lt;code&gt;darwin-x64&lt;/code&gt;, &lt;code&gt;darwin-arm64&lt;/code&gt;, &lt;code&gt;win32-x64&lt;/code&gt; — x64 ships dual AVX2 and baseline binaries&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Per crate, code lines only:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Crate&lt;/th&gt; 
   &lt;th&gt;What it does&lt;/th&gt; 
   &lt;th style=&quot;text-align:right&quot;&gt;~LoC&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;pi-shell&lt;/td&gt; 
   &lt;td&gt;Embedded bash engine · persistent sessions · in-process coreutils dispatch · minimizer&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;38,000&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;pi-natives&lt;/td&gt; 
   &lt;td&gt;The N-API surface — every module in the table below&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;25,000&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;pi-walker&lt;/td&gt; 
   &lt;td&gt;Parallel ignore-aware walker + scan cache shared by grep · glob · workspace · shell&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;5,200&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;pi-iso&lt;/td&gt; 
   &lt;td&gt;Workspace isolation · apfs · btrfs · zfs · reflink · overlayfs · projfs · rcopy&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;3,300&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;pi-ast&lt;/td&gt; 
   &lt;td&gt;tree-sitter + ast-grep matching, block resolution, structural summaries&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;2,900&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;pi-voice&lt;/td&gt; 
   &lt;td&gt;Audio capture/playback · Opus · live WebRTC&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;1,000&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Inside &lt;code&gt;pi-natives&lt;/code&gt;, the per-module breakdown (glue and tests omitted):&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Module&lt;/th&gt; 
   &lt;th&gt;What it does&lt;/th&gt; 
   &lt;th&gt;Powered by&lt;/th&gt; 
   &lt;th style=&quot;text-align:right&quot;&gt;~LoC&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;desktop&lt;/td&gt; 
   &lt;td&gt;Window/display enumeration · screenshot · native input · AX tree for &lt;code&gt;computer&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;xcap · enigo · OS AX FFI&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;10,600&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;grep&lt;/td&gt; 
   &lt;td&gt;Regex search · parallel/sequential · glob &amp;amp; type filters · fuzzy find&lt;/td&gt; 
   &lt;td&gt;grep-regex · grep-searcher&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;3,280&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;text&lt;/td&gt; 
   &lt;td&gt;ANSI-aware width · truncation · column slicing · SGR-preserving wrap&lt;/td&gt; 
   &lt;td&gt;unicode-width · segmentation&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;2,070&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;snapcompact&lt;/td&gt; 
   &lt;td&gt;Bitmap-frame rasterization + PNG encode for context compression&lt;/td&gt; 
   &lt;td&gt;image · png&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;1,760&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;keys&lt;/td&gt; 
   &lt;td&gt;Kitty keyboard protocol with xterm fallback · PHF perfect-hash lookup&lt;/td&gt; 
   &lt;td&gt;phf&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;1,740&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ast&lt;/td&gt; 
   &lt;td&gt;ast-grep pattern matching and structural rewrites&lt;/td&gt; 
   &lt;td&gt;ast-grep-core&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;1,510&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;diff&lt;/td&gt; 
   &lt;td&gt;Structured file diffing for tools and previews&lt;/td&gt; 
   &lt;td&gt;in-tree&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;1,030&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;pty&lt;/td&gt; 
   &lt;td&gt;Native PTY allocation for sudo · ssh interactive prompts&lt;/td&gt; 
   &lt;td&gt;portable-pty&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;630&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;crash_handler&lt;/td&gt; 
   &lt;td&gt;Native crash capture and reporting&lt;/td&gt; 
   &lt;td&gt;in-tree&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;610&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;highlight&lt;/td&gt; 
   &lt;td&gt;Syntax highlighting · 11 semantic categories · 30+ aliases&lt;/td&gt; 
   &lt;td&gt;syntect&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;550&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;appearance&lt;/td&gt; 
   &lt;td&gt;Mode 2031 + native macOS dark/light via CoreFoundation FFI&lt;/td&gt; 
   &lt;td&gt;core-foundation&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;450&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;task&lt;/td&gt; 
   &lt;td&gt;Blocking work on libuv thread pool · cancellation · timeout · profiling&lt;/td&gt; 
   &lt;td&gt;tokio · napi&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;440&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;glob&lt;/td&gt; 
   &lt;td&gt;Discovery with glob · type filters · mtime sort · gitignore respect&lt;/td&gt; 
   &lt;td&gt;ignore · globset&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;430&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;fd&lt;/td&gt; 
   &lt;td&gt;Filesystem walker for find-tool replacement&lt;/td&gt; 
   &lt;td&gt;ignore&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;385&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;clipboard&lt;/td&gt; 
   &lt;td&gt;Text copy and image read from system clipboard · no xclip/pbcopy&lt;/td&gt; 
   &lt;td&gt;arboard&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;370&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;workspace&lt;/td&gt; 
   &lt;td&gt;Workspace walker with gitignore + &lt;a href=&quot;http://AGENTS.md&quot;&gt;AGENTS.md&lt;/a&gt; discovery in one pass&lt;/td&gt; 
   &lt;td&gt;ignore&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;275&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;power&lt;/td&gt; 
   &lt;td&gt;macOS power-assertion API for idle/system/display-sleep prevention&lt;/td&gt; 
   &lt;td&gt;IOKit FFI&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;270&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;prof&lt;/td&gt; 
   &lt;td&gt;Circular buffer profiler with folded-stack and SVG flamegraph output&lt;/td&gt; 
   &lt;td&gt;inferno&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;240&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;file_lock&lt;/td&gt; 
   &lt;td&gt;Cross-process advisory file locking&lt;/td&gt; 
   &lt;td&gt;in-tree&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;210&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ps&lt;/td&gt; 
   &lt;td&gt;Cross-platform process-tree kill and descendant listing&lt;/td&gt; 
   &lt;td&gt;libc · libproc · CreateToolhelp32Snapshot&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;195&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;tokens&lt;/td&gt; 
   &lt;td&gt;O200k / Cl100k BPE token counting · both tables embedded&lt;/td&gt; 
   &lt;td&gt;tiktoken-rs&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;70&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;html&lt;/td&gt; 
   &lt;td&gt;HTML to Markdown with optional content cleaning&lt;/td&gt; 
   &lt;td&gt;html-to-markdown-rs&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;60&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;sixel&lt;/td&gt; 
   &lt;td&gt;Terminal image rendering · decode PNG · JPEG · WebP · GIF · resize · SIXEL encode&lt;/td&gt; 
   &lt;td&gt;icy_sixel · image&lt;/td&gt; 
   &lt;td style=&quot;text-align:right&quot;&gt;55&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Four entry points: &lt;em&gt;interactive&lt;/em&gt;, &lt;em&gt;one-shot&lt;/em&gt;, RPC, and ACP.&lt;/h2&gt; 
&lt;p&gt;Same engine, four wrappers. &lt;code&gt;omp&lt;/code&gt; runs the TUI. &lt;code&gt;omp -p&lt;/code&gt; answers a single prompt and exits. The Node SDK embeds the session in your process. &lt;code&gt;omp --mode rpc&lt;/code&gt; and &lt;code&gt;omp acp&lt;/code&gt; hand the wheel to another program over stdio.&lt;/p&gt; 
&lt;h3&gt;Interactive — when in doubt, the agent asks&lt;/h3&gt; 
&lt;p&gt;The TUI is the default surface. Tool calls render as cards, edits preview before they land, and ambiguity routes through the &lt;code&gt;ask&lt;/code&gt; tool — a structured option picker the agent can call mid-turn. The keyboard handles the rest.&lt;/p&gt; 
&lt;p&gt;The same prompt cards surface over ACP, so editors get the picker without writing one.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://omp.sh/captures/ask.webp&quot; alt=&quot;omp TUI: the ask tool renders an option picker with three choices, a (Recommended) badge on the first, and &#39;up/down navigate · enter select · esc cancel&#39; footer.&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;SDK — embed in Node&lt;/h3&gt; 
&lt;p&gt;&lt;code&gt;@oh-my-pi/pi-coding-agent&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;Node and TypeScript hosts pull the engine in directly. The package exposes &lt;code&gt;ModelRegistry&lt;/code&gt;, &lt;code&gt;SessionManager&lt;/code&gt;, &lt;code&gt;createAgentSession&lt;/code&gt;, and &lt;code&gt;discoverAuthStorage&lt;/code&gt;; the session emits typed events you subscribe to.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;import {
  ModelRegistry,
  SessionManager,
  createAgentSession,
  discoverAuthStorage,
} from &quot;@oh-my-pi/pi-coding-agent&quot;;

const auth = await discoverAuthStorage();
const models = new ModelRegistry(auth);
await models.refresh();

const { session } = await createAgentSession({
  sessionManager: SessionManager.inMemory(),
  authStorage: auth,
  modelRegistry: models,
});
await session.prompt(&quot;list .ts files&quot;);
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;RPC — drive over stdio&lt;/h3&gt; 
&lt;p&gt;&lt;code&gt;omp --mode rpc&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;For non-Node embedders, or when you want process isolation. NDJSON commands in, response and event frames out. &lt;code&gt;--mode rpc-ui&lt;/code&gt; adds tool cards, selectors, and dialogs as &lt;code&gt;extension_ui_request&lt;/code&gt; frames the host must answer.&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;$ omp --mode rpc --no-session
&amp;gt; {&quot;id&quot;:&quot;r1&quot;,&quot;type&quot;:&quot;prompt&quot;,&quot;message&quot;:&quot;list .ts files&quot;}
&amp;lt; {&quot;id&quot;:&quot;r1&quot;,&quot;type&quot;:&quot;response&quot;, ...}
&amp;gt; {&quot;id&quot;:&quot;r2&quot;,&quot;type&quot;:&quot;set_model&quot;,&quot;provider&quot;:&quot;anthropic&quot;,&quot;modelId&quot;:&quot;sonnet-4.5&quot;}
&amp;gt; {&quot;id&quot;:&quot;r3&quot;,&quot;type&quot;:&quot;abort&quot;}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;ACP — speak to editors&lt;/h3&gt; 
&lt;p&gt;&lt;code&gt;omp acp&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;The &lt;a href=&quot;https://github.com/zed-industries/agent-client-protocol&quot;&gt;Agent Client Protocol&lt;/a&gt; over JSON-RPC. When the editor advertises capabilities, tool I/O routes through it and writes are gated by &lt;code&gt;session/request_permission&lt;/code&gt;.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;omp tool&lt;/th&gt; 
   &lt;th&gt;ACP route&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;bash&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;terminal/create + terminal/output&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;read&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;fs/read_text_file&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;write&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;fs/write_text_file&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;edit, bash&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;session/request_permission&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Full reference: &lt;a href=&quot;https://omp.sh/docs/sdk&quot;&gt;omp.sh/docs/sdk&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;A harness worth keeping is one you &lt;em&gt;don&#39;t&lt;/em&gt; outgrow.&lt;/h2&gt; 
&lt;p&gt;Pick it up at &lt;strong&gt;&lt;a href=&quot;https://omp.sh&quot;&gt;omp.sh&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt; 
&lt;p&gt;omp is a fork of &lt;a href=&quot;https://github.com/badlogic/pi-mono&quot;&gt;Pi&lt;/a&gt; by &lt;a href=&quot;https://github.com/mariozechner&quot;&gt;Mario Zechner&lt;/a&gt;, rewritten as a coding-first surface: sessions, subagents, slash commands, extensions — all TypeScript, all MIT, all on &lt;a href=&quot;https://github.com/can1357/oh-my-pi&quot;&gt;GitHub&lt;/a&gt;. Shape it from config, hook it from outside, or read the source when you need to.&lt;/p&gt; 
&lt;h3&gt;Primitives&lt;/h3&gt; 
&lt;p&gt;An extension is a TypeScript module. Same tool API, same slash-command registry, same hotkey table, same TUI primitives the built-ins use. Nothing is reserved.&lt;/p&gt; 
&lt;h3&gt;Discovery&lt;/h3&gt; 
&lt;p&gt;On first run omp inherits whatever is already on disk: rules, skills, and MCP servers from &lt;code&gt;.claude&lt;/code&gt;, &lt;code&gt;.cursor&lt;/code&gt;, &lt;code&gt;.windsurf&lt;/code&gt;, &lt;code&gt;.gemini&lt;/code&gt;, &lt;code&gt;.codex&lt;/code&gt;, &lt;code&gt;.cline&lt;/code&gt;, &lt;code&gt;.github/copilot&lt;/code&gt;, and &lt;code&gt;.vscode&lt;/code&gt;. No migration script.&lt;/p&gt; 
&lt;h3&gt;Extensibility&lt;/h3&gt; 
&lt;p&gt;Ask omp to write the piece you&#39;re missing, then &lt;code&gt;/reload-plugins&lt;/code&gt;. Keep it local, ship it in a &lt;code&gt;marketplace&lt;/code&gt;, or publish it to npm.&lt;/p&gt; 
&lt;h2&gt;Philosophy&lt;/h2&gt; 
&lt;p&gt;omp is a fork of &lt;a href=&quot;https://github.com/badlogic/pi-mono&quot;&gt;pi-mono&lt;/a&gt; by &lt;a href=&quot;https://github.com/mariozechner&quot;&gt;Mario Zechner&lt;/a&gt;, extended with a batteries-included coding workflow.&lt;/p&gt; 
&lt;p&gt;Key ideas:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Keep interactive terminal-first UX for real coding work&lt;/li&gt; 
 &lt;li&gt;Include practical built-ins (tools, sessions, branching, subagents, extensibility)&lt;/li&gt; 
 &lt;li&gt;Make advanced behavior configurable rather than hidden&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Development&lt;/h2&gt; 
&lt;h3&gt;Getting started from source&lt;/h3&gt; 
&lt;p&gt;Fresh clones need both workspace dependencies and the local Rust/N-API addon before the source CLI can start.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;bun setup
bun dev
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;bun setup&lt;/code&gt; installs Bun workspaces and builds &lt;code&gt;@oh-my-pi/pi-natives&lt;/code&gt;. Re-run &lt;code&gt;bun run build:native&lt;/code&gt; after changing Rust crates or &lt;code&gt;packages/natives&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;For a non-interactive smoke check:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;bun dev -- --version
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Debug Command&lt;/h3&gt; 
&lt;p&gt;&lt;code&gt;/debug&lt;/code&gt; opens tools for debugging, reporting, and profiling.&lt;/p&gt; 
&lt;p&gt;For architecture and contribution guidelines, see &lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/coding-agent/DEVELOPMENT.md&quot;&gt;packages/coding-agent/DEVELOPMENT.md&lt;/a&gt;.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Monorepo Packages&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Package&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/collab-web&quot;&gt;@oh-my-pi/collab-web&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Browser guest client, mock host, and local relay for collab live sessions&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/ai&quot;&gt;@oh-my-pi/pi-ai&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Multi-provider LLM client with streaming and model/provider integration&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/catalog&quot;&gt;@oh-my-pi/pi-catalog&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Model catalog: bundled model database, provider descriptors, and identity&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/agent&quot;&gt;@oh-my-pi/pi-agent-core&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Agent runtime with tool calling and state management&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/coding-agent&quot;&gt;@oh-my-pi/pi-coding-agent&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Interactive coding agent CLI and SDK&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/tui&quot;&gt;@oh-my-pi/pi-tui&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Terminal UI library with differential rendering&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/natives&quot;&gt;@oh-my-pi/pi-natives&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;N-API bindings for grep, shell, image, text, syntax highlighting, and more&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/stats&quot;&gt;@oh-my-pi/omp-stats&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Local observability dashboard for AI usage statistics&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/omptype&quot;&gt;@oh-my-pi/omptype&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;ArkType-compatible schema validation with lazy JIT compilation&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/utils&quot;&gt;@oh-my-pi/pi-utils&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Shared utilities (logging, streams, dirs/env/process helpers)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/wire&quot;&gt;@oh-my-pi/pi-wire&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Shared collab live-session protocol types and relay constants&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/hashline&quot;&gt;@oh-my-pi/hashline&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Line-anchored patch language and applier behind the &lt;code&gt;edit&lt;/code&gt; tool&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/mnemopi&quot;&gt;@oh-my-pi/pi-mnemopi&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Local SQLite memory engine for Oh My Pi agents&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/snapcompact&quot;&gt;@oh-my-pi/snapcompact&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Bitmap-frame context compression package and SQuAD eval suite&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/browser-relay&quot;&gt;@oh-my-pi/browser-relay&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Chrome extension that lets the browser tool drive your existing tabs&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/metaharness&quot;&gt;@oh-my-pi/pi-metaharness&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Unified benchmark runners, Harbor run storage, REST/SSE API, live dashboard&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/typescript-edit-benchmark&quot;&gt;@oh-my-pi/typescript-edit-benchmark&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Edit benchmark suite built on TypeScript source mutations&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Rust Crates&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Crate&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/crates/pi-natives&quot;&gt;pi-natives&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Core Rust native addon (N-API &lt;code&gt;cdylib&lt;/code&gt;) used by &lt;code&gt;@oh-my-pi/pi-natives&lt;/code&gt;; aggregates the crates below&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/crates/pi-shell&quot;&gt;pi-shell&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Embedded shell / PTY / process management split out of &lt;code&gt;pi-natives&lt;/code&gt; (wraps &lt;code&gt;brush-*&lt;/code&gt;)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/crates/pi-ast&quot;&gt;pi-ast&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;tree-sitter-based code summarizer and AST utilities (50+ language grammars)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/crates/pi-iso&quot;&gt;pi-iso&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Task isolation backend resolver: APFS clones, btrfs/zfs reflinks, overlayfs, projfs, rcopy&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/crates/pi-voice&quot;&gt;pi-voice&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Audio capture/playback, Opus codecs, and live WebRTC streaming primitives&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/crates/pi-walker&quot;&gt;pi-walker&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Parallel ignore-aware filesystem walker with the scan cache shared by grep, glob, and workspace&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/crates/vendor/brush-core&quot;&gt;brush-core&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Vendored fork of &lt;a href=&quot;https://github.com/reubeno/brush&quot;&gt;brush-shell&lt;/a&gt; for embedded bash execution&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/crates/pi-builtins&quot;&gt;pi-builtins&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Bash builtins (cd, echo, test, printf, read, export, …) plus 67 in-process command-line utilities&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Issues and pull requests are open to everyone. Open PRs are currently a &lt;strong&gt;trial&lt;/strong&gt; — the previous vouch requirement is lifted while we evaluate how it goes, and it may return. See &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt;&lt;/strong&gt; for guidelines on contributing.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;MIT. See &lt;a href=&quot;https://raw.githubusercontent.com/can1357/oh-my-pi/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;© 2025 Mario Zechner&lt;br /&gt; © 2025-2026 Can Bölük&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;made for terminals that stay open&lt;/em&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://omp.sh&quot;&gt;omp.sh&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/can1357/oh-my-pi&quot;&gt;GitHub&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/can1357/oh-my-pi/raw/main/packages/coding-agent/CHANGELOG.md&quot;&gt;Changelog&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.npmjs.com/package/@oh-my-pi/pi-coding-agent&quot;&gt;npm&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://discord.gg/4NMW9cdXZa&quot;&gt;Discord&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/can1357/oh-my-pi/raw/main/LICENSE&quot;&gt;MIT&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/41e8d01a0510365d63e1bbd20d9ddf6b6c8877e38890a8176567f20ee2cf0ae0/can1357/oh-my-pi" medium="image" />
      
    </item>
    
    <item>
      <title>likec4/likec4</title>
      <link>https://github.com/likec4/likec4</link>
      <description>&lt;p&gt;Visualize, collaborate, and evolve the software architecture with always actual and live diagrams from your code&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Architecture as a code&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/likec4/likec4/main/README.zh-CN.md&quot;&gt;简体中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/likec4/likec4/main/README.ja.md&quot;&gt;日本語&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Visualize, collaborate on, and evolve your software architecture with always up-to-date, live diagrams generated from your code.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://likec4.dev/&quot;&gt;docs&lt;/a&gt; - &lt;a href=&quot;https://playground.likec4.dev/&quot;&gt;playground&lt;/a&gt; - &lt;a href=&quot;https://template.likec4.dev/view/index&quot;&gt;demo&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.npmjs.com/package/likec4&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://img.shields.io/npm/v/likec4&quot; alt=&quot;NPM Version&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/likec4&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/dm/likec4&quot; alt=&quot;NPM Downloads&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=likec4.likec4-vscode&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://img.shields.io/visual-studio-marketplace/azure-devops/installs/total/likec4.likec4-vscode?label=vscode%20installs&quot; alt=&quot;VSCode Installs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://open-vsx.org/extension/likec4/likec4-vscode&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://img.shields.io/open-vsx/dt/likec4/likec4-vscode?label=open-vsx&amp;amp;color=%23A60EE5&quot; alt=&quot;Open VSX Installs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://mcptoplist.com/server/mcp.so%2FLikeC4%2FLikeC4&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://mcptoplist.com/badge/mcp.so%2FLikeC4%2FLikeC4.svg?sanitize=true&quot; alt=&quot;MCP Toplist&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/likec4/likec4/assets/824903/d6994540-55d1-4167-b66b-45056754cc29&quot; alt=&quot;vscode extension&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;What is LikeC4? Why &quot;like&quot;?&lt;/h2&gt; 
&lt;p&gt;LikeC4 is a modeling language for describing software architecture and tools to generate diagrams from the model.&lt;/p&gt; 
&lt;p&gt;LikeC4 is inspired by &lt;a href=&quot;https://c4model.com/&quot;&gt;C4 Model&lt;/a&gt; and &lt;a href=&quot;https://github.com/structurizr/dsl&quot;&gt;Structurizr DSL&lt;/a&gt;, but provides some flexibility. You customize or define your own notation, element types, and any number of nested levels in architecture model.&lt;br /&gt; Perfectly tailored to your needs.&lt;/p&gt; 
&lt;h2&gt;What does LikeC4 look like?&lt;/h2&gt; 
&lt;p&gt;LikeC4 source:&lt;/p&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://github.com/likec4/.github/assets/824903/c0f22106-dba6-469e-ab47-85e7b8565513&quot; width=&quot;675px&quot; /&gt; 
&lt;/div&gt; 
&lt;p&gt;Run &lt;a href=&quot;https://raw.githubusercontent.com/likec4/likec4/main/packages/likec4/README.md&quot;&gt;CLI&lt;/a&gt; to preview:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;npx likec4 start
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;And result:&lt;/p&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://github.com/likec4/likec4/assets/824903/27eabe54-7d97-47a8-a7e4-1bb44a8e03e5&quot; width=&quot;984px&quot; /&gt; 
&lt;/div&gt; 
&lt;p&gt;Template repository - &lt;a href=&quot;https://github.com/likec4/template&quot;&gt;likec4/template&lt;/a&gt;&lt;br /&gt; Deployed - &lt;a href=&quot;https://template.likec4.dev/view/index&quot;&gt;https://template.likec4.dev&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://stackblitz.com/~/github.com/likec4/template&quot;&gt;&lt;img src=&quot;https://developer.stackblitz.com/img/open_in_stackblitz.svg?sanitize=true&quot; alt=&quot;Open in StackBlitz&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Check &lt;a href=&quot;https://likec4.dev/tutorial/&quot;&gt;Tutorial&lt;/a&gt; - for a quick overview of LikeC4.&lt;/p&gt; 
&lt;h2&gt;Getting help&lt;/h2&gt; 
&lt;p&gt;We are always happy to help you get started:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://discord.gg/86ZSpjKAdA&quot;&gt;Join Discord community&lt;/a&gt; – it is the easiest way to get help&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/likec4/likec4/discussions&quot;&gt;GitHub Discussions&lt;/a&gt; – ask anything about the project or give feedback&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contributors&lt;/h2&gt; 
&lt;a href=&quot;https://github.com/likec4/likec4/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=likec4/likec4&quot; /&gt; &lt;/a&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/likec4/likec4/main/CONTRIBUTING.md&quot;&gt;Become a contributor&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Support development&lt;/h2&gt; 
&lt;p&gt;LikeC4 is a MIT-licensed open source project with its ongoing development made possible entirely by your support.&lt;br /&gt; If you like the project, please consider contributing financially to help grow and improve it.&lt;br /&gt; You can support us via &lt;a href=&quot;https://opencollective.com/likec4&quot;&gt;OpenCollective&lt;/a&gt; or &lt;a href=&quot;https://github.com/sponsors/likec4&quot;&gt;GitHub Sponsors&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;This project is released under the &lt;a href=&quot;https://raw.githubusercontent.com/likec4/likec4/main/LICENSE&quot;&gt;MIT License&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/8be678344e790a01856addaec2e2ca79dcac14b00f1712959fd60e556c640531/likec4/likec4" medium="image" />
      
    </item>
    
    <item>
      <title>QwenLM/qwen-code</title>
      <link>https://github.com/QwenLM/qwen-code</link>
      <description>&lt;p&gt;An open-source AI coding agent that lives in your terminal.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;p&gt;&lt;a href=&quot;https://www.npmjs.com/package/@qwen-code/qwen-code&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/@qwen-code/qwen-code.svg?sanitize=true&quot; alt=&quot;npm version&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/QwenLM/qwen-code/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/QwenLM/qwen-code.svg?sanitize=true&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://nodejs.org/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/node-%3E%3D22.0.0-brightgreen.svg?sanitize=true&quot; alt=&quot;Node.js Version&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/@qwen-code/qwen-code&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/dm/@qwen-code/qwen-code.svg?sanitize=true&quot; alt=&quot;Downloads&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://trendshift.io/repositories/15287&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/15287&quot; alt=&quot;QwenLM%2Fqwen-code | Trendshift&quot; style=&quot;width: 250px; height: 55px;&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;The open-source AI coding agent that lives in your terminal.&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://qwenlm.github.io/qwen-code-docs/zh/users/overview&quot;&gt;中文&lt;/a&gt; | &lt;a href=&quot;https://qwenlm.github.io/qwen-code-docs/de/users/overview&quot;&gt;Deutsch&lt;/a&gt; | &lt;a href=&quot;https://qwenlm.github.io/qwen-code-docs/fr/users/overview&quot;&gt;français&lt;/a&gt; | &lt;a href=&quot;https://qwenlm.github.io/qwen-code-docs/ja/users/overview&quot;&gt;日本語&lt;/a&gt; | &lt;a href=&quot;https://qwenlm.github.io/qwen-code-docs/ru/users/overview&quot;&gt;Русский&lt;/a&gt; | &lt;a href=&quot;https://qwenlm.github.io/qwen-code-docs/pt-BR/users/overview&quot;&gt;Português (Brasil)&lt;/a&gt; | &lt;a href=&quot;https://qwenlm.github.io/qwen-code-docs/ko/users/overview&quot;&gt;한국어&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Why Qwen Code?&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Agentic out of the box&lt;/strong&gt; — Auto-Memory, Auto-Skills, SubAgents, Agent Teams, and MCP. Dynamic workflows, zero setup.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Open-source, inside and out&lt;/strong&gt; — The framework and the Qwen models are open-source. They evolve together. No vendor lock-in.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Multi-protocol&lt;/strong&gt; — Supports OpenAI, Anthropic, Gemini, and Qwen APIs. Any third-party provider or local model (Ollama / vLLM). Switch at runtime.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Beyond the terminal&lt;/strong&gt; — IDE plugins, Desktop app, daemon mode, SDKs, and IM bots (Telegram / DingTalk / WeChat / Feishu).&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-tip&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-light-bulb mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Tip&lt;/p&gt;
 &lt;p&gt;Qwen Code is actively iterating on itself — using its own agent and models to file issues, submit PRs, review code, and run tests. Powered by the community, driven by AI.&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Linux / macOS:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen-standalone.sh | bash
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Windows:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;irm https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen-standalone.ps1 | iex
&lt;/code&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Restart your terminal after installation to ensure environment variables take effect.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;details&gt; 
 &lt;summary&gt;NPM / Homebrew&lt;/summary&gt; 
 &lt;p&gt;&lt;strong&gt;NPM&lt;/strong&gt; (requires &lt;a href=&quot;https://nodejs.org/&quot;&gt;Node.js 22+&lt;/a&gt;):&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install -g @qwen-code/qwen-code@latest
&lt;/code&gt;&lt;/pre&gt; 
 &lt;p&gt;&lt;strong&gt;Homebrew&lt;/strong&gt; (macOS / Linux):&lt;/p&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;brew install qwen-code
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;qwen          # Launch interactive terminal UI
# Inside the session:
/auth         # Configure your provider and API key
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://qwenlm.github.io/qwen-code-docs/en/users/configuration/auth/&quot;&gt;Authentication Guide&lt;/a&gt; and &lt;a href=&quot;https://qwenlm.github.io/qwen-code-docs/en/users/configuration/settings/&quot;&gt;Settings Reference&lt;/a&gt; for detailed setup.&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://img.alicdn.com/imgextra/i2/O1CN01K0nwj41RM1Il8kB0t_!!6000000002096-2-tps-1544-1060.png&quot; alt=&quot;Qwen Code&quot; /&gt;&lt;/p&gt; 
&lt;h2&gt;How to Use Qwen Code&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Mode&lt;/th&gt; 
   &lt;th&gt;Command&lt;/th&gt; 
   &lt;th&gt;Use Case&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Interactive&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;qwen&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Terminal UI with rich rendering, &lt;code&gt;@file&lt;/code&gt; references, slash commands&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Headless&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;qwen -p &quot;...&quot;&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Scripts, CI/CD, batch processing — no UI&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;IDE&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;—&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://qwenlm.github.io/qwen-code-docs/en/users/integration-vscode/&quot;&gt;VS Code&lt;/a&gt;, &lt;a href=&quot;https://qwenlm.github.io/qwen-code-docs/en/users/integration-zed/&quot;&gt;Zed&lt;/a&gt;, &lt;a href=&quot;https://qwenlm.github.io/qwen-code-docs/en/users/integration-jetbrains/&quot;&gt;JetBrains&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Desktop&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;—&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/QwenLM/qwen-code/releases/tag/desktop-latest&quot;&gt;Qwen Code Desktop&lt;/a&gt; — GUI for macOS, Windows, Linux&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Daemon&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;qwen serve&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Shared agent session over HTTP+SSE (ACP). Multiple clients, one agent. &lt;em&gt;(experimental)&lt;/em&gt; &lt;a href=&quot;https://qwenlm.github.io/qwen-code-docs/en/users/qwen-serve&quot;&gt;Docs&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;SDK&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;—&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://raw.githubusercontent.com/QwenLM/qwen-code/main/packages/sdk-typescript/README.md&quot;&gt;TypeScript&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/QwenLM/qwen-code/main/packages/sdk-python/README.md&quot;&gt;Python&lt;/a&gt;, &lt;a href=&quot;https://raw.githubusercontent.com/QwenLM/qwen-code/main/packages/sdk-java/qwencode/README.md&quot;&gt;Java&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;IM Bot&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;qwen channel&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Connect to Telegram, DingTalk, WeChat, or Feishu&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;details&gt; 
 &lt;summary&gt;SDK example (Python)&lt;/summary&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;import asyncio

from qwen_code_sdk import is_sdk_result_message, query


async def main() -&amp;gt; None:
    result = query(
        &quot;Summarize the repository layout.&quot;,
        {
            &quot;cwd&quot;: &quot;/path/to/project&quot;,
            &quot;path_to_qwen_executable&quot;: &quot;qwen&quot;,
        },
    )

    async for message in result:
        if is_sdk_result_message(message):
            print(message[&quot;result&quot;])


asyncio.run(main())
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;h2&gt;Capabilities&lt;/h2&gt; 
&lt;p&gt;If you know Claude Code, you already know Qwen Code — and then some. We&#39;ve put significant effort into &lt;a href=&quot;https://github.com/wenshao/codeagents/raw/main/docs/comparison/qwen-code-improvement-report.md&quot;&gt;bringing Qwen Code to feature parity with Claude Code&lt;/a&gt;, improving both breadth and reliability across the board.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Qwen Code&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;Claude Code&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;SubAgents, Agent Teams, Dynamic Workflows&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Auto-Memory, Auto-Skills, Hooks&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Built-in Skills (/review, /batch, /loop, /bugfix…)&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;MCP, Plan Mode, LSP Integration&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Auto Mode, Sandbox, Git Worktrees&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Computer Use (desktop automation)&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;IDE Plugins (VS Code / JetBrains / Zed)&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;SDK&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Headless Mode, Session Management&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Open-source — model and framework&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;—&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Multi-protocol (OpenAI / Anthropic / Gemini / Qwen + any provider)&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;—&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Agent Arena (multi-model head-to-head on same task)&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;—&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Daemon Mode — &lt;code&gt;qwen serve&lt;/code&gt; (multi-client shared agent)&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;—&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;IM Channels (Telegram / DingTalk / WeChat / Feishu)&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;✓&lt;/td&gt; 
   &lt;td style=&quot;text-align:center&quot;&gt;—&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Ecosystem&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;&lt;a href=&quot;https://github.com/QwenLM/qwen-code/releases/tag/desktop-latest&quot;&gt;&lt;strong&gt;Qwen Code Desktop&lt;/strong&gt;&lt;/a&gt; — Official desktop app for macOS, Windows, and Linux&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;a href=&quot;https://github.com/iOfficeAI/AionUi&quot;&gt;&lt;strong&gt;AionUi&lt;/strong&gt;&lt;/a&gt; — A modern GUI for command-line AI tools including Qwen Code&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;a href=&quot;https://github.com/Piebald-AI/gemini-cli-desktop&quot;&gt;&lt;strong&gt;Gemini CLI Desktop&lt;/strong&gt;&lt;/a&gt; — A cross-platform desktop/web/mobile UI for Qwen Code&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;a href=&quot;https://github.com/openclaw/acpx&quot;&gt;&lt;strong&gt;🦞 Qwen Code Claw&lt;/strong&gt;&lt;/a&gt; — Let other agents (Claude, Codex, etc.) delegate coding tasks to Qwen Code via ACP. Paste this prompt into your agent:&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Use Qwen Code as a coding agent. First, fetch and read this skill reference:
https://raw.githubusercontent.com/QwenLM/qwen-code/refs/heads/main/.qwen/skills/qwen-code-claw/SKILL.md
Then follow the instructions inside to install, authenticate, and use Qwen Code via acpx for all coding tasks.
&lt;/code&gt;&lt;/pre&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/modelstudioai/cli&quot;&gt;&lt;strong&gt;Aliyun Model Studio CLI&lt;/strong&gt;&lt;/a&gt; — Official CLI for Aliyun&#39;s AI platform (&lt;code&gt;bailian-cli&lt;/code&gt;). Extends Qwen Code with image/video generation, knowledge retrieval, app orchestration, and model deployment&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Contributions are welcome! See &lt;a href=&quot;https://raw.githubusercontent.com/QwenLM/qwen-code/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for guidelines.&lt;/p&gt; 
&lt;h2&gt;Acknowledgments&lt;/h2&gt; 
&lt;p&gt;This project was originally based on &lt;a href=&quot;https://github.com/google-gemini/gemini-cli&quot;&gt;Google Gemini CLI&lt;/a&gt; v0.8.2. We gratefully acknowledge the Gemini CLI team&#39;s excellent work. Starting from Qwen Code v0.1, we stopped syncing with upstream and began independent development as a multi-protocol, multi-platform agent framework with deep integrations for Qwen models and beyond.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/5544159efb551ef1a618da1b14db4b72f58d9d5a822c69a980d9d208d6b0f302/QwenLM/qwen-code" medium="image" />
      
    </item>
    
    <item>
      <title>pascalorg/editor</title>
      <link>https://github.com/pascalorg/editor</link>
      <description>&lt;p&gt;Create and share 3D architectural projects.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Pascal Editor&lt;/h1&gt; 
&lt;p&gt;A 3D building editor built with React Three Fiber and WebGPU.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/pascalorg/editor/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/license-MIT-blue.svg?sanitize=true&quot; alt=&quot;MIT License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/@pascal-app/core&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/@pascal-app/core?label=%40pascal-app%2Fcore&quot; alt=&quot;npm @pascal-app/core&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/@pascal-app/viewer&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/@pascal-app/viewer?label=%40pascal-app%2Fviewer&quot; alt=&quot;npm @pascal-app/viewer&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.npmjs.com/package/@pascal-app/cli&quot;&gt;&lt;img src=&quot;https://img.shields.io/npm/v/@pascal-app/cli?label=%40pascal-app%2Fcli&quot; alt=&quot;npm @pascal-app/cli&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/XRKsDcpqgS&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Discord-Join%20Server-5865F2?logo=discord&amp;amp;logoColor=white&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://x.com/pascal_app&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/follow-%40pascal__app-black?logo=x&amp;amp;logoColor=white&quot; alt=&quot;X (Twitter)&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/user-attachments/assets/8b50e7cf-cebe-4579-9cf3-8786b35f7b6b&quot;&gt;https://github.com/user-attachments/assets/8b50e7cf-cebe-4579-9cf3-8786b35f7b6b&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Run the Editor Locally&lt;/h2&gt; 
&lt;p&gt;Node.js 22.13 or newer can create a persistent local Pascal installation without cloning this repository:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx @pascal-app/cli editor
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The CLI starts the editor and an authenticated MCP service in the background, selects collision-free loopback ports, and keeps projects in &lt;code&gt;~/.pascal/data/pascal.db&lt;/code&gt;. Configure an agent to launch &lt;code&gt;pascal mcp connect&lt;/code&gt;. See &lt;a href=&quot;https://editor.pascal.app/docs/developers/local-editor&quot;&gt;Run Pascal locally&lt;/a&gt; for pnpm/Bun commands, project management, MCP setup, updates, storage paths, and troubleshooting.&lt;/p&gt; 
&lt;h2&gt;Using Published Packages&lt;/h2&gt; 
&lt;p&gt;The viewer runtime and built-in node definitions are separate packages. Install the full built-in viewer set, then load the built-in plugin once before mounting &lt;code&gt;&amp;lt;Viewer&amp;gt;&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install @pascal-app/core @pascal-app/viewer @pascal-app/editor @pascal-app/nodes
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-typescript&quot;&gt;import { loadPlugin } from &#39;@pascal-app/core&#39;
import { builtinPlugin } from &#39;@pascal-app/nodes&#39;

await loadPlugin(builtinPlugin)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://raw.githubusercontent.com/pascalorg/editor/main/packages/viewer/README.md#usage&quot;&gt;&lt;code&gt;@pascal-app/viewer&lt;/code&gt; quick start&lt;/a&gt; for a React example.&lt;/p&gt; 
&lt;h2&gt;Repository Architecture&lt;/h2&gt; 
&lt;p&gt;This is a Turborepo monorepo with the reusable editor packages, the standalone app, and the CLI that distributes it:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;editor/
├── apps/
│   └── editor/          # Next.js application
├── packages/
│   ├── core/            # Schemas, scene state, and registry contracts
│   ├── viewer/          # 3D rendering runtime and shared systems
│   ├── editor/          # Editing tools and UI components
│   ├── nodes/           # Built-in node definitions, renderers, and systems
│   ├── cli/             # Persistent local editor installer and process manager
│   ├── mcp/             # Model Context Protocol server and scene storage
│   └── ui/              # Shared UI components
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Separation of Concerns&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Package&lt;/th&gt; 
   &lt;th&gt;Responsibility&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;@pascal-app/core&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Node schemas, scene state (Zustand), registry contracts, spatial queries, and event bus&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;@pascal-app/viewer&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;3D rendering via React Three Fiber, shared render systems, default camera/controls, and post-processing&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;@pascal-app/editor&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Editing tools, panels, selection, and direct-manipulation UI&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;@pascal-app/nodes&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Built-in registry plugin with node definitions, renderers, geometry, and systems&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;@pascal-app/cli&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Installs and manages a versioned standalone editor runtime and persistent local data&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;@pascal-app/mcp&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Exposes scene tools, resources, prompts, and local storage to MCP-compatible AI hosts&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;apps/editor&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Standalone Next.js host for the editor packages&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;The &lt;strong&gt;viewer&lt;/strong&gt; renders the scene with sensible defaults. The &lt;strong&gt;editor&lt;/strong&gt; extends it with interactive tools, selection management, and editing capabilities.&lt;/p&gt; 
&lt;h3&gt;Stores&lt;/h3&gt; 
&lt;p&gt;Each package has its own Zustand store for managing state:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Store&lt;/th&gt; 
   &lt;th&gt;Package&lt;/th&gt; 
   &lt;th&gt;Responsibility&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;useScene&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;@pascal-app/core&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Scene data: nodes, root IDs, dirty nodes, CRUD operations. Persisted to IndexedDB with undo/redo via Zundo.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;useViewer&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;@pascal-app/viewer&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Viewer state: current selection (building/level/zone IDs), level display mode (stacked/exploded/solo), camera mode.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;useEditor&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;code&gt;apps/editor&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Editor state: active tool, structure layer visibility, panel states, editor-specific preferences.&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Access patterns:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-typescript&quot;&gt;// Subscribe to state changes (React component)
const nodes = useScene((state) =&amp;gt; state.nodes)
const levelId = useViewer((state) =&amp;gt; state.selection.levelId)
const activeTool = useEditor((state) =&amp;gt; state.tool)

// Access state outside React (callbacks, systems)
const node = useScene.getState().nodes[id]
useViewer.getState().setSelection({ levelId: &#39;level_123&#39; })
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Core Concepts&lt;/h2&gt; 
&lt;h3&gt;Nodes&lt;/h3&gt; 
&lt;p&gt;Nodes are the data primitives that describe the 3D scene. All nodes extend &lt;code&gt;BaseNode&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-typescript&quot;&gt;BaseNode {
  id: string              // Auto-generated with type prefix (e.g., &quot;wall_abc123&quot;)
  type: string            // Discriminator for type-safe handling
  parentId: string | null // Parent node reference
  visible: boolean
  camera?: Camera         // Optional saved camera position
  metadata?: JSON         // Arbitrary metadata (e.g., { isTransient: true })
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Node Hierarchy:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Site
└── Building
    └── Level
        ├── Wall → Item (doors, windows)
        ├── Slab
        ├── Ceiling → Item (lights)
        ├── Roof
        ├── Zone
        ├── Scan (3D reference)
        └── Guide (2D reference)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Nodes are stored in a &lt;strong&gt;flat dictionary&lt;/strong&gt; (&lt;code&gt;Record&amp;lt;id, Node&amp;gt;&lt;/code&gt;), not a nested tree. Parent-child relationships are defined via &lt;code&gt;parentId&lt;/code&gt; and &lt;code&gt;children&lt;/code&gt; arrays.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Scene State (Zustand Store)&lt;/h3&gt; 
&lt;p&gt;The scene is managed by a Zustand store in &lt;code&gt;@pascal-app/core&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-typescript&quot;&gt;useScene.getState() = {
  nodes: Record&amp;lt;id, AnyNode&amp;gt;,  // All nodes
  rootNodeIds: string[],       // Top-level nodes (sites)
  dirtyNodes: Set&amp;lt;string&amp;gt;,     // Nodes pending system updates

  createNode(node, parentId),
  updateNode(id, updates),
  deleteNode(id),
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Middleware:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Persist&lt;/strong&gt; - Saves to IndexedDB (excludes transient nodes)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Temporal&lt;/strong&gt; (Zundo) - Undo/redo with 50-step history&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Scene Registry&lt;/h3&gt; 
&lt;p&gt;The registry maps node IDs to their Three.js objects for fast lookup:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-typescript&quot;&gt;sceneRegistry = {
  nodes: Map&amp;lt;id, Object3D&amp;gt;,    // ID → 3D object
  byType: {
    wall: Set&amp;lt;id&amp;gt;,
    item: Set&amp;lt;id&amp;gt;,
    zone: Set&amp;lt;id&amp;gt;,
    // ...
  }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Renderers register their refs using the &lt;code&gt;useRegistry&lt;/code&gt; hook:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-tsx&quot;&gt;const ref = useRef&amp;lt;Mesh&amp;gt;(null!)
useRegistry(node.id, &#39;wall&#39;, ref)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This allows systems to access 3D objects directly without traversing the scene graph.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Node Renderers&lt;/h3&gt; 
&lt;p&gt;Renderers are React components that create Three.js objects for each node type:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SceneRenderer
└── NodeRenderer (dispatches by type)
    ├── BuildingRenderer
    ├── LevelRenderer
    ├── WallRenderer
    ├── SlabRenderer
    ├── ZoneRenderer
    ├── ItemRenderer
    └── ...
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Pattern:&lt;/strong&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Renderer creates a placeholder mesh/group&lt;/li&gt; 
 &lt;li&gt;Registers it with &lt;code&gt;useRegistry&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Systems update geometry based on node data&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Example (simplified):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-tsx&quot;&gt;const WallRenderer = ({ node }) =&amp;gt; {
  const ref = useRef&amp;lt;Mesh&amp;gt;(null!)
  useRegistry(node.id, &#39;wall&#39;, ref)

  return (
    &amp;lt;mesh ref={ref}&amp;gt;
      &amp;lt;boxGeometry args={[0, 0, 0]} /&amp;gt;  {/* Replaced by WallSystem */}
      &amp;lt;meshStandardMaterial /&amp;gt;
      {node.children.map(id =&amp;gt; &amp;lt;NodeRenderer key={id} nodeId={id} /&amp;gt;)}
    &amp;lt;/mesh&amp;gt;
  )
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Systems&lt;/h3&gt; 
&lt;p&gt;Systems are React components that run in the render loop (&lt;code&gt;useFrame&lt;/code&gt;) to update geometry and transforms. They process &lt;strong&gt;dirty nodes&lt;/strong&gt; marked by the store.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Core Systems (in &lt;code&gt;@pascal-app/core&lt;/code&gt;):&lt;/strong&gt;&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;System&lt;/th&gt; 
   &lt;th&gt;Responsibility&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;WallSystem&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Generates wall geometry with mitering and CSG cutouts for doors/windows&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;SlabSystem&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Generates floor geometry from polygons&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;CeilingSystem&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Generates ceiling geometry&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;RoofSystem&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Generates roof geometry&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;ItemSystem&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Positions items on walls, ceilings, or floors (slab elevation)&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Viewer Systems (in &lt;code&gt;@pascal-app/viewer&lt;/code&gt;):&lt;/strong&gt;&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;System&lt;/th&gt; 
   &lt;th&gt;Responsibility&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;LevelSystem&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Handles level visibility and vertical positioning (stacked/exploded/solo modes)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;ScanSystem&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Controls 3D scan visibility&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;GuideSystem&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Controls guide image visibility&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Processing Pattern:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-typescript&quot;&gt;useFrame(() =&amp;gt; {
  for (const id of dirtyNodes) {
    const obj = sceneRegistry.nodes.get(id)
    const node = useScene.getState().nodes[id]

    // Update geometry, transforms, etc.
    updateGeometry(obj, node)

    dirtyNodes.delete(id)
  }
})
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Dirty Nodes&lt;/h3&gt; 
&lt;p&gt;When a node changes, it&#39;s marked as &lt;strong&gt;dirty&lt;/strong&gt; in &lt;code&gt;useScene.getState().dirtyNodes&lt;/code&gt;. Systems check this set each frame and only recompute geometry for dirty nodes.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-typescript&quot;&gt;// Automatic: createNode, updateNode, deleteNode mark nodes dirty
useScene.getState().updateNode(wallId, { thickness: 0.2 })
// → wallId added to dirtyNodes
// → WallSystem regenerates geometry next frame
// → wallId removed from dirtyNodes
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Manual marking:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-typescript&quot;&gt;useScene.getState().dirtyNodes.add(wallId)
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Event Bus&lt;/h3&gt; 
&lt;p&gt;Inter-component communication uses a typed event emitter (mitt):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-typescript&quot;&gt;// Node events
emitter.on(&#39;wall:click&#39;, (event) =&amp;gt; { ... })
emitter.on(&#39;item:enter&#39;, (event) =&amp;gt; { ... })
emitter.on(&#39;zone:context-menu&#39;, (event) =&amp;gt; { ... })

// Grid events (background)
emitter.on(&#39;grid:click&#39;, (event) =&amp;gt; { ... })

// Event payload
NodeEvent {
  node: AnyNode
  position: [x, y, z]
  localPosition: [x, y, z]
  normal?: [x, y, z]
  stopPropagation: () =&amp;gt; void
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Spatial Grid Manager&lt;/h3&gt; 
&lt;p&gt;Handles collision detection and placement validation:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-typescript&quot;&gt;spatialGridManager.canPlaceOnFloor(levelId, position, dimensions, rotation)
spatialGridManager.canPlaceOnWall(wallId, t, height, dimensions)
spatialGridManager.getSlabElevationAt(levelId, x, z)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Used by item placement tools to validate positions and calculate slab elevations.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Editor Architecture&lt;/h2&gt; 
&lt;p&gt;The editor extends the viewer with:&lt;/p&gt; 
&lt;h3&gt;Tools&lt;/h3&gt; 
&lt;p&gt;Tools are activated via the toolbar and handle user input for specific operations:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;SelectTool&lt;/strong&gt; - Selection and manipulation&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;WallTool&lt;/strong&gt; - Draw walls&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;ZoneTool&lt;/strong&gt; - Create zones&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;ItemTool&lt;/strong&gt; - Place furniture/fixtures&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;SlabTool&lt;/strong&gt; - Create floor slabs&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Selection Manager&lt;/h3&gt; 
&lt;p&gt;The editor uses a custom selection manager with hierarchical navigation:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Site → Building → Level → Zone → Items
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Each depth level has its own selection strategy for hover/click behavior.&lt;/p&gt; 
&lt;h3&gt;Editor-Specific Systems&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;ZoneSystem&lt;/code&gt; - Controls zone visibility based on level mode&lt;/li&gt; 
 &lt;li&gt;Custom camera controls with node focusing&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Data Flow&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;User Action (click, drag)
       ↓
Tool Handler
       ↓
useScene.createNode() / updateNode()
       ↓
Node added/updated in store
Node marked dirty
       ↓
React re-renders NodeRenderer
useRegistry() registers 3D object
       ↓
System detects dirty node (useFrame)
Updates geometry via sceneRegistry
Clears dirty flag
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Building a Plugin&lt;/h2&gt; 
&lt;p&gt;The editor is extensible: a plugin ships node kinds (schema, 3D/2D rendering, placement tools, inspector parametrics) and left-rail panels through the same &lt;code&gt;Plugin&lt;/code&gt; manifest the built-ins use — there is no separate internal API.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Developer guide&lt;/strong&gt; — &lt;a href=&quot;https://editor.pascal.app/docs/developers/plugins&quot;&gt;Create a plugin&lt;/a&gt;: the &lt;code&gt;Plugin&lt;/code&gt; shape, panel contributions, discovery, lifecycle, and what&#39;s in/out of v1.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Worked example&lt;/strong&gt; — &lt;a href=&quot;https://github.com/pascalorg/plugin-trees&quot;&gt;&lt;code&gt;pascalorg/plugin-trees&lt;/code&gt;&lt;/a&gt;: a standalone plugin with procedural trees, flowers, grass, and a presets panel. Clone it as a starting point.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Technology Stack&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;React 19&lt;/strong&gt; + &lt;strong&gt;Next.js 16&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Three.js&lt;/strong&gt; (WebGPU renderer)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;React Three Fiber&lt;/strong&gt; + &lt;strong&gt;Drei&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Zustand&lt;/strong&gt; (state management)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Zod&lt;/strong&gt; (schema validation)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Zundo&lt;/strong&gt; (undo/redo)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;three-bvh-csg&lt;/strong&gt; (Boolean geometry operations)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Turborepo&lt;/strong&gt; (monorepo management)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Bun&lt;/strong&gt; (package manager)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Getting Started&lt;/h2&gt; 
&lt;h3&gt;Development&lt;/h3&gt; 
&lt;p&gt;Run the development server from the &lt;strong&gt;root directory&lt;/strong&gt; to enable hot reload for all packages:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Install dependencies
bun install

# Run development server (builds packages + starts editor with watch mode)
bun dev

# This will:
# 1. Build @pascal-app/core and @pascal-app/viewer
# 2. Start watching both packages for changes
# 3. Start the Next.js editor dev server
# Open http://localhost:3002
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Always run &lt;code&gt;bun dev&lt;/code&gt; from the root directory to ensure the package watchers are running. This enables hot reload when you edit files in &lt;code&gt;packages/core/src/&lt;/code&gt; or &lt;code&gt;packages/viewer/src/&lt;/code&gt;.&lt;/p&gt; 
&lt;h3&gt;Building for Production&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Build all packages
turbo build

# Build specific package
turbo build --filter=@pascal-app/core
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Publishing Packages&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Build packages
turbo build --filter=@pascal-app/core --filter=@pascal-app/viewer

# Publish to npm
npm publish --workspace=@pascal-app/core --access public
npm publish --workspace=@pascal-app/viewer --access public
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Key Files&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Path&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;packages/core/src/schema/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Node type definitions (Zod schemas)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;packages/core/src/store/use-scene.ts&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Scene state store&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;packages/core/src/hooks/scene-registry/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;3D object registry&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;packages/core/src/systems/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Geometry generation systems&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;packages/viewer/src/components/renderers/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Node renderers&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;packages/viewer/src/components/viewer/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Main Viewer component&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;apps/editor/components/tools/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Editor tools&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;apps/editor/store/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Editor-specific state&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Bug fixes, features, docs and ideas are all welcome. Start with &lt;a href=&quot;https://raw.githubusercontent.com/pascalorg/editor/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for setup, code style and the PR flow.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;New node kinds and sidebar panels ship as &lt;a href=&quot;https://editor.pascal.app/docs/developers/plugins&quot;&gt;plugins&lt;/a&gt; rather than edits to the built-ins — &lt;a href=&quot;https://github.com/pascalorg/plugin-trees&quot;&gt;&lt;code&gt;pascalorg/plugin-trees&lt;/code&gt;&lt;/a&gt; is a worked example&lt;/li&gt; 
 &lt;li&gt;Questions and ideas go to &lt;a href=&quot;https://github.com/pascalorg/editor/discussions&quot;&gt;Discussions&lt;/a&gt;; reproducible bugs go to &lt;a href=&quot;https://github.com/pascalorg/editor/issues&quot;&gt;Issues&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Participation is covered by our &lt;a href=&quot;https://raw.githubusercontent.com/pascalorg/editor/main/CODE_OF_CONDUCT.md&quot;&gt;Code of Conduct&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Security problems go to &lt;a href=&quot;https://raw.githubusercontent.com/pascalorg/editor/main/SECURITY.md&quot;&gt;SECURITY.md&lt;/a&gt;, not a public issue&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Contributors&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/Aymericr&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/4444492?v=4&quot; width=&quot;60&quot; height=&quot;60&quot; alt=&quot;Aymeric Rabot&quot; style=&quot;border-radius:50%&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/wass08&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/u/6551176?v=4&quot; width=&quot;60&quot; height=&quot;60&quot; alt=&quot;Wassim Samad&quot; style=&quot;border-radius:50%&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/sudhir9297&quot;&gt;&lt;img src=&quot;https://avatars.githubusercontent.com/sudhir9297?v=4&quot; width=&quot;60&quot; height=&quot;60&quot; alt=&quot;Sudhir&quot; style=&quot;border-radius:50%&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p&gt;&lt;a href=&quot;https://trendshift.io/repositories/23831&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/23831&quot; alt=&quot;pascalorg/editor | Trendshift&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/1077819522/f76f9c77-a8ac-47a2-9fd7-d17a9cdb3759" medium="image" />
      
    </item>
    
    <item>
      <title>simstudioai/sim</title>
      <link>https://github.com/simstudioai/sim</link>
      <description>&lt;p&gt;Build, deploy, and orchestrate AI agents. Sim is the central intelligence layer for your AI workforce.&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://sim.ai&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Sim-sim.ai-3B3B3B?labelColor=1A1A1A&quot; alt=&quot;Sim.ai&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://docs.sim.ai&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Docs-Read-E6E6E6?labelColor=C3C3C3&amp;amp;color=E6E6E6&quot; alt=&quot;Documentation&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://join.slack.com/t/sim-ott9864/shared_invite/zt-43lp8tc5v-0qrrqHGBKUsvQlpoouH~TA&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Slack-Join-E6E6E6?logo=slack&amp;amp;logoColor=1A1A1A&amp;amp;labelColor=C3C3C3&amp;amp;color=E6E6E6&quot; alt=&quot;Slack&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://x.com/simdotai&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/X-%40simdotai-525252?logo=x&amp;amp;logoColor=white&amp;amp;labelColor=1A1A1A&quot; alt=&quot;X&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://deepwiki.com/simstudioai/sim&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Ask-DeepWiki-E6E6E6?labelColor=C3C3C3&amp;amp;color=E6E6E6&quot; alt=&quot;Ask DeepWiki&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://cursor.com/link/prompt?text=Help%20me%20set%20up%20Sim%20locally.%20Follow%20these%20steps%3A%0A%0A1.%20First%2C%20verify%20Docker%20is%20installed%20and%20running%3A%0A%20%20%20docker%20--version%0A%20%20%20docker%20info%0A%0A2.%20Clone%20the%20repository%3A%0A%20%20%20git%20clone%20https%3A%2F%2Fgithub.com%2Fsimstudioai%2Fsim.git%0A%20%20%20cd%20sim%0A%0A3.%20Generate%20required%20secrets%20%28the%20stack%20will%20not%20start%20without%20them%29%3A%0A%20%20%20cat%20%3E%20.env%20%3C%3C%20EOF%0A%20%20%20BETTER_AUTH_SECRET%3D%24%28openssl%20rand%20-hex%2032%29%0A%20%20%20ENCRYPTION_KEY%3D%24%28openssl%20rand%20-hex%2032%29%0A%20%20%20INTERNAL_API_SECRET%3D%24%28openssl%20rand%20-hex%2032%29%0A%20%20%20CRON_SECRET%3D%24%28openssl%20rand%20-hex%2032%29%0A%20%20%20EOF%0A%0A4.%20Start%20the%20services%20with%20Docker%20Compose%3A%0A%20%20%20docker%20compose%20-f%20docker-compose.prod.yml%20up%20-d%0A%0A4.%20Wait%20for%20all%20containers%20to%20be%20healthy%20(this%20may%20take%201-2%20minutes)%3A%0A%20%20%20docker%20compose%20-f%20docker-compose.prod.yml%20ps%0A%0A5.%20Verify%20the%20app%20is%20accessible%20at%20http%3A%2F%2Flocalhost%3A3000%0A%0AIf%20there%20are%20any%20errors%2C%20help%20me%20troubleshoot%20them.%20Common%20issues%3A%0A-%20Port%203000%2C%203002%2C%20or%205432%20already%20in%20use%0A-%20Docker%20not%20running%0A-%20Insufficient%20memory%20(needs%2012GB%2B%20RAM)%0A%0AFor%20local%20AI%20models%20with%20Ollama%2C%20use%20this%20instead%20of%20step%203%3A%0A%20%20%20docker%20compose%20-f%20docker-compose.ollama.yml%20--profile%20setup%20up%20-d&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Set%20Up%20with-Cursor-E6E6E6?logo=cursor&amp;amp;logoColor=1A1A1A&amp;amp;labelColor=C3C3C3&amp;amp;color=E6E6E6&quot; alt=&quot;Set Up with Cursor&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://sim.ai&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/simstudioai/sim/main/apps/sim/public/static/readme-banner.png&quot; alt=&quot;Sim — Integrate, Context, Build, and Monitor AI agents&quot; width=&quot;100%&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt;A workspace to build, deploy and manage AI agents and workflows.&lt;/p&gt; 
&lt;h2&gt;Quickstart&lt;/h2&gt; 
&lt;h3&gt;Cloud-hosted: &lt;a href=&quot;https://sim.ai&quot;&gt;sim.ai&lt;/a&gt;&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://sim.ai&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Open-sim.ai-3B3B3B?labelColor=1A1A1A&quot; alt=&quot;Open sim.ai&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Self-hosted&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/simstudioai/sim.git &amp;amp;&amp;amp; cd sim
bun install
bun run setup
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Open &lt;a href=&quot;http://localhost:3000&quot;&gt;http://localhost:3000&lt;/a&gt;&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/simstudioai/sim/main/apps/sim/public/static/readme-platform.png&quot; alt=&quot;The Sim platform — chat on the left, the visual workflow builder on the right&quot; width=&quot;100%&quot; /&gt; &lt;/p&gt; 
&lt;h2&gt;Capabilities&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Connect 1,000+ integrations and every major LLM&lt;/li&gt; 
 &lt;li&gt;Add Slack, Notion, HubSpot, Salesforce, databases, and more&lt;/li&gt; 
 &lt;li&gt;Build agents visually, conversationally, or with code&lt;/li&gt; 
 &lt;li&gt;Ingest files, knowledge bases, and structured table data&lt;/li&gt; 
 &lt;li&gt;Monitor runs, logs, schedules, and workflow activity&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;One workspace, every surface&lt;/h2&gt; 
&lt;p align=&quot;center&quot;&gt;Chat and workflows are just the start — tables, files, and knowledge all live in the same workspace.&lt;/p&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td width=&quot;50%&quot; valign=&quot;top&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/simstudioai/sim/main/apps/sim/public/static/readme-tables.png&quot; alt=&quot;Tables in Sim — structured data your agents can query&quot; width=&quot;100%&quot; /&gt; &lt;p align=&quot;center&quot;&gt;&lt;b&gt;Tables&lt;/b&gt; — a database, built in&lt;/p&gt; &lt;/td&gt; 
   &lt;td width=&quot;50%&quot; valign=&quot;top&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/simstudioai/sim/main/apps/sim/public/static/readme-files.png&quot; alt=&quot;Files in Sim — documents for your team and every agent&quot; width=&quot;100%&quot; /&gt; &lt;p align=&quot;center&quot;&gt;&lt;b&gt;Files&lt;/b&gt; — one store for your team and every agent&lt;/p&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td width=&quot;50%&quot; valign=&quot;top&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/simstudioai/sim/main/apps/sim/public/static/readme-knowledge.png&quot; alt=&quot;Knowledge bases in Sim — synced docs your agents can search&quot; width=&quot;100%&quot; /&gt; &lt;p align=&quot;center&quot;&gt;&lt;b&gt;Knowledge&lt;/b&gt; — your agents&#39; memory&lt;/p&gt; &lt;/td&gt; 
   &lt;td width=&quot;50%&quot; valign=&quot;top&quot;&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h2&gt;Self-hosting&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt; &lt;a href=&quot;https://bun.sh/&quot;&gt;Bun&lt;/a&gt; and &lt;a href=&quot;https://www.docker.com/&quot;&gt;Docker&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;bun run setup&lt;/code&gt; is an interactive wizard: it provisions the database, generates secrets, writes your &lt;code&gt;.env&lt;/code&gt; files, connects a Chat API key, and starts Sim the way you choose:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Local dev&lt;/strong&gt; — run from source to contribute or hack on Sim&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Docker Compose&lt;/strong&gt; — a self-contained instance for testing self-hosting&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Kubernetes (Helm)&lt;/strong&gt; — deploy to a local cluster&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;When it finishes, open &lt;a href=&quot;http://localhost:3000&quot;&gt;http://localhost:3000&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Reconfigure an optional capability without rerunning the full wizard:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bun run setup status
bun run setup email
bun run setup storage
bun run setup sandbox
bun run setup jobs
bun run setup cache
bun run setup knowledge
bun run setup llm
bun run setup integration slack
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;bun run setup status&lt;/code&gt; detects the effective local-dev, Docker Compose, or current-context Helm configuration and reports configured, missing, or invalid capabilities and OAuth integrations without printing credential values. This is separate from &lt;code&gt;bun run sim status&lt;/code&gt;, which reports whether installed services are running and healthy.&lt;/p&gt; 
&lt;p&gt;Manage your install with &lt;code&gt;bun run sim&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bun run sim start | stop | restart   # bring your install up / down / cycle
bun run sim status                    # what&#39;s installed and healthy
bun run sim logs                      # follow logs
bun run sim doctor                    # diagnose configuration problems
bun run sim down                      # remove containers (data kept)
bun run sim reset                     # archive .env and wipe managed data
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;sim&lt;/code&gt; detects how you&#39;re running (Docker Compose, local dev, or Kubernetes) and acts accordingly.&lt;/p&gt; 
&lt;p&gt;Prefer a bare &lt;code&gt;sim&lt;/code&gt;? Run &lt;code&gt;bun link&lt;/code&gt; once — but note &lt;code&gt;sim&lt;/code&gt; lands in &lt;code&gt;~/.bun/bin&lt;/code&gt;, which Homebrew&#39;s bun doesn&#39;t add to your PATH, so you may need &lt;code&gt;export PATH=&quot;$HOME/.bun/bin:$PATH&quot;&lt;/code&gt; in your shell profile.&lt;/p&gt; 
&lt;p&gt;Sim also supports local models via &lt;a href=&quot;https://ollama.ai&quot;&gt;Ollama&lt;/a&gt; and &lt;a href=&quot;https://docs.vllm.ai/&quot;&gt;vLLM&lt;/a&gt;. See the &lt;a href=&quot;https://docs.sim.ai/self-hosting/docker&quot;&gt;self-hosting docs&lt;/a&gt; for details.&lt;/p&gt; 
&lt;h2&gt;Chat API Keys&lt;/h2&gt; 
&lt;p&gt;Chat is a Sim-managed service. &lt;code&gt;bun run setup&lt;/code&gt; connects a Chat API key for you — sign in when it opens your browser and the key is stored automatically. To view, create, or revoke keys later, go to &lt;a href=&quot;https://sim.ai/selfhost/settings/chat-keys&quot;&gt;sim.ai/selfhost/settings/chat-keys&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Environment Variables&lt;/h2&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://docs.sim.ai/self-hosting/environment-variables&quot;&gt;environment variables reference&lt;/a&gt; for the full list, or &lt;a href=&quot;https://raw.githubusercontent.com/simstudioai/sim/main/apps/sim/.env.example&quot;&gt;&lt;code&gt;apps/sim/.env.example&lt;/code&gt;&lt;/a&gt; for defaults.&lt;/p&gt; 
&lt;h2&gt;Tech Stack&lt;/h2&gt; 
&lt;details&gt; 
 &lt;summary&gt;Next.js · Bun · PostgreSQL · Drizzle · Better Auth · Tailwind — and the rest of the stack&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;Framework&lt;/strong&gt;: &lt;a href=&quot;https://nextjs.org/&quot;&gt;Next.js&lt;/a&gt; (App Router)&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Runtime&lt;/strong&gt;: &lt;a href=&quot;https://bun.sh/&quot;&gt;Bun&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Database&lt;/strong&gt;: PostgreSQL with &lt;a href=&quot;https://orm.drizzle.team&quot;&gt;Drizzle ORM&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Authentication&lt;/strong&gt;: &lt;a href=&quot;https://better-auth.com&quot;&gt;Better Auth&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Schema Validation&lt;/strong&gt;: &lt;a href=&quot;https://zod.dev&quot;&gt;Zod&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;UI&lt;/strong&gt;: &lt;a href=&quot;https://ui.shadcn.com/&quot;&gt;Shadcn&lt;/a&gt;, &lt;a href=&quot;https://tailwindcss.com&quot;&gt;Tailwind CSS&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Streaming Markdown&lt;/strong&gt;: &lt;a href=&quot;https://github.com/vercel/streamdown&quot;&gt;Streamdown&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;State Management&lt;/strong&gt;: &lt;a href=&quot;https://zustand-demo.pmnd.rs/&quot;&gt;Zustand&lt;/a&gt;, &lt;a href=&quot;https://tanstack.com/query&quot;&gt;TanStack Query&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Flow Editor&lt;/strong&gt;: &lt;a href=&quot;https://reactflow.dev/&quot;&gt;ReactFlow&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Docs&lt;/strong&gt;: &lt;a href=&quot;https://fumadocs.vercel.app/&quot;&gt;Fumadocs&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Monorepo&lt;/strong&gt;: &lt;a href=&quot;https://turborepo.org/&quot;&gt;Turborepo&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Realtime&lt;/strong&gt;: &lt;a href=&quot;https://socket.io/&quot;&gt;Socket.io&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Background Jobs&lt;/strong&gt;: &lt;a href=&quot;https://trigger.dev/&quot;&gt;Trigger.dev&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Remote Code Execution&lt;/strong&gt;: &lt;a href=&quot;https://www.e2b.dev/&quot;&gt;E2B&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Isolated Code Execution&lt;/strong&gt;: &lt;a href=&quot;https://github.com/laverdet/isolated-vm&quot;&gt;isolated-vm&lt;/a&gt;&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;We welcome contributions! Please see our &lt;a href=&quot;https://raw.githubusercontent.com/simstudioai/sim/main/.github/CONTRIBUTING.md&quot;&gt;Contributing Guide&lt;/a&gt; for details.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;This project is licensed under the Apache License 2.0 - see the &lt;a href=&quot;https://raw.githubusercontent.com/simstudioai/sim/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt; file for details.&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/simstudioai/sim/main/apps/sim/public/static/readme-built-by-sim-team.png&quot; alt=&quot;Built by the Sim team in San Francisco&quot; width=&quot;100%&quot; /&gt; &lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/7b6e012f6e715c0da265d8338d2ff68bd79eb6d7e2e8dbe84851399d303a55be/simstudioai/sim" medium="image" />
      
    </item>
    
    <item>
      <title>seakee/CPA-Manager-Plus</title>
      <link>https://github.com/seakee/CPA-Manager-Plus</link>
      <description>&lt;p&gt;A self-hosted CPA / CLIProxyAPI management panel and AI gateway observability dashboard for requests, usage, cost, quota, failures, and account health.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;h1&gt;CPA Manager Plus&lt;/h1&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/seakee/CPA-Manager-Plus/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/seakee/CPA-Manager-Plus?style=flat-square&quot; alt=&quot;Release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/seakee/CPA-Manager-Plus/raw/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/seakee/CPA-Manager-Plus?style=flat-square&amp;amp;color=blue&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://hub.docker.com/r/seakee/cpa-manager-plus&quot;&gt;&lt;img src=&quot;https://img.shields.io/docker/pulls/seakee/cpa-manager-plus?style=flat-square&quot; alt=&quot;Docker Pulls&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/seakee/CPA-Manager-Plus/stargazers&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/seakee/CPA-Manager-Plus?style=flat-square&amp;amp;label=stars&quot; alt=&quot;Stars&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;A self-hosted CPA / CLIProxyAPI management panel and AI gateway observability dashboard for requests, usage, cost, quota, failures, and account health.&lt;/p&gt; 
 &lt;p&gt;Operate providers, credentials, OAuth, plugins, and configuration while keeping persistent request history, cost analytics, and account automation in local storage.&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/seakee/CPA-Manager-Plus/main/README_CN.md&quot;&gt;中文&lt;/a&gt; ｜ &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/&quot;&gt;Live Demo&lt;/a&gt; ｜ &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/&quot;&gt;Documentation&lt;/a&gt; ｜ &lt;a href=&quot;https://raw.githubusercontent.com/seakee/CPA-Manager-Plus/main/#quick-start&quot;&gt;Install&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;What Can CPAMP Help You Answer?&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Why are requests failing?&lt;/strong&gt; Inspect failure rates, status codes, affected models/accounts, and redacted evidence in persistent request history.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Where is the cost going?&lt;/strong&gt; Break down tokens and estimated cost by model, provider, account, API key, project, channel, and time range.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Are accounts and quotas healthy?&lt;/strong&gt; Review credential state, quota windows, reset evidence, and controlled automation for Codex and xAI accounts.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Screenshots&lt;/h2&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt; &lt;strong&gt;Dashboard&lt;/strong&gt;&lt;br /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/seakee/CPA-Manager-Plus/main/img/home.png&quot; alt=&quot;CPA CLIProxyAPI management and observability dashboard&quot; width=&quot;420&quot; /&gt; &lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt; &lt;strong&gt;Request Monitoring&lt;/strong&gt;&lt;br /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/seakee/CPA-Manager-Plus/main/img/monitoring.png&quot; alt=&quot;CPA request monitoring and failure diagnosis dashboard&quot; width=&quot;420&quot; /&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot;&gt; &lt;strong&gt;Usage Analytics&lt;/strong&gt;&lt;br /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/seakee/CPA-Manager-Plus/main/img/usage-analytics.png&quot; alt=&quot;CPA usage and cost analytics by model and account&quot; width=&quot;420&quot; /&gt; &lt;/td&gt; 
   &lt;td align=&quot;center&quot;&gt; &lt;strong&gt;Account Health&lt;/strong&gt;&lt;br /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/seakee/CPA-Manager-Plus/main/img/codex-inspection.png&quot; alt=&quot;Codex and xAI account inspection and quota health&quot; width=&quot;420&quot; /&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h2&gt;Which Panel Should You Choose?&lt;/h2&gt; 
&lt;p&gt;CPA / CLIProxyAPI can serve either the official Management Center or the CPAMP Lightweight Panel directly on &lt;code&gt;:8317&lt;/code&gt;. The lightweight panel replaces the official UI without adding another service. Deploy CPAMP Full Mode when you also need persistent observability and long-running operations.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Option&lt;/th&gt; 
   &lt;th&gt;Best for&lt;/th&gt; 
   &lt;th&gt;Entry&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Official &lt;a href=&quot;https://github.com/router-for-me/Cli-Proxy-API-Management-Center&quot;&gt;CLI Proxy API Management Center&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Keeping the upstream UI maintained by the CPA project&lt;/td&gt; 
   &lt;td&gt;CPA &lt;code&gt;:8317/management.html&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;CPAMP Lightweight Panel&lt;/td&gt; 
   &lt;td&gt;Replacing only the UI without another service or database&lt;/td&gt; 
   &lt;td&gt;CPA &lt;code&gt;:8317/management.html&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;CPAMP Full Mode&lt;/td&gt; 
   &lt;td&gt;Request history, cost analytics, inspection, and automation&lt;/td&gt; 
   &lt;td&gt;Manager Server &lt;code&gt;:18317/management.html&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;See &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/guide/choosing-a-panel.html&quot;&gt;Choosing A CPA Panel&lt;/a&gt; for the comparison, or &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/deployment/cpa-panel.html&quot;&gt;install the CPAMP Lightweight Panel&lt;/a&gt; directly in CPA.&lt;/p&gt; 
&lt;h2&gt;Core Capabilities&lt;/h2&gt; 
&lt;h3&gt;CPA Gateway Management&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Manage CPA provider configurations, including Gemini, Codex, Claude, Vertex, xAI, and OpenAI-compatible providers.&lt;/li&gt; 
 &lt;li&gt;Maintain auth files, OAuth logins, API keys, model aliases, priorities, plugins, logs, and system settings.&lt;/li&gt; 
 &lt;li&gt;Import official Sub2API OpenAI OAuth exports and split multiple accounts into separate CPA Codex auth files.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Request Monitoring And Failure Diagnosis&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Persist requests from the CPA usage queue in local SQLite and search account, client API key, and realtime request views.&lt;/li&gt; 
 &lt;li&gt;Inspect status, latency, token, cache, trace, and redacted failure evidence without exposing raw failure bodies.&lt;/li&gt; 
 &lt;li&gt;Export or import request history as JSONL.&lt;/li&gt; 
 &lt;li&gt;Open the &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/#/demo/monitoring&quot;&gt;Monitoring Demo&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Cost And Usage Analytics&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Break down calls, tokens, cost, latency, and failures by model, provider, account, credential, API key, project, channel, and time range.&lt;/li&gt; 
 &lt;li&gt;Track input, output, reasoning, cache, service tier, and long-context pricing semantics.&lt;/li&gt; 
 &lt;li&gt;Sync model prices from models.dev first, with LiteLLM and OpenRouter fallbacks plus local overrides for aliases or internal models.&lt;/li&gt; 
 &lt;li&gt;Open the &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/#/demo/usage-analytics&quot;&gt;Usage Analytics Demo&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Account Health, Quota, And Automation&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Inspect Codex and xAI accounts locally or on a Manager Server schedule.&lt;/li&gt; 
 &lt;li&gt;Read quota windows, reset evidence, credential state, workspace state, and provider-specific health signals when available.&lt;/li&gt; 
 &lt;li&gt;Apply controlled quota cooldowns and route credential failures into an account action queue for review and recovery.&lt;/li&gt; 
 &lt;li&gt;Open the &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/#/demo/codex-inspection&quot;&gt;Account Inspection Demo&lt;/a&gt; and &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/#/demo/auth-files&quot;&gt;Auth Files Demo&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Production Operations&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Run CPAMP Full Mode as one Docker container or a native Linux, macOS, or Windows package for amd64/arm64; the full stack can run alongside CPA.&lt;/li&gt; 
 &lt;li&gt;Keep request history, Manager configuration, automation state, and model prices in local files with no account registration or telemetry SDK.&lt;/li&gt; 
 &lt;li&gt;Back up SQLite files together with &lt;code&gt;data.key&lt;/code&gt; to preserve encrypted CPA Management Keys.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Want to preview the interface first? Open the &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/&quot;&gt;Live Demo&lt;/a&gt;. The demo uses fictional data only. It is not a deployment or runtime mode and cannot connect to, manage, or monitor a real CPA instance.&lt;/p&gt; 
&lt;p&gt;CPAMP manages and observes traffic through CPA / CLIProxyAPI. It is not a replacement proxy and does not forward model traffic by itself.&lt;/p&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;h3&gt;Installer&lt;/h3&gt; 
&lt;p&gt;For a guided full-stack or CPAMP-only deployment:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -fsSLO https://raw.githubusercontent.com/seakee/CPA-Manager-Plus/main/bin/install-cpamp.sh
bash install-cpamp.sh
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Preview without deploying:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;CPAMP_DRY_RUN=1 bash install-cpamp.sh
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;See &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/deployment/installer.html&quot;&gt;One-Click Installer&lt;/a&gt; for upgrade, repair, and admin-key recovery behavior.&lt;/p&gt; 
&lt;h3&gt;CPA + CPAMP Together&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;services:
  cli-proxy-api:
    image: eceasy/cli-proxy-api:latest
    restart: unless-stopped
    ports:
      - &#39;8317:8317&#39;
    volumes:
      - cpa-data:/app/data

  cpa-manager-plus:
    image: seakee/cpa-manager-plus:latest
    restart: unless-stopped
    ports:
      - &#39;18317:18317&#39;
    volumes:
      - cpa-manager-plus-data:/data

volumes:
  cpa-data:
  cpa-manager-plus-data:
&lt;/code&gt;&lt;/pre&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose up -d
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Open &lt;code&gt;http://&amp;lt;host&amp;gt;:18317/management.html&lt;/code&gt;, retrieve the CPAMP Admin Key from the Manager Server log, then enter the CPA URL and CPA Management Key during setup.&lt;/p&gt; 
&lt;h3&gt;CPAMP Only&lt;/h3&gt; 
&lt;p&gt;If CPA is already running:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -d \
  --name cpa-manager-plus \
  --restart unless-stopped \
  -p 18317:18317 \
  -v cpa-manager-plus-data:/data \
  seakee/cpa-manager-plus:latest
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Recommended CPA version: &lt;code&gt;v7.1.39+&lt;/code&gt;. The HTTP usage queue needs &lt;code&gt;v6.10.8+&lt;/code&gt;.&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Task&lt;/th&gt; 
   &lt;th&gt;Guide&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Choose the right panel and deployment mode&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/guide/choosing-a-panel.html&quot;&gt;Choosing A CPA Panel&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Replace the official UI without deploying another service&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/deployment/cpa-panel.html&quot;&gt;CPAMP Lightweight Panel&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Install and complete first setup&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/guide/getting-started.html&quot;&gt;Getting Started&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Understand supported features and modes&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/reference/capability-matrix.html&quot;&gt;Capability Matrix&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Understand runtime ports, keys, and request flow&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/guide/runtime-model.html&quot;&gt;Runtime Model&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Configure providers, credentials, quota, and plugins&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/manual/ai-providers.html&quot;&gt;Panel Manual&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Operate Manager Server, backups, upgrades, and migrations&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/operations/manager-server.html&quot;&gt;Manager Server Guide&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Back up data or recover a lost admin key&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/operations/backup.html&quot;&gt;Backup And Restore&lt;/a&gt;, &lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/operations/reset-admin-key.html&quot;&gt;Reset Admin Key&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Migrate from the legacy CPA-Manager&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/migration/from-cpa-manager.html&quot;&gt;Migration From CPA-Manager&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Diagnose empty monitoring or queue problems&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://seakee.github.io/CPA-Manager-Plus/docs/en/troubleshooting/request-monitoring.html&quot;&gt;Troubleshooting&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Data, Privacy, And Security&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;CPAMP does not phone home, include analytics SDKs, or require account registration.&lt;/li&gt; 
 &lt;li&gt;External calls are limited to the CPA gateway and integrations you explicitly configure or trigger, such as OAuth, provider checks, plugin releases, and model price sync.&lt;/li&gt; 
 &lt;li&gt;Request history, configuration, model prices, inspection history, and automation state stay in local files.&lt;/li&gt; 
 &lt;li&gt;CPA Management Keys are encrypted before SQLite persistence; backups require the SQLite files and &lt;code&gt;data.key&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;Normal APIs and JSONL exports expose redacted failure summaries, never raw failure bodies or stored raw JSON.&lt;/li&gt; 
 &lt;li&gt;CPAMP is intended for traffic and credentials you are authorized to operate.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Development&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install
npm run dev
npm run type-check
npm run lint
npm run test
npm run build
npm run docs:build
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Manager Server:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd apps/manager-server
go test ./...
go test -race ./...
go vet ./...
go run ./cmd/cpa-manager-plus
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Build the Docker stack locally:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose -f docker-compose.manager.yml up --build
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Release&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;npm run build&lt;/code&gt; creates a single-file &lt;code&gt;apps/web/dist/index.html&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;bin/release/package-native.sh&lt;/code&gt; embeds the panel into native packages.&lt;/li&gt; 
 &lt;li&gt;Create release notes through &lt;code&gt;release/&amp;lt;version&amp;gt; -&amp;gt; dev -&amp;gt; main&lt;/code&gt;, then push a strict &lt;code&gt;vX.Y.Z&lt;/code&gt; or prerelease tag from the verified &lt;code&gt;main&lt;/code&gt; promotion merge.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;npm run release:validate -- --tag &amp;lt;tag&amp;gt; --content-only&lt;/code&gt; checks the three required release files before a tag is created.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;.github/workflows/release.yml&lt;/code&gt; offers a &lt;code&gt;workflow_dispatch&lt;/code&gt; dry-run from &lt;code&gt;main&lt;/code&gt;; it validates and builds without publishing a GitHub Release, container image, or Telegram message.&lt;/li&gt; 
 &lt;li&gt;Release assets include &lt;code&gt;management.html&lt;/code&gt;, native packages, and Docker images for &lt;code&gt;linux/amd64&lt;/code&gt; and &lt;code&gt;linux/arm64&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;Release publishing is serialized and has no automatic commit-log fallback; missing or mismatched notes fail closed. See &lt;a href=&quot;https://raw.githubusercontent.com/seakee/CPA-Manager-Plus/main/docs/release.md&quot;&gt;&lt;code&gt;docs/release.md&lt;/code&gt;&lt;/a&gt; for recovery and required repository protections.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Acknowledgements&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Thanks to &lt;a href=&quot;https://github.com/router-for-me/CLIProxyAPI&quot;&gt;CLIProxyAPI&lt;/a&gt; and the official &lt;a href=&quot;https://github.com/router-for-me/Cli-Proxy-API-Management-Center&quot;&gt;CLI Proxy API Management Center&lt;/a&gt; for the runtime and WebUI foundation.&lt;/li&gt; 
 &lt;li&gt;Thanks to the &lt;a href=&quot;https://linux.do/&quot;&gt;Linux.do&lt;/a&gt; community for project promotion and feedback.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/seakee/CPA-Manager-Plus/raw/main/LICENSE&quot;&gt;MIT&lt;/a&gt; — Copyright 2026 Seakee.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/391f78e8669d816cae2fcac6f85083bd7eabf2eea27acebbfe081dbe78bbc6ba/seakee/CPA-Manager-Plus" medium="image" />
      
    </item>
    
  </channel>
</rss>
